diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-13 22:14:30 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-13 22:14:30 -0800 |
| commit | 47c43577ead8721008b858232511b2f65e0ed574 (patch) | |
| tree | a15d1a4a4bb64b4b7d3de650b306835d8d7f63a5 | |
| parent | 76cb9c2a39d477a64824a985ade40507e3bbade1 (diff) | |
| download | neko-47c43577ead8721008b858232511b2f65e0ed574.tar.gz neko-47c43577ead8721008b858232511b2f65e0ed574.tar.bz2 neko-47c43577ead8721008b858232511b2f65e0ed574.zip | |
Optimize asset packaging: move UI assets to root dist/ and decouple rice embedding
| -rw-r--r-- | .thicket/tickets.jsonl | 48 | ||||
| -rw-r--r-- | Makefile | 16 | ||||
| -rw-r--r-- | README.md | 32 | ||||
| -rw-r--r-- | c.out | 217 | ||||
| -rw-r--r-- | dist/v2/assets/index-B3U-SMew.css | 1 | ||||
| -rw-r--r-- | dist/v2/assets/index-f8d4YxQn.js | 11 | ||||
| -rw-r--r-- | dist/v2/index.html | 14 | ||||
| -rw-r--r-- | dist/v2/vite.svg | 1 | ||||
| -rw-r--r-- | dist/vanilla/app.js | 257 | ||||
| -rw-r--r-- | dist/vanilla/index.html | 49 | ||||
| -rw-r--r-- | dist/vanilla/style.css | 173 | ||||
| -rw-r--r-- | tui/style.go | 52 | ||||
| -rw-r--r-- | tui/tui.go | 318 | ||||
| -rw-r--r-- | tui/tui_test.go | 184 | ||||
| -rw-r--r-- | web/web.go | 8 |
15 files changed, 579 insertions, 802 deletions
diff --git a/.thicket/tickets.jsonl b/.thicket/tickets.jsonl index 8179592..29ccb06 100644 --- a/.thicket/tickets.jsonl +++ b/.thicket/tickets.jsonl @@ -3,57 +3,78 @@ {"id":"NK-13v159","title":"docker compose fails","description":"When running docker compose up I got the following error:\n[2/3] STEP 1/9: FROM golang:1.23-bullseye AS backend-builder\nResolved \"golang\" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)\nTrying to pull docker.io/library/golang:1.23-bullseye...\nGetting image source signatures\nCopying blob sha256:bb30cea4afcbc0a0405508119c28d87afb4518e3558e2f1fb0a52a0498994287\nCopying blob sha256:a9acb5a6634ff8f020bd4562c483cdd83503103d2c080d87e777643b57123e41\nCopying blob sha256:b26972d9a448e4dba0ac85216372d6ee52bc89839590b4e97f94b77ced5571fe\nCopying blob sha256:b1efd17e5717172aa4463c9c599bce51a6939b602dbb135bf6c26d672a6e7496\nCopying blob sha256:6a887974b056452b76229e3392cbf8513e741cd3dcd1f05e7397eea6fce361a0\nCopying blob sha256:382d65ac76ebcbc7ba7ee0d232ae7afbec48e2b3b673983ac8ced522dabe3abb\nCopying blob sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1\nCopying config sha256:6f1643fb9acc4fc0b9bf95efd1b4b1cd274dcd73a39cc99ef57da203d7088f42\nWriting manifest to image destination\n[2/3] STEP 2/9: RUN go install github.com/GeertJohan/go.rice/rice@latest\ngo: downloading github.com/GeertJohan/go.rice v1.0.3\ngo: downloading github.com/GeertJohan/go.incremental v1.0.0\ngo: downloading github.com/akavel/rsrc v0.8.0\ngo: downloading github.com/daaku/go.zipexe v1.0.2\ngo: downloading github.com/jessevdk/go-flags v1.4.0\ngo: downloading github.com/nkovacs/streamquote v1.0.0\ngo: downloading github.com/valyala/fasttemplate v1.0.1\ngo: downloading github.com/valyala/bytebufferpool v1.0.0\n--\u003e 181d1254149e\n[2/3] STEP 3/9: WORKDIR /app\n--\u003e 3f497307e2ca\n[2/3] STEP 4/9: COPY go.mod go.sum ./\n--\u003e 339c24ca12cd\n[2/3] STEP 5/9: RUN go mod download\ngo: go.mod requires go \u003e= 1.24.2 (running go 1.23.12; GOTOOLCHAIN=local)\nError: building at STEP \"RUN go mod download\": while running runtime: exit status 1","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T01:10:13.257269131Z","updated":"2026-02-14T01:15:05.19401879Z"} {"id":"NK-1phdpf","title":"refactor backend to have a clean API","description":"create a nice clean API for the backend GO code that is more independent of the frontend\n\nensure that it is working with good tests","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T01:52:49.8322638Z","updated":"2026-02-13T04:26:47.517515371Z"} {"id":"NK-27or4b","title":"Increase Test Coverage to \u003e80%","description":"Project-wide test coverage is currently ~63%. Key gaps are in the new and packages, as well as some core model logic. Increase coverage to at least 80% to ensure stability.","type":"task","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T05:03:09.677147894Z","updated":"2026-02-13T05:03:09.677147894Z"} -{"id":"NK-2t5ijy","title":"Mobile Layout Verification for New Frontend","description":"Verify and adjust the new fixed-width layout for mobile devices to ensure responsiveness.","type":"task","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T18:11:47.456406598Z","updated":"2026-02-13T18:11:47.456406598Z"} +{"id":"NK-2t5ijy","title":"Mobile Layout Verification for New Frontend","description":"Verify and adjust the new fixed-width layout for mobile devices to ensure responsiveness.","type":"task","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T18:11:47.456406598Z","updated":"2026-02-13T18:11:47.456406598Z"} +{"id":"NK-2xsgef","title":"Prototype Vanilla JS Frontend","description":"","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T04:37:58.162767418Z","updated":"2026-02-14T04:39:20.508024625Z"} +{"id":"NK-2ypbgd","title":"Vanilla JS: Implement Search","description":"Add search bar to vanilla JS prototype and hook up to search API.","type":"feature","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T04:47:39.405003074Z","updated":"2026-02-14T04:49:07.592627269Z"} {"id":"NK-35kxxw","title":"v2 frontend move the star to the RIGHT of the title","description":"Look at the old implementation and make it look more like that! Big start, same size as the article title.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T00:44:13.630511415Z","updated":"2026-02-14T01:07:04.861274618Z"} +{"id":"NK-3e3dim","title":"go vet fails on github ci","description":"Looks like the newly enabled github ci runs go vet and got a bunch of errors including:\n\ngo vet ./...\n shell: /usr/bin/bash -e {0}\nError: config/config.go:6:2: missing go.sum entry for module providing package gopkg.in/yaml.v2 (imported by adammathes.com/neko/config); to add:\n go get adammathes.com/neko/config\nError: models/db.go:10:2: missing go.sum entry for module providing package github.com/mattn/go-sqlite3 (imported by adammathes.com/neko/models); to add:\n go get adammathes.com/neko/models\nError: models/feed/feed.go:10:2: missing go.sum entry for module providing package github.com/PuerkitoBio/goquery (imported by adammathes.com/neko/models/feed); to add:\n go get adammathes.com/neko/models/feed\nError: models/item/item.go:12:2: missing go.sum entry for module providing package github.com/advancedlogic/GoOse (imported by adammathes.com/neko/models/item); to add:\n go get adammathes.com/neko/models/item\nError: models/item/item.go:13:2: missing go.sum entry for module providing package github.com/microcosm-cc/bluemonday (imported by adammathes.com/neko/models/item); to add:\n go get adammathes.com/neko/models/item\nError: models/item/item.go:14:2: missing go.sum entry for module providing package github.com/russross/blackfriday (imported by adammathes.com/neko/models/item); to add:\n go get adammathes.com/neko/models/item\nError: crawler/crawler.go:7:2: missing go.sum entry for module providing package github.com/mmcdole/gofeed (imported by adammathes.com/neko/crawler); to add:\n go get adammathes.com/neko/crawler\nError: tui/tui.go:9:2: missing go.sum entry for module providing package github.com/charmbracelet/bubbles/list (imported by adammathes.com/neko/tui); to add:\n go get adammathes.com/neko/tui\nError: tui/tui.go:10:2: missing go.sum entry for module providing package github.com/charmbracelet/bubbles/viewport (imported by adammathes.com/neko/tui); to add:\n go get adammathes.com/neko/tui\nError: tui/tui.go:11:2: missing go.sum entry for module providing package github.com/charmbracelet/bubbletea (imported by adammathes.com/neko/tui); to add:\n go get adammathes.com/neko/tui\nError: tui/style.go:3:8: missing go.sum entry for module providing package github.com/charmbracelet/lipgloss (imported by adammathes.com/neko/tui); to add:\n go get adammathes.com/neko/tui\nError: web/web.go:19:2: missing go.sum entry for module providing package github.com/GeertJohan/go.rice (imported by adammathes.com/neko/web); to add:\n go get adammathes.com/neko/web\nError: web/rice-box.go:7:2: missing go.sum entry for module providing package github.com/GeertJohan/go.rice/embedded (imported by adammathes.com/neko/web); to add:\n go get adammathes.com/neko/web\nError: web/web.go:20:2: missing go.sum entry for module providing package golang.org/x/crypto/bcrypt (imported by adammathes.com/neko/web); to add:\n go get adammathes.com/neko/web\nError: main.go:16:2: missing go.sum entry for module providing package github.com/ogier/pflag (imported by adammathes.com/neko); to add:\n go get adammathes.com/neko\nError: Process completed with exit code 1.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:33:16.174683053Z","updated":"2026-02-14T03:34:08.731025136Z"} {"id":"NK-3om7x2","title":"Implement Feed Items View","description":"Create a component to display items for a selected feed. Fetch items from /api/stream?feed_id=...","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T05:59:46.161356437Z","updated":"2026-02-13T14:55:14.795643835Z"} +{"id":"NK-4juza2","title":"v2 ui - collapsible feed list","description":"In the left side navigation list of feeds, the feeds should be hidden by default. The word \"feeds\" should be a toggle to show/hide the list, with a triangle that indicates state.","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T02:48:25.194856022Z","updated":"2026-02-14T03:16:19.259726648Z"} {"id":"NK-59kbij","title":"Implement Frontend Logout","description":"Add logout button to dashboard header. Call /api/logout (need to create this potentially?). Redirect to /login","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T14:58:18.343464645Z","updated":"2026-02-13T15:01:33.783216589Z"} {"id":"NK-5ocxgm","title":"Infinite scroll","description":"a key feature of the original version that when you scroll to the bottom, it catches that and loads more (based on the current filters, etc)","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T19:27:01.14879752Z","updated":"2026-02-13T19:45:02.283640203Z"} +{"id":"NK-5zgzee","title":"Vanilla JS: Mobile Layout","description":"Make vanilla JS prototype responsive for mobile devices.","type":"feature","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-14T04:47:42.972969683Z","updated":"2026-02-14T04:47:42.972969683Z"} {"id":"NK-6b4a2e","title":"v2 frontend BLUE LINKS","description":"Make most of the links BLUE and BOLD like in the old legacy version. Thanks","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T00:44:47.147880845Z","updated":"2026-02-14T01:09:26.770086073Z"} -{"id":"NK-6q9nyg","title":"Refactor HTTP-dependent functions for testability","description":"Several functions use http.Get or external libraries directly (GetFullContent uses goose, ResolveFeedURL uses http.Get + goquery, imageProxyHandler uses http.Client). Refactor these to accept interfaces for HTTP fetching so they can be unit tested with mocks. This is the primary blocker for reaching 90% coverage.","type":"cleanup","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T03:54:37.630148644Z","updated":"2026-02-13T03:54:37.630148644Z"} +{"id":"NK-6o87rr","title":"Vanilla JS: Implement Pagination","description":"Implement 'Load More' or infinite scroll for item list in vanilla JS prototype.","type":"feature","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-14T04:47:40.618957267Z","updated":"2026-02-14T04:47:40.618957267Z"} +{"id":"NK-6q9nyg","title":"Refactor HTTP-dependent functions for testability","description":"Several functions use http.Get or external libraries directly (GetFullContent uses goose, ResolveFeedURL uses http.Get + goquery, imageProxyHandler uses http.Client). Refactor these to accept interfaces for HTTP fetching so they can be unit tested with mocks. This is the primary blocker for reaching 90% coverage.","type":"cleanup","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T03:54:37.630148644Z","updated":"2026-02-14T02:44:05.328784994Z"} {"id":"NK-7tzbql","title":"Fix TUI Content View Navigation and Interaction","description":"The TUI content view (reading a single item) is currently non-functional or severely limited. Users cannot easily navigate back, scroll, or interact with the content. This task involves improving the 'viewContent' state in the TUI.","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T05:02:57.382793121Z","updated":"2026-02-13T05:06:15.144485446Z"} {"id":"NK-8rhpp3","title":"v2 frontend: when selected, don't change style of feed items","description":"Just leave them the same when j/k \"selects\" an item. No blue side thing, no change in background, it's distracting. Just scroll it to the right place.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T00:39:50.01934312Z","updated":"2026-02-14T01:02:54.204739756Z"} {"id":"NK-8s75ec","title":"page size and performance","description":"Do some analysis of page size (css/html/javascript) on the legacy version vs. new version and give me a report. We want it to be small and fast! If the new version is much worse file some tickets to investigate further.","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T20:16:13.898081788Z","updated":"2026-02-13T21:50:12.004391671Z"} {"id":"NK-9hx0y7","title":"Implement Frontend Login","description":"Create login page and auth logic in the new React frontend. Port functionality from legacy login.html.","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T05:44:01.546395342Z","updated":"2026-02-13T05:50:33.877452063Z"} +{"id":"NK-9pgjph","title":"v2 ui - font size 18px","description":"Compare your font sizes with the legacy version -- I think they're a little too small (16 vs 18 baseline)","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:21:48.453217898Z","updated":"2026-02-14T03:24:25.316927886Z"} {"id":"NK-a217qm","title":"font styles","description":"Switch the default font stack and size to match the legacy UI","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:59:37.686539676Z","updated":"2026-02-14T01:25:03.119825567Z"} {"id":"NK-acq08a","title":"update Makefile","description":"Ensure the Makefile builds things and works\nTest it by running it regularly before checking in!","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T00:55:40.127322076Z","updated":"2026-02-14T01:26:31.564799193Z"} {"id":"NK-ahzf5c","title":"drop \"mark read\" button","description":"there's no mark read/unread buttons, it's just by scrolling!","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T19:28:20.708443259Z","updated":"2026-02-13T20:26:43.029168286Z"} {"id":"NK-bsdwqz","title":"terminal UI","description":"once there is good test coverage and a clean backend API, work on a nice efficient TUI with https://github.com/charmbracelet/bubbletea","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T01:54:02.285738454Z","updated":"2026-02-13T04:42:09.824268427Z"} -{"id":"NK-ed1iah","title":"Make feed crawling async in API","description":"Currently, POST /api/feed triggers an immediate crawl which blocks the response (or at least keeps the goroutine alive). Refactor the crawling architecture to be truly async with a job queue or status updates, improving API responsiveness and reliability.","type":"cleanup","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-13T04:26:55.908243985Z","updated":"2026-02-13T04:26:55.908243985Z"} +{"id":"NK-ca9t70","title":"Vanilla JS: Add Feed UI","description":"Add UI to add a new feed by URL in vanilla JS prototype.","type":"feature","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-14T04:47:41.764330544Z","updated":"2026-02-14T04:47:41.764330544Z"} +{"id":"NK-chns2b","title":"reach parity between vanilla js and react v2 ui","description":"Continue implementing the vanilla js one with minimal overhad/depdnencies to be fast and lean. Make sure there are tests and rely on the v2 ui and legacy version as references.","type":"epic","status":"open","priority":0,"labels":null,"assignee":"","created":"2026-02-14T04:45:06.813453353Z","updated":"2026-02-14T04:45:06.813453353Z"} +{"id":"NK-d4c8jv","title":"Vanilla JS Parity: Read/Star/Filter","description":"Implement read/unread toggle, star/unstar, and special filters (All, Unread, Starred) in vanilla JS prototype.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T04:46:32.113504545Z","updated":"2026-02-14T04:47:46.412290355Z"} +{"id":"NK-ed1iah","title":"Make feed crawling async in API","description":"Currently, POST /api/feed triggers an immediate crawl which blocks the response (or at least keeps the goroutine alive). Refactor the crawling architecture to be truly async with a job queue or status updates, improving API responsiveness and reliability.","type":"cleanup","status":"icebox","priority":4,"labels":null,"assignee":"","created":"2026-02-13T04:26:55.908243985Z","updated":"2026-02-13T04:26:55.908243985Z"} {"id":"NK-ek0cox","title":"Implement Item Interactions","description":"Add ability to toggle read/unread and star/unstar status for items. Use PUT /item/:id","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T14:55:14.825454967Z","updated":"2026-02-13T14:58:18.307521003Z"} -{"id":"NK-fm15vq","title":"UI: Improve accessibility for star icon","description":"The new star button should have proper aria-labels and potentially better focus states for screen readers.","type":"task","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T20:27:36.768034045Z","updated":"2026-02-13T20:27:36.768034045Z"} +{"id":"NK-fkc119","title":"setup github ci","description":"Maybe it'd be nice to have github run the tests. Is that a thing we can try to setup","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T03:16:32.574415787Z","updated":"2026-02-14T03:23:01.837550873Z"} +{"id":"NK-fm15vq","title":"UI: Improve accessibility for star icon","description":"The new star button should have proper aria-labels and potentially better focus states for screen readers.","type":"task","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T20:27:36.768034045Z","updated":"2026-02-13T20:27:36.768034045Z"} {"id":"NK-fnaohu","title":"UI Styling: Dark Mode Support","description":"","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T18:05:19.59504351Z","updated":"2026-02-13T18:11:46.326064329Z"} +{"id":"NK-fpzx66","title":"v2 ui - title styling","description":"The title of the article stays blue and bold regardless of read state.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:22:55.339956853Z","updated":"2026-02-14T03:28:01.555909701Z"} +{"id":"NK-gdf99z","title":"TUI is terrible and needs fixing","description":"The TUI doesn't really work and doesn't make sense. Think very hard and look at the v2 HTML UI implementation and make something cool like that. Probably needs tests too.","type":"epic","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T03:51:59.882212859Z","updated":"2026-02-14T04:31:28.290051717Z"} {"id":"NK-gnxc6e","title":"Feed list collapsed by default","description":"The list of feeds on the left side should be collapsed by default, with a little control to extend it.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:58:15.661695308Z","updated":"2026-02-14T01:29:12.82081713Z"} -{"id":"NK-gqkh96","title":"Remaining test coverage gaps","description":"Cross-package test coverage is at 81.2%. The remaining untested functions are: GetFullContent (goose HTTP extraction), indexHandler/serveBoxedFile (rice.MustFindBox), Serve (starts HTTP server), main, util.init. To reach 90%, consider: (1) refactoring GetFullContent to accept an interface for HTTP fetching, (2) refactoring Serve to extract route setup into a testable function, (3) mocking rice.MustFindBox, (4) using feeds from https://trenchant.org/feeds.txt as static test fixtures for integration tests.","type":"cleanup","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T03:54:30.298141982Z","updated":"2026-02-13T03:54:30.298141982Z"} +{"id":"NK-gqkh96","title":"Remaining test coverage gaps","description":"Cross-package test coverage is at 81.2%. The remaining untested functions are: GetFullContent (goose HTTP extraction), indexHandler/serveBoxedFile (rice.MustFindBox), Serve (starts HTTP server), main, util.init. To reach 90%, consider: (1) refactoring GetFullContent to accept an interface for HTTP fetching, (2) refactoring Serve to extract route setup into a testable function, (3) mocking rice.MustFindBox, (4) using feeds from https://trenchant.org/feeds.txt as static test fixtures for integration tests.","type":"cleanup","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T03:54:30.298141982Z","updated":"2026-02-14T02:44:05.399097286Z"} +{"id":"NK-hspao2","title":"Vanilla JS: Implement Test Infrastructure","description":"Setup testing infrastructure for vanilla JS prototype to ensure 80% coverage. Refactor app.js for testability and add unit tests.","type":"task","status":"open","priority":1,"labels":null,"assignee":"","created":"2026-02-14T05:13:11.587767054Z","updated":"2026-02-14T05:13:11.587767054Z"} {"id":"NK-hyej38","title":"[ui] when a left menu item is \"active\" make it bold","description":"The \"default\" is UNREAD - this should be in the \"bold\" state when you're seeing that. When you filter out to \"ALL\" that should instead be bold. Same with the individual feeds if one is selected. And Starred.","type":"epic","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:47:25.74838134Z","updated":"2026-02-14T01:25:07.267016355Z"} -{"id":"NK-iw9l7h","title":"Improve scraper heuristics","description":"The scraper currently uses a simple fallback between CleanedText and TopNode. It could be improved to better handle different article layouts.","type":"feature","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-14T01:04:11.588135487Z","updated":"2026-02-14T01:04:11.588135487Z"} +{"id":"NK-iw9l7h","title":"Improve scraper heuristics","description":"The scraper currently uses a simple fallback between CleanedText and TopNode. It could be improved to better handle different article layouts.","type":"feature","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-14T01:04:11.588135487Z","updated":"2026-02-14T01:04:11.588135487Z"} {"id":"NK-jhludy","title":"600px width by default, closer to left panel","description":"On desktop the feed items are too narrow (~500px) compared to legacy version which is ~600px.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T20:14:48.84900972Z","updated":"2026-02-13T20:50:22.207833479Z"} {"id":"NK-jqpn98","title":"adding feed in v2 ui shows error","description":"added https://trenchant.org/rss.xml as a feed in the UI but it gave some weird message inline like unexpected character, but it did eventually add it. what happened there","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T01:22:17.546117265Z","updated":"2026-02-14T01:25:07.317174513Z"} {"id":"NK-jyw7lb","title":"add neko cat back to hide left navivation","description":"Change the \"neko reader\" to the cat emoji like in the legacy and have it toggle visibility of the left nav","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T01:01:08.430978911Z","updated":"2026-02-14T01:21:11.002320114Z"} -{"id":"NK-k04tet","title":"Fix Playwright E2E Tests","description":"The e2e tests in tests/e2e.spec.ts are failing when run with vitest. They should be run with playwright test runner, or configured correctly. Currently excluded from vitest.","type":"bug","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-13T21:50:14.152486771Z","updated":"2026-02-13T21:50:14.152486771Z"} +{"id":"NK-k04tet","title":"Fix Playwright E2E Tests","description":"The e2e tests in tests/e2e.spec.ts are failing when run with vitest. They should be run with playwright test runner, or configured correctly. Currently excluded from vitest.","type":"bug","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T21:50:14.152486771Z","updated":"2026-02-14T02:43:56.02734439Z"} {"id":"NK-k4y597","title":"[feature] light/dark/black toggle","description":"Add in a simple [light | dark | black] theme toggler like in the legacy version.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:45:55.312953906Z","updated":"2026-02-14T01:29:20.073659889Z"} {"id":"NK-kqt9oc","title":"docker support","description":"add support so people can self-host this in docker and (maybe) test it yourself. maybe keep it in a docker directory with separate docs etc.","type":"epic","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T20:19:10.70328135Z","updated":"2026-02-14T01:03:35.363466842Z"} {"id":"NK-lrew5z","title":"UI Styling: Global Typography \u0026 Layout (Fixed Width)","description":"","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T18:04:57.254341682Z","updated":"2026-02-13T18:11:31.436752093Z"} +{"id":"NK-m8bya7","title":"Fix and Re-enable Playwright E2E Tests","description":"E2E tests were crashing the VM and timing out. Disabled them in package.json. Need to investigate resource usage and re-enable.","type":"bug","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T03:08:18.501189975Z","updated":"2026-02-14T04:00:03.995357386Z"} +{"id":"NK-mbuw7q","title":"v2 ui bug - panel open by default","description":"Panel is closed by default, it should be open by default on desktop.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T02:46:56.870671639Z","updated":"2026-02-14T03:08:17.322841854Z"} {"id":"NK-mwf9q2","title":"Implement Tag View","description":"Create frontend view for browsing items by tag/category. Use /tag/:id endpoint.","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T15:04:12.441165286Z","updated":"2026-02-13T18:04:38.644796168Z"} -{"id":"NK-n7nuyy","title":"Fix TypeScript Lint Errors in Tests","description":"There are lint errors in test files regarding jest-dom matchers (toBeInTheDocument, etc). Ensure proper types are included.","type":"bug","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T21:50:15.140702806Z","updated":"2026-02-13T21:50:15.140702806Z"} -{"id":"NK-ojdcmq","title":"UI: Add skeleton loaders for feed item loading","description":"The currently 'Loading more...' text is basic. We should add skeleton loaders for a smoother infinite scroll experience.","type":"task","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T19:45:07.376295295Z","updated":"2026-02-13T19:45:07.376295295Z"} +{"id":"NK-n7nuyy","title":"Fix TypeScript Lint Errors in Tests","description":"There are lint errors in test files regarding jest-dom matchers (toBeInTheDocument, etc). Ensure proper types are included.","type":"bug","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T21:50:15.140702806Z","updated":"2026-02-13T21:50:15.140702806Z"} +{"id":"NK-ojdcmq","title":"UI: Add skeleton loaders for feed item loading","description":"The currently 'Loading more...' text is basic. We should add skeleton loaders for a smoother infinite scroll experience.","type":"task","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T19:45:07.376295295Z","updated":"2026-02-13T19:45:07.376295295Z"} {"id":"NK-op5594","title":"Ensure 80% Frontend Test Coverage","description":"Configure coverage reporting in vitest and ensure the frontend codebase maintains at least 80% test coverage.","type":"task","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T05:46:24.13314466Z","updated":"2026-02-13T05:50:46.728239299Z"} {"id":"NK-pumdm4","title":"get rid of the \"selected\" highlight thing","description":"the legacy version doesn't do that and i find it distracting, j/k just move things up/down","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T20:27:51.434041661Z","updated":"2026-02-13T22:37:06.185341246Z"} {"id":"NK-qwef98","title":"UI Styling: Controls \u0026 Header","description":"","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T18:05:18.450759919Z","updated":"2026-02-13T18:11:46.291830432Z"} {"id":"NK-ric1zs","title":"Migrate frontend to /api/ endpoints","description":"The backend now provides a clean REST API at /api/. Update the frontend UI to use these new endpoints instead of the legacy backward-compatibility routes (/stream/, /feed/, etc.). This will allow for cleaner separation and better utilization of proper REST patterns.","type":"cleanup","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T04:26:55.864725765Z","updated":"2026-02-13T04:26:55.864725765Z"} +{"id":"NK-rohuiq","title":"titles changing on read state and hover","description":"Titles are changing on read state from blue to grey. They should just stay blue all the time.\n\nTitles are getting underlined on hover. They should have no underline regardless of hover state.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:36:26.36373162Z","updated":"2026-02-14T03:37:50.73870586Z"} {"id":"NK-shpyxh","title":"add search to new ui","description":"","type":"epic","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T19:29:44.251257089Z","updated":"2026-02-14T01:02:58.547025683Z"} -{"id":"NK-sne5ox","title":"Implement Export/Import UI","description":"Add UI in settings to download OPML export and upload OPML import. Use /export/ and /import/ (need to check if import exists).","type":"feature","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-13T15:05:23.266731399Z","updated":"2026-02-13T15:05:23.266731399Z"} +{"id":"NK-sne5ox","title":"Implement Export/Import UI","description":"Add UI in settings to download OPML export and upload OPML import. Use /export/ and /import/ (need to check if import exists).","type":"epic","status":"icebox","priority":3,"labels":null,"assignee":"","created":"2026-02-13T15:05:23.266731399Z","updated":"2026-02-13T15:05:23.266731399Z"} {"id":"NK-sxcm7y","title":"Enable Gzip Compression in Go Backend","description":"Check if the Go backend is serving content with gzip compression. If not, implement it to reduce page size and improve performance. Add tests to verify.","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T21:57:24.578388732Z","updated":"2026-02-13T22:22:49.350223751Z"} {"id":"NK-t0nmbj","title":"new web frontend","description":"The current frontend uses an old version of backbone and jquery. Let's \"deprecate\" it -- keep it arouond so we can test against it and use it, but let's be able to also serve and use a nice shiny new frontend written in either simiple, highly efficient vanilla javascript, or put together something in react or similar. Needs to feel fast and low latency!\n\nIt's very important that this new frontend has all the functionality of the existing one AND looks similar (use same style, etc, but adjust a little if needed.)\n\nALSO make it highly testable and have high test coverage as you go. I don't want it to use the Chrome browser plugin thing, just test it on your own using things from the command line you can do.","type":"epic","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T02:01:37.2107893Z","updated":"2026-02-13T05:43:47.613995925Z"} +{"id":"NK-thq2oq","title":"v2 ui - font size adjustments","description":"Move font-size: 18px to :root so rem units resolve correctly. Adjust title size to ~24px.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:30:58.751447802Z","updated":"2026-02-14T03:31:56.358775833Z"} {"id":"NK-tw0nga","title":"E2E Testing","description":"Set up E2E testing with Playwright or Cypress to verify full flows: Login -\u003e View Feeds -\u003e View Items -\u003e Logout","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T15:01:33.817314728Z","updated":"2026-02-13T15:46:57.094062908Z"} {"id":"NK-uy90he","title":"UI Styling: Feed Items (Spacing, Dateline)","description":"","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T18:05:17.289457994Z","updated":"2026-02-13T18:11:46.255816698Z"} {"id":"NK-uywybr","title":"https://computer.rip/rss.xml fails to importa","description":"running neko -a https://computer.rip/rss.xml gave an error. debug it and add test case to catch.","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T20:12:28.54350403Z","updated":"2026-02-14T01:03:02.755247954Z"} {"id":"NK-wibjlg","title":"update README.md","description":"Ensure the build, configuration, etc are up too date.\nNote the git change when we started to vibe-code this in the history (with dates etc.)","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T20:18:08.790048498Z","updated":"2026-02-13T22:36:07.717448961Z"} +{"id":"NK-wjnczv","title":"Vanilla JS: Test Infrastructure \u0026 Coverage","description":"Setup testing framework (likely vitest or simple runner) for vanilla JS. Refactor code for testability. Aim for 80% coverage on vanilla/app.js logic.","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T05:13:23.292982698Z","updated":"2026-02-14T05:34:53.241988263Z"} {"id":"NK-x924bu","title":"test coverage","description":"assume the code works properly (it mostly does)\nget to 90% test coverage on the go code","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T01:52:01.042476226Z","updated":"2026-02-13T03:54:21.526519915Z"} {"id":"NK-ymf1jb","title":"add \"star\" back in","description":"rather than the word \"star\" it should just have a star that changes colors right next to the title","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T19:29:05.582140321Z","updated":"2026-02-13T20:27:31.598346438Z"} +{"id":"NK-zl922p","title":"slow scrolling in v2 ui compared to v1","description":"When using j/k to go to the next feed, they appeared instantly, now it feels like a slow scroll. Make it speedy again.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:41:02.267766275Z","updated":"2026-02-14T04:27:10.368160216Z"} {"id":"NK-zs9we8","title":"UI Styling: Sidebar (Fixed, Gray Background)","description":"","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T18:05:16.188317572Z","updated":"2026-02-13T18:11:46.213993245Z"} {"id":"NK-zt4e32","title":"Implement Frontend Feed List","description":"Create feed list view in new frontend. Fetch feeds from API.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T05:44:01.58866298Z","updated":"2026-02-13T05:59:46.132148641Z"} {"id":"NK-d0ghccy","from_ticket_id":"NK-ric1zs","to_ticket_id":"NK-1phdpf","type":"created_from","created":"2026-02-13T04:26:55.875394997Z"} {"id":"NK-d0lgaab","from_ticket_id":"NK-sne5ox","to_ticket_id":"NK-0ppv3f","type":"created_from","created":"2026-02-13T15:05:23.289745853Z"} +{"id":"NK-d1q1e8a","from_ticket_id":"NK-wjnczv","to_ticket_id":"NK-chns2b","type":"created_from","created":"2026-02-14T05:13:23.323181359Z"} {"id":"NK-d1uyy71","from_ticket_id":"NK-27or4b","to_ticket_id":"NK-bsdwqz","type":"created_from","created":"2026-02-13T05:03:09.689282214Z"} {"id":"NK-d50pbhs","from_ticket_id":"NK-zt4e32","to_ticket_id":"NK-t0nmbj","type":"created_from","created":"2026-02-13T05:44:01.598803513Z"} {"id":"NK-d58l5y5","from_ticket_id":"NK-ojdcmq","to_ticket_id":"NK-5ocxgm","type":"created_from","created":"2026-02-13T19:45:07.395109046Z"} @@ -64,16 +85,23 @@ {"id":"NK-dffwhjf","from_ticket_id":"NK-2t5ijy","to_ticket_id":"NK-lrew5z","type":"created_from","created":"2026-02-13T18:11:47.471931543Z"} {"id":"NK-dgbrb79","from_ticket_id":"NK-9hx0y7","to_ticket_id":"NK-t0nmbj","type":"created_from","created":"2026-02-13T05:44:01.556027956Z"} {"id":"NK-dgfppki","from_ticket_id":"NK-gqkh96","to_ticket_id":"NK-x924bu","type":"created_from","created":"2026-02-13T03:54:30.303602703Z"} +{"id":"NK-dgu0o9d","from_ticket_id":"NK-ca9t70","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:41.786634182Z"} +{"id":"NK-dj3r998","from_ticket_id":"NK-thq2oq","to_ticket_id":"NK-9pgjph","type":"created_from","created":"2026-02-14T03:30:58.76860979Z"} {"id":"NK-dk4vq5o","from_ticket_id":"NK-uy90he","to_ticket_id":"NK-mwf9q2","type":"created_from","created":"2026-02-13T18:05:17.305248863Z"} {"id":"NK-dkhu8ov","from_ticket_id":"NK-mwf9q2","to_ticket_id":"NK-0ppv3f","type":"created_from","created":"2026-02-13T15:04:12.449401674Z"} {"id":"NK-dl8clj9","from_ticket_id":"NK-0nf7hu","to_ticket_id":"NK-9hx0y7","type":"created_from","created":"2026-02-13T05:50:46.769436228Z"} {"id":"NK-dlvmiyc","from_ticket_id":"NK-7tzbql","to_ticket_id":"NK-bsdwqz","type":"created_from","created":"2026-02-13T05:02:57.392616851Z"} +{"id":"NK-dm35o6g","from_ticket_id":"NK-d4c8jv","to_ticket_id":"NK-chns2b","type":"created_from","created":"2026-02-14T04:46:32.151239137Z"} {"id":"NK-dm75oc8","from_ticket_id":"NK-3om7x2","to_ticket_id":"NK-zt4e32","type":"created_from","created":"2026-02-13T05:59:46.169842933Z"} {"id":"NK-dmow9sy","from_ticket_id":"NK-iw9l7h","to_ticket_id":"NK-uywybr","type":"created_from","created":"2026-02-14T01:04:11.599126072Z"} +{"id":"NK-dnspb2r","from_ticket_id":"NK-6o87rr","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:40.652696057Z"} {"id":"NK-dnw8qnj","from_ticket_id":"NK-qwef98","to_ticket_id":"NK-mwf9q2","type":"created_from","created":"2026-02-13T18:05:18.469080925Z"} {"id":"NK-dofihuz","from_ticket_id":"NK-0ppv3f","to_ticket_id":"NK-t0nmbj","type":"created_from","created":"2026-02-13T05:44:01.640770816Z"} {"id":"NK-dumpdcp","from_ticket_id":"NK-59kbij","to_ticket_id":"NK-ek0cox","type":"created_from","created":"2026-02-13T14:58:18.351925575Z"} {"id":"NK-dw8luqe","from_ticket_id":"NK-ek0cox","to_ticket_id":"NK-3om7x2","type":"created_from","created":"2026-02-13T14:55:14.832352853Z"} {"id":"NK-dwav3hh","from_ticket_id":"NK-6q9nyg","to_ticket_id":"NK-x924bu","type":"created_from","created":"2026-02-13T03:54:37.639569082Z"} +{"id":"NK-dwoby5c","from_ticket_id":"NK-5zgzee","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:43.008840145Z"} +{"id":"NK-dy64l7j","from_ticket_id":"NK-m8bya7","to_ticket_id":"NK-mbuw7q","type":"created_from","created":"2026-02-14T03:08:18.518727956Z"} {"id":"NK-dz8ehu0","from_ticket_id":"NK-zs9we8","to_ticket_id":"NK-mwf9q2","type":"created_from","created":"2026-02-13T18:05:16.20323827Z"} +{"id":"NK-dzv8knd","from_ticket_id":"NK-2ypbgd","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:39.432806599Z"} {"id":"NK-dzzbbxf","from_ticket_id":"NK-fnaohu","to_ticket_id":"NK-mwf9q2","type":"created_from","created":"2026-02-13T18:05:19.608013948Z"} @@ -14,7 +14,7 @@ LDFLAGS=-ldflags "-X main.Version=${VERSION} -X main.Build=${BUILD}" default: build -all: clean build docs +all: clean ui vanilla-ui embed build docs clean: rm -f ${BINARY} @@ -23,11 +23,21 @@ clean: ui: cd frontend && ${NPM} install && ${NPM} run build + rm -rf dist/v2 + mkdir -p dist/v2 + cp -r frontend/dist/* dist/v2/ -build: ui - ${RICE} -i ./web embed-go +vanilla-ui: + rm -rf dist/vanilla + mkdir -p dist/vanilla + cp vanilla/index.html vanilla/app.js vanilla/style.css dist/vanilla/ + +build: ${GO} build ${LDFLAGS} -o ${BINARY} +embed: + ${RICE} -i ./web embed-go + install: build cp ${BINARY} ${GOBIN} @@ -93,28 +93,32 @@ The easiest way to run Neko is using Docker and Docker Compose. Data is persisted in a Docker volume named `neko-data` (mapping to `/app/data/neko.db` inside the container). -### Build with React Frontend +### Build from Source -Neko now includes a modern React frontend. To build the full application: +Neko is designed for easy building. Static assets for the frontends are pre-built and checked into the repository in the `dist/` directory, so a standard Go build is all that's required for most users. -1. **Build the Frontend**: +1. **Standard Build**: ```bash - cd frontend - npm install - npm run build + # Uses existing assets in dist/ + make build ``` - This generates the static assets in `frontend/dist`. + A `neko` binary will be created in the root directory. -2. **Embed Assets and Build Backend**: - The backend uses `go.rice` to embed the static assets. +2. **Full Rebuild (including UI)**: + If you modify the React or Vanilla frontends, you'll need to rebuild them and update the embedded assets. This requires Node.js and the `rice` tool. ```bash - # From the root directory - go install github.com/GeertJohan/go.rice/rice@latest - rice embed-go -i ./web - go build + # Rebuilds everything: cleans, builds UIs, updates rice-box.go, and builds binary + make all ``` -A `neko` binary will be created in the root directory. +3. **Updating Embedded Assets Only**: + If you want to update the Go binary's embedded assets without a full clean: + ```bash + make ui # Rebuild React frontend + make vanilla-ui # Update Vanilla assets + make embed # Update the Go-embedded assets (rice-box.go) + make build # Build final binary + ``` # Configuration @@ -1,217 +0,0 @@ -mode: set -adammathes.com/neko/models/db.go:16.15,22.16 4 1 -adammathes.com/neko/models/db.go:22.16,24.3 1 0 -adammathes.com/neko/models/db.go:26.2,26.33 1 1 -adammathes.com/neko/models/db.go:26.33,28.3 1 1 -adammathes.com/neko/models/db.go:30.2,77.24 2 1 -adammathes.com/neko/models/feed/feed.go:27.32,30.16 3 1 -adammathes.com/neko/models/feed/feed.go:30.16,32.3 1 0 -adammathes.com/neko/models/feed/feed.go:33.2,34.16 2 1 -adammathes.com/neko/models/feed/feed.go:34.16,36.3 1 1 -adammathes.com/neko/models/feed/feed.go:37.2,37.12 1 1 -adammathes.com/neko/models/feed/feed.go:40.29,42.2 1 1 -adammathes.com/neko/models/feed/feed.go:44.44,49.16 2 1 -adammathes.com/neko/models/feed/feed.go:49.16,51.3 1 0 -adammathes.com/neko/models/feed/feed.go:52.2,55.18 3 1 -adammathes.com/neko/models/feed/feed.go:55.18,59.17 4 1 -adammathes.com/neko/models/feed/feed.go:59.17,61.4 1 0 -adammathes.com/neko/models/feed/feed.go:62.3,62.27 1 1 -adammathes.com/neko/models/feed/feed.go:64.2,64.34 1 1 -adammathes.com/neko/models/feed/feed.go:64.34,66.3 1 0 -adammathes.com/neko/models/feed/feed.go:67.2,67.19 1 1 -adammathes.com/neko/models/feed/feed.go:70.25,71.23 1 1 -adammathes.com/neko/models/feed/feed.go:71.23,73.3 1 1 -adammathes.com/neko/models/feed/feed.go:75.2,75.15 1 1 -adammathes.com/neko/models/feed/feed.go:75.15,77.3 1 1 -adammathes.com/neko/models/feed/feed.go:79.2,79.21 1 1 -adammathes.com/neko/models/feed/feed.go:79.21,81.3 1 1 -adammathes.com/neko/models/feed/feed.go:83.2,85.78 1 1 -adammathes.com/neko/models/feed/feed.go:88.25,91.16 2 1 -adammathes.com/neko/models/feed/feed.go:91.16,93.3 1 0 -adammathes.com/neko/models/feed/feed.go:96.40,100.16 2 1 -adammathes.com/neko/models/feed/feed.go:100.16,102.3 1 1 -adammathes.com/neko/models/feed/feed.go:103.2,103.12 1 1 -adammathes.com/neko/models/feed/feed.go:106.31,109.16 2 1 -adammathes.com/neko/models/feed/feed.go:109.16,111.3 1 1 -adammathes.com/neko/models/feed/feed.go:113.2,116.12 3 1 -adammathes.com/neko/models/feed/feed.go:120.40,122.16 2 1 -adammathes.com/neko/models/feed/feed.go:122.16,125.3 1 1 -adammathes.com/neko/models/feed/feed.go:129.2,130.21 2 1 -adammathes.com/neko/models/feed/feed.go:132.18,133.13 1 1 -adammathes.com/neko/models/feed/feed.go:134.22,135.13 1 1 -adammathes.com/neko/models/feed/feed.go:136.29,137.13 1 1 -adammathes.com/neko/models/feed/feed.go:138.30,139.13 1 1 -adammathes.com/neko/models/feed/feed.go:143.2,148.58 4 1 -adammathes.com/neko/models/feed/feed.go:148.58,150.14 1 1 -adammathes.com/neko/models/feed/feed.go:150.14,153.4 1 1 -adammathes.com/neko/models/feed/feed.go:155.3,157.34 3 1 -adammathes.com/neko/models/feed/feed.go:157.34,159.4 1 1 -adammathes.com/neko/models/feed/feed.go:160.3,160.33 1 1 -adammathes.com/neko/models/feed/feed.go:160.33,162.4 1 1 -adammathes.com/neko/models/feed/feed.go:166.2,166.13 1 1 -adammathes.com/neko/models/feed/feed.go:166.13,168.3 1 1 -adammathes.com/neko/models/feed/feed.go:171.2,171.17 1 1 -adammathes.com/neko/models/feed/feed.go:171.17,173.3 1 1 -adammathes.com/neko/models/feed/feed.go:174.2,174.10 1 1 -adammathes.com/neko/models/feed/feed.go:177.40,183.16 2 1 -adammathes.com/neko/models/feed/feed.go:183.16,185.3 1 0 -adammathes.com/neko/models/feed/feed.go:186.2,189.18 3 1 -adammathes.com/neko/models/feed/feed.go:189.18,192.17 3 1 -adammathes.com/neko/models/feed/feed.go:192.17,194.4 1 0 -adammathes.com/neko/models/feed/feed.go:195.3,195.37 1 1 -adammathes.com/neko/models/feed/feed.go:197.2,197.34 1 1 -adammathes.com/neko/models/feed/feed.go:197.34,199.3 1 0 -adammathes.com/neko/models/feed/feed.go:200.2,200.24 1 1 -adammathes.com/neko/models/item/item.go:38.24,42.2 3 1 -adammathes.com/neko/models/item/item.go:44.31,48.16 2 1 -adammathes.com/neko/models/item/item.go:48.16,51.3 2 1 -adammathes.com/neko/models/item/item.go:53.2,56.12 3 1 -adammathes.com/neko/models/item/item.go:59.23,63.16 2 1 -adammathes.com/neko/models/item/item.go:63.16,65.3 1 0 -adammathes.com/neko/models/item/item.go:68.27,72.16 2 1 -adammathes.com/neko/models/item/item.go:72.16,74.3 1 0 -adammathes.com/neko/models/item/item.go:77.40,83.2 5 1 -adammathes.com/neko/models/item/item.go:85.31,87.35 2 1 -adammathes.com/neko/models/item/item.go:87.35,89.3 1 0 -adammathes.com/neko/models/item/item.go:90.2,90.17 1 1 -adammathes.com/neko/models/item/item.go:93.33,97.16 4 1 -adammathes.com/neko/models/item/item.go:97.16,100.3 2 0 -adammathes.com/neko/models/item/item.go:102.2,102.28 1 1 -adammathes.com/neko/models/item/item.go:102.28,104.3 1 1 -adammathes.com/neko/models/item/item.go:106.2,112.16 6 1 -adammathes.com/neko/models/item/item.go:112.16,115.3 2 0 -adammathes.com/neko/models/item/item.go:117.2,124.16 5 1 -adammathes.com/neko/models/item/item.go:124.16,126.3 1 0 -adammathes.com/neko/models/item/item.go:129.149,133.24 3 1 -adammathes.com/neko/models/item/item.go:133.24,135.3 1 1 -adammathes.com/neko/models/item/item.go:137.2,145.17 3 1 -adammathes.com/neko/models/item/item.go:145.17,148.3 2 1 -adammathes.com/neko/models/item/item.go:150.2,150.18 1 1 -adammathes.com/neko/models/item/item.go:150.18,153.3 2 1 -adammathes.com/neko/models/item/item.go:155.2,155.20 1 1 -adammathes.com/neko/models/item/item.go:155.20,158.3 2 1 -adammathes.com/neko/models/item/item.go:160.2,160.17 1 1 -adammathes.com/neko/models/item/item.go:160.17,162.3 1 1 -adammathes.com/neko/models/item/item.go:164.2,164.18 1 1 -adammathes.com/neko/models/item/item.go:164.18,167.3 2 1 -adammathes.com/neko/models/item/item.go:169.2,169.24 1 1 -adammathes.com/neko/models/item/item.go:169.24,172.3 2 1 -adammathes.com/neko/models/item/item.go:176.2,176.18 1 1 -adammathes.com/neko/models/item/item.go:176.18,178.3 1 1 -adammathes.com/neko/models/item/item.go:180.2,185.16 3 1 -adammathes.com/neko/models/item/item.go:185.16,188.3 2 0 -adammathes.com/neko/models/item/item.go:189.2,194.18 4 1 -adammathes.com/neko/models/item/item.go:194.18,198.17 4 1 -adammathes.com/neko/models/item/item.go:198.17,201.4 2 0 -adammathes.com/neko/models/item/item.go:206.3,208.32 3 1 -adammathes.com/neko/models/item/item.go:208.32,210.4 1 0 -adammathes.com/neko/models/item/item.go:211.3,217.27 7 1 -adammathes.com/neko/models/item/item.go:219.2,219.34 1 1 -adammathes.com/neko/models/item/item.go:219.34,221.3 1 0 -adammathes.com/neko/models/item/item.go:222.2,222.19 1 1 -adammathes.com/neko/models/item/item.go:225.35,227.54 1 1 -adammathes.com/neko/models/item/item.go:227.54,229.3 1 1 -adammathes.com/neko/models/item/item.go:233.37,235.16 2 1 -adammathes.com/neko/models/item/item.go:235.16,238.3 2 0 -adammathes.com/neko/models/item/item.go:240.2,240.59 1 1 -adammathes.com/neko/models/item/item.go:240.59,241.37 1 1 -adammathes.com/neko/models/item/item.go:241.37,243.4 1 1 -adammathes.com/neko/models/item/item.go:246.2,247.15 2 1 -adammathes.com/neko/models/item/item.go:250.34,252.2 1 1 -adammathes.com/neko/vlog/vlog.go:10.13,12.2 1 1 -adammathes.com/neko/vlog/vlog.go:14.46,15.13 1 1 -adammathes.com/neko/vlog/vlog.go:15.13,17.3 1 1 -adammathes.com/neko/vlog/vlog.go:20.32,21.13 1 1 -adammathes.com/neko/vlog/vlog.go:21.13,23.3 1 1 -adammathes.com/neko/tui/tui.go:24.42,24.62 1 1 -adammathes.com/neko/tui/tui.go:40.23,49.2 5 1 -adammathes.com/neko/tui/tui.go:51.31,53.2 1 1 -adammathes.com/neko/tui/tui.go:61.26,63.16 2 1 -adammathes.com/neko/tui/tui.go:63.16,65.3 1 0 -adammathes.com/neko/tui/tui.go:66.2,66.24 1 1 -adammathes.com/neko/tui/tui.go:69.38,70.24 1 1 -adammathes.com/neko/tui/tui.go:70.24,72.17 2 1 -adammathes.com/neko/tui/tui.go:72.17,74.4 1 0 -adammathes.com/neko/tui/tui.go:75.3,75.25 1 1 -adammathes.com/neko/tui/tui.go:79.57,82.27 2 1 -adammathes.com/neko/tui/tui.go:83.25,89.40 6 1 -adammathes.com/neko/tui/tui.go:91.16,94.29 3 1 -adammathes.com/neko/tui/tui.go:94.29,96.4 1 1 -adammathes.com/neko/tui/tui.go:97.3,98.29 2 1 -adammathes.com/neko/tui/tui.go:100.16,103.30 3 1 -adammathes.com/neko/tui/tui.go:103.30,105.4 1 1 -adammathes.com/neko/tui/tui.go:106.3,107.28 2 1 -adammathes.com/neko/tui/tui.go:107.28,109.4 1 1 -adammathes.com/neko/tui/tui.go:109.9,111.4 1 0 -adammathes.com/neko/tui/tui.go:112.3,112.22 1 1 -adammathes.com/neko/tui/tui.go:114.14,116.21 2 0 -adammathes.com/neko/tui/tui.go:118.18,119.23 1 1 -adammathes.com/neko/tui/tui.go:120.17,121.22 1 0 -adammathes.com/neko/tui/tui.go:123.19,124.28 1 1 -adammathes.com/neko/tui/tui.go:124.28,126.5 1 0 -adammathes.com/neko/tui/tui.go:127.4,127.28 1 1 -adammathes.com/neko/tui/tui.go:127.28,129.5 1 1 -adammathes.com/neko/tui/tui.go:129.10,131.5 1 1 -adammathes.com/neko/tui/tui.go:133.16,134.28 1 1 -adammathes.com/neko/tui/tui.go:134.28,136.39 2 0 -adammathes.com/neko/tui/tui.go:136.39,139.6 2 0 -adammathes.com/neko/tui/tui.go:140.10,140.35 1 1 -adammathes.com/neko/tui/tui.go:140.35,142.39 2 1 -adammathes.com/neko/tui/tui.go:142.39,152.6 5 1 -adammathes.com/neko/tui/tui.go:157.2,157.26 1 1 -adammathes.com/neko/tui/tui.go:157.26,159.3 1 1 -adammathes.com/neko/tui/tui.go:159.8,159.33 1 1 -adammathes.com/neko/tui/tui.go:159.33,161.3 1 1 -adammathes.com/neko/tui/tui.go:161.8,161.35 1 1 -adammathes.com/neko/tui/tui.go:161.35,163.3 1 1 -adammathes.com/neko/tui/tui.go:165.2,165.15 1 1 -adammathes.com/neko/tui/tui.go:168.30,169.18 1 1 -adammathes.com/neko/tui/tui.go:169.18,171.3 1 0 -adammathes.com/neko/tui/tui.go:173.2,176.17 3 1 -adammathes.com/neko/tui/tui.go:177.17,178.35 1 1 -adammathes.com/neko/tui/tui.go:179.17,180.35 1 1 -adammathes.com/neko/tui/tui.go:181.19,182.28 1 1 -adammathes.com/neko/tui/tui.go:182.28,185.4 2 1 -adammathes.com/neko/tui/tui.go:188.2,188.19 1 1 -adammathes.com/neko/tui/tui.go:191.18,193.35 2 0 -adammathes.com/neko/tui/tui.go:193.35,195.3 1 0 -adammathes.com/neko/tui/tui.go:196.2,196.12 1 0 -adammathes.com/neko/web/rice-box.go:10.13,140.2 16 1 -adammathes.com/neko/web/web.go:19.59,21.2 1 1 -adammathes.com/neko/web/web.go:23.64,25.18 2 1 -adammathes.com/neko/web/web.go:25.18,28.3 2 0 -adammathes.com/neko/web/web.go:30.2,31.16 2 1 -adammathes.com/neko/web/web.go:31.16,34.3 2 1 -adammathes.com/neko/web/web.go:37.2,37.57 1 1 -adammathes.com/neko/web/web.go:37.57,40.3 2 1 -adammathes.com/neko/web/web.go:42.2,42.48 1 1 -adammathes.com/neko/web/web.go:42.48,45.3 2 1 -adammathes.com/neko/web/web.go:48.2,53.16 3 1 -adammathes.com/neko/web/web.go:53.16,56.3 2 0 -adammathes.com/neko/web/web.go:58.2,62.16 4 1 -adammathes.com/neko/web/web.go:62.16,65.3 2 1 -adammathes.com/neko/web/web.go:67.2,68.16 2 1 -adammathes.com/neko/web/web.go:68.16,71.3 2 0 -adammathes.com/neko/web/web.go:73.2,76.14 4 1 -adammathes.com/neko/web/web.go:82.59,83.18 1 1 -adammathes.com/neko/web/web.go:84.13,85.37 1 1 -adammathes.com/neko/web/web.go:86.14,88.47 2 1 -adammathes.com/neko/web/web.go:88.47,93.4 4 1 -adammathes.com/neko/web/web.go:93.9,95.4 1 1 -adammathes.com/neko/web/web.go:96.10,97.29 1 1 -adammathes.com/neko/web/web.go:101.60,105.2 3 1 -adammathes.com/neko/web/web.go:107.42,109.16 2 1 -adammathes.com/neko/web/web.go:109.16,111.3 1 1 -adammathes.com/neko/web/web.go:112.2,113.19 2 1 -adammathes.com/neko/web/web.go:116.58,117.54 1 1 -adammathes.com/neko/web/web.go:117.54,118.23 1 1 -adammathes.com/neko/web/web.go:118.23,120.4 1 1 -adammathes.com/neko/web/web.go:120.9,122.4 1 1 -adammathes.com/neko/web/web.go:126.57,127.71 1 1 -adammathes.com/neko/web/web.go:127.71,128.23 1 1 -adammathes.com/neko/web/web.go:128.23,130.4 1 1 -adammathes.com/neko/web/web.go:130.9,132.4 1 1 -adammathes.com/neko/web/web.go:136.78,139.16 3 1 -adammathes.com/neko/web/web.go:139.16,140.13 1 0 -adammathes.com/neko/web/web.go:142.2,143.53 2 1 -adammathes.com/neko/web/web.go:146.14,171.2 16 0 diff --git a/dist/v2/assets/index-B3U-SMew.css b/dist/v2/assets/index-B3U-SMew.css new file mode 100644 index 0000000..28223c2 --- /dev/null +++ b/dist/v2/assets/index-B3U-SMew.css @@ -0,0 +1 @@ +body{font-family:Palatino,Palatino Linotype,Palatino LT STD,Book Antiqua,Georgia,serif}h1,h2,h3,h4,h5,.logo,.nav-link,.logout-btn{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}:root{line-height:1.5;font-weight:400;font-size:18px;--bg-color: #ffffff;--text-color: rgba(0, 0, 0, .87);--sidebar-bg: #ccc;--link-color: #0000EE;color-scheme:light dark;color:var(--text-color);background-color:var(--bg-color);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){:root{--bg-color: #24292e;--text-color: #ffffff;--sidebar-bg: #1b1f23;--link-color: rgb(90, 200, 250)}}.theme-dark{--bg-color: #24292e;--text-color: #ffffff;--sidebar-bg: #1b1f23;--link-color: rgb(90, 200, 250);background-color:var(--bg-color);color:var(--text-color)}.theme-black{--bg-color: #000000;--text-color: #ffffff;--sidebar-bg: #111111;--link-color: rgb(90, 200, 250);background-color:var(--bg-color);color:var(--text-color)}.theme-dark button,.theme-black button{background-color:#333;color:#fff}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}a{color:var(--link-color);text-decoration:none}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#00f;text-decoration:underline}button{background-color:#f9f9f9}}.login-container{display:flex;justify-content:center;align-items:center;height:100vh;background-color:#f5f5f5}.login-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 6px #0000001a;width:100%;max-width:400px}.login-form h1{margin-bottom:2rem;text-align:center;color:#333}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:700;color:#555}.form-group input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.error-message{color:#dc3545;margin-bottom:1rem;text-align:center}button[type=submit]{width:100%;padding:.75rem;background-color:#007bff;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s}button[type=submit]:hover{background-color:#0056b3}*{box-sizing:border-box}body{margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashboard{display:flex;flex-direction:column;height:100vh;overflow:hidden}.dashboard-header{background:#222;color:#fff;padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center;font-weight:700}.dashboard-header .logo{margin:0;font-size:2rem;cursor:pointer;line-height:1}.nav-link,.logout-btn{font-weight:700;font-variant:small-caps;text-transform:lowercase;font-size:1rem;background:transparent;border:none;color:#ccc;cursor:pointer;margin-left:1rem}.nav-link:hover,.logout-btn:hover{color:#fff;text-decoration:underline}.dashboard-content{display:flex;flex:1;overflow:hidden;position:relative}.dashboard-sidebar{width:15rem;background:var(--sidebar-bg);border-right:1px solid #999;display:flex;flex-direction:column;overflow-y:auto;padding:1rem;transition:margin-left .4s ease}.dashboard-sidebar.hidden{margin-left:-15rem}.dashboard-main{flex:1;padding:2rem;overflow-y:auto;background:var(--bg-color);margin-left:0}.dashboard-main>*{max-width:600px;margin:0}.logout-btn{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:all .2s;font-size:.9rem}.logout-btn:hover{background:#ffffff1a;border-color:#ffffff80}.feed-list{padding:0;background:transparent}.search-section{margin-bottom:1.5rem}.search-form{display:flex}.search-input{width:100%;padding:.5rem;border:1px solid #999;background:#eee;font-size:1rem;font-family:inherit}.search-input:focus{outline:none;background:#fff;border-color:#000}.feed-list h2,.feed-section-header{font-size:1.2rem;margin-bottom:.5rem;border-bottom:1px solid #999;padding-bottom:.25rem;text-transform:uppercase;letter-spacing:1px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center}.toggle-indicator{font-size:.8rem;margin-right:.5rem;display:inline-block;width:1rem;text-align:center}.feed-list-items,.tag-list-items,.filter-list{list-style:none;padding:0;margin:0}.sidebar-feed-item{padding:.25rem 0;border-bottom:none;display:flex;justify-content:space-between;align-items:center}.feed-title{color:var(--link-color);text-decoration:none;font-size:.9rem;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.feed-title:hover{text-decoration:underline;color:var(--link-color)}.feed-category{display:none}.tag-section{margin-top:2rem}.tag-link{color:var(--link-color);text-decoration:none;font-size:.9rem;display:block;padding:.1rem 0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.tag-link:hover{text-decoration:underline;background:transparent;color:var(--link-color)}.filter-section{margin-bottom:2rem}.filter-list{display:block;list-style:none;padding:0;margin:0}.filter-list li a{text-decoration:none;color:#333;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-variant:small-caps;text-transform:lowercase;font-size:1.1rem;display:block;margin-bottom:.5rem}.filter-list li a:hover{color:#00f;background-color:transparent;text-decoration:underline}.feed-title.active,.tag-link.active,.filter-list li a.active,.theme-selector button.active{font-weight:700!important}.theme-section{margin-top:2rem;padding-bottom:2rem}.theme-selector{display:flex;justify-content:space-between;gap:5px}.theme-selector button{font-size:.8rem;padding:.2rem .5rem;width:30%;background:#f5f5f5;color:#00f;border:1px solid #ccc;border-radius:4px;font-variant:small-caps;text-transform:lowercase}.theme-selector button:hover{background:#eee}.theme-selector button.active{color:#000;border-color:#000}.feed-item{padding:1rem;margin-top:5rem;list-style:none;border-bottom:none}.feed-item.read .item-title{font-weight:400}.feed-item.unread .item-title{font-weight:700}.item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.item-title{font-size:1.35rem;font-weight:700;text-decoration:none;color:var(--link-color);display:block;flex:1}.item-title:hover{text-decoration:none;color:var(--link-color)}.item-actions{display:flex;gap:.5rem;margin-left:1rem}.star-btn{background:none;border:none;cursor:pointer;font-size:1.25rem;padding:0 0 0 .5rem;vertical-align:middle;transition:color .2s;line-height:1}.star-btn.is-starred{color:#00f}.star-btn.is-unstarred{color:#000}.star-btn:hover{color:#00f}.action-btn{background:#f5f5f5;border:none;cursor:pointer;padding:2px 6px;font-size:1rem;color:#00f;font-weight:700}.action-btn:hover{background-color:#eee}.dateline{margin-top:0;font-weight:400;font-size:.75em;color:#ccc;margin-bottom:1rem}.dateline a{color:#ccc;text-decoration:none}.item-description{color:#000;line-height:1.5;font-size:1rem;margin-top:1rem}.item-description img{max-width:100%;height:auto;display:block;margin:1rem 0}.item-description blockquote{padding:1rem 1rem 0;border-left:4px solid #ddd;color:#666;margin-left:0}.feed-items{padding:1rem}.feed-items h2{margin-top:0;border-bottom:2px solid #eee;padding-bottom:.5rem}.item-list{list-style:none;padding:0}.loading-more{padding:2rem;text-align:center;color:#888;font-size:.9rem;min-height:50px}.settings-page{padding:2rem;max-width:800px;margin:0 auto}.add-feed-section{background:#f9f9f9;padding:1.5rem;border-radius:8px;margin-bottom:2rem;border:1px solid #eee}.add-feed-form{display:flex;gap:1rem}.feed-input{flex:1;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}.error-message{color:#d32f2f;margin-top:1rem}.settings-feed-list{list-style:none;padding:0;border:1px solid #eee;border-radius:8px}.settings-feed-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #eee}.settings-feed-item:last-child{border-bottom:none}.feed-info{display:flex;flex-direction:column}.feed-title{font-weight:700;font-size:1.1rem}.feed-url{color:#666;font-size:.9rem}.delete-btn{background:#ff5252;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.delete-btn:hover{background:#ff1744}.delete-btn:disabled{background:#ffcdd2;cursor:not-allowed} diff --git a/dist/v2/assets/index-f8d4YxQn.js b/dist/v2/assets/index-f8d4YxQn.js new file mode 100644 index 0000000..e165475 --- /dev/null +++ b/dist/v2/assets/index-f8d4YxQn.js @@ -0,0 +1,11 @@ +(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))f(d);new MutationObserver(d=>{for(const m of d)if(m.type==="childList")for(const S of m.addedNodes)S.tagName==="LINK"&&S.rel==="modulepreload"&&f(S)}).observe(document,{childList:!0,subtree:!0});function o(d){const m={};return d.integrity&&(m.integrity=d.integrity),d.referrerPolicy&&(m.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?m.credentials="include":d.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function f(d){if(d.ep)return;d.ep=!0;const m=o(d);fetch(d.href,m)}})();var Mf={exports:{}},Cu={};var Fd;function lv(){if(Fd)return Cu;Fd=1;var c=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function o(f,d,m){var S=null;if(m!==void 0&&(S=""+m),d.key!==void 0&&(S=""+d.key),"key"in d){m={};for(var R in d)R!=="key"&&(m[R]=d[R])}else m=d;return d=m.ref,{$$typeof:c,type:f,key:S,ref:d!==void 0?d:null,props:m}}return Cu.Fragment=s,Cu.jsx=o,Cu.jsxs=o,Cu}var Id;function av(){return Id||(Id=1,Mf.exports=lv()),Mf.exports}var j=av(),Df={exports:{}},et={};var Pd;function uv(){if(Pd)return et;Pd=1;var c=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),m=Symbol.for("react.consumer"),S=Symbol.for("react.context"),R=Symbol.for("react.forward_ref"),b=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),z=Symbol.for("react.activity"),H=Symbol.iterator;function Q(g){return g===null||typeof g!="object"?null:(g=H&&g[H]||g["@@iterator"],typeof g=="function"?g:null)}var F={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},V=Object.assign,G={};function J(g,x,L){this.props=g,this.context=x,this.refs=G,this.updater=L||F}J.prototype.isReactComponent={},J.prototype.setState=function(g,x){if(typeof g!="object"&&typeof g!="function"&&g!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,g,x,"setState")},J.prototype.forceUpdate=function(g){this.updater.enqueueForceUpdate(this,g,"forceUpdate")};function X(){}X.prototype=J.prototype;function W(g,x,L){this.props=g,this.context=x,this.refs=G,this.updater=L||F}var $=W.prototype=new X;$.constructor=W,V($,J.prototype),$.isPureReactComponent=!0;var P=Array.isArray;function B(){}var Y={H:null,A:null,T:null,S:null},st=Object.prototype.hasOwnProperty;function vt(g,x,L){var K=L.ref;return{$$typeof:c,type:g,key:x,ref:K!==void 0?K:null,props:L}}function Wt(g,x){return vt(g.type,x,g.props)}function Ce(g){return typeof g=="object"&&g!==null&&g.$$typeof===c}function kt(g){var x={"=":"=0",":":"=2"};return"$"+g.replace(/[=:]/g,function(L){return x[L]})}var Dl=/\/+/g;function qe(g,x){return typeof g=="object"&&g!==null&&g.key!=null?kt(""+g.key):x.toString(36)}function Re(g){switch(g.status){case"fulfilled":return g.value;case"rejected":throw g.reason;default:switch(typeof g.status=="string"?g.then(B,B):(g.status="pending",g.then(function(x){g.status==="pending"&&(g.status="fulfilled",g.value=x)},function(x){g.status==="pending"&&(g.status="rejected",g.reason=x)})),g.status){case"fulfilled":return g.value;case"rejected":throw g.reason}}throw g}function D(g,x,L,K,lt){var nt=typeof g;(nt==="undefined"||nt==="boolean")&&(g=null);var yt=!1;if(g===null)yt=!0;else switch(nt){case"bigint":case"string":case"number":yt=!0;break;case"object":switch(g.$$typeof){case c:case s:yt=!0;break;case N:return yt=g._init,D(yt(g._payload),x,L,K,lt)}}if(yt)return lt=lt(g),yt=K===""?"."+qe(g,0):K,P(lt)?(L="",yt!=null&&(L=yt.replace(Dl,"$&/")+"/"),D(lt,x,L,"",function(Ya){return Ya})):lt!=null&&(Ce(lt)&&(lt=Wt(lt,L+(lt.key==null||g&&g.key===lt.key?"":(""+lt.key).replace(Dl,"$&/")+"/")+yt)),x.push(lt)),1;yt=0;var Jt=K===""?".":K+":";if(P(g))for(var Ut=0;Ut<g.length;Ut++)K=g[Ut],nt=Jt+qe(K,Ut),yt+=D(K,x,L,nt,lt);else if(Ut=Q(g),typeof Ut=="function")for(g=Ut.call(g),Ut=0;!(K=g.next()).done;)K=K.value,nt=Jt+qe(K,Ut++),yt+=D(K,x,L,nt,lt);else if(nt==="object"){if(typeof g.then=="function")return D(Re(g),x,L,K,lt);throw x=String(g),Error("Objects are not valid as a React child (found: "+(x==="[object Object]"?"object with keys {"+Object.keys(g).join(", ")+"}":x)+"). If you meant to render a collection of children, use an array instead.")}return yt}function q(g,x,L){if(g==null)return g;var K=[],lt=0;return D(g,K,"","",function(nt){return x.call(L,nt,lt++)}),K}function tt(g){if(g._status===-1){var x=g._result;x=x(),x.then(function(L){(g._status===0||g._status===-1)&&(g._status=1,g._result=L)},function(L){(g._status===0||g._status===-1)&&(g._status=2,g._result=L)}),g._status===-1&&(g._status=0,g._result=x)}if(g._status===1)return g._result.default;throw g._result}var St=typeof reportError=="function"?reportError:function(g){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var x=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof g=="object"&&g!==null&&typeof g.message=="string"?String(g.message):String(g),error:g});if(!window.dispatchEvent(x))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",g);return}console.error(g)},zt={map:q,forEach:function(g,x,L){q(g,function(){x.apply(this,arguments)},L)},count:function(g){var x=0;return q(g,function(){x++}),x},toArray:function(g){return q(g,function(x){return x})||[]},only:function(g){if(!Ce(g))throw Error("React.Children.only expected to receive a single React element child.");return g}};return et.Activity=z,et.Children=zt,et.Component=J,et.Fragment=o,et.Profiler=d,et.PureComponent=W,et.StrictMode=f,et.Suspense=b,et.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=Y,et.__COMPILER_RUNTIME={__proto__:null,c:function(g){return Y.H.useMemoCache(g)}},et.cache=function(g){return function(){return g.apply(null,arguments)}},et.cacheSignal=function(){return null},et.cloneElement=function(g,x,L){if(g==null)throw Error("The argument must be a React element, but you passed "+g+".");var K=V({},g.props),lt=g.key;if(x!=null)for(nt in x.key!==void 0&&(lt=""+x.key),x)!st.call(x,nt)||nt==="key"||nt==="__self"||nt==="__source"||nt==="ref"&&x.ref===void 0||(K[nt]=x[nt]);var nt=arguments.length-2;if(nt===1)K.children=L;else if(1<nt){for(var yt=Array(nt),Jt=0;Jt<nt;Jt++)yt[Jt]=arguments[Jt+2];K.children=yt}return vt(g.type,lt,K)},et.createContext=function(g){return g={$$typeof:S,_currentValue:g,_currentValue2:g,_threadCount:0,Provider:null,Consumer:null},g.Provider=g,g.Consumer={$$typeof:m,_context:g},g},et.createElement=function(g,x,L){var K,lt={},nt=null;if(x!=null)for(K in x.key!==void 0&&(nt=""+x.key),x)st.call(x,K)&&K!=="key"&&K!=="__self"&&K!=="__source"&&(lt[K]=x[K]);var yt=arguments.length-2;if(yt===1)lt.children=L;else if(1<yt){for(var Jt=Array(yt),Ut=0;Ut<yt;Ut++)Jt[Ut]=arguments[Ut+2];lt.children=Jt}if(g&&g.defaultProps)for(K in yt=g.defaultProps,yt)lt[K]===void 0&&(lt[K]=yt[K]);return vt(g,nt,lt)},et.createRef=function(){return{current:null}},et.forwardRef=function(g){return{$$typeof:R,render:g}},et.isValidElement=Ce,et.lazy=function(g){return{$$typeof:N,_payload:{_status:-1,_result:g},_init:tt}},et.memo=function(g,x){return{$$typeof:y,type:g,compare:x===void 0?null:x}},et.startTransition=function(g){var x=Y.T,L={};Y.T=L;try{var K=g(),lt=Y.S;lt!==null&<(L,K),typeof K=="object"&&K!==null&&typeof K.then=="function"&&K.then(B,St)}catch(nt){St(nt)}finally{x!==null&&L.types!==null&&(x.types=L.types),Y.T=x}},et.unstable_useCacheRefresh=function(){return Y.H.useCacheRefresh()},et.use=function(g){return Y.H.use(g)},et.useActionState=function(g,x,L){return Y.H.useActionState(g,x,L)},et.useCallback=function(g,x){return Y.H.useCallback(g,x)},et.useContext=function(g){return Y.H.useContext(g)},et.useDebugValue=function(){},et.useDeferredValue=function(g,x){return Y.H.useDeferredValue(g,x)},et.useEffect=function(g,x){return Y.H.useEffect(g,x)},et.useEffectEvent=function(g){return Y.H.useEffectEvent(g)},et.useId=function(){return Y.H.useId()},et.useImperativeHandle=function(g,x,L){return Y.H.useImperativeHandle(g,x,L)},et.useInsertionEffect=function(g,x){return Y.H.useInsertionEffect(g,x)},et.useLayoutEffect=function(g,x){return Y.H.useLayoutEffect(g,x)},et.useMemo=function(g,x){return Y.H.useMemo(g,x)},et.useOptimistic=function(g,x){return Y.H.useOptimistic(g,x)},et.useReducer=function(g,x,L){return Y.H.useReducer(g,x,L)},et.useRef=function(g){return Y.H.useRef(g)},et.useState=function(g){return Y.H.useState(g)},et.useSyncExternalStore=function(g,x,L){return Y.H.useSyncExternalStore(g,x,L)},et.useTransition=function(){return Y.H.useTransition()},et.version="19.2.4",et}var th;function Xf(){return th||(th=1,Df.exports=uv()),Df.exports}var A=Xf(),Nf={exports:{}},xu={},Uf={exports:{}},Cf={};var eh;function nv(){return eh||(eh=1,(function(c){function s(D,q){var tt=D.length;D.push(q);t:for(;0<tt;){var St=tt-1>>>1,zt=D[St];if(0<d(zt,q))D[St]=q,D[tt]=zt,tt=St;else break t}}function o(D){return D.length===0?null:D[0]}function f(D){if(D.length===0)return null;var q=D[0],tt=D.pop();if(tt!==q){D[0]=tt;t:for(var St=0,zt=D.length,g=zt>>>1;St<g;){var x=2*(St+1)-1,L=D[x],K=x+1,lt=D[K];if(0>d(L,tt))K<zt&&0>d(lt,L)?(D[St]=lt,D[K]=tt,St=K):(D[St]=L,D[x]=tt,St=x);else if(K<zt&&0>d(lt,tt))D[St]=lt,D[K]=tt,St=K;else break t}}return q}function d(D,q){var tt=D.sortIndex-q.sortIndex;return tt!==0?tt:D.id-q.id}if(c.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;c.unstable_now=function(){return m.now()}}else{var S=Date,R=S.now();c.unstable_now=function(){return S.now()-R}}var b=[],y=[],N=1,z=null,H=3,Q=!1,F=!1,V=!1,G=!1,J=typeof setTimeout=="function"?setTimeout:null,X=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;function $(D){for(var q=o(y);q!==null;){if(q.callback===null)f(y);else if(q.startTime<=D)f(y),q.sortIndex=q.expirationTime,s(b,q);else break;q=o(y)}}function P(D){if(V=!1,$(D),!F)if(o(b)!==null)F=!0,B||(B=!0,kt());else{var q=o(y);q!==null&&Re(P,q.startTime-D)}}var B=!1,Y=-1,st=5,vt=-1;function Wt(){return G?!0:!(c.unstable_now()-vt<st)}function Ce(){if(G=!1,B){var D=c.unstable_now();vt=D;var q=!0;try{t:{F=!1,V&&(V=!1,X(Y),Y=-1),Q=!0;var tt=H;try{e:{for($(D),z=o(b);z!==null&&!(z.expirationTime>D&&Wt());){var St=z.callback;if(typeof St=="function"){z.callback=null,H=z.priorityLevel;var zt=St(z.expirationTime<=D);if(D=c.unstable_now(),typeof zt=="function"){z.callback=zt,$(D),q=!0;break e}z===o(b)&&f(b),$(D)}else f(b);z=o(b)}if(z!==null)q=!0;else{var g=o(y);g!==null&&Re(P,g.startTime-D),q=!1}}break t}finally{z=null,H=tt,Q=!1}q=void 0}}finally{q?kt():B=!1}}}var kt;if(typeof W=="function")kt=function(){W(Ce)};else if(typeof MessageChannel<"u"){var Dl=new MessageChannel,qe=Dl.port2;Dl.port1.onmessage=Ce,kt=function(){qe.postMessage(null)}}else kt=function(){J(Ce,0)};function Re(D,q){Y=J(function(){D(c.unstable_now())},q)}c.unstable_IdlePriority=5,c.unstable_ImmediatePriority=1,c.unstable_LowPriority=4,c.unstable_NormalPriority=3,c.unstable_Profiling=null,c.unstable_UserBlockingPriority=2,c.unstable_cancelCallback=function(D){D.callback=null},c.unstable_forceFrameRate=function(D){0>D||125<D?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):st=0<D?Math.floor(1e3/D):5},c.unstable_getCurrentPriorityLevel=function(){return H},c.unstable_next=function(D){switch(H){case 1:case 2:case 3:var q=3;break;default:q=H}var tt=H;H=q;try{return D()}finally{H=tt}},c.unstable_requestPaint=function(){G=!0},c.unstable_runWithPriority=function(D,q){switch(D){case 1:case 2:case 3:case 4:case 5:break;default:D=3}var tt=H;H=D;try{return q()}finally{H=tt}},c.unstable_scheduleCallback=function(D,q,tt){var St=c.unstable_now();switch(typeof tt=="object"&&tt!==null?(tt=tt.delay,tt=typeof tt=="number"&&0<tt?St+tt:St):tt=St,D){case 1:var zt=-1;break;case 2:zt=250;break;case 5:zt=1073741823;break;case 4:zt=1e4;break;default:zt=5e3}return zt=tt+zt,D={id:N++,callback:q,priorityLevel:D,startTime:tt,expirationTime:zt,sortIndex:-1},tt>St?(D.sortIndex=tt,s(y,D),o(b)===null&&D===o(y)&&(V?(X(Y),Y=-1):V=!0,Re(P,tt-St))):(D.sortIndex=zt,s(b,D),F||Q||(F=!0,B||(B=!0,kt()))),D},c.unstable_shouldYield=Wt,c.unstable_wrapCallback=function(D){var q=H;return function(){var tt=H;H=q;try{return D.apply(this,arguments)}finally{H=tt}}}})(Cf)),Cf}var lh;function iv(){return lh||(lh=1,Uf.exports=nv()),Uf.exports}var xf={exports:{}},wt={};var ah;function cv(){if(ah)return wt;ah=1;var c=Xf();function s(b){var y="https://react.dev/errors/"+b;if(1<arguments.length){y+="?args[]="+encodeURIComponent(arguments[1]);for(var N=2;N<arguments.length;N++)y+="&args[]="+encodeURIComponent(arguments[N])}return"Minified React error #"+b+"; visit "+y+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(){}var f={d:{f:o,r:function(){throw Error(s(522))},D:o,C:o,L:o,m:o,X:o,S:o,M:o},p:0,findDOMNode:null},d=Symbol.for("react.portal");function m(b,y,N){var z=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:d,key:z==null?null:""+z,children:b,containerInfo:y,implementation:N}}var S=c.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function R(b,y){if(b==="font")return"";if(typeof y=="string")return y==="use-credentials"?y:""}return wt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=f,wt.createPortal=function(b,y){var N=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!y||y.nodeType!==1&&y.nodeType!==9&&y.nodeType!==11)throw Error(s(299));return m(b,y,null,N)},wt.flushSync=function(b){var y=S.T,N=f.p;try{if(S.T=null,f.p=2,b)return b()}finally{S.T=y,f.p=N,f.d.f()}},wt.preconnect=function(b,y){typeof b=="string"&&(y?(y=y.crossOrigin,y=typeof y=="string"?y==="use-credentials"?y:"":void 0):y=null,f.d.C(b,y))},wt.prefetchDNS=function(b){typeof b=="string"&&f.d.D(b)},wt.preinit=function(b,y){if(typeof b=="string"&&y&&typeof y.as=="string"){var N=y.as,z=R(N,y.crossOrigin),H=typeof y.integrity=="string"?y.integrity:void 0,Q=typeof y.fetchPriority=="string"?y.fetchPriority:void 0;N==="style"?f.d.S(b,typeof y.precedence=="string"?y.precedence:void 0,{crossOrigin:z,integrity:H,fetchPriority:Q}):N==="script"&&f.d.X(b,{crossOrigin:z,integrity:H,fetchPriority:Q,nonce:typeof y.nonce=="string"?y.nonce:void 0})}},wt.preinitModule=function(b,y){if(typeof b=="string")if(typeof y=="object"&&y!==null){if(y.as==null||y.as==="script"){var N=R(y.as,y.crossOrigin);f.d.M(b,{crossOrigin:N,integrity:typeof y.integrity=="string"?y.integrity:void 0,nonce:typeof y.nonce=="string"?y.nonce:void 0})}}else y==null&&f.d.M(b)},wt.preload=function(b,y){if(typeof b=="string"&&typeof y=="object"&&y!==null&&typeof y.as=="string"){var N=y.as,z=R(N,y.crossOrigin);f.d.L(b,N,{crossOrigin:z,integrity:typeof y.integrity=="string"?y.integrity:void 0,nonce:typeof y.nonce=="string"?y.nonce:void 0,type:typeof y.type=="string"?y.type:void 0,fetchPriority:typeof y.fetchPriority=="string"?y.fetchPriority:void 0,referrerPolicy:typeof y.referrerPolicy=="string"?y.referrerPolicy:void 0,imageSrcSet:typeof y.imageSrcSet=="string"?y.imageSrcSet:void 0,imageSizes:typeof y.imageSizes=="string"?y.imageSizes:void 0,media:typeof y.media=="string"?y.media:void 0})}},wt.preloadModule=function(b,y){if(typeof b=="string")if(y){var N=R(y.as,y.crossOrigin);f.d.m(b,{as:typeof y.as=="string"&&y.as!=="script"?y.as:void 0,crossOrigin:N,integrity:typeof y.integrity=="string"?y.integrity:void 0})}else f.d.m(b)},wt.requestFormReset=function(b){f.d.r(b)},wt.unstable_batchedUpdates=function(b,y){return b(y)},wt.useFormState=function(b,y,N){return S.H.useFormState(b,y,N)},wt.useFormStatus=function(){return S.H.useHostTransitionStatus()},wt.version="19.2.4",wt}var uh;function fv(){if(uh)return xf.exports;uh=1;function c(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(s){console.error(s)}}return c(),xf.exports=cv(),xf.exports}var nh;function rv(){if(nh)return xu;nh=1;var c=iv(),s=Xf(),o=fv();function f(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)e+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function d(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function m(t){var e=t,l=t;if(t.alternate)for(;e.return;)e=e.return;else{t=e;do e=t,(e.flags&4098)!==0&&(l=e.return),t=e.return;while(t)}return e.tag===3?l:null}function S(t){if(t.tag===13){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function R(t){if(t.tag===31){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function b(t){if(m(t)!==t)throw Error(f(188))}function y(t){var e=t.alternate;if(!e){if(e=m(t),e===null)throw Error(f(188));return e!==t?null:t}for(var l=t,a=e;;){var u=l.return;if(u===null)break;var n=u.alternate;if(n===null){if(a=u.return,a!==null){l=a;continue}break}if(u.child===n.child){for(n=u.child;n;){if(n===l)return b(u),t;if(n===a)return b(u),e;n=n.sibling}throw Error(f(188))}if(l.return!==a.return)l=u,a=n;else{for(var i=!1,r=u.child;r;){if(r===l){i=!0,l=u,a=n;break}if(r===a){i=!0,a=u,l=n;break}r=r.sibling}if(!i){for(r=n.child;r;){if(r===l){i=!0,l=n,a=u;break}if(r===a){i=!0,a=n,l=u;break}r=r.sibling}if(!i)throw Error(f(189))}}if(l.alternate!==a)throw Error(f(190))}if(l.tag!==3)throw Error(f(188));return l.stateNode.current===l?t:e}function N(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t;for(t=t.child;t!==null;){if(e=N(t),e!==null)return e;t=t.sibling}return null}var z=Object.assign,H=Symbol.for("react.element"),Q=Symbol.for("react.transitional.element"),F=Symbol.for("react.portal"),V=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),J=Symbol.for("react.profiler"),X=Symbol.for("react.consumer"),W=Symbol.for("react.context"),$=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),B=Symbol.for("react.suspense_list"),Y=Symbol.for("react.memo"),st=Symbol.for("react.lazy"),vt=Symbol.for("react.activity"),Wt=Symbol.for("react.memo_cache_sentinel"),Ce=Symbol.iterator;function kt(t){return t===null||typeof t!="object"?null:(t=Ce&&t[Ce]||t["@@iterator"],typeof t=="function"?t:null)}var Dl=Symbol.for("react.client.reference");function qe(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Dl?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case V:return"Fragment";case J:return"Profiler";case G:return"StrictMode";case P:return"Suspense";case B:return"SuspenseList";case vt:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case F:return"Portal";case W:return t.displayName||"Context";case X:return(t._context.displayName||"Context")+".Consumer";case $:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Y:return e=t.displayName||null,e!==null?e:qe(t.type)||"Memo";case st:e=t._payload,t=t._init;try{return qe(t(e))}catch{}}return null}var Re=Array.isArray,D=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,tt={pending:!1,data:null,method:null,action:null},St=[],zt=-1;function g(t){return{current:t}}function x(t){0>zt||(t.current=St[zt],St[zt]=null,zt--)}function L(t,e){zt++,St[zt]=t.current,t.current=e}var K=g(null),lt=g(null),nt=g(null),yt=g(null);function Jt(t,e){switch(L(nt,e),L(lt,t),L(K,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?bd(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=bd(e),t=Ed(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}x(K),L(K,t)}function Ut(){x(K),x(lt),x(nt)}function Ya(t){t.memoizedState!==null&&L(yt,t);var e=K.current,l=Ed(e,t.type);e!==l&&(L(lt,t),L(K,l))}function Lu(t){lt.current===t&&(x(K),x(lt)),yt.current===t&&(x(yt),Mu._currentValue=tt)}var ri,Wf;function Nl(t){if(ri===void 0)try{throw Error()}catch(l){var e=l.stack.trim().match(/\n( *(at )?)/);ri=e&&e[1]||"",Wf=-1<l.stack.indexOf(` + at`)?" (<anonymous>)":-1<l.stack.indexOf("@")?"@unknown:0:0":""}return` +`+ri+t+Wf}var si=!1;function oi(t,e){if(!t||si)return"";si=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(e){var C=function(){throw Error()};if(Object.defineProperty(C.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(C,[])}catch(O){var _=O}Reflect.construct(t,[],C)}else{try{C.call()}catch(O){_=O}t.call(C.prototype)}}else{try{throw Error()}catch(O){_=O}(C=t())&&typeof C.catch=="function"&&C.catch(function(){})}}catch(O){if(O&&_&&typeof O.stack=="string")return[O.stack,_.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var u=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");u&&u.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var n=a.DetermineComponentFrameRoot(),i=n[0],r=n[1];if(i&&r){var h=i.split(` +`),T=r.split(` +`);for(u=a=0;a<h.length&&!h[a].includes("DetermineComponentFrameRoot");)a++;for(;u<T.length&&!T[u].includes("DetermineComponentFrameRoot");)u++;if(a===h.length||u===T.length)for(a=h.length-1,u=T.length-1;1<=a&&0<=u&&h[a]!==T[u];)u--;for(;1<=a&&0<=u;a--,u--)if(h[a]!==T[u]){if(a!==1||u!==1)do if(a--,u--,0>u||h[a]!==T[u]){var M=` +`+h[a].replace(" at new "," at ");return t.displayName&&M.includes("<anonymous>")&&(M=M.replace("<anonymous>",t.displayName)),M}while(1<=a&&0<=u);break}}}finally{si=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?Nl(l):""}function xh(t,e){switch(t.tag){case 26:case 27:case 5:return Nl(t.type);case 16:return Nl("Lazy");case 13:return t.child!==e&&e!==null?Nl("Suspense Fallback"):Nl("Suspense");case 19:return Nl("SuspenseList");case 0:case 15:return oi(t.type,!1);case 11:return oi(t.type.render,!1);case 1:return oi(t.type,!0);case 31:return Nl("Activity");default:return""}}function kf(t){try{var e="",l=null;do e+=xh(t,l),l=t,t=t.return;while(t);return e}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var di=Object.prototype.hasOwnProperty,hi=c.unstable_scheduleCallback,mi=c.unstable_cancelCallback,jh=c.unstable_shouldYield,Hh=c.unstable_requestPaint,ue=c.unstable_now,Bh=c.unstable_getCurrentPriorityLevel,Ff=c.unstable_ImmediatePriority,If=c.unstable_UserBlockingPriority,Yu=c.unstable_NormalPriority,qh=c.unstable_LowPriority,Pf=c.unstable_IdlePriority,Lh=c.log,Yh=c.unstable_setDisableYieldValue,Ga=null,ne=null;function ul(t){if(typeof Lh=="function"&&Yh(t),ne&&typeof ne.setStrictMode=="function")try{ne.setStrictMode(Ga,t)}catch{}}var ie=Math.clz32?Math.clz32:Qh,Gh=Math.log,Xh=Math.LN2;function Qh(t){return t>>>=0,t===0?32:31-(Gh(t)/Xh|0)|0}var Gu=256,Xu=262144,Qu=4194304;function Ul(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Zu(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,i=t.pingedLanes;t=t.warmLanes;var r=a&134217727;return r!==0?(a=r&~n,a!==0?u=Ul(a):(i&=r,i!==0?u=Ul(i):l||(l=r&~t,l!==0&&(u=Ul(l))))):(r=a&~n,r!==0?u=Ul(r):i!==0?u=Ul(i):l||(l=a&~t,l!==0&&(u=Ul(l)))),u===0?0:e!==0&&e!==u&&(e&n)===0&&(n=u&-u,l=e&-e,n>=l||n===32&&(l&4194048)!==0)?e:u}function Xa(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function Zh(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function tr(){var t=Qu;return Qu<<=1,(Qu&62914560)===0&&(Qu=4194304),t}function yi(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function Qa(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Vh(t,e,l,a,u,n){var i=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var r=t.entanglements,h=t.expirationTimes,T=t.hiddenUpdates;for(l=i&~l;0<l;){var M=31-ie(l),C=1<<M;r[M]=0,h[M]=-1;var _=T[M];if(_!==null)for(T[M]=null,M=0;M<_.length;M++){var O=_[M];O!==null&&(O.lane&=-536870913)}l&=~C}a!==0&&er(t,a,0),n!==0&&u===0&&t.tag!==0&&(t.suspendedLanes|=n&~(i&~e))}function er(t,e,l){t.pendingLanes|=e,t.suspendedLanes&=~e;var a=31-ie(e);t.entangledLanes|=e,t.entanglements[a]=t.entanglements[a]|1073741824|l&261930}function lr(t,e){var l=t.entangledLanes|=e;for(t=t.entanglements;l;){var a=31-ie(l),u=1<<a;u&e|t[a]&e&&(t[a]|=e),l&=~u}}function ar(t,e){var l=e&-e;return l=(l&42)!==0?1:vi(l),(l&(t.suspendedLanes|e))!==0?0:l}function vi(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function gi(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function ur(){var t=q.p;return t!==0?t:(t=window.event,t===void 0?32:Vd(t.type))}function nr(t,e){var l=q.p;try{return q.p=t,e()}finally{q.p=l}}var nl=Math.random().toString(36).slice(2),Xt="__reactFiber$"+nl,Ft="__reactProps$"+nl,Fl="__reactContainer$"+nl,pi="__reactEvents$"+nl,Kh="__reactListeners$"+nl,wh="__reactHandles$"+nl,ir="__reactResources$"+nl,Za="__reactMarker$"+nl;function Si(t){delete t[Xt],delete t[Ft],delete t[pi],delete t[Kh],delete t[wh]}function Il(t){var e=t[Xt];if(e)return e;for(var l=t.parentNode;l;){if(e=l[Fl]||l[Xt]){if(l=e.alternate,e.child!==null||l!==null&&l.child!==null)for(t=Md(t);t!==null;){if(l=t[Xt])return l;t=Md(t)}return e}t=l,l=t.parentNode}return null}function Pl(t){if(t=t[Xt]||t[Fl]){var e=t.tag;if(e===5||e===6||e===13||e===31||e===26||e===27||e===3)return t}return null}function Va(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t.stateNode;throw Error(f(33))}function ta(t){var e=t[ir];return e||(e=t[ir]={hoistableStyles:new Map,hoistableScripts:new Map}),e}function Yt(t){t[Za]=!0}var cr=new Set,fr={};function Cl(t,e){ea(t,e),ea(t+"Capture",e)}function ea(t,e){for(fr[t]=e,t=0;t<e.length;t++)cr.add(e[t])}var Jh=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),rr={},sr={};function $h(t){return di.call(sr,t)?!0:di.call(rr,t)?!1:Jh.test(t)?sr[t]=!0:(rr[t]=!0,!1)}function Vu(t,e,l){if($h(e))if(l===null)t.removeAttribute(e);else{switch(typeof l){case"undefined":case"function":case"symbol":t.removeAttribute(e);return;case"boolean":var a=e.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){t.removeAttribute(e);return}}t.setAttribute(e,""+l)}}function Ku(t,e,l){if(l===null)t.removeAttribute(e);else{switch(typeof l){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(e);return}t.setAttribute(e,""+l)}}function Le(t,e,l,a){if(a===null)t.removeAttribute(l);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(l);return}t.setAttributeNS(e,l,""+a)}}function ye(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function or(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Wh(t,e,l){var a=Object.getOwnPropertyDescriptor(t.constructor.prototype,e);if(!t.hasOwnProperty(e)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var u=a.get,n=a.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return u.call(this)},set:function(i){l=""+i,n.call(this,i)}}),Object.defineProperty(t,e,{enumerable:a.enumerable}),{getValue:function(){return l},setValue:function(i){l=""+i},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function bi(t){if(!t._valueTracker){var e=or(t)?"checked":"value";t._valueTracker=Wh(t,e,""+t[e])}}function dr(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var l=e.getValue(),a="";return t&&(a=or(t)?t.checked?"true":"false":t.value),t=a,t!==l?(e.setValue(t),!0):!1}function wu(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var kh=/[\n"\\]/g;function ve(t){return t.replace(kh,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Ei(t,e,l,a,u,n,i,r){t.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?t.type=i:t.removeAttribute("type"),e!=null?i==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+ye(e)):t.value!==""+ye(e)&&(t.value=""+ye(e)):i!=="submit"&&i!=="reset"||t.removeAttribute("value"),e!=null?Ti(t,i,ye(e)):l!=null?Ti(t,i,ye(l)):a!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?t.name=""+ye(r):t.removeAttribute("name")}function hr(t,e,l,a,u,n,i,r){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),e!=null||l!=null){if(!(n!=="submit"&&n!=="reset"||e!=null)){bi(t);return}l=l!=null?""+ye(l):"",e=e!=null?""+ye(e):l,r||e===t.value||(t.value=e),t.defaultValue=e}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=r?t.checked:!!a,t.defaultChecked=!!a,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.name=i),bi(t)}function Ti(t,e,l){e==="number"&&wu(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function la(t,e,l,a){if(t=t.options,e){e={};for(var u=0;u<l.length;u++)e["$"+l[u]]=!0;for(l=0;l<t.length;l++)u=e.hasOwnProperty("$"+t[l].value),t[l].selected!==u&&(t[l].selected=u),u&&a&&(t[l].defaultSelected=!0)}else{for(l=""+ye(l),e=null,u=0;u<t.length;u++){if(t[u].value===l){t[u].selected=!0,a&&(t[u].defaultSelected=!0);return}e!==null||t[u].disabled||(e=t[u])}e!==null&&(e.selected=!0)}}function mr(t,e,l){if(e!=null&&(e=""+ye(e),e!==t.value&&(t.value=e),l==null)){t.defaultValue!==e&&(t.defaultValue=e);return}t.defaultValue=l!=null?""+ye(l):""}function yr(t,e,l,a){if(e==null){if(a!=null){if(l!=null)throw Error(f(92));if(Re(a)){if(1<a.length)throw Error(f(93));a=a[0]}l=a}l==null&&(l=""),e=l}l=ye(e),t.defaultValue=l,a=t.textContent,a===l&&a!==""&&a!==null&&(t.value=a),bi(t)}function aa(t,e){if(e){var l=t.firstChild;if(l&&l===t.lastChild&&l.nodeType===3){l.nodeValue=e;return}}t.textContent=e}var Fh=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function vr(t,e,l){var a=e.indexOf("--")===0;l==null||typeof l=="boolean"||l===""?a?t.setProperty(e,""):e==="float"?t.cssFloat="":t[e]="":a?t.setProperty(e,l):typeof l!="number"||l===0||Fh.has(e)?e==="float"?t.cssFloat=l:t[e]=(""+l).trim():t[e]=l+"px"}function gr(t,e,l){if(e!=null&&typeof e!="object")throw Error(f(62));if(t=t.style,l!=null){for(var a in l)!l.hasOwnProperty(a)||e!=null&&e.hasOwnProperty(a)||(a.indexOf("--")===0?t.setProperty(a,""):a==="float"?t.cssFloat="":t[a]="");for(var u in e)a=e[u],e.hasOwnProperty(u)&&l[u]!==a&&vr(t,u,a)}else for(var n in e)e.hasOwnProperty(n)&&vr(t,n,e[n])}function zi(t){if(t.indexOf("-")===-1)return!1;switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ih=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Ph=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Ju(t){return Ph.test(""+t)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":t}function Ye(){}var Ai=null;function _i(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var ua=null,na=null;function pr(t){var e=Pl(t);if(e&&(t=e.stateNode)){var l=t[Ft]||null;t:switch(t=e.stateNode,e.type){case"input":if(Ei(t,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name),e=l.name,l.type==="radio"&&e!=null){for(l=t;l.parentNode;)l=l.parentNode;for(l=l.querySelectorAll('input[name="'+ve(""+e)+'"][type="radio"]'),e=0;e<l.length;e++){var a=l[e];if(a!==t&&a.form===t.form){var u=a[Ft]||null;if(!u)throw Error(f(90));Ei(a,u.value,u.defaultValue,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name)}}for(e=0;e<l.length;e++)a=l[e],a.form===t.form&&dr(a)}break t;case"textarea":mr(t,l.value,l.defaultValue);break t;case"select":e=l.value,e!=null&&la(t,!!l.multiple,e,!1)}}}var Ri=!1;function Sr(t,e,l){if(Ri)return t(e,l);Ri=!0;try{var a=t(e);return a}finally{if(Ri=!1,(ua!==null||na!==null)&&(Hn(),ua&&(e=ua,t=na,na=ua=null,pr(e),t)))for(e=0;e<t.length;e++)pr(t[e])}}function Ka(t,e){var l=t.stateNode;if(l===null)return null;var a=l[Ft]||null;if(a===null)return null;l=a[e];t:switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(t=t.type,a=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!a;break t;default:t=!1}if(t)return null;if(l&&typeof l!="function")throw Error(f(231,e,typeof l));return l}var Ge=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Oi=!1;if(Ge)try{var wa={};Object.defineProperty(wa,"passive",{get:function(){Oi=!0}}),window.addEventListener("test",wa,wa),window.removeEventListener("test",wa,wa)}catch{Oi=!1}var il=null,Mi=null,$u=null;function br(){if($u)return $u;var t,e=Mi,l=e.length,a,u="value"in il?il.value:il.textContent,n=u.length;for(t=0;t<l&&e[t]===u[t];t++);var i=l-t;for(a=1;a<=i&&e[l-a]===u[n-a];a++);return $u=u.slice(t,1<a?1-a:void 0)}function Wu(t){var e=t.keyCode;return"charCode"in t?(t=t.charCode,t===0&&e===13&&(t=13)):t=e,t===10&&(t=13),32<=t||t===13?t:0}function ku(){return!0}function Er(){return!1}function It(t){function e(l,a,u,n,i){this._reactName=l,this._targetInst=u,this.type=a,this.nativeEvent=n,this.target=i,this.currentTarget=null;for(var r in t)t.hasOwnProperty(r)&&(l=t[r],this[r]=l?l(n):n[r]);return this.isDefaultPrevented=(n.defaultPrevented!=null?n.defaultPrevented:n.returnValue===!1)?ku:Er,this.isPropagationStopped=Er,this}return z(e.prototype,{preventDefault:function(){this.defaultPrevented=!0;var l=this.nativeEvent;l&&(l.preventDefault?l.preventDefault():typeof l.returnValue!="unknown"&&(l.returnValue=!1),this.isDefaultPrevented=ku)},stopPropagation:function(){var l=this.nativeEvent;l&&(l.stopPropagation?l.stopPropagation():typeof l.cancelBubble!="unknown"&&(l.cancelBubble=!0),this.isPropagationStopped=ku)},persist:function(){},isPersistent:ku}),e}var xl={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Fu=It(xl),Ja=z({},xl,{view:0,detail:0}),tm=It(Ja),Di,Ni,$a,Iu=z({},Ja,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Ci,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==$a&&($a&&t.type==="mousemove"?(Di=t.screenX-$a.screenX,Ni=t.screenY-$a.screenY):Ni=Di=0,$a=t),Di)},movementY:function(t){return"movementY"in t?t.movementY:Ni}}),Tr=It(Iu),em=z({},Iu,{dataTransfer:0}),lm=It(em),am=z({},Ja,{relatedTarget:0}),Ui=It(am),um=z({},xl,{animationName:0,elapsedTime:0,pseudoElement:0}),nm=It(um),im=z({},xl,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),cm=It(im),fm=z({},xl,{data:0}),zr=It(fm),rm={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},sm={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},om={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function dm(t){var e=this.nativeEvent;return e.getModifierState?e.getModifierState(t):(t=om[t])?!!e[t]:!1}function Ci(){return dm}var hm=z({},Ja,{key:function(t){if(t.key){var e=rm[t.key]||t.key;if(e!=="Unidentified")return e}return t.type==="keypress"?(t=Wu(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?sm[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Ci,charCode:function(t){return t.type==="keypress"?Wu(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?Wu(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),mm=It(hm),ym=z({},Iu,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ar=It(ym),vm=z({},Ja,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Ci}),gm=It(vm),pm=z({},xl,{propertyName:0,elapsedTime:0,pseudoElement:0}),Sm=It(pm),bm=z({},Iu,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),Em=It(bm),Tm=z({},xl,{newState:0,oldState:0}),zm=It(Tm),Am=[9,13,27,32],xi=Ge&&"CompositionEvent"in window,Wa=null;Ge&&"documentMode"in document&&(Wa=document.documentMode);var _m=Ge&&"TextEvent"in window&&!Wa,_r=Ge&&(!xi||Wa&&8<Wa&&11>=Wa),Rr=" ",Or=!1;function Mr(t,e){switch(t){case"keyup":return Am.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dr(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ia=!1;function Rm(t,e){switch(t){case"compositionend":return Dr(e);case"keypress":return e.which!==32?null:(Or=!0,Rr);case"textInput":return t=e.data,t===Rr&&Or?null:t;default:return null}}function Om(t,e){if(ia)return t==="compositionend"||!xi&&Mr(t,e)?(t=br(),$u=Mi=il=null,ia=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1<e.char.length)return e.char;if(e.which)return String.fromCharCode(e.which)}return null;case"compositionend":return _r&&e.locale!=="ko"?null:e.data;default:return null}}var Mm={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Nr(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e==="input"?!!Mm[t.type]:e==="textarea"}function Ur(t,e,l,a){ua?na?na.push(a):na=[a]:ua=a,e=Qn(e,"onChange"),0<e.length&&(l=new Fu("onChange","change",null,l,a),t.push({event:l,listeners:e}))}var ka=null,Fa=null;function Dm(t){md(t,0)}function Pu(t){var e=Va(t);if(dr(e))return t}function Cr(t,e){if(t==="change")return e}var xr=!1;if(Ge){var ji;if(Ge){var Hi="oninput"in document;if(!Hi){var jr=document.createElement("div");jr.setAttribute("oninput","return;"),Hi=typeof jr.oninput=="function"}ji=Hi}else ji=!1;xr=ji&&(!document.documentMode||9<document.documentMode)}function Hr(){ka&&(ka.detachEvent("onpropertychange",Br),Fa=ka=null)}function Br(t){if(t.propertyName==="value"&&Pu(Fa)){var e=[];Ur(e,Fa,t,_i(t)),Sr(Dm,e)}}function Nm(t,e,l){t==="focusin"?(Hr(),ka=e,Fa=l,ka.attachEvent("onpropertychange",Br)):t==="focusout"&&Hr()}function Um(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return Pu(Fa)}function Cm(t,e){if(t==="click")return Pu(e)}function xm(t,e){if(t==="input"||t==="change")return Pu(e)}function jm(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var ce=typeof Object.is=="function"?Object.is:jm;function Ia(t,e){if(ce(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;var l=Object.keys(t),a=Object.keys(e);if(l.length!==a.length)return!1;for(a=0;a<l.length;a++){var u=l[a];if(!di.call(e,u)||!ce(t[u],e[u]))return!1}return!0}function qr(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function Lr(t,e){var l=qr(t);t=0;for(var a;l;){if(l.nodeType===3){if(a=t+l.textContent.length,t<=e&&a>=e)return{node:l,offset:e-t};t=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=qr(l)}}function Yr(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?Yr(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Gr(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=wu(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=wu(t.document)}return e}function Bi(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var Hm=Ge&&"documentMode"in document&&11>=document.documentMode,ca=null,qi=null,Pa=null,Li=!1;function Xr(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Li||ca==null||ca!==wu(a)||(a=ca,"selectionStart"in a&&Bi(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Pa&&Ia(Pa,a)||(Pa=a,a=Qn(qi,"onSelect"),0<a.length&&(e=new Fu("onSelect","select",null,e,l),t.push({event:e,listeners:a}),e.target=ca)))}function jl(t,e){var l={};return l[t.toLowerCase()]=e.toLowerCase(),l["Webkit"+t]="webkit"+e,l["Moz"+t]="moz"+e,l}var fa={animationend:jl("Animation","AnimationEnd"),animationiteration:jl("Animation","AnimationIteration"),animationstart:jl("Animation","AnimationStart"),transitionrun:jl("Transition","TransitionRun"),transitionstart:jl("Transition","TransitionStart"),transitioncancel:jl("Transition","TransitionCancel"),transitionend:jl("Transition","TransitionEnd")},Yi={},Qr={};Ge&&(Qr=document.createElement("div").style,"AnimationEvent"in window||(delete fa.animationend.animation,delete fa.animationiteration.animation,delete fa.animationstart.animation),"TransitionEvent"in window||delete fa.transitionend.transition);function Hl(t){if(Yi[t])return Yi[t];if(!fa[t])return t;var e=fa[t],l;for(l in e)if(e.hasOwnProperty(l)&&l in Qr)return Yi[t]=e[l];return t}var Zr=Hl("animationend"),Vr=Hl("animationiteration"),Kr=Hl("animationstart"),Bm=Hl("transitionrun"),qm=Hl("transitionstart"),Lm=Hl("transitioncancel"),wr=Hl("transitionend"),Jr=new Map,Gi="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Gi.push("scrollEnd");function Oe(t,e){Jr.set(t,e),Cl(e,[t])}var tn=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var e=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(e))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)},ge=[],ra=0,Xi=0;function en(){for(var t=ra,e=Xi=ra=0;e<t;){var l=ge[e];ge[e++]=null;var a=ge[e];ge[e++]=null;var u=ge[e];ge[e++]=null;var n=ge[e];if(ge[e++]=null,a!==null&&u!==null){var i=a.pending;i===null?u.next=u:(u.next=i.next,i.next=u),a.pending=u}n!==0&&$r(l,u,n)}}function ln(t,e,l,a){ge[ra++]=t,ge[ra++]=e,ge[ra++]=l,ge[ra++]=a,Xi|=a,t.lanes|=a,t=t.alternate,t!==null&&(t.lanes|=a)}function Qi(t,e,l,a){return ln(t,e,l,a),an(t)}function Bl(t,e){return ln(t,null,null,e),an(t)}function $r(t,e,l){t.lanes|=l;var a=t.alternate;a!==null&&(a.lanes|=l);for(var u=!1,n=t.return;n!==null;)n.childLanes|=l,a=n.alternate,a!==null&&(a.childLanes|=l),n.tag===22&&(t=n.stateNode,t===null||t._visibility&1||(u=!0)),t=n,n=n.return;return t.tag===3?(n=t.stateNode,u&&e!==null&&(u=31-ie(l),t=n.hiddenUpdates,a=t[u],a===null?t[u]=[e]:a.push(e),e.lane=l|536870912),n):null}function an(t){if(50<Eu)throw Eu=0,Fc=null,Error(f(185));for(var e=t.return;e!==null;)t=e,e=t.return;return t.tag===3?t.stateNode:null}var sa={};function Ym(t,e,l,a){this.tag=t,this.key=l,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function fe(t,e,l,a){return new Ym(t,e,l,a)}function Zi(t){return t=t.prototype,!(!t||!t.isReactComponent)}function Xe(t,e){var l=t.alternate;return l===null?(l=fe(t.tag,e,t.key,t.mode),l.elementType=t.elementType,l.type=t.type,l.stateNode=t.stateNode,l.alternate=t,t.alternate=l):(l.pendingProps=e,l.type=t.type,l.flags=0,l.subtreeFlags=0,l.deletions=null),l.flags=t.flags&65011712,l.childLanes=t.childLanes,l.lanes=t.lanes,l.child=t.child,l.memoizedProps=t.memoizedProps,l.memoizedState=t.memoizedState,l.updateQueue=t.updateQueue,e=t.dependencies,l.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},l.sibling=t.sibling,l.index=t.index,l.ref=t.ref,l.refCleanup=t.refCleanup,l}function Wr(t,e){t.flags&=65011714;var l=t.alternate;return l===null?(t.childLanes=0,t.lanes=e,t.child=null,t.subtreeFlags=0,t.memoizedProps=null,t.memoizedState=null,t.updateQueue=null,t.dependencies=null,t.stateNode=null):(t.childLanes=l.childLanes,t.lanes=l.lanes,t.child=l.child,t.subtreeFlags=0,t.deletions=null,t.memoizedProps=l.memoizedProps,t.memoizedState=l.memoizedState,t.updateQueue=l.updateQueue,t.type=l.type,e=l.dependencies,t.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),t}function un(t,e,l,a,u,n){var i=0;if(a=t,typeof t=="function")Zi(t)&&(i=1);else if(typeof t=="string")i=Vy(t,l,K.current)?26:t==="html"||t==="head"||t==="body"?27:5;else t:switch(t){case vt:return t=fe(31,l,e,u),t.elementType=vt,t.lanes=n,t;case V:return ql(l.children,u,n,e);case G:i=8,u|=24;break;case J:return t=fe(12,l,e,u|2),t.elementType=J,t.lanes=n,t;case P:return t=fe(13,l,e,u),t.elementType=P,t.lanes=n,t;case B:return t=fe(19,l,e,u),t.elementType=B,t.lanes=n,t;default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case W:i=10;break t;case X:i=9;break t;case $:i=11;break t;case Y:i=14;break t;case st:i=16,a=null;break t}i=29,l=Error(f(130,t===null?"null":typeof t,"")),a=null}return e=fe(i,l,e,u),e.elementType=t,e.type=a,e.lanes=n,e}function ql(t,e,l,a){return t=fe(7,t,a,e),t.lanes=l,t}function Vi(t,e,l){return t=fe(6,t,null,e),t.lanes=l,t}function kr(t){var e=fe(18,null,null,0);return e.stateNode=t,e}function Ki(t,e,l){return e=fe(4,t.children!==null?t.children:[],t.key,e),e.lanes=l,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}var Fr=new WeakMap;function pe(t,e){if(typeof t=="object"&&t!==null){var l=Fr.get(t);return l!==void 0?l:(e={value:t,source:e,stack:kf(e)},Fr.set(t,e),e)}return{value:t,source:e,stack:kf(e)}}var oa=[],da=0,nn=null,tu=0,Se=[],be=0,cl=null,xe=1,je="";function Qe(t,e){oa[da++]=tu,oa[da++]=nn,nn=t,tu=e}function Ir(t,e,l){Se[be++]=xe,Se[be++]=je,Se[be++]=cl,cl=t;var a=xe;t=je;var u=32-ie(a)-1;a&=~(1<<u),l+=1;var n=32-ie(e)+u;if(30<n){var i=u-u%5;n=(a&(1<<i)-1).toString(32),a>>=i,u-=i,xe=1<<32-ie(e)+u|l<<u|a,je=n+t}else xe=1<<n|l<<u|a,je=t}function wi(t){t.return!==null&&(Qe(t,1),Ir(t,1,0))}function Ji(t){for(;t===nn;)nn=oa[--da],oa[da]=null,tu=oa[--da],oa[da]=null;for(;t===cl;)cl=Se[--be],Se[be]=null,je=Se[--be],Se[be]=null,xe=Se[--be],Se[be]=null}function Pr(t,e){Se[be++]=xe,Se[be++]=je,Se[be++]=cl,xe=e.id,je=e.overflow,cl=t}var Qt=null,_t=null,ot=!1,fl=null,Ee=!1,$i=Error(f(519));function rl(t){var e=Error(f(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw eu(pe(e,t)),$i}function ts(t){var e=t.stateNode,l=t.type,a=t.memoizedProps;switch(e[Xt]=t,e[Ft]=a,l){case"dialog":ct("cancel",e),ct("close",e);break;case"iframe":case"object":case"embed":ct("load",e);break;case"video":case"audio":for(l=0;l<zu.length;l++)ct(zu[l],e);break;case"source":ct("error",e);break;case"img":case"image":case"link":ct("error",e),ct("load",e);break;case"details":ct("toggle",e);break;case"input":ct("invalid",e),hr(e,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":ct("invalid",e);break;case"textarea":ct("invalid",e),yr(e,a.value,a.defaultValue,a.children)}l=a.children,typeof l!="string"&&typeof l!="number"&&typeof l!="bigint"||e.textContent===""+l||a.suppressHydrationWarning===!0||pd(e.textContent,l)?(a.popover!=null&&(ct("beforetoggle",e),ct("toggle",e)),a.onScroll!=null&&ct("scroll",e),a.onScrollEnd!=null&&ct("scrollend",e),a.onClick!=null&&(e.onclick=Ye),e=!0):e=!1,e||rl(t,!0)}function es(t){for(Qt=t.return;Qt;)switch(Qt.tag){case 5:case 31:case 13:Ee=!1;return;case 27:case 3:Ee=!0;return;default:Qt=Qt.return}}function ha(t){if(t!==Qt)return!1;if(!ot)return es(t),ot=!0,!1;var e=t.tag,l;if((l=e!==3&&e!==27)&&((l=e===5)&&(l=t.type,l=!(l!=="form"&&l!=="button")||hf(t.type,t.memoizedProps)),l=!l),l&&_t&&rl(t),es(t),e===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(f(317));_t=Od(t)}else if(e===31){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(f(317));_t=Od(t)}else e===27?(e=_t,zl(t.type)?(t=pf,pf=null,_t=t):_t=e):_t=Qt?ze(t.stateNode.nextSibling):null;return!0}function Ll(){_t=Qt=null,ot=!1}function Wi(){var t=fl;return t!==null&&(le===null?le=t:le.push.apply(le,t),fl=null),t}function eu(t){fl===null?fl=[t]:fl.push(t)}var ki=g(null),Yl=null,Ze=null;function sl(t,e,l){L(ki,e._currentValue),e._currentValue=l}function Ve(t){t._currentValue=ki.current,x(ki)}function Fi(t,e,l){for(;t!==null;){var a=t.alternate;if((t.childLanes&e)!==e?(t.childLanes|=e,a!==null&&(a.childLanes|=e)):a!==null&&(a.childLanes&e)!==e&&(a.childLanes|=e),t===l)break;t=t.return}}function Ii(t,e,l,a){var u=t.child;for(u!==null&&(u.return=t);u!==null;){var n=u.dependencies;if(n!==null){var i=u.child;n=n.firstContext;t:for(;n!==null;){var r=n;n=u;for(var h=0;h<e.length;h++)if(r.context===e[h]){n.lanes|=l,r=n.alternate,r!==null&&(r.lanes|=l),Fi(n.return,l,t),a||(i=null);break t}n=r.next}}else if(u.tag===18){if(i=u.return,i===null)throw Error(f(341));i.lanes|=l,n=i.alternate,n!==null&&(n.lanes|=l),Fi(i,l,t),i=null}else i=u.child;if(i!==null)i.return=u;else for(i=u;i!==null;){if(i===t){i=null;break}if(u=i.sibling,u!==null){u.return=i.return,i=u;break}i=i.return}u=i}}function ma(t,e,l,a){t=null;for(var u=e,n=!1;u!==null;){if(!n){if((u.flags&524288)!==0)n=!0;else if((u.flags&262144)!==0)break}if(u.tag===10){var i=u.alternate;if(i===null)throw Error(f(387));if(i=i.memoizedProps,i!==null){var r=u.type;ce(u.pendingProps.value,i.value)||(t!==null?t.push(r):t=[r])}}else if(u===yt.current){if(i=u.alternate,i===null)throw Error(f(387));i.memoizedState.memoizedState!==u.memoizedState.memoizedState&&(t!==null?t.push(Mu):t=[Mu])}u=u.return}t!==null&&Ii(e,t,l,a),e.flags|=262144}function cn(t){for(t=t.firstContext;t!==null;){if(!ce(t.context._currentValue,t.memoizedValue))return!0;t=t.next}return!1}function Gl(t){Yl=t,Ze=null,t=t.dependencies,t!==null&&(t.firstContext=null)}function Zt(t){return ls(Yl,t)}function fn(t,e){return Yl===null&&Gl(t),ls(t,e)}function ls(t,e){var l=e._currentValue;if(e={context:e,memoizedValue:l,next:null},Ze===null){if(t===null)throw Error(f(308));Ze=e,t.dependencies={lanes:0,firstContext:e},t.flags|=524288}else Ze=Ze.next=e;return l}var Gm=typeof AbortController<"u"?AbortController:function(){var t=[],e=this.signal={aborted:!1,addEventListener:function(l,a){t.push(a)}};this.abort=function(){e.aborted=!0,t.forEach(function(l){return l()})}},Xm=c.unstable_scheduleCallback,Qm=c.unstable_NormalPriority,jt={$$typeof:W,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Pi(){return{controller:new Gm,data:new Map,refCount:0}}function lu(t){t.refCount--,t.refCount===0&&Xm(Qm,function(){t.controller.abort()})}var au=null,tc=0,ya=0,va=null;function Zm(t,e){if(au===null){var l=au=[];tc=0,ya=af(),va={status:"pending",value:void 0,then:function(a){l.push(a)}}}return tc++,e.then(as,as),e}function as(){if(--tc===0&&au!==null){va!==null&&(va.status="fulfilled");var t=au;au=null,ya=0,va=null;for(var e=0;e<t.length;e++)(0,t[e])()}}function Vm(t,e){var l=[],a={status:"pending",value:null,reason:null,then:function(u){l.push(u)}};return t.then(function(){a.status="fulfilled",a.value=e;for(var u=0;u<l.length;u++)(0,l[u])(e)},function(u){for(a.status="rejected",a.reason=u,u=0;u<l.length;u++)(0,l[u])(void 0)}),a}var us=D.S;D.S=function(t,e){Qo=ue(),typeof e=="object"&&e!==null&&typeof e.then=="function"&&Zm(t,e),us!==null&&us(t,e)};var Xl=g(null);function ec(){var t=Xl.current;return t!==null?t:At.pooledCache}function rn(t,e){e===null?L(Xl,Xl.current):L(Xl,e.pool)}function ns(){var t=ec();return t===null?null:{parent:jt._currentValue,pool:t}}var ga=Error(f(460)),lc=Error(f(474)),sn=Error(f(542)),on={then:function(){}};function is(t){return t=t.status,t==="fulfilled"||t==="rejected"}function cs(t,e,l){switch(l=t[l],l===void 0?t.push(e):l!==e&&(e.then(Ye,Ye),e=l),e.status){case"fulfilled":return e.value;case"rejected":throw t=e.reason,rs(t),t;default:if(typeof e.status=="string")e.then(Ye,Ye);else{if(t=At,t!==null&&100<t.shellSuspendCounter)throw Error(f(482));t=e,t.status="pending",t.then(function(a){if(e.status==="pending"){var u=e;u.status="fulfilled",u.value=a}},function(a){if(e.status==="pending"){var u=e;u.status="rejected",u.reason=a}})}switch(e.status){case"fulfilled":return e.value;case"rejected":throw t=e.reason,rs(t),t}throw Zl=e,ga}}function Ql(t){try{var e=t._init;return e(t._payload)}catch(l){throw l!==null&&typeof l=="object"&&typeof l.then=="function"?(Zl=l,ga):l}}var Zl=null;function fs(){if(Zl===null)throw Error(f(459));var t=Zl;return Zl=null,t}function rs(t){if(t===ga||t===sn)throw Error(f(483))}var pa=null,uu=0;function dn(t){var e=uu;return uu+=1,pa===null&&(pa=[]),cs(pa,t,e)}function nu(t,e){e=e.props.ref,t.ref=e!==void 0?e:null}function hn(t,e){throw e.$$typeof===H?Error(f(525)):(t=Object.prototype.toString.call(e),Error(f(31,t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)))}function ss(t){function e(p,v){if(t){var E=p.deletions;E===null?(p.deletions=[v],p.flags|=16):E.push(v)}}function l(p,v){if(!t)return null;for(;v!==null;)e(p,v),v=v.sibling;return null}function a(p){for(var v=new Map;p!==null;)p.key!==null?v.set(p.key,p):v.set(p.index,p),p=p.sibling;return v}function u(p,v){return p=Xe(p,v),p.index=0,p.sibling=null,p}function n(p,v,E){return p.index=E,t?(E=p.alternate,E!==null?(E=E.index,E<v?(p.flags|=67108866,v):E):(p.flags|=67108866,v)):(p.flags|=1048576,v)}function i(p){return t&&p.alternate===null&&(p.flags|=67108866),p}function r(p,v,E,U){return v===null||v.tag!==6?(v=Vi(E,p.mode,U),v.return=p,v):(v=u(v,E),v.return=p,v)}function h(p,v,E,U){var k=E.type;return k===V?M(p,v,E.props.children,U,E.key):v!==null&&(v.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===st&&Ql(k)===v.type)?(v=u(v,E.props),nu(v,E),v.return=p,v):(v=un(E.type,E.key,E.props,null,p.mode,U),nu(v,E),v.return=p,v)}function T(p,v,E,U){return v===null||v.tag!==4||v.stateNode.containerInfo!==E.containerInfo||v.stateNode.implementation!==E.implementation?(v=Ki(E,p.mode,U),v.return=p,v):(v=u(v,E.children||[]),v.return=p,v)}function M(p,v,E,U,k){return v===null||v.tag!==7?(v=ql(E,p.mode,U,k),v.return=p,v):(v=u(v,E),v.return=p,v)}function C(p,v,E){if(typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint")return v=Vi(""+v,p.mode,E),v.return=p,v;if(typeof v=="object"&&v!==null){switch(v.$$typeof){case Q:return E=un(v.type,v.key,v.props,null,p.mode,E),nu(E,v),E.return=p,E;case F:return v=Ki(v,p.mode,E),v.return=p,v;case st:return v=Ql(v),C(p,v,E)}if(Re(v)||kt(v))return v=ql(v,p.mode,E,null),v.return=p,v;if(typeof v.then=="function")return C(p,dn(v),E);if(v.$$typeof===W)return C(p,fn(p,v),E);hn(p,v)}return null}function _(p,v,E,U){var k=v!==null?v.key:null;if(typeof E=="string"&&E!==""||typeof E=="number"||typeof E=="bigint")return k!==null?null:r(p,v,""+E,U);if(typeof E=="object"&&E!==null){switch(E.$$typeof){case Q:return E.key===k?h(p,v,E,U):null;case F:return E.key===k?T(p,v,E,U):null;case st:return E=Ql(E),_(p,v,E,U)}if(Re(E)||kt(E))return k!==null?null:M(p,v,E,U,null);if(typeof E.then=="function")return _(p,v,dn(E),U);if(E.$$typeof===W)return _(p,v,fn(p,E),U);hn(p,E)}return null}function O(p,v,E,U,k){if(typeof U=="string"&&U!==""||typeof U=="number"||typeof U=="bigint")return p=p.get(E)||null,r(v,p,""+U,k);if(typeof U=="object"&&U!==null){switch(U.$$typeof){case Q:return p=p.get(U.key===null?E:U.key)||null,h(v,p,U,k);case F:return p=p.get(U.key===null?E:U.key)||null,T(v,p,U,k);case st:return U=Ql(U),O(p,v,E,U,k)}if(Re(U)||kt(U))return p=p.get(E)||null,M(v,p,U,k,null);if(typeof U.then=="function")return O(p,v,E,dn(U),k);if(U.$$typeof===W)return O(p,v,E,fn(v,U),k);hn(v,U)}return null}function Z(p,v,E,U){for(var k=null,dt=null,w=v,ut=v=0,rt=null;w!==null&&ut<E.length;ut++){w.index>ut?(rt=w,w=null):rt=w.sibling;var ht=_(p,w,E[ut],U);if(ht===null){w===null&&(w=rt);break}t&&w&&ht.alternate===null&&e(p,w),v=n(ht,v,ut),dt===null?k=ht:dt.sibling=ht,dt=ht,w=rt}if(ut===E.length)return l(p,w),ot&&Qe(p,ut),k;if(w===null){for(;ut<E.length;ut++)w=C(p,E[ut],U),w!==null&&(v=n(w,v,ut),dt===null?k=w:dt.sibling=w,dt=w);return ot&&Qe(p,ut),k}for(w=a(w);ut<E.length;ut++)rt=O(w,p,ut,E[ut],U),rt!==null&&(t&&rt.alternate!==null&&w.delete(rt.key===null?ut:rt.key),v=n(rt,v,ut),dt===null?k=rt:dt.sibling=rt,dt=rt);return t&&w.forEach(function(Ml){return e(p,Ml)}),ot&&Qe(p,ut),k}function I(p,v,E,U){if(E==null)throw Error(f(151));for(var k=null,dt=null,w=v,ut=v=0,rt=null,ht=E.next();w!==null&&!ht.done;ut++,ht=E.next()){w.index>ut?(rt=w,w=null):rt=w.sibling;var Ml=_(p,w,ht.value,U);if(Ml===null){w===null&&(w=rt);break}t&&w&&Ml.alternate===null&&e(p,w),v=n(Ml,v,ut),dt===null?k=Ml:dt.sibling=Ml,dt=Ml,w=rt}if(ht.done)return l(p,w),ot&&Qe(p,ut),k;if(w===null){for(;!ht.done;ut++,ht=E.next())ht=C(p,ht.value,U),ht!==null&&(v=n(ht,v,ut),dt===null?k=ht:dt.sibling=ht,dt=ht);return ot&&Qe(p,ut),k}for(w=a(w);!ht.done;ut++,ht=E.next())ht=O(w,p,ut,ht.value,U),ht!==null&&(t&&ht.alternate!==null&&w.delete(ht.key===null?ut:ht.key),v=n(ht,v,ut),dt===null?k=ht:dt.sibling=ht,dt=ht);return t&&w.forEach(function(ev){return e(p,ev)}),ot&&Qe(p,ut),k}function Tt(p,v,E,U){if(typeof E=="object"&&E!==null&&E.type===V&&E.key===null&&(E=E.props.children),typeof E=="object"&&E!==null){switch(E.$$typeof){case Q:t:{for(var k=E.key;v!==null;){if(v.key===k){if(k=E.type,k===V){if(v.tag===7){l(p,v.sibling),U=u(v,E.props.children),U.return=p,p=U;break t}}else if(v.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===st&&Ql(k)===v.type){l(p,v.sibling),U=u(v,E.props),nu(U,E),U.return=p,p=U;break t}l(p,v);break}else e(p,v);v=v.sibling}E.type===V?(U=ql(E.props.children,p.mode,U,E.key),U.return=p,p=U):(U=un(E.type,E.key,E.props,null,p.mode,U),nu(U,E),U.return=p,p=U)}return i(p);case F:t:{for(k=E.key;v!==null;){if(v.key===k)if(v.tag===4&&v.stateNode.containerInfo===E.containerInfo&&v.stateNode.implementation===E.implementation){l(p,v.sibling),U=u(v,E.children||[]),U.return=p,p=U;break t}else{l(p,v);break}else e(p,v);v=v.sibling}U=Ki(E,p.mode,U),U.return=p,p=U}return i(p);case st:return E=Ql(E),Tt(p,v,E,U)}if(Re(E))return Z(p,v,E,U);if(kt(E)){if(k=kt(E),typeof k!="function")throw Error(f(150));return E=k.call(E),I(p,v,E,U)}if(typeof E.then=="function")return Tt(p,v,dn(E),U);if(E.$$typeof===W)return Tt(p,v,fn(p,E),U);hn(p,E)}return typeof E=="string"&&E!==""||typeof E=="number"||typeof E=="bigint"?(E=""+E,v!==null&&v.tag===6?(l(p,v.sibling),U=u(v,E),U.return=p,p=U):(l(p,v),U=Vi(E,p.mode,U),U.return=p,p=U),i(p)):l(p,v)}return function(p,v,E,U){try{uu=0;var k=Tt(p,v,E,U);return pa=null,k}catch(w){if(w===ga||w===sn)throw w;var dt=fe(29,w,null,p.mode);return dt.lanes=U,dt.return=p,dt}}}var Vl=ss(!0),os=ss(!1),ol=!1;function ac(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function uc(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function dl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function hl(t,e,l){var a=t.updateQueue;if(a===null)return null;if(a=a.shared,(mt&2)!==0){var u=a.pending;return u===null?e.next=e:(e.next=u.next,u.next=e),a.pending=e,e=an(t),$r(t,null,l),e}return ln(t,a,e,l),an(t)}function iu(t,e,l){if(e=e.updateQueue,e!==null&&(e=e.shared,(l&4194048)!==0)){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,lr(t,l)}}function nc(t,e){var l=t.updateQueue,a=t.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var u=null,n=null;if(l=l.firstBaseUpdate,l!==null){do{var i={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};n===null?u=n=i:n=n.next=i,l=l.next}while(l!==null);n===null?u=n=e:n=n.next=e}else u=n=e;l={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:n,shared:a.shared,callbacks:a.callbacks},t.updateQueue=l;return}t=l.lastBaseUpdate,t===null?l.firstBaseUpdate=e:t.next=e,l.lastBaseUpdate=e}var ic=!1;function cu(){if(ic){var t=va;if(t!==null)throw t}}function fu(t,e,l,a){ic=!1;var u=t.updateQueue;ol=!1;var n=u.firstBaseUpdate,i=u.lastBaseUpdate,r=u.shared.pending;if(r!==null){u.shared.pending=null;var h=r,T=h.next;h.next=null,i===null?n=T:i.next=T,i=h;var M=t.alternate;M!==null&&(M=M.updateQueue,r=M.lastBaseUpdate,r!==i&&(r===null?M.firstBaseUpdate=T:r.next=T,M.lastBaseUpdate=h))}if(n!==null){var C=u.baseState;i=0,M=T=h=null,r=n;do{var _=r.lane&-536870913,O=_!==r.lane;if(O?(ft&_)===_:(a&_)===_){_!==0&&_===ya&&(ic=!0),M!==null&&(M=M.next={lane:0,tag:r.tag,payload:r.payload,callback:null,next:null});t:{var Z=t,I=r;_=e;var Tt=l;switch(I.tag){case 1:if(Z=I.payload,typeof Z=="function"){C=Z.call(Tt,C,_);break t}C=Z;break t;case 3:Z.flags=Z.flags&-65537|128;case 0:if(Z=I.payload,_=typeof Z=="function"?Z.call(Tt,C,_):Z,_==null)break t;C=z({},C,_);break t;case 2:ol=!0}}_=r.callback,_!==null&&(t.flags|=64,O&&(t.flags|=8192),O=u.callbacks,O===null?u.callbacks=[_]:O.push(_))}else O={lane:_,tag:r.tag,payload:r.payload,callback:r.callback,next:null},M===null?(T=M=O,h=C):M=M.next=O,i|=_;if(r=r.next,r===null){if(r=u.shared.pending,r===null)break;O=r,r=O.next,O.next=null,u.lastBaseUpdate=O,u.shared.pending=null}}while(!0);M===null&&(h=C),u.baseState=h,u.firstBaseUpdate=T,u.lastBaseUpdate=M,n===null&&(u.shared.lanes=0),pl|=i,t.lanes=i,t.memoizedState=C}}function ds(t,e){if(typeof t!="function")throw Error(f(191,t));t.call(e)}function hs(t,e){var l=t.callbacks;if(l!==null)for(t.callbacks=null,t=0;t<l.length;t++)ds(l[t],e)}var Sa=g(null),mn=g(0);function ms(t,e){t=Pe,L(mn,t),L(Sa,e),Pe=t|e.baseLanes}function cc(){L(mn,Pe),L(Sa,Sa.current)}function fc(){Pe=mn.current,x(Sa),x(mn)}var re=g(null),Te=null;function ml(t){var e=t.alternate;L(Ct,Ct.current&1),L(re,t),Te===null&&(e===null||Sa.current!==null||e.memoizedState!==null)&&(Te=t)}function rc(t){L(Ct,Ct.current),L(re,t),Te===null&&(Te=t)}function ys(t){t.tag===22?(L(Ct,Ct.current),L(re,t),Te===null&&(Te=t)):yl()}function yl(){L(Ct,Ct.current),L(re,re.current)}function se(t){x(re),Te===t&&(Te=null),x(Ct)}var Ct=g(0);function yn(t){for(var e=t;e!==null;){if(e.tag===13){var l=e.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||vf(l)||gf(l)))return e}else if(e.tag===19&&(e.memoizedProps.revealOrder==="forwards"||e.memoizedProps.revealOrder==="backwards"||e.memoizedProps.revealOrder==="unstable_legacy-backwards"||e.memoizedProps.revealOrder==="together")){if((e.flags&128)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var Ke=0,at=null,bt=null,Ht=null,vn=!1,ba=!1,Kl=!1,gn=0,ru=0,Ea=null,Km=0;function Dt(){throw Error(f(321))}function sc(t,e){if(e===null)return!1;for(var l=0;l<e.length&&l<t.length;l++)if(!ce(t[l],e[l]))return!1;return!0}function oc(t,e,l,a,u,n){return Ke=n,at=e,e.memoizedState=null,e.updateQueue=null,e.lanes=0,D.H=t===null||t.memoizedState===null?Is:Rc,Kl=!1,n=l(a,u),Kl=!1,ba&&(n=gs(e,l,a,u)),vs(t),n}function vs(t){D.H=du;var e=bt!==null&&bt.next!==null;if(Ke=0,Ht=bt=at=null,vn=!1,ru=0,Ea=null,e)throw Error(f(300));t===null||Bt||(t=t.dependencies,t!==null&&cn(t)&&(Bt=!0))}function gs(t,e,l,a){at=t;var u=0;do{if(ba&&(Ea=null),ru=0,ba=!1,25<=u)throw Error(f(301));if(u+=1,Ht=bt=null,t.updateQueue!=null){var n=t.updateQueue;n.lastEffect=null,n.events=null,n.stores=null,n.memoCache!=null&&(n.memoCache.index=0)}D.H=Ps,n=e(l,a)}while(ba);return n}function wm(){var t=D.H,e=t.useState()[0];return e=typeof e.then=="function"?su(e):e,t=t.useState()[0],(bt!==null?bt.memoizedState:null)!==t&&(at.flags|=1024),e}function dc(){var t=gn!==0;return gn=0,t}function hc(t,e,l){e.updateQueue=t.updateQueue,e.flags&=-2053,t.lanes&=~l}function mc(t){if(vn){for(t=t.memoizedState;t!==null;){var e=t.queue;e!==null&&(e.pending=null),t=t.next}vn=!1}Ke=0,Ht=bt=at=null,ba=!1,ru=gn=0,Ea=null}function $t(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ht===null?at.memoizedState=Ht=t:Ht=Ht.next=t,Ht}function xt(){if(bt===null){var t=at.alternate;t=t!==null?t.memoizedState:null}else t=bt.next;var e=Ht===null?at.memoizedState:Ht.next;if(e!==null)Ht=e,bt=t;else{if(t===null)throw at.alternate===null?Error(f(467)):Error(f(310));bt=t,t={memoizedState:bt.memoizedState,baseState:bt.baseState,baseQueue:bt.baseQueue,queue:bt.queue,next:null},Ht===null?at.memoizedState=Ht=t:Ht=Ht.next=t}return Ht}function pn(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function su(t){var e=ru;return ru+=1,Ea===null&&(Ea=[]),t=cs(Ea,t,e),e=at,(Ht===null?e.memoizedState:Ht.next)===null&&(e=e.alternate,D.H=e===null||e.memoizedState===null?Is:Rc),t}function Sn(t){if(t!==null&&typeof t=="object"){if(typeof t.then=="function")return su(t);if(t.$$typeof===W)return Zt(t)}throw Error(f(438,String(t)))}function yc(t){var e=null,l=at.updateQueue;if(l!==null&&(e=l.memoCache),e==null){var a=at.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(e={data:a.data.map(function(u){return u.slice()}),index:0})))}if(e==null&&(e={data:[],index:0}),l===null&&(l=pn(),at.updateQueue=l),l.memoCache=e,l=e.data[e.index],l===void 0)for(l=e.data[e.index]=Array(t),a=0;a<t;a++)l[a]=Wt;return e.index++,l}function we(t,e){return typeof e=="function"?e(t):e}function bn(t){var e=xt();return vc(e,bt,t)}function vc(t,e,l){var a=t.queue;if(a===null)throw Error(f(311));a.lastRenderedReducer=l;var u=t.baseQueue,n=a.pending;if(n!==null){if(u!==null){var i=u.next;u.next=n.next,n.next=i}e.baseQueue=u=n,a.pending=null}if(n=t.baseState,u===null)t.memoizedState=n;else{e=u.next;var r=i=null,h=null,T=e,M=!1;do{var C=T.lane&-536870913;if(C!==T.lane?(ft&C)===C:(Ke&C)===C){var _=T.revertLane;if(_===0)h!==null&&(h=h.next={lane:0,revertLane:0,gesture:null,action:T.action,hasEagerState:T.hasEagerState,eagerState:T.eagerState,next:null}),C===ya&&(M=!0);else if((Ke&_)===_){T=T.next,_===ya&&(M=!0);continue}else C={lane:0,revertLane:T.revertLane,gesture:null,action:T.action,hasEagerState:T.hasEagerState,eagerState:T.eagerState,next:null},h===null?(r=h=C,i=n):h=h.next=C,at.lanes|=_,pl|=_;C=T.action,Kl&&l(n,C),n=T.hasEagerState?T.eagerState:l(n,C)}else _={lane:C,revertLane:T.revertLane,gesture:T.gesture,action:T.action,hasEagerState:T.hasEagerState,eagerState:T.eagerState,next:null},h===null?(r=h=_,i=n):h=h.next=_,at.lanes|=C,pl|=C;T=T.next}while(T!==null&&T!==e);if(h===null?i=n:h.next=r,!ce(n,t.memoizedState)&&(Bt=!0,M&&(l=va,l!==null)))throw l;t.memoizedState=n,t.baseState=i,t.baseQueue=h,a.lastRenderedState=n}return u===null&&(a.lanes=0),[t.memoizedState,a.dispatch]}function gc(t){var e=xt(),l=e.queue;if(l===null)throw Error(f(311));l.lastRenderedReducer=t;var a=l.dispatch,u=l.pending,n=e.memoizedState;if(u!==null){l.pending=null;var i=u=u.next;do n=t(n,i.action),i=i.next;while(i!==u);ce(n,e.memoizedState)||(Bt=!0),e.memoizedState=n,e.baseQueue===null&&(e.baseState=n),l.lastRenderedState=n}return[n,a]}function ps(t,e,l){var a=at,u=xt(),n=ot;if(n){if(l===void 0)throw Error(f(407));l=l()}else l=e();var i=!ce((bt||u).memoizedState,l);if(i&&(u.memoizedState=l,Bt=!0),u=u.queue,bc(Es.bind(null,a,u,t),[t]),u.getSnapshot!==e||i||Ht!==null&&Ht.memoizedState.tag&1){if(a.flags|=2048,Ta(9,{destroy:void 0},bs.bind(null,a,u,l,e),null),At===null)throw Error(f(349));n||(Ke&127)!==0||Ss(a,e,l)}return l}function Ss(t,e,l){t.flags|=16384,t={getSnapshot:e,value:l},e=at.updateQueue,e===null?(e=pn(),at.updateQueue=e,e.stores=[t]):(l=e.stores,l===null?e.stores=[t]:l.push(t))}function bs(t,e,l,a){e.value=l,e.getSnapshot=a,Ts(e)&&zs(t)}function Es(t,e,l){return l(function(){Ts(e)&&zs(t)})}function Ts(t){var e=t.getSnapshot;t=t.value;try{var l=e();return!ce(t,l)}catch{return!0}}function zs(t){var e=Bl(t,2);e!==null&&ae(e,t,2)}function pc(t){var e=$t();if(typeof t=="function"){var l=t;if(t=l(),Kl){ul(!0);try{l()}finally{ul(!1)}}}return e.memoizedState=e.baseState=t,e.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:we,lastRenderedState:t},e}function As(t,e,l,a){return t.baseState=l,vc(t,bt,typeof a=="function"?a:we)}function Jm(t,e,l,a,u){if(zn(t))throw Error(f(485));if(t=e.action,t!==null){var n={payload:u,action:t,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(i){n.listeners.push(i)}};D.T!==null?l(!0):n.isTransition=!1,a(n),l=e.pending,l===null?(n.next=e.pending=n,_s(e,n)):(n.next=l.next,e.pending=l.next=n)}}function _s(t,e){var l=e.action,a=e.payload,u=t.state;if(e.isTransition){var n=D.T,i={};D.T=i;try{var r=l(u,a),h=D.S;h!==null&&h(i,r),Rs(t,e,r)}catch(T){Sc(t,e,T)}finally{n!==null&&i.types!==null&&(n.types=i.types),D.T=n}}else try{n=l(u,a),Rs(t,e,n)}catch(T){Sc(t,e,T)}}function Rs(t,e,l){l!==null&&typeof l=="object"&&typeof l.then=="function"?l.then(function(a){Os(t,e,a)},function(a){return Sc(t,e,a)}):Os(t,e,l)}function Os(t,e,l){e.status="fulfilled",e.value=l,Ms(e),t.state=l,e=t.pending,e!==null&&(l=e.next,l===e?t.pending=null:(l=l.next,e.next=l,_s(t,l)))}function Sc(t,e,l){var a=t.pending;if(t.pending=null,a!==null){a=a.next;do e.status="rejected",e.reason=l,Ms(e),e=e.next;while(e!==a)}t.action=null}function Ms(t){t=t.listeners;for(var e=0;e<t.length;e++)(0,t[e])()}function Ds(t,e){return e}function Ns(t,e){if(ot){var l=At.formState;if(l!==null){t:{var a=at;if(ot){if(_t){e:{for(var u=_t,n=Ee;u.nodeType!==8;){if(!n){u=null;break e}if(u=ze(u.nextSibling),u===null){u=null;break e}}n=u.data,u=n==="F!"||n==="F"?u:null}if(u){_t=ze(u.nextSibling),a=u.data==="F!";break t}}rl(a)}a=!1}a&&(e=l[0])}}return l=$t(),l.memoizedState=l.baseState=e,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ds,lastRenderedState:e},l.queue=a,l=Ws.bind(null,at,a),a.dispatch=l,a=pc(!1),n=_c.bind(null,at,!1,a.queue),a=$t(),u={state:e,dispatch:null,action:t,pending:null},a.queue=u,l=Jm.bind(null,at,u,n,l),u.dispatch=l,a.memoizedState=t,[e,l,!1]}function Us(t){var e=xt();return Cs(e,bt,t)}function Cs(t,e,l){if(e=vc(t,e,Ds)[0],t=bn(we)[0],typeof e=="object"&&e!==null&&typeof e.then=="function")try{var a=su(e)}catch(i){throw i===ga?sn:i}else a=e;e=xt();var u=e.queue,n=u.dispatch;return l!==e.memoizedState&&(at.flags|=2048,Ta(9,{destroy:void 0},$m.bind(null,u,l),null)),[a,n,t]}function $m(t,e){t.action=e}function xs(t){var e=xt(),l=bt;if(l!==null)return Cs(e,l,t);xt(),e=e.memoizedState,l=xt();var a=l.queue.dispatch;return l.memoizedState=t,[e,a,!1]}function Ta(t,e,l,a){return t={tag:t,create:l,deps:a,inst:e,next:null},e=at.updateQueue,e===null&&(e=pn(),at.updateQueue=e),l=e.lastEffect,l===null?e.lastEffect=t.next=t:(a=l.next,l.next=t,t.next=a,e.lastEffect=t),t}function js(){return xt().memoizedState}function En(t,e,l,a){var u=$t();at.flags|=t,u.memoizedState=Ta(1|e,{destroy:void 0},l,a===void 0?null:a)}function Tn(t,e,l,a){var u=xt();a=a===void 0?null:a;var n=u.memoizedState.inst;bt!==null&&a!==null&&sc(a,bt.memoizedState.deps)?u.memoizedState=Ta(e,n,l,a):(at.flags|=t,u.memoizedState=Ta(1|e,n,l,a))}function Hs(t,e){En(8390656,8,t,e)}function bc(t,e){Tn(2048,8,t,e)}function Wm(t){at.flags|=4;var e=at.updateQueue;if(e===null)e=pn(),at.updateQueue=e,e.events=[t];else{var l=e.events;l===null?e.events=[t]:l.push(t)}}function Bs(t){var e=xt().memoizedState;return Wm({ref:e,nextImpl:t}),function(){if((mt&2)!==0)throw Error(f(440));return e.impl.apply(void 0,arguments)}}function qs(t,e){return Tn(4,2,t,e)}function Ls(t,e){return Tn(4,4,t,e)}function Ys(t,e){if(typeof e=="function"){t=t();var l=e(t);return function(){typeof l=="function"?l():e(null)}}if(e!=null)return t=t(),e.current=t,function(){e.current=null}}function Gs(t,e,l){l=l!=null?l.concat([t]):null,Tn(4,4,Ys.bind(null,e,t),l)}function Ec(){}function Xs(t,e){var l=xt();e=e===void 0?null:e;var a=l.memoizedState;return e!==null&&sc(e,a[1])?a[0]:(l.memoizedState=[t,e],t)}function Qs(t,e){var l=xt();e=e===void 0?null:e;var a=l.memoizedState;if(e!==null&&sc(e,a[1]))return a[0];if(a=t(),Kl){ul(!0);try{t()}finally{ul(!1)}}return l.memoizedState=[a,e],a}function Tc(t,e,l){return l===void 0||(Ke&1073741824)!==0&&(ft&261930)===0?t.memoizedState=e:(t.memoizedState=l,t=Vo(),at.lanes|=t,pl|=t,l)}function Zs(t,e,l,a){return ce(l,e)?l:Sa.current!==null?(t=Tc(t,l,a),ce(t,e)||(Bt=!0),t):(Ke&42)===0||(Ke&1073741824)!==0&&(ft&261930)===0?(Bt=!0,t.memoizedState=l):(t=Vo(),at.lanes|=t,pl|=t,e)}function Vs(t,e,l,a,u){var n=q.p;q.p=n!==0&&8>n?n:8;var i=D.T,r={};D.T=r,_c(t,!1,e,l);try{var h=u(),T=D.S;if(T!==null&&T(r,h),h!==null&&typeof h=="object"&&typeof h.then=="function"){var M=Vm(h,a);ou(t,e,M,he(t))}else ou(t,e,a,he(t))}catch(C){ou(t,e,{then:function(){},status:"rejected",reason:C},he())}finally{q.p=n,i!==null&&r.types!==null&&(i.types=r.types),D.T=i}}function km(){}function zc(t,e,l,a){if(t.tag!==5)throw Error(f(476));var u=Ks(t).queue;Vs(t,u,e,tt,l===null?km:function(){return ws(t),l(a)})}function Ks(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:tt,baseState:tt,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:we,lastRenderedState:tt},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:we,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function ws(t){var e=Ks(t);e.next===null&&(e=t.alternate.memoizedState),ou(t,e.next.queue,{},he())}function Ac(){return Zt(Mu)}function Js(){return xt().memoizedState}function $s(){return xt().memoizedState}function Fm(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=he();t=dl(l);var a=hl(e,t,l);a!==null&&(ae(a,e,l),iu(a,e,l)),e={cache:Pi()},t.payload=e;return}e=e.return}}function Im(t,e,l){var a=he();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},zn(t)?ks(e,l):(l=Qi(t,e,l,a),l!==null&&(ae(l,t,a),Fs(l,e,a)))}function Ws(t,e,l){var a=he();ou(t,e,l,a)}function ou(t,e,l,a){var u={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(zn(t))ks(e,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=e.lastRenderedReducer,n!==null))try{var i=e.lastRenderedState,r=n(i,l);if(u.hasEagerState=!0,u.eagerState=r,ce(r,i))return ln(t,e,u,0),At===null&&en(),!1}catch{}if(l=Qi(t,e,u,a),l!==null)return ae(l,t,a),Fs(l,e,a),!0}return!1}function _c(t,e,l,a){if(a={lane:2,revertLane:af(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},zn(t)){if(e)throw Error(f(479))}else e=Qi(t,l,a,2),e!==null&&ae(e,t,2)}function zn(t){var e=t.alternate;return t===at||e!==null&&e===at}function ks(t,e){ba=vn=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function Fs(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,lr(t,l)}}var du={readContext:Zt,use:Sn,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt};du.useEffectEvent=Dt;var Is={readContext:Zt,use:Sn,useCallback:function(t,e){return $t().memoizedState=[t,e===void 0?null:e],t},useContext:Zt,useEffect:Hs,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,En(4194308,4,Ys.bind(null,e,t),l)},useLayoutEffect:function(t,e){return En(4194308,4,t,e)},useInsertionEffect:function(t,e){En(4,2,t,e)},useMemo:function(t,e){var l=$t();e=e===void 0?null:e;var a=t();if(Kl){ul(!0);try{t()}finally{ul(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=$t();if(l!==void 0){var u=l(e);if(Kl){ul(!0);try{l(e)}finally{ul(!1)}}}else u=e;return a.memoizedState=a.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},a.queue=t,t=t.dispatch=Im.bind(null,at,t),[a.memoizedState,t]},useRef:function(t){var e=$t();return t={current:t},e.memoizedState=t},useState:function(t){t=pc(t);var e=t.queue,l=Ws.bind(null,at,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:Ec,useDeferredValue:function(t,e){var l=$t();return Tc(l,t,e)},useTransition:function(){var t=pc(!1);return t=Vs.bind(null,at,t.queue,!0,!1),$t().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=at,u=$t();if(ot){if(l===void 0)throw Error(f(407));l=l()}else{if(l=e(),At===null)throw Error(f(349));(ft&127)!==0||Ss(a,e,l)}u.memoizedState=l;var n={value:l,getSnapshot:e};return u.queue=n,Hs(Es.bind(null,a,n,t),[t]),a.flags|=2048,Ta(9,{destroy:void 0},bs.bind(null,a,n,l,e),null),l},useId:function(){var t=$t(),e=At.identifierPrefix;if(ot){var l=je,a=xe;l=(a&~(1<<32-ie(a)-1)).toString(32)+l,e="_"+e+"R_"+l,l=gn++,0<l&&(e+="H"+l.toString(32)),e+="_"}else l=Km++,e="_"+e+"r_"+l.toString(32)+"_";return t.memoizedState=e},useHostTransitionStatus:Ac,useFormState:Ns,useActionState:Ns,useOptimistic:function(t){var e=$t();e.memoizedState=e.baseState=t;var l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return e.queue=l,e=_c.bind(null,at,!0,l),l.dispatch=e,[t,e]},useMemoCache:yc,useCacheRefresh:function(){return $t().memoizedState=Fm.bind(null,at)},useEffectEvent:function(t){var e=$t(),l={impl:t};return e.memoizedState=l,function(){if((mt&2)!==0)throw Error(f(440));return l.impl.apply(void 0,arguments)}}},Rc={readContext:Zt,use:Sn,useCallback:Xs,useContext:Zt,useEffect:bc,useImperativeHandle:Gs,useInsertionEffect:qs,useLayoutEffect:Ls,useMemo:Qs,useReducer:bn,useRef:js,useState:function(){return bn(we)},useDebugValue:Ec,useDeferredValue:function(t,e){var l=xt();return Zs(l,bt.memoizedState,t,e)},useTransition:function(){var t=bn(we)[0],e=xt().memoizedState;return[typeof t=="boolean"?t:su(t),e]},useSyncExternalStore:ps,useId:Js,useHostTransitionStatus:Ac,useFormState:Us,useActionState:Us,useOptimistic:function(t,e){var l=xt();return As(l,bt,t,e)},useMemoCache:yc,useCacheRefresh:$s};Rc.useEffectEvent=Bs;var Ps={readContext:Zt,use:Sn,useCallback:Xs,useContext:Zt,useEffect:bc,useImperativeHandle:Gs,useInsertionEffect:qs,useLayoutEffect:Ls,useMemo:Qs,useReducer:gc,useRef:js,useState:function(){return gc(we)},useDebugValue:Ec,useDeferredValue:function(t,e){var l=xt();return bt===null?Tc(l,t,e):Zs(l,bt.memoizedState,t,e)},useTransition:function(){var t=gc(we)[0],e=xt().memoizedState;return[typeof t=="boolean"?t:su(t),e]},useSyncExternalStore:ps,useId:Js,useHostTransitionStatus:Ac,useFormState:xs,useActionState:xs,useOptimistic:function(t,e){var l=xt();return bt!==null?As(l,bt,t,e):(l.baseState=t,[t,l.queue.dispatch])},useMemoCache:yc,useCacheRefresh:$s};Ps.useEffectEvent=Bs;function Oc(t,e,l,a){e=t.memoizedState,l=l(a,e),l=l==null?e:z({},e,l),t.memoizedState=l,t.lanes===0&&(t.updateQueue.baseState=l)}var Mc={enqueueSetState:function(t,e,l){t=t._reactInternals;var a=he(),u=dl(a);u.payload=e,l!=null&&(u.callback=l),e=hl(t,u,a),e!==null&&(ae(e,t,a),iu(e,t,a))},enqueueReplaceState:function(t,e,l){t=t._reactInternals;var a=he(),u=dl(a);u.tag=1,u.payload=e,l!=null&&(u.callback=l),e=hl(t,u,a),e!==null&&(ae(e,t,a),iu(e,t,a))},enqueueForceUpdate:function(t,e){t=t._reactInternals;var l=he(),a=dl(l);a.tag=2,e!=null&&(a.callback=e),e=hl(t,a,l),e!==null&&(ae(e,t,l),iu(e,t,l))}};function to(t,e,l,a,u,n,i){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(a,n,i):e.prototype&&e.prototype.isPureReactComponent?!Ia(l,a)||!Ia(u,n):!0}function eo(t,e,l,a){t=e.state,typeof e.componentWillReceiveProps=="function"&&e.componentWillReceiveProps(l,a),typeof e.UNSAFE_componentWillReceiveProps=="function"&&e.UNSAFE_componentWillReceiveProps(l,a),e.state!==t&&Mc.enqueueReplaceState(e,e.state,null)}function wl(t,e){var l=e;if("ref"in e){l={};for(var a in e)a!=="ref"&&(l[a]=e[a])}if(t=t.defaultProps){l===e&&(l=z({},l));for(var u in t)l[u]===void 0&&(l[u]=t[u])}return l}function lo(t){tn(t)}function ao(t){console.error(t)}function uo(t){tn(t)}function An(t,e){try{var l=t.onUncaughtError;l(e.value,{componentStack:e.stack})}catch(a){setTimeout(function(){throw a})}}function no(t,e,l){try{var a=t.onCaughtError;a(l.value,{componentStack:l.stack,errorBoundary:e.tag===1?e.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function Dc(t,e,l){return l=dl(l),l.tag=3,l.payload={element:null},l.callback=function(){An(t,e)},l}function io(t){return t=dl(t),t.tag=3,t}function co(t,e,l,a){var u=l.type.getDerivedStateFromError;if(typeof u=="function"){var n=a.value;t.payload=function(){return u(n)},t.callback=function(){no(e,l,a)}}var i=l.stateNode;i!==null&&typeof i.componentDidCatch=="function"&&(t.callback=function(){no(e,l,a),typeof u!="function"&&(Sl===null?Sl=new Set([this]):Sl.add(this));var r=a.stack;this.componentDidCatch(a.value,{componentStack:r!==null?r:""})})}function Pm(t,e,l,a,u){if(l.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(e=l.alternate,e!==null&&ma(e,l,u,!0),l=re.current,l!==null){switch(l.tag){case 31:case 13:return Te===null?Bn():l.alternate===null&&Nt===0&&(Nt=3),l.flags&=-257,l.flags|=65536,l.lanes=u,a===on?l.flags|=16384:(e=l.updateQueue,e===null?l.updateQueue=new Set([a]):e.add(a),tf(t,a,u)),!1;case 22:return l.flags|=65536,a===on?l.flags|=16384:(e=l.updateQueue,e===null?(e={transitions:null,markerInstances:null,retryQueue:new Set([a])},l.updateQueue=e):(l=e.retryQueue,l===null?e.retryQueue=new Set([a]):l.add(a)),tf(t,a,u)),!1}throw Error(f(435,l.tag))}return tf(t,a,u),Bn(),!1}if(ot)return e=re.current,e!==null?((e.flags&65536)===0&&(e.flags|=256),e.flags|=65536,e.lanes=u,a!==$i&&(t=Error(f(422),{cause:a}),eu(pe(t,l)))):(a!==$i&&(e=Error(f(423),{cause:a}),eu(pe(e,l))),t=t.current.alternate,t.flags|=65536,u&=-u,t.lanes|=u,a=pe(a,l),u=Dc(t.stateNode,a,u),nc(t,u),Nt!==4&&(Nt=2)),!1;var n=Error(f(520),{cause:a});if(n=pe(n,l),bu===null?bu=[n]:bu.push(n),Nt!==4&&(Nt=2),e===null)return!0;a=pe(a,l),l=e;do{switch(l.tag){case 3:return l.flags|=65536,t=u&-u,l.lanes|=t,t=Dc(l.stateNode,a,t),nc(l,t),!1;case 1:if(e=l.type,n=l.stateNode,(l.flags&128)===0&&(typeof e.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(Sl===null||!Sl.has(n))))return l.flags|=65536,u&=-u,l.lanes|=u,u=io(u),co(u,t,l,a),nc(l,u),!1}l=l.return}while(l!==null);return!1}var Nc=Error(f(461)),Bt=!1;function Vt(t,e,l,a){e.child=t===null?os(e,null,l,a):Vl(e,t.child,l,a)}function fo(t,e,l,a,u){l=l.render;var n=e.ref;if("ref"in a){var i={};for(var r in a)r!=="ref"&&(i[r]=a[r])}else i=a;return Gl(e),a=oc(t,e,l,i,n,u),r=dc(),t!==null&&!Bt?(hc(t,e,u),Je(t,e,u)):(ot&&r&&wi(e),e.flags|=1,Vt(t,e,a,u),e.child)}function ro(t,e,l,a,u){if(t===null){var n=l.type;return typeof n=="function"&&!Zi(n)&&n.defaultProps===void 0&&l.compare===null?(e.tag=15,e.type=n,so(t,e,n,a,u)):(t=un(l.type,null,a,e,e.mode,u),t.ref=e.ref,t.return=e,e.child=t)}if(n=t.child,!Lc(t,u)){var i=n.memoizedProps;if(l=l.compare,l=l!==null?l:Ia,l(i,a)&&t.ref===e.ref)return Je(t,e,u)}return e.flags|=1,t=Xe(n,a),t.ref=e.ref,t.return=e,e.child=t}function so(t,e,l,a,u){if(t!==null){var n=t.memoizedProps;if(Ia(n,a)&&t.ref===e.ref)if(Bt=!1,e.pendingProps=a=n,Lc(t,u))(t.flags&131072)!==0&&(Bt=!0);else return e.lanes=t.lanes,Je(t,e,u)}return Uc(t,e,l,a,u)}function oo(t,e,l,a){var u=a.children,n=t!==null?t.memoizedState:null;if(t===null&&e.stateNode===null&&(e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((e.flags&128)!==0){if(n=n!==null?n.baseLanes|l:l,t!==null){for(a=e.child=t.child,u=0;a!==null;)u=u|a.lanes|a.childLanes,a=a.sibling;a=u&~n}else a=0,e.child=null;return ho(t,e,n,l,a)}if((l&536870912)!==0)e.memoizedState={baseLanes:0,cachePool:null},t!==null&&rn(e,n!==null?n.cachePool:null),n!==null?ms(e,n):cc(),ys(e);else return a=e.lanes=536870912,ho(t,e,n!==null?n.baseLanes|l:l,l,a)}else n!==null?(rn(e,n.cachePool),ms(e,n),yl(),e.memoizedState=null):(t!==null&&rn(e,null),cc(),yl());return Vt(t,e,u,l),e.child}function hu(t,e){return t!==null&&t.tag===22||e.stateNode!==null||(e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),e.sibling}function ho(t,e,l,a,u){var n=ec();return n=n===null?null:{parent:jt._currentValue,pool:n},e.memoizedState={baseLanes:l,cachePool:n},t!==null&&rn(e,null),cc(),ys(e),t!==null&&ma(t,e,a,!0),e.childLanes=u,null}function _n(t,e){return e=On({mode:e.mode,children:e.children},t.mode),e.ref=t.ref,t.child=e,e.return=t,e}function mo(t,e,l){return Vl(e,t.child,null,l),t=_n(e,e.pendingProps),t.flags|=2,se(e),e.memoizedState=null,t}function ty(t,e,l){var a=e.pendingProps,u=(e.flags&128)!==0;if(e.flags&=-129,t===null){if(ot){if(a.mode==="hidden")return t=_n(e,a),e.lanes=536870912,hu(null,t);if(rc(e),(t=_t)?(t=Rd(t,Ee),t=t!==null&&t.data==="&"?t:null,t!==null&&(e.memoizedState={dehydrated:t,treeContext:cl!==null?{id:xe,overflow:je}:null,retryLane:536870912,hydrationErrors:null},l=kr(t),l.return=e,e.child=l,Qt=e,_t=null)):t=null,t===null)throw rl(e);return e.lanes=536870912,null}return _n(e,a)}var n=t.memoizedState;if(n!==null){var i=n.dehydrated;if(rc(e),u)if(e.flags&256)e.flags&=-257,e=mo(t,e,l);else if(e.memoizedState!==null)e.child=t.child,e.flags|=128,e=null;else throw Error(f(558));else if(Bt||ma(t,e,l,!1),u=(l&t.childLanes)!==0,Bt||u){if(a=At,a!==null&&(i=ar(a,l),i!==0&&i!==n.retryLane))throw n.retryLane=i,Bl(t,i),ae(a,t,i),Nc;Bn(),e=mo(t,e,l)}else t=n.treeContext,_t=ze(i.nextSibling),Qt=e,ot=!0,fl=null,Ee=!1,t!==null&&Pr(e,t),e=_n(e,a),e.flags|=4096;return e}return t=Xe(t.child,{mode:a.mode,children:a.children}),t.ref=e.ref,e.child=t,t.return=e,t}function Rn(t,e){var l=e.ref;if(l===null)t!==null&&t.ref!==null&&(e.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(f(284));(t===null||t.ref!==l)&&(e.flags|=4194816)}}function Uc(t,e,l,a,u){return Gl(e),l=oc(t,e,l,a,void 0,u),a=dc(),t!==null&&!Bt?(hc(t,e,u),Je(t,e,u)):(ot&&a&&wi(e),e.flags|=1,Vt(t,e,l,u),e.child)}function yo(t,e,l,a,u,n){return Gl(e),e.updateQueue=null,l=gs(e,a,l,u),vs(t),a=dc(),t!==null&&!Bt?(hc(t,e,n),Je(t,e,n)):(ot&&a&&wi(e),e.flags|=1,Vt(t,e,l,n),e.child)}function vo(t,e,l,a,u){if(Gl(e),e.stateNode===null){var n=sa,i=l.contextType;typeof i=="object"&&i!==null&&(n=Zt(i)),n=new l(a,n),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=Mc,e.stateNode=n,n._reactInternals=e,n=e.stateNode,n.props=a,n.state=e.memoizedState,n.refs={},ac(e),i=l.contextType,n.context=typeof i=="object"&&i!==null?Zt(i):sa,n.state=e.memoizedState,i=l.getDerivedStateFromProps,typeof i=="function"&&(Oc(e,l,i,a),n.state=e.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(i=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),i!==n.state&&Mc.enqueueReplaceState(n,n.state,null),fu(e,a,n,u),cu(),n.state=e.memoizedState),typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!0}else if(t===null){n=e.stateNode;var r=e.memoizedProps,h=wl(l,r);n.props=h;var T=n.context,M=l.contextType;i=sa,typeof M=="object"&&M!==null&&(i=Zt(M));var C=l.getDerivedStateFromProps;M=typeof C=="function"||typeof n.getSnapshotBeforeUpdate=="function",r=e.pendingProps!==r,M||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(r||T!==i)&&eo(e,n,a,i),ol=!1;var _=e.memoizedState;n.state=_,fu(e,a,n,u),cu(),T=e.memoizedState,r||_!==T||ol?(typeof C=="function"&&(Oc(e,l,C,a),T=e.memoizedState),(h=ol||to(e,l,h,a,_,T,i))?(M||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(e.flags|=4194308)):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),e.memoizedProps=a,e.memoizedState=T),n.props=a,n.state=T,n.context=i,a=h):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!1)}else{n=e.stateNode,uc(t,e),i=e.memoizedProps,M=wl(l,i),n.props=M,C=e.pendingProps,_=n.context,T=l.contextType,h=sa,typeof T=="object"&&T!==null&&(h=Zt(T)),r=l.getDerivedStateFromProps,(T=typeof r=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(i!==C||_!==h)&&eo(e,n,a,h),ol=!1,_=e.memoizedState,n.state=_,fu(e,a,n,u),cu();var O=e.memoizedState;i!==C||_!==O||ol||t!==null&&t.dependencies!==null&&cn(t.dependencies)?(typeof r=="function"&&(Oc(e,l,r,a),O=e.memoizedState),(M=ol||to(e,l,M,a,_,O,h)||t!==null&&t.dependencies!==null&&cn(t.dependencies))?(T||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,O,h),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,O,h)),typeof n.componentDidUpdate=="function"&&(e.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(e.flags|=1024)):(typeof n.componentDidUpdate!="function"||i===t.memoizedProps&&_===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===t.memoizedProps&&_===t.memoizedState||(e.flags|=1024),e.memoizedProps=a,e.memoizedState=O),n.props=a,n.state=O,n.context=h,a=M):(typeof n.componentDidUpdate!="function"||i===t.memoizedProps&&_===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===t.memoizedProps&&_===t.memoizedState||(e.flags|=1024),a=!1)}return n=a,Rn(t,e),a=(e.flags&128)!==0,n||a?(n=e.stateNode,l=a&&typeof l.getDerivedStateFromError!="function"?null:n.render(),e.flags|=1,t!==null&&a?(e.child=Vl(e,t.child,null,u),e.child=Vl(e,null,l,u)):Vt(t,e,l,u),e.memoizedState=n.state,t=e.child):t=Je(t,e,u),t}function go(t,e,l,a){return Ll(),e.flags|=256,Vt(t,e,l,a),e.child}var Cc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function xc(t){return{baseLanes:t,cachePool:ns()}}function jc(t,e,l){return t=t!==null?t.childLanes&~l:0,e&&(t|=de),t}function po(t,e,l){var a=e.pendingProps,u=!1,n=(e.flags&128)!==0,i;if((i=n)||(i=t!==null&&t.memoizedState===null?!1:(Ct.current&2)!==0),i&&(u=!0,e.flags&=-129),i=(e.flags&32)!==0,e.flags&=-33,t===null){if(ot){if(u?ml(e):yl(),(t=_t)?(t=Rd(t,Ee),t=t!==null&&t.data!=="&"?t:null,t!==null&&(e.memoizedState={dehydrated:t,treeContext:cl!==null?{id:xe,overflow:je}:null,retryLane:536870912,hydrationErrors:null},l=kr(t),l.return=e,e.child=l,Qt=e,_t=null)):t=null,t===null)throw rl(e);return gf(t)?e.lanes=32:e.lanes=536870912,null}var r=a.children;return a=a.fallback,u?(yl(),u=e.mode,r=On({mode:"hidden",children:r},u),a=ql(a,u,l,null),r.return=e,a.return=e,r.sibling=a,e.child=r,a=e.child,a.memoizedState=xc(l),a.childLanes=jc(t,i,l),e.memoizedState=Cc,hu(null,a)):(ml(e),Hc(e,r))}var h=t.memoizedState;if(h!==null&&(r=h.dehydrated,r!==null)){if(n)e.flags&256?(ml(e),e.flags&=-257,e=Bc(t,e,l)):e.memoizedState!==null?(yl(),e.child=t.child,e.flags|=128,e=null):(yl(),r=a.fallback,u=e.mode,a=On({mode:"visible",children:a.children},u),r=ql(r,u,l,null),r.flags|=2,a.return=e,r.return=e,a.sibling=r,e.child=a,Vl(e,t.child,null,l),a=e.child,a.memoizedState=xc(l),a.childLanes=jc(t,i,l),e.memoizedState=Cc,e=hu(null,a));else if(ml(e),gf(r)){if(i=r.nextSibling&&r.nextSibling.dataset,i)var T=i.dgst;i=T,a=Error(f(419)),a.stack="",a.digest=i,eu({value:a,source:null,stack:null}),e=Bc(t,e,l)}else if(Bt||ma(t,e,l,!1),i=(l&t.childLanes)!==0,Bt||i){if(i=At,i!==null&&(a=ar(i,l),a!==0&&a!==h.retryLane))throw h.retryLane=a,Bl(t,a),ae(i,t,a),Nc;vf(r)||Bn(),e=Bc(t,e,l)}else vf(r)?(e.flags|=192,e.child=t.child,e=null):(t=h.treeContext,_t=ze(r.nextSibling),Qt=e,ot=!0,fl=null,Ee=!1,t!==null&&Pr(e,t),e=Hc(e,a.children),e.flags|=4096);return e}return u?(yl(),r=a.fallback,u=e.mode,h=t.child,T=h.sibling,a=Xe(h,{mode:"hidden",children:a.children}),a.subtreeFlags=h.subtreeFlags&65011712,T!==null?r=Xe(T,r):(r=ql(r,u,l,null),r.flags|=2),r.return=e,a.return=e,a.sibling=r,e.child=a,hu(null,a),a=e.child,r=t.child.memoizedState,r===null?r=xc(l):(u=r.cachePool,u!==null?(h=jt._currentValue,u=u.parent!==h?{parent:h,pool:h}:u):u=ns(),r={baseLanes:r.baseLanes|l,cachePool:u}),a.memoizedState=r,a.childLanes=jc(t,i,l),e.memoizedState=Cc,hu(t.child,a)):(ml(e),l=t.child,t=l.sibling,l=Xe(l,{mode:"visible",children:a.children}),l.return=e,l.sibling=null,t!==null&&(i=e.deletions,i===null?(e.deletions=[t],e.flags|=16):i.push(t)),e.child=l,e.memoizedState=null,l)}function Hc(t,e){return e=On({mode:"visible",children:e},t.mode),e.return=t,t.child=e}function On(t,e){return t=fe(22,t,null,e),t.lanes=0,t}function Bc(t,e,l){return Vl(e,t.child,null,l),t=Hc(e,e.pendingProps.children),t.flags|=2,e.memoizedState=null,t}function So(t,e,l){t.lanes|=e;var a=t.alternate;a!==null&&(a.lanes|=e),Fi(t.return,e,l)}function qc(t,e,l,a,u,n){var i=t.memoizedState;i===null?t.memoizedState={isBackwards:e,rendering:null,renderingStartTime:0,last:a,tail:l,tailMode:u,treeForkCount:n}:(i.isBackwards=e,i.rendering=null,i.renderingStartTime=0,i.last=a,i.tail=l,i.tailMode=u,i.treeForkCount=n)}function bo(t,e,l){var a=e.pendingProps,u=a.revealOrder,n=a.tail;a=a.children;var i=Ct.current,r=(i&2)!==0;if(r?(i=i&1|2,e.flags|=128):i&=1,L(Ct,i),Vt(t,e,a,l),a=ot?tu:0,!r&&t!==null&&(t.flags&128)!==0)t:for(t=e.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&So(t,l,e);else if(t.tag===19)So(t,l,e);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break t;for(;t.sibling===null;){if(t.return===null||t.return===e)break t;t=t.return}t.sibling.return=t.return,t=t.sibling}switch(u){case"forwards":for(l=e.child,u=null;l!==null;)t=l.alternate,t!==null&&yn(t)===null&&(u=l),l=l.sibling;l=u,l===null?(u=e.child,e.child=null):(u=l.sibling,l.sibling=null),qc(e,!1,u,l,n,a);break;case"backwards":case"unstable_legacy-backwards":for(l=null,u=e.child,e.child=null;u!==null;){if(t=u.alternate,t!==null&&yn(t)===null){e.child=u;break}t=u.sibling,u.sibling=l,l=u,u=t}qc(e,!0,l,null,n,a);break;case"together":qc(e,!1,null,null,void 0,a);break;default:e.memoizedState=null}return e.child}function Je(t,e,l){if(t!==null&&(e.dependencies=t.dependencies),pl|=e.lanes,(l&e.childLanes)===0)if(t!==null){if(ma(t,e,l,!1),(l&e.childLanes)===0)return null}else return null;if(t!==null&&e.child!==t.child)throw Error(f(153));if(e.child!==null){for(t=e.child,l=Xe(t,t.pendingProps),e.child=l,l.return=e;t.sibling!==null;)t=t.sibling,l=l.sibling=Xe(t,t.pendingProps),l.return=e;l.sibling=null}return e.child}function Lc(t,e){return(t.lanes&e)!==0?!0:(t=t.dependencies,!!(t!==null&&cn(t)))}function ey(t,e,l){switch(e.tag){case 3:Jt(e,e.stateNode.containerInfo),sl(e,jt,t.memoizedState.cache),Ll();break;case 27:case 5:Ya(e);break;case 4:Jt(e,e.stateNode.containerInfo);break;case 10:sl(e,e.type,e.memoizedProps.value);break;case 31:if(e.memoizedState!==null)return e.flags|=128,rc(e),null;break;case 13:var a=e.memoizedState;if(a!==null)return a.dehydrated!==null?(ml(e),e.flags|=128,null):(l&e.child.childLanes)!==0?po(t,e,l):(ml(e),t=Je(t,e,l),t!==null?t.sibling:null);ml(e);break;case 19:var u=(t.flags&128)!==0;if(a=(l&e.childLanes)!==0,a||(ma(t,e,l,!1),a=(l&e.childLanes)!==0),u){if(a)return bo(t,e,l);e.flags|=128}if(u=e.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),L(Ct,Ct.current),a)break;return null;case 22:return e.lanes=0,oo(t,e,l,e.pendingProps);case 24:sl(e,jt,t.memoizedState.cache)}return Je(t,e,l)}function Eo(t,e,l){if(t!==null)if(t.memoizedProps!==e.pendingProps)Bt=!0;else{if(!Lc(t,l)&&(e.flags&128)===0)return Bt=!1,ey(t,e,l);Bt=(t.flags&131072)!==0}else Bt=!1,ot&&(e.flags&1048576)!==0&&Ir(e,tu,e.index);switch(e.lanes=0,e.tag){case 16:t:{var a=e.pendingProps;if(t=Ql(e.elementType),e.type=t,typeof t=="function")Zi(t)?(a=wl(t,a),e.tag=1,e=vo(null,e,t,a,l)):(e.tag=0,e=Uc(null,e,t,a,l));else{if(t!=null){var u=t.$$typeof;if(u===$){e.tag=11,e=fo(null,e,t,a,l);break t}else if(u===Y){e.tag=14,e=ro(null,e,t,a,l);break t}}throw e=qe(t)||t,Error(f(306,e,""))}}return e;case 0:return Uc(t,e,e.type,e.pendingProps,l);case 1:return a=e.type,u=wl(a,e.pendingProps),vo(t,e,a,u,l);case 3:t:{if(Jt(e,e.stateNode.containerInfo),t===null)throw Error(f(387));a=e.pendingProps;var n=e.memoizedState;u=n.element,uc(t,e),fu(e,a,null,l);var i=e.memoizedState;if(a=i.cache,sl(e,jt,a),a!==n.cache&&Ii(e,[jt],l,!0),cu(),a=i.element,n.isDehydrated)if(n={element:a,isDehydrated:!1,cache:i.cache},e.updateQueue.baseState=n,e.memoizedState=n,e.flags&256){e=go(t,e,a,l);break t}else if(a!==u){u=pe(Error(f(424)),e),eu(u),e=go(t,e,a,l);break t}else for(t=e.stateNode.containerInfo,t.nodeType===9?t=t.body:t=t.nodeName==="HTML"?t.ownerDocument.body:t,_t=ze(t.firstChild),Qt=e,ot=!0,fl=null,Ee=!0,l=os(e,null,a,l),e.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling;else{if(Ll(),a===u){e=Je(t,e,l);break t}Vt(t,e,a,l)}e=e.child}return e;case 26:return Rn(t,e),t===null?(l=Cd(e.type,null,e.pendingProps,null))?e.memoizedState=l:ot||(l=e.type,t=e.pendingProps,a=Zn(nt.current).createElement(l),a[Xt]=e,a[Ft]=t,Kt(a,l,t),Yt(a),e.stateNode=a):e.memoizedState=Cd(e.type,t.memoizedProps,e.pendingProps,t.memoizedState),null;case 27:return Ya(e),t===null&&ot&&(a=e.stateNode=Dd(e.type,e.pendingProps,nt.current),Qt=e,Ee=!0,u=_t,zl(e.type)?(pf=u,_t=ze(a.firstChild)):_t=u),Vt(t,e,e.pendingProps.children,l),Rn(t,e),t===null&&(e.flags|=4194304),e.child;case 5:return t===null&&ot&&((u=a=_t)&&(a=Uy(a,e.type,e.pendingProps,Ee),a!==null?(e.stateNode=a,Qt=e,_t=ze(a.firstChild),Ee=!1,u=!0):u=!1),u||rl(e)),Ya(e),u=e.type,n=e.pendingProps,i=t!==null?t.memoizedProps:null,a=n.children,hf(u,n)?a=null:i!==null&&hf(u,i)&&(e.flags|=32),e.memoizedState!==null&&(u=oc(t,e,wm,null,null,l),Mu._currentValue=u),Rn(t,e),Vt(t,e,a,l),e.child;case 6:return t===null&&ot&&((t=l=_t)&&(l=Cy(l,e.pendingProps,Ee),l!==null?(e.stateNode=l,Qt=e,_t=null,t=!0):t=!1),t||rl(e)),null;case 13:return po(t,e,l);case 4:return Jt(e,e.stateNode.containerInfo),a=e.pendingProps,t===null?e.child=Vl(e,null,a,l):Vt(t,e,a,l),e.child;case 11:return fo(t,e,e.type,e.pendingProps,l);case 7:return Vt(t,e,e.pendingProps,l),e.child;case 8:return Vt(t,e,e.pendingProps.children,l),e.child;case 12:return Vt(t,e,e.pendingProps.children,l),e.child;case 10:return a=e.pendingProps,sl(e,e.type,a.value),Vt(t,e,a.children,l),e.child;case 9:return u=e.type._context,a=e.pendingProps.children,Gl(e),u=Zt(u),a=a(u),e.flags|=1,Vt(t,e,a,l),e.child;case 14:return ro(t,e,e.type,e.pendingProps,l);case 15:return so(t,e,e.type,e.pendingProps,l);case 19:return bo(t,e,l);case 31:return ty(t,e,l);case 22:return oo(t,e,l,e.pendingProps);case 24:return Gl(e),a=Zt(jt),t===null?(u=ec(),u===null&&(u=At,n=Pi(),u.pooledCache=n,n.refCount++,n!==null&&(u.pooledCacheLanes|=l),u=n),e.memoizedState={parent:a,cache:u},ac(e),sl(e,jt,u)):((t.lanes&l)!==0&&(uc(t,e),fu(e,null,null,l),cu()),u=t.memoizedState,n=e.memoizedState,u.parent!==a?(u={parent:a,cache:a},e.memoizedState=u,e.lanes===0&&(e.memoizedState=e.updateQueue.baseState=u),sl(e,jt,a)):(a=n.cache,sl(e,jt,a),a!==u.cache&&Ii(e,[jt],l,!0))),Vt(t,e,e.pendingProps.children,l),e.child;case 29:throw e.pendingProps}throw Error(f(156,e.tag))}function $e(t){t.flags|=4}function Yc(t,e,l,a,u){if((e=(t.mode&32)!==0)&&(e=!1),e){if(t.flags|=16777216,(u&335544128)===u)if(t.stateNode.complete)t.flags|=8192;else if($o())t.flags|=8192;else throw Zl=on,lc}else t.flags&=-16777217}function To(t,e){if(e.type!=="stylesheet"||(e.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!qd(e))if($o())t.flags|=8192;else throw Zl=on,lc}function Mn(t,e){e!==null&&(t.flags|=4),t.flags&16384&&(e=t.tag!==22?tr():536870912,t.lanes|=e,Ra|=e)}function mu(t,e){if(!ot)switch(t.tailMode){case"hidden":e=t.tail;for(var l=null;e!==null;)e.alternate!==null&&(l=e),e=e.sibling;l===null?t.tail=null:l.sibling=null;break;case"collapsed":l=t.tail;for(var a=null;l!==null;)l.alternate!==null&&(a=l),l=l.sibling;a===null?e||t.tail===null?t.tail=null:t.tail.sibling=null:a.sibling=null}}function Rt(t){var e=t.alternate!==null&&t.alternate.child===t.child,l=0,a=0;if(e)for(var u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags&65011712,a|=u.flags&65011712,u.return=t,u=u.sibling;else for(u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=t,u=u.sibling;return t.subtreeFlags|=a,t.childLanes=l,e}function ly(t,e,l){var a=e.pendingProps;switch(Ji(e),e.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Rt(e),null;case 1:return Rt(e),null;case 3:return l=e.stateNode,a=null,t!==null&&(a=t.memoizedState.cache),e.memoizedState.cache!==a&&(e.flags|=2048),Ve(jt),Ut(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(t===null||t.child===null)&&(ha(e)?$e(e):t===null||t.memoizedState.isDehydrated&&(e.flags&256)===0||(e.flags|=1024,Wi())),Rt(e),null;case 26:var u=e.type,n=e.memoizedState;return t===null?($e(e),n!==null?(Rt(e),To(e,n)):(Rt(e),Yc(e,u,null,a,l))):n?n!==t.memoizedState?($e(e),Rt(e),To(e,n)):(Rt(e),e.flags&=-16777217):(t=t.memoizedProps,t!==a&&$e(e),Rt(e),Yc(e,u,t,a,l)),null;case 27:if(Lu(e),l=nt.current,u=e.type,t!==null&&e.stateNode!=null)t.memoizedProps!==a&&$e(e);else{if(!a){if(e.stateNode===null)throw Error(f(166));return Rt(e),null}t=K.current,ha(e)?ts(e):(t=Dd(u,a,l),e.stateNode=t,$e(e))}return Rt(e),null;case 5:if(Lu(e),u=e.type,t!==null&&e.stateNode!=null)t.memoizedProps!==a&&$e(e);else{if(!a){if(e.stateNode===null)throw Error(f(166));return Rt(e),null}if(n=K.current,ha(e))ts(e);else{var i=Zn(nt.current);switch(n){case 1:n=i.createElementNS("http://www.w3.org/2000/svg",u);break;case 2:n=i.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;default:switch(u){case"svg":n=i.createElementNS("http://www.w3.org/2000/svg",u);break;case"math":n=i.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;case"script":n=i.createElement("div"),n.innerHTML="<script><\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof a.is=="string"?i.createElement("select",{is:a.is}):i.createElement("select"),a.multiple?n.multiple=!0:a.size&&(n.size=a.size);break;default:n=typeof a.is=="string"?i.createElement(u,{is:a.is}):i.createElement(u)}}n[Xt]=e,n[Ft]=a;t:for(i=e.child;i!==null;){if(i.tag===5||i.tag===6)n.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===e)break t;for(;i.sibling===null;){if(i.return===null||i.return===e)break t;i=i.return}i.sibling.return=i.return,i=i.sibling}e.stateNode=n;t:switch(Kt(n,u,a),u){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break t;case"img":a=!0;break t;default:a=!1}a&&$e(e)}}return Rt(e),Yc(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,l),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==a&&$e(e);else{if(typeof a!="string"&&e.stateNode===null)throw Error(f(166));if(t=nt.current,ha(e)){if(t=e.stateNode,l=e.memoizedProps,a=null,u=Qt,u!==null)switch(u.tag){case 27:case 5:a=u.memoizedProps}t[Xt]=e,t=!!(t.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||pd(t.nodeValue,l)),t||rl(e,!0)}else t=Zn(t).createTextNode(a),t[Xt]=e,e.stateNode=t}return Rt(e),null;case 31:if(l=e.memoizedState,t===null||t.memoizedState!==null){if(a=ha(e),l!==null){if(t===null){if(!a)throw Error(f(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(f(557));t[Xt]=e}else Ll(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;Rt(e),t=!1}else l=Wi(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=l),t=!0;if(!t)return e.flags&256?(se(e),e):(se(e),null);if((e.flags&128)!==0)throw Error(f(558))}return Rt(e),null;case 13:if(a=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(u=ha(e),a!==null&&a.dehydrated!==null){if(t===null){if(!u)throw Error(f(318));if(u=e.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(f(317));u[Xt]=e}else Ll(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;Rt(e),u=!1}else u=Wi(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=u),u=!0;if(!u)return e.flags&256?(se(e),e):(se(e),null)}return se(e),(e.flags&128)!==0?(e.lanes=l,e):(l=a!==null,t=t!==null&&t.memoizedState!==null,l&&(a=e.child,u=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(u=a.alternate.memoizedState.cachePool.pool),n=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==u&&(a.flags|=2048)),l!==t&&l&&(e.child.flags|=8192),Mn(e,e.updateQueue),Rt(e),null);case 4:return Ut(),t===null&&ff(e.stateNode.containerInfo),Rt(e),null;case 10:return Ve(e.type),Rt(e),null;case 19:if(x(Ct),a=e.memoizedState,a===null)return Rt(e),null;if(u=(e.flags&128)!==0,n=a.rendering,n===null)if(u)mu(a,!1);else{if(Nt!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(n=yn(t),n!==null){for(e.flags|=128,mu(a,!1),t=n.updateQueue,e.updateQueue=t,Mn(e,t),e.subtreeFlags=0,t=l,l=e.child;l!==null;)Wr(l,t),l=l.sibling;return L(Ct,Ct.current&1|2),ot&&Qe(e,a.treeForkCount),e.child}t=t.sibling}a.tail!==null&&ue()>xn&&(e.flags|=128,u=!0,mu(a,!1),e.lanes=4194304)}else{if(!u)if(t=yn(n),t!==null){if(e.flags|=128,u=!0,t=t.updateQueue,e.updateQueue=t,Mn(e,t),mu(a,!0),a.tail===null&&a.tailMode==="hidden"&&!n.alternate&&!ot)return Rt(e),null}else 2*ue()-a.renderingStartTime>xn&&l!==536870912&&(e.flags|=128,u=!0,mu(a,!1),e.lanes=4194304);a.isBackwards?(n.sibling=e.child,e.child=n):(t=a.last,t!==null?t.sibling=n:e.child=n,a.last=n)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=ue(),t.sibling=null,l=Ct.current,L(Ct,u?l&1|2:l&1),ot&&Qe(e,a.treeForkCount),t):(Rt(e),null);case 22:case 23:return se(e),fc(),a=e.memoizedState!==null,t!==null?t.memoizedState!==null!==a&&(e.flags|=8192):a&&(e.flags|=8192),a?(l&536870912)!==0&&(e.flags&128)===0&&(Rt(e),e.subtreeFlags&6&&(e.flags|=8192)):Rt(e),l=e.updateQueue,l!==null&&Mn(e,l.retryQueue),l=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),a=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),a!==l&&(e.flags|=2048),t!==null&&x(Xl),null;case 24:return l=null,t!==null&&(l=t.memoizedState.cache),e.memoizedState.cache!==l&&(e.flags|=2048),Ve(jt),Rt(e),null;case 25:return null;case 30:return null}throw Error(f(156,e.tag))}function ay(t,e){switch(Ji(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Ve(jt),Ut(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return Lu(e),null;case 31:if(e.memoizedState!==null){if(se(e),e.alternate===null)throw Error(f(340));Ll()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(se(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(f(340));Ll()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return x(Ct),null;case 4:return Ut(),null;case 10:return Ve(e.type),null;case 22:case 23:return se(e),fc(),t!==null&&x(Xl),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return Ve(jt),null;case 25:return null;default:return null}}function zo(t,e){switch(Ji(e),e.tag){case 3:Ve(jt),Ut();break;case 26:case 27:case 5:Lu(e);break;case 4:Ut();break;case 31:e.memoizedState!==null&&se(e);break;case 13:se(e);break;case 19:x(Ct);break;case 10:Ve(e.type);break;case 22:case 23:se(e),fc(),t!==null&&x(Xl);break;case 24:Ve(jt)}}function yu(t,e){try{var l=e.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var u=a.next;l=u;do{if((l.tag&t)===t){a=void 0;var n=l.create,i=l.inst;a=n(),i.destroy=a}l=l.next}while(l!==u)}}catch(r){pt(e,e.return,r)}}function vl(t,e,l){try{var a=e.updateQueue,u=a!==null?a.lastEffect:null;if(u!==null){var n=u.next;a=n;do{if((a.tag&t)===t){var i=a.inst,r=i.destroy;if(r!==void 0){i.destroy=void 0,u=e;var h=l,T=r;try{T()}catch(M){pt(u,h,M)}}}a=a.next}while(a!==n)}}catch(M){pt(e,e.return,M)}}function Ao(t){var e=t.updateQueue;if(e!==null){var l=t.stateNode;try{hs(e,l)}catch(a){pt(t,t.return,a)}}}function _o(t,e,l){l.props=wl(t.type,t.memoizedProps),l.state=t.memoizedState;try{l.componentWillUnmount()}catch(a){pt(t,e,a)}}function vu(t,e){try{var l=t.ref;if(l!==null){switch(t.tag){case 26:case 27:case 5:var a=t.stateNode;break;case 30:a=t.stateNode;break;default:a=t.stateNode}typeof l=="function"?t.refCleanup=l(a):l.current=a}}catch(u){pt(t,e,u)}}function He(t,e){var l=t.ref,a=t.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(u){pt(t,e,u)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(u){pt(t,e,u)}else l.current=null}function Ro(t){var e=t.type,l=t.memoizedProps,a=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break t;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(u){pt(t,t.return,u)}}function Gc(t,e,l){try{var a=t.stateNode;_y(a,t.type,l,e),a[Ft]=e}catch(u){pt(t,t.return,u)}}function Oo(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&zl(t.type)||t.tag===4}function Xc(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Oo(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&zl(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Qc(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(t,e):(e=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,e.appendChild(t),l=l._reactRootContainer,l!=null||e.onclick!==null||(e.onclick=Ye));else if(a!==4&&(a===27&&zl(t.type)&&(l=t.stateNode,e=null),t=t.child,t!==null))for(Qc(t,e,l),t=t.sibling;t!==null;)Qc(t,e,l),t=t.sibling}function Dn(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?l.insertBefore(t,e):l.appendChild(t);else if(a!==4&&(a===27&&zl(t.type)&&(l=t.stateNode),t=t.child,t!==null))for(Dn(t,e,l),t=t.sibling;t!==null;)Dn(t,e,l),t=t.sibling}function Mo(t){var e=t.stateNode,l=t.memoizedProps;try{for(var a=t.type,u=e.attributes;u.length;)e.removeAttributeNode(u[0]);Kt(e,a,l),e[Xt]=t,e[Ft]=l}catch(n){pt(t,t.return,n)}}var We=!1,qt=!1,Zc=!1,Do=typeof WeakSet=="function"?WeakSet:Set,Gt=null;function uy(t,e){if(t=t.containerInfo,of=kn,t=Gr(t),Bi(t)){if("selectionStart"in t)var l={start:t.selectionStart,end:t.selectionEnd};else t:{l=(l=t.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var u=a.anchorOffset,n=a.focusNode;a=a.focusOffset;try{l.nodeType,n.nodeType}catch{l=null;break t}var i=0,r=-1,h=-1,T=0,M=0,C=t,_=null;e:for(;;){for(var O;C!==l||u!==0&&C.nodeType!==3||(r=i+u),C!==n||a!==0&&C.nodeType!==3||(h=i+a),C.nodeType===3&&(i+=C.nodeValue.length),(O=C.firstChild)!==null;)_=C,C=O;for(;;){if(C===t)break e;if(_===l&&++T===u&&(r=i),_===n&&++M===a&&(h=i),(O=C.nextSibling)!==null)break;C=_,_=C.parentNode}C=O}l=r===-1||h===-1?null:{start:r,end:h}}else l=null}l=l||{start:0,end:0}}else l=null;for(df={focusedElem:t,selectionRange:l},kn=!1,Gt=e;Gt!==null;)if(e=Gt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Gt=t;else for(;Gt!==null;){switch(e=Gt,n=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(l=0;l<t.length;l++)u=t[l],u.ref.impl=u.nextImpl;break;case 11:case 15:break;case 1:if((t&1024)!==0&&n!==null){t=void 0,l=e,u=n.memoizedProps,n=n.memoizedState,a=l.stateNode;try{var Z=wl(l.type,u);t=a.getSnapshotBeforeUpdate(Z,n),a.__reactInternalSnapshotBeforeUpdate=t}catch(I){pt(l,l.return,I)}}break;case 3:if((t&1024)!==0){if(t=e.stateNode.containerInfo,l=t.nodeType,l===9)yf(t);else if(l===1)switch(t.nodeName){case"HEAD":case"HTML":case"BODY":yf(t);break;default:t.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((t&1024)!==0)throw Error(f(163))}if(t=e.sibling,t!==null){t.return=e.return,Gt=t;break}Gt=e.return}}function No(t,e,l){var a=l.flags;switch(l.tag){case 0:case 11:case 15:Fe(t,l),a&4&&yu(5,l);break;case 1:if(Fe(t,l),a&4)if(t=l.stateNode,e===null)try{t.componentDidMount()}catch(i){pt(l,l.return,i)}else{var u=wl(l.type,e.memoizedProps);e=e.memoizedState;try{t.componentDidUpdate(u,e,t.__reactInternalSnapshotBeforeUpdate)}catch(i){pt(l,l.return,i)}}a&64&&Ao(l),a&512&&vu(l,l.return);break;case 3:if(Fe(t,l),a&64&&(t=l.updateQueue,t!==null)){if(e=null,l.child!==null)switch(l.child.tag){case 27:case 5:e=l.child.stateNode;break;case 1:e=l.child.stateNode}try{hs(t,e)}catch(i){pt(l,l.return,i)}}break;case 27:e===null&&a&4&&Mo(l);case 26:case 5:Fe(t,l),e===null&&a&4&&Ro(l),a&512&&vu(l,l.return);break;case 12:Fe(t,l);break;case 31:Fe(t,l),a&4&&xo(t,l);break;case 13:Fe(t,l),a&4&&jo(t,l),a&64&&(t=l.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&(l=hy.bind(null,l),xy(t,l))));break;case 22:if(a=l.memoizedState!==null||We,!a){e=e!==null&&e.memoizedState!==null||qt,u=We;var n=qt;We=a,(qt=e)&&!n?Ie(t,l,(l.subtreeFlags&8772)!==0):Fe(t,l),We=u,qt=n}break;case 30:break;default:Fe(t,l)}}function Uo(t){var e=t.alternate;e!==null&&(t.alternate=null,Uo(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&Si(e)),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}var Ot=null,Pt=!1;function ke(t,e,l){for(l=l.child;l!==null;)Co(t,e,l),l=l.sibling}function Co(t,e,l){if(ne&&typeof ne.onCommitFiberUnmount=="function")try{ne.onCommitFiberUnmount(Ga,l)}catch{}switch(l.tag){case 26:qt||He(l,e),ke(t,e,l),l.memoizedState?l.memoizedState.count--:l.stateNode&&(l=l.stateNode,l.parentNode.removeChild(l));break;case 27:qt||He(l,e);var a=Ot,u=Pt;zl(l.type)&&(Ot=l.stateNode,Pt=!1),ke(t,e,l),_u(l.stateNode),Ot=a,Pt=u;break;case 5:qt||He(l,e);case 6:if(a=Ot,u=Pt,Ot=null,ke(t,e,l),Ot=a,Pt=u,Ot!==null)if(Pt)try{(Ot.nodeType===9?Ot.body:Ot.nodeName==="HTML"?Ot.ownerDocument.body:Ot).removeChild(l.stateNode)}catch(n){pt(l,e,n)}else try{Ot.removeChild(l.stateNode)}catch(n){pt(l,e,n)}break;case 18:Ot!==null&&(Pt?(t=Ot,Ad(t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t,l.stateNode),ja(t)):Ad(Ot,l.stateNode));break;case 4:a=Ot,u=Pt,Ot=l.stateNode.containerInfo,Pt=!0,ke(t,e,l),Ot=a,Pt=u;break;case 0:case 11:case 14:case 15:vl(2,l,e),qt||vl(4,l,e),ke(t,e,l);break;case 1:qt||(He(l,e),a=l.stateNode,typeof a.componentWillUnmount=="function"&&_o(l,e,a)),ke(t,e,l);break;case 21:ke(t,e,l);break;case 22:qt=(a=qt)||l.memoizedState!==null,ke(t,e,l),qt=a;break;default:ke(t,e,l)}}function xo(t,e){if(e.memoizedState===null&&(t=e.alternate,t!==null&&(t=t.memoizedState,t!==null))){t=t.dehydrated;try{ja(t)}catch(l){pt(e,e.return,l)}}}function jo(t,e){if(e.memoizedState===null&&(t=e.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null))))try{ja(t)}catch(l){pt(e,e.return,l)}}function ny(t){switch(t.tag){case 31:case 13:case 19:var e=t.stateNode;return e===null&&(e=t.stateNode=new Do),e;case 22:return t=t.stateNode,e=t._retryCache,e===null&&(e=t._retryCache=new Do),e;default:throw Error(f(435,t.tag))}}function Nn(t,e){var l=ny(t);e.forEach(function(a){if(!l.has(a)){l.add(a);var u=my.bind(null,t,a);a.then(u,u)}})}function te(t,e){var l=e.deletions;if(l!==null)for(var a=0;a<l.length;a++){var u=l[a],n=t,i=e,r=i;t:for(;r!==null;){switch(r.tag){case 27:if(zl(r.type)){Ot=r.stateNode,Pt=!1;break t}break;case 5:Ot=r.stateNode,Pt=!1;break t;case 3:case 4:Ot=r.stateNode.containerInfo,Pt=!0;break t}r=r.return}if(Ot===null)throw Error(f(160));Co(n,i,u),Ot=null,Pt=!1,n=u.alternate,n!==null&&(n.return=null),u.return=null}if(e.subtreeFlags&13886)for(e=e.child;e!==null;)Ho(e,t),e=e.sibling}var Me=null;function Ho(t,e){var l=t.alternate,a=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:te(e,t),ee(t),a&4&&(vl(3,t,t.return),yu(3,t),vl(5,t,t.return));break;case 1:te(e,t),ee(t),a&512&&(qt||l===null||He(l,l.return)),a&64&&We&&(t=t.updateQueue,t!==null&&(a=t.callbacks,a!==null&&(l=t.shared.hiddenCallbacks,t.shared.hiddenCallbacks=l===null?a:l.concat(a))));break;case 26:var u=Me;if(te(e,t),ee(t),a&512&&(qt||l===null||He(l,l.return)),a&4){var n=l!==null?l.memoizedState:null;if(a=t.memoizedState,l===null)if(a===null)if(t.stateNode===null){t:{a=t.type,l=t.memoizedProps,u=u.ownerDocument||u;e:switch(a){case"title":n=u.getElementsByTagName("title")[0],(!n||n[Za]||n[Xt]||n.namespaceURI==="http://www.w3.org/2000/svg"||n.hasAttribute("itemprop"))&&(n=u.createElement(a),u.head.insertBefore(n,u.querySelector("head > title"))),Kt(n,a,l),n[Xt]=t,Yt(n),a=n;break t;case"link":var i=Hd("link","href",u).get(a+(l.href||""));if(i){for(var r=0;r<i.length;r++)if(n=i[r],n.getAttribute("href")===(l.href==null||l.href===""?null:l.href)&&n.getAttribute("rel")===(l.rel==null?null:l.rel)&&n.getAttribute("title")===(l.title==null?null:l.title)&&n.getAttribute("crossorigin")===(l.crossOrigin==null?null:l.crossOrigin)){i.splice(r,1);break e}}n=u.createElement(a),Kt(n,a,l),u.head.appendChild(n);break;case"meta":if(i=Hd("meta","content",u).get(a+(l.content||""))){for(r=0;r<i.length;r++)if(n=i[r],n.getAttribute("content")===(l.content==null?null:""+l.content)&&n.getAttribute("name")===(l.name==null?null:l.name)&&n.getAttribute("property")===(l.property==null?null:l.property)&&n.getAttribute("http-equiv")===(l.httpEquiv==null?null:l.httpEquiv)&&n.getAttribute("charset")===(l.charSet==null?null:l.charSet)){i.splice(r,1);break e}}n=u.createElement(a),Kt(n,a,l),u.head.appendChild(n);break;default:throw Error(f(468,a))}n[Xt]=t,Yt(n),a=n}t.stateNode=a}else Bd(u,t.type,t.stateNode);else t.stateNode=jd(u,a,t.memoizedProps);else n!==a?(n===null?l.stateNode!==null&&(l=l.stateNode,l.parentNode.removeChild(l)):n.count--,a===null?Bd(u,t.type,t.stateNode):jd(u,a,t.memoizedProps)):a===null&&t.stateNode!==null&&Gc(t,t.memoizedProps,l.memoizedProps)}break;case 27:te(e,t),ee(t),a&512&&(qt||l===null||He(l,l.return)),l!==null&&a&4&&Gc(t,t.memoizedProps,l.memoizedProps);break;case 5:if(te(e,t),ee(t),a&512&&(qt||l===null||He(l,l.return)),t.flags&32){u=t.stateNode;try{aa(u,"")}catch(Z){pt(t,t.return,Z)}}a&4&&t.stateNode!=null&&(u=t.memoizedProps,Gc(t,u,l!==null?l.memoizedProps:u)),a&1024&&(Zc=!0);break;case 6:if(te(e,t),ee(t),a&4){if(t.stateNode===null)throw Error(f(162));a=t.memoizedProps,l=t.stateNode;try{l.nodeValue=a}catch(Z){pt(t,t.return,Z)}}break;case 3:if(wn=null,u=Me,Me=Vn(e.containerInfo),te(e,t),Me=u,ee(t),a&4&&l!==null&&l.memoizedState.isDehydrated)try{ja(e.containerInfo)}catch(Z){pt(t,t.return,Z)}Zc&&(Zc=!1,Bo(t));break;case 4:a=Me,Me=Vn(t.stateNode.containerInfo),te(e,t),ee(t),Me=a;break;case 12:te(e,t),ee(t);break;case 31:te(e,t),ee(t),a&4&&(a=t.updateQueue,a!==null&&(t.updateQueue=null,Nn(t,a)));break;case 13:te(e,t),ee(t),t.child.flags&8192&&t.memoizedState!==null!=(l!==null&&l.memoizedState!==null)&&(Cn=ue()),a&4&&(a=t.updateQueue,a!==null&&(t.updateQueue=null,Nn(t,a)));break;case 22:u=t.memoizedState!==null;var h=l!==null&&l.memoizedState!==null,T=We,M=qt;if(We=T||u,qt=M||h,te(e,t),qt=M,We=T,ee(t),a&8192)t:for(e=t.stateNode,e._visibility=u?e._visibility&-2:e._visibility|1,u&&(l===null||h||We||qt||Jl(t)),l=null,e=t;;){if(e.tag===5||e.tag===26){if(l===null){h=l=e;try{if(n=h.stateNode,u)i=n.style,typeof i.setProperty=="function"?i.setProperty("display","none","important"):i.display="none";else{r=h.stateNode;var C=h.memoizedProps.style,_=C!=null&&C.hasOwnProperty("display")?C.display:null;r.style.display=_==null||typeof _=="boolean"?"":(""+_).trim()}}catch(Z){pt(h,h.return,Z)}}}else if(e.tag===6){if(l===null){h=e;try{h.stateNode.nodeValue=u?"":h.memoizedProps}catch(Z){pt(h,h.return,Z)}}}else if(e.tag===18){if(l===null){h=e;try{var O=h.stateNode;u?_d(O,!0):_d(h.stateNode,!1)}catch(Z){pt(h,h.return,Z)}}}else if((e.tag!==22&&e.tag!==23||e.memoizedState===null||e===t)&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break t;for(;e.sibling===null;){if(e.return===null||e.return===t)break t;l===e&&(l=null),e=e.return}l===e&&(l=null),e.sibling.return=e.return,e=e.sibling}a&4&&(a=t.updateQueue,a!==null&&(l=a.retryQueue,l!==null&&(a.retryQueue=null,Nn(t,l))));break;case 19:te(e,t),ee(t),a&4&&(a=t.updateQueue,a!==null&&(t.updateQueue=null,Nn(t,a)));break;case 30:break;case 21:break;default:te(e,t),ee(t)}}function ee(t){var e=t.flags;if(e&2){try{for(var l,a=t.return;a!==null;){if(Oo(a)){l=a;break}a=a.return}if(l==null)throw Error(f(160));switch(l.tag){case 27:var u=l.stateNode,n=Xc(t);Dn(t,n,u);break;case 5:var i=l.stateNode;l.flags&32&&(aa(i,""),l.flags&=-33);var r=Xc(t);Dn(t,r,i);break;case 3:case 4:var h=l.stateNode.containerInfo,T=Xc(t);Qc(t,T,h);break;default:throw Error(f(161))}}catch(M){pt(t,t.return,M)}t.flags&=-3}e&4096&&(t.flags&=-4097)}function Bo(t){if(t.subtreeFlags&1024)for(t=t.child;t!==null;){var e=t;Bo(e),e.tag===5&&e.flags&1024&&e.stateNode.reset(),t=t.sibling}}function Fe(t,e){if(e.subtreeFlags&8772)for(e=e.child;e!==null;)No(t,e.alternate,e),e=e.sibling}function Jl(t){for(t=t.child;t!==null;){var e=t;switch(e.tag){case 0:case 11:case 14:case 15:vl(4,e,e.return),Jl(e);break;case 1:He(e,e.return);var l=e.stateNode;typeof l.componentWillUnmount=="function"&&_o(e,e.return,l),Jl(e);break;case 27:_u(e.stateNode);case 26:case 5:He(e,e.return),Jl(e);break;case 22:e.memoizedState===null&&Jl(e);break;case 30:Jl(e);break;default:Jl(e)}t=t.sibling}}function Ie(t,e,l){for(l=l&&(e.subtreeFlags&8772)!==0,e=e.child;e!==null;){var a=e.alternate,u=t,n=e,i=n.flags;switch(n.tag){case 0:case 11:case 15:Ie(u,n,l),yu(4,n);break;case 1:if(Ie(u,n,l),a=n,u=a.stateNode,typeof u.componentDidMount=="function")try{u.componentDidMount()}catch(T){pt(a,a.return,T)}if(a=n,u=a.updateQueue,u!==null){var r=a.stateNode;try{var h=u.shared.hiddenCallbacks;if(h!==null)for(u.shared.hiddenCallbacks=null,u=0;u<h.length;u++)ds(h[u],r)}catch(T){pt(a,a.return,T)}}l&&i&64&&Ao(n),vu(n,n.return);break;case 27:Mo(n);case 26:case 5:Ie(u,n,l),l&&a===null&&i&4&&Ro(n),vu(n,n.return);break;case 12:Ie(u,n,l);break;case 31:Ie(u,n,l),l&&i&4&&xo(u,n);break;case 13:Ie(u,n,l),l&&i&4&&jo(u,n);break;case 22:n.memoizedState===null&&Ie(u,n,l),vu(n,n.return);break;case 30:break;default:Ie(u,n,l)}e=e.sibling}}function Vc(t,e){var l=null;t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),t=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(t=e.memoizedState.cachePool.pool),t!==l&&(t!=null&&t.refCount++,l!=null&&lu(l))}function Kc(t,e){t=null,e.alternate!==null&&(t=e.alternate.memoizedState.cache),e=e.memoizedState.cache,e!==t&&(e.refCount++,t!=null&&lu(t))}function De(t,e,l,a){if(e.subtreeFlags&10256)for(e=e.child;e!==null;)qo(t,e,l,a),e=e.sibling}function qo(t,e,l,a){var u=e.flags;switch(e.tag){case 0:case 11:case 15:De(t,e,l,a),u&2048&&yu(9,e);break;case 1:De(t,e,l,a);break;case 3:De(t,e,l,a),u&2048&&(t=null,e.alternate!==null&&(t=e.alternate.memoizedState.cache),e=e.memoizedState.cache,e!==t&&(e.refCount++,t!=null&&lu(t)));break;case 12:if(u&2048){De(t,e,l,a),t=e.stateNode;try{var n=e.memoizedProps,i=n.id,r=n.onPostCommit;typeof r=="function"&&r(i,e.alternate===null?"mount":"update",t.passiveEffectDuration,-0)}catch(h){pt(e,e.return,h)}}else De(t,e,l,a);break;case 31:De(t,e,l,a);break;case 13:De(t,e,l,a);break;case 23:break;case 22:n=e.stateNode,i=e.alternate,e.memoizedState!==null?n._visibility&2?De(t,e,l,a):gu(t,e):n._visibility&2?De(t,e,l,a):(n._visibility|=2,za(t,e,l,a,(e.subtreeFlags&10256)!==0||!1)),u&2048&&Vc(i,e);break;case 24:De(t,e,l,a),u&2048&&Kc(e.alternate,e);break;default:De(t,e,l,a)}}function za(t,e,l,a,u){for(u=u&&((e.subtreeFlags&10256)!==0||!1),e=e.child;e!==null;){var n=t,i=e,r=l,h=a,T=i.flags;switch(i.tag){case 0:case 11:case 15:za(n,i,r,h,u),yu(8,i);break;case 23:break;case 22:var M=i.stateNode;i.memoizedState!==null?M._visibility&2?za(n,i,r,h,u):gu(n,i):(M._visibility|=2,za(n,i,r,h,u)),u&&T&2048&&Vc(i.alternate,i);break;case 24:za(n,i,r,h,u),u&&T&2048&&Kc(i.alternate,i);break;default:za(n,i,r,h,u)}e=e.sibling}}function gu(t,e){if(e.subtreeFlags&10256)for(e=e.child;e!==null;){var l=t,a=e,u=a.flags;switch(a.tag){case 22:gu(l,a),u&2048&&Vc(a.alternate,a);break;case 24:gu(l,a),u&2048&&Kc(a.alternate,a);break;default:gu(l,a)}e=e.sibling}}var pu=8192;function Aa(t,e,l){if(t.subtreeFlags&pu)for(t=t.child;t!==null;)Lo(t,e,l),t=t.sibling}function Lo(t,e,l){switch(t.tag){case 26:Aa(t,e,l),t.flags&pu&&t.memoizedState!==null&&Ky(l,Me,t.memoizedState,t.memoizedProps);break;case 5:Aa(t,e,l);break;case 3:case 4:var a=Me;Me=Vn(t.stateNode.containerInfo),Aa(t,e,l),Me=a;break;case 22:t.memoizedState===null&&(a=t.alternate,a!==null&&a.memoizedState!==null?(a=pu,pu=16777216,Aa(t,e,l),pu=a):Aa(t,e,l));break;default:Aa(t,e,l)}}function Yo(t){var e=t.alternate;if(e!==null&&(t=e.child,t!==null)){e.child=null;do e=t.sibling,t.sibling=null,t=e;while(t!==null)}}function Su(t){var e=t.deletions;if((t.flags&16)!==0){if(e!==null)for(var l=0;l<e.length;l++){var a=e[l];Gt=a,Xo(a,t)}Yo(t)}if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Go(t),t=t.sibling}function Go(t){switch(t.tag){case 0:case 11:case 15:Su(t),t.flags&2048&&vl(9,t,t.return);break;case 3:Su(t);break;case 12:Su(t);break;case 22:var e=t.stateNode;t.memoizedState!==null&&e._visibility&2&&(t.return===null||t.return.tag!==13)?(e._visibility&=-3,Un(t)):Su(t);break;default:Su(t)}}function Un(t){var e=t.deletions;if((t.flags&16)!==0){if(e!==null)for(var l=0;l<e.length;l++){var a=e[l];Gt=a,Xo(a,t)}Yo(t)}for(t=t.child;t!==null;){switch(e=t,e.tag){case 0:case 11:case 15:vl(8,e,e.return),Un(e);break;case 22:l=e.stateNode,l._visibility&2&&(l._visibility&=-3,Un(e));break;default:Un(e)}t=t.sibling}}function Xo(t,e){for(;Gt!==null;){var l=Gt;switch(l.tag){case 0:case 11:case 15:vl(8,l,e);break;case 23:case 22:if(l.memoizedState!==null&&l.memoizedState.cachePool!==null){var a=l.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:lu(l.memoizedState.cache)}if(a=l.child,a!==null)a.return=l,Gt=a;else t:for(l=t;Gt!==null;){a=Gt;var u=a.sibling,n=a.return;if(Uo(a),a===l){Gt=null;break t}if(u!==null){u.return=n,Gt=u;break t}Gt=n}}}var iy={getCacheForType:function(t){var e=Zt(jt),l=e.data.get(t);return l===void 0&&(l=t(),e.data.set(t,l)),l},cacheSignal:function(){return Zt(jt).controller.signal}},cy=typeof WeakMap=="function"?WeakMap:Map,mt=0,At=null,it=null,ft=0,gt=0,oe=null,gl=!1,_a=!1,wc=!1,Pe=0,Nt=0,pl=0,$l=0,Jc=0,de=0,Ra=0,bu=null,le=null,$c=!1,Cn=0,Qo=0,xn=1/0,jn=null,Sl=null,Lt=0,bl=null,Oa=null,tl=0,Wc=0,kc=null,Zo=null,Eu=0,Fc=null;function he(){return(mt&2)!==0&&ft!==0?ft&-ft:D.T!==null?af():ur()}function Vo(){if(de===0)if((ft&536870912)===0||ot){var t=Xu;Xu<<=1,(Xu&3932160)===0&&(Xu=262144),de=t}else de=536870912;return t=re.current,t!==null&&(t.flags|=32),de}function ae(t,e,l){(t===At&&(gt===2||gt===9)||t.cancelPendingCommit!==null)&&(Ma(t,0),El(t,ft,de,!1)),Qa(t,l),((mt&2)===0||t!==At)&&(t===At&&((mt&2)===0&&($l|=l),Nt===4&&El(t,ft,de,!1)),Be(t))}function Ko(t,e,l){if((mt&6)!==0)throw Error(f(327));var a=!l&&(e&127)===0&&(e&t.expiredLanes)===0||Xa(t,e),u=a?sy(t,e):Pc(t,e,!0),n=a;do{if(u===0){_a&&!a&&El(t,e,0,!1);break}else{if(l=t.current.alternate,n&&!fy(l)){u=Pc(t,e,!1),n=!1;continue}if(u===2){if(n=e,t.errorRecoveryDisabledLanes&n)var i=0;else i=t.pendingLanes&-536870913,i=i!==0?i:i&536870912?536870912:0;if(i!==0){e=i;t:{var r=t;u=bu;var h=r.current.memoizedState.isDehydrated;if(h&&(Ma(r,i).flags|=256),i=Pc(r,i,!1),i!==2){if(wc&&!h){r.errorRecoveryDisabledLanes|=n,$l|=n,u=4;break t}n=le,le=u,n!==null&&(le===null?le=n:le.push.apply(le,n))}u=i}if(n=!1,u!==2)continue}}if(u===1){Ma(t,0),El(t,e,0,!0);break}t:{switch(a=t,n=u,n){case 0:case 1:throw Error(f(345));case 4:if((e&4194048)!==e)break;case 6:El(a,e,de,!gl);break t;case 2:le=null;break;case 3:case 5:break;default:throw Error(f(329))}if((e&62914560)===e&&(u=Cn+300-ue(),10<u)){if(El(a,e,de,!gl),Zu(a,0,!0)!==0)break t;tl=e,a.timeoutHandle=Td(wo.bind(null,a,l,le,jn,$c,e,de,$l,Ra,gl,n,"Throttled",-0,0),u);break t}wo(a,l,le,jn,$c,e,de,$l,Ra,gl,n,null,-0,0)}}break}while(!0);Be(t)}function wo(t,e,l,a,u,n,i,r,h,T,M,C,_,O){if(t.timeoutHandle=-1,C=e.subtreeFlags,C&8192||(C&16785408)===16785408){C={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Ye},Lo(e,n,C);var Z=(n&62914560)===n?Cn-ue():(n&4194048)===n?Qo-ue():0;if(Z=wy(C,Z),Z!==null){tl=n,t.cancelPendingCommit=Z(td.bind(null,t,e,n,l,a,u,i,r,h,M,C,null,_,O)),El(t,n,i,!T);return}}td(t,e,n,l,a,u,i,r,h)}function fy(t){for(var e=t;;){var l=e.tag;if((l===0||l===11||l===15)&&e.flags&16384&&(l=e.updateQueue,l!==null&&(l=l.stores,l!==null)))for(var a=0;a<l.length;a++){var u=l[a],n=u.getSnapshot;u=u.value;try{if(!ce(n(),u))return!1}catch{return!1}}if(l=e.child,e.subtreeFlags&16384&&l!==null)l.return=e,e=l;else{if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return!0;e=e.return}e.sibling.return=e.return,e=e.sibling}}return!0}function El(t,e,l,a){e&=~Jc,e&=~$l,t.suspendedLanes|=e,t.pingedLanes&=~e,a&&(t.warmLanes|=e),a=t.expirationTimes;for(var u=e;0<u;){var n=31-ie(u),i=1<<n;a[n]=-1,u&=~i}l!==0&&er(t,l,e)}function Hn(){return(mt&6)===0?(Tu(0),!1):!0}function Ic(){if(it!==null){if(gt===0)var t=it.return;else t=it,Ze=Yl=null,mc(t),pa=null,uu=0,t=it;for(;t!==null;)zo(t.alternate,t),t=t.return;it=null}}function Ma(t,e){var l=t.timeoutHandle;l!==-1&&(t.timeoutHandle=-1,My(l)),l=t.cancelPendingCommit,l!==null&&(t.cancelPendingCommit=null,l()),tl=0,Ic(),At=t,it=l=Xe(t.current,null),ft=e,gt=0,oe=null,gl=!1,_a=Xa(t,e),wc=!1,Ra=de=Jc=$l=pl=Nt=0,le=bu=null,$c=!1,(e&8)!==0&&(e|=e&32);var a=t.entangledLanes;if(a!==0)for(t=t.entanglements,a&=e;0<a;){var u=31-ie(a),n=1<<u;e|=t[u],a&=~n}return Pe=e,en(),l}function Jo(t,e){at=null,D.H=du,e===ga||e===sn?(e=fs(),gt=3):e===lc?(e=fs(),gt=4):gt=e===Nc?8:e!==null&&typeof e=="object"&&typeof e.then=="function"?6:1,oe=e,it===null&&(Nt=1,An(t,pe(e,t.current)))}function $o(){var t=re.current;return t===null?!0:(ft&4194048)===ft?Te===null:(ft&62914560)===ft||(ft&536870912)!==0?t===Te:!1}function Wo(){var t=D.H;return D.H=du,t===null?du:t}function ko(){var t=D.A;return D.A=iy,t}function Bn(){Nt=4,gl||(ft&4194048)!==ft&&re.current!==null||(_a=!0),(pl&134217727)===0&&($l&134217727)===0||At===null||El(At,ft,de,!1)}function Pc(t,e,l){var a=mt;mt|=2;var u=Wo(),n=ko();(At!==t||ft!==e)&&(jn=null,Ma(t,e)),e=!1;var i=Nt;t:do try{if(gt!==0&&it!==null){var r=it,h=oe;switch(gt){case 8:Ic(),i=6;break t;case 3:case 2:case 9:case 6:re.current===null&&(e=!0);var T=gt;if(gt=0,oe=null,Da(t,r,h,T),l&&_a){i=0;break t}break;default:T=gt,gt=0,oe=null,Da(t,r,h,T)}}ry(),i=Nt;break}catch(M){Jo(t,M)}while(!0);return e&&t.shellSuspendCounter++,Ze=Yl=null,mt=a,D.H=u,D.A=n,it===null&&(At=null,ft=0,en()),i}function ry(){for(;it!==null;)Fo(it)}function sy(t,e){var l=mt;mt|=2;var a=Wo(),u=ko();At!==t||ft!==e?(jn=null,xn=ue()+500,Ma(t,e)):_a=Xa(t,e);t:do try{if(gt!==0&&it!==null){e=it;var n=oe;e:switch(gt){case 1:gt=0,oe=null,Da(t,e,n,1);break;case 2:case 9:if(is(n)){gt=0,oe=null,Io(e);break}e=function(){gt!==2&>!==9||At!==t||(gt=7),Be(t)},n.then(e,e);break t;case 3:gt=7;break t;case 4:gt=5;break t;case 7:is(n)?(gt=0,oe=null,Io(e)):(gt=0,oe=null,Da(t,e,n,7));break;case 5:var i=null;switch(it.tag){case 26:i=it.memoizedState;case 5:case 27:var r=it;if(i?qd(i):r.stateNode.complete){gt=0,oe=null;var h=r.sibling;if(h!==null)it=h;else{var T=r.return;T!==null?(it=T,qn(T)):it=null}break e}}gt=0,oe=null,Da(t,e,n,5);break;case 6:gt=0,oe=null,Da(t,e,n,6);break;case 8:Ic(),Nt=6;break t;default:throw Error(f(462))}}oy();break}catch(M){Jo(t,M)}while(!0);return Ze=Yl=null,D.H=a,D.A=u,mt=l,it!==null?0:(At=null,ft=0,en(),Nt)}function oy(){for(;it!==null&&!jh();)Fo(it)}function Fo(t){var e=Eo(t.alternate,t,Pe);t.memoizedProps=t.pendingProps,e===null?qn(t):it=e}function Io(t){var e=t,l=e.alternate;switch(e.tag){case 15:case 0:e=yo(l,e,e.pendingProps,e.type,void 0,ft);break;case 11:e=yo(l,e,e.pendingProps,e.type.render,e.ref,ft);break;case 5:mc(e);default:zo(l,e),e=it=Wr(e,Pe),e=Eo(l,e,Pe)}t.memoizedProps=t.pendingProps,e===null?qn(t):it=e}function Da(t,e,l,a){Ze=Yl=null,mc(e),pa=null,uu=0;var u=e.return;try{if(Pm(t,u,e,l,ft)){Nt=1,An(t,pe(l,t.current)),it=null;return}}catch(n){if(u!==null)throw it=u,n;Nt=1,An(t,pe(l,t.current)),it=null;return}e.flags&32768?(ot||a===1?t=!0:_a||(ft&536870912)!==0?t=!1:(gl=t=!0,(a===2||a===9||a===3||a===6)&&(a=re.current,a!==null&&a.tag===13&&(a.flags|=16384))),Po(e,t)):qn(e)}function qn(t){var e=t;do{if((e.flags&32768)!==0){Po(e,gl);return}t=e.return;var l=ly(e.alternate,e,Pe);if(l!==null){it=l;return}if(e=e.sibling,e!==null){it=e;return}it=e=t}while(e!==null);Nt===0&&(Nt=5)}function Po(t,e){do{var l=ay(t.alternate,t);if(l!==null){l.flags&=32767,it=l;return}if(l=t.return,l!==null&&(l.flags|=32768,l.subtreeFlags=0,l.deletions=null),!e&&(t=t.sibling,t!==null)){it=t;return}it=t=l}while(t!==null);Nt=6,it=null}function td(t,e,l,a,u,n,i,r,h){t.cancelPendingCommit=null;do Ln();while(Lt!==0);if((mt&6)!==0)throw Error(f(327));if(e!==null){if(e===t.current)throw Error(f(177));if(n=e.lanes|e.childLanes,n|=Xi,Vh(t,l,n,i,r,h),t===At&&(it=At=null,ft=0),Oa=e,bl=t,tl=l,Wc=n,kc=u,Zo=a,(e.subtreeFlags&10256)!==0||(e.flags&10256)!==0?(t.callbackNode=null,t.callbackPriority=0,yy(Yu,function(){return nd(),null})):(t.callbackNode=null,t.callbackPriority=0),a=(e.flags&13878)!==0,(e.subtreeFlags&13878)!==0||a){a=D.T,D.T=null,u=q.p,q.p=2,i=mt,mt|=4;try{uy(t,e,l)}finally{mt=i,q.p=u,D.T=a}}Lt=1,ed(),ld(),ad()}}function ed(){if(Lt===1){Lt=0;var t=bl,e=Oa,l=(e.flags&13878)!==0;if((e.subtreeFlags&13878)!==0||l){l=D.T,D.T=null;var a=q.p;q.p=2;var u=mt;mt|=4;try{Ho(e,t);var n=df,i=Gr(t.containerInfo),r=n.focusedElem,h=n.selectionRange;if(i!==r&&r&&r.ownerDocument&&Yr(r.ownerDocument.documentElement,r)){if(h!==null&&Bi(r)){var T=h.start,M=h.end;if(M===void 0&&(M=T),"selectionStart"in r)r.selectionStart=T,r.selectionEnd=Math.min(M,r.value.length);else{var C=r.ownerDocument||document,_=C&&C.defaultView||window;if(_.getSelection){var O=_.getSelection(),Z=r.textContent.length,I=Math.min(h.start,Z),Tt=h.end===void 0?I:Math.min(h.end,Z);!O.extend&&I>Tt&&(i=Tt,Tt=I,I=i);var p=Lr(r,I),v=Lr(r,Tt);if(p&&v&&(O.rangeCount!==1||O.anchorNode!==p.node||O.anchorOffset!==p.offset||O.focusNode!==v.node||O.focusOffset!==v.offset)){var E=C.createRange();E.setStart(p.node,p.offset),O.removeAllRanges(),I>Tt?(O.addRange(E),O.extend(v.node,v.offset)):(E.setEnd(v.node,v.offset),O.addRange(E))}}}}for(C=[],O=r;O=O.parentNode;)O.nodeType===1&&C.push({element:O,left:O.scrollLeft,top:O.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r<C.length;r++){var U=C[r];U.element.scrollLeft=U.left,U.element.scrollTop=U.top}}kn=!!of,df=of=null}finally{mt=u,q.p=a,D.T=l}}t.current=e,Lt=2}}function ld(){if(Lt===2){Lt=0;var t=bl,e=Oa,l=(e.flags&8772)!==0;if((e.subtreeFlags&8772)!==0||l){l=D.T,D.T=null;var a=q.p;q.p=2;var u=mt;mt|=4;try{No(t,e.alternate,e)}finally{mt=u,q.p=a,D.T=l}}Lt=3}}function ad(){if(Lt===4||Lt===3){Lt=0,Hh();var t=bl,e=Oa,l=tl,a=Zo;(e.subtreeFlags&10256)!==0||(e.flags&10256)!==0?Lt=5:(Lt=0,Oa=bl=null,ud(t,t.pendingLanes));var u=t.pendingLanes;if(u===0&&(Sl=null),gi(l),e=e.stateNode,ne&&typeof ne.onCommitFiberRoot=="function")try{ne.onCommitFiberRoot(Ga,e,void 0,(e.current.flags&128)===128)}catch{}if(a!==null){e=D.T,u=q.p,q.p=2,D.T=null;try{for(var n=t.onRecoverableError,i=0;i<a.length;i++){var r=a[i];n(r.value,{componentStack:r.stack})}}finally{D.T=e,q.p=u}}(tl&3)!==0&&Ln(),Be(t),u=t.pendingLanes,(l&261930)!==0&&(u&42)!==0?t===Fc?Eu++:(Eu=0,Fc=t):Eu=0,Tu(0)}}function ud(t,e){(t.pooledCacheLanes&=e)===0&&(e=t.pooledCache,e!=null&&(t.pooledCache=null,lu(e)))}function Ln(){return ed(),ld(),ad(),nd()}function nd(){if(Lt!==5)return!1;var t=bl,e=Wc;Wc=0;var l=gi(tl),a=D.T,u=q.p;try{q.p=32>l?32:l,D.T=null,l=kc,kc=null;var n=bl,i=tl;if(Lt=0,Oa=bl=null,tl=0,(mt&6)!==0)throw Error(f(331));var r=mt;if(mt|=4,Go(n.current),qo(n,n.current,i,l),mt=r,Tu(0,!1),ne&&typeof ne.onPostCommitFiberRoot=="function")try{ne.onPostCommitFiberRoot(Ga,n)}catch{}return!0}finally{q.p=u,D.T=a,ud(t,e)}}function id(t,e,l){e=pe(l,e),e=Dc(t.stateNode,e,2),t=hl(t,e,2),t!==null&&(Qa(t,2),Be(t))}function pt(t,e,l){if(t.tag===3)id(t,t,l);else for(;e!==null;){if(e.tag===3){id(e,t,l);break}else if(e.tag===1){var a=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Sl===null||!Sl.has(a))){t=pe(l,t),l=io(2),a=hl(e,l,2),a!==null&&(co(l,a,e,t),Qa(a,2),Be(a));break}}e=e.return}}function tf(t,e,l){var a=t.pingCache;if(a===null){a=t.pingCache=new cy;var u=new Set;a.set(e,u)}else u=a.get(e),u===void 0&&(u=new Set,a.set(e,u));u.has(l)||(wc=!0,u.add(l),t=dy.bind(null,t,e,l),e.then(t,t))}function dy(t,e,l){var a=t.pingCache;a!==null&&a.delete(e),t.pingedLanes|=t.suspendedLanes&l,t.warmLanes&=~l,At===t&&(ft&l)===l&&(Nt===4||Nt===3&&(ft&62914560)===ft&&300>ue()-Cn?(mt&2)===0&&Ma(t,0):Jc|=l,Ra===ft&&(Ra=0)),Be(t)}function cd(t,e){e===0&&(e=tr()),t=Bl(t,e),t!==null&&(Qa(t,e),Be(t))}function hy(t){var e=t.memoizedState,l=0;e!==null&&(l=e.retryLane),cd(t,l)}function my(t,e){var l=0;switch(t.tag){case 31:case 13:var a=t.stateNode,u=t.memoizedState;u!==null&&(l=u.retryLane);break;case 19:a=t.stateNode;break;case 22:a=t.stateNode._retryCache;break;default:throw Error(f(314))}a!==null&&a.delete(e),cd(t,l)}function yy(t,e){return hi(t,e)}var Yn=null,Na=null,ef=!1,Gn=!1,lf=!1,Tl=0;function Be(t){t!==Na&&t.next===null&&(Na===null?Yn=Na=t:Na=Na.next=t),Gn=!0,ef||(ef=!0,gy())}function Tu(t,e){if(!lf&&Gn){lf=!0;do for(var l=!1,a=Yn;a!==null;){if(t!==0){var u=a.pendingLanes;if(u===0)var n=0;else{var i=a.suspendedLanes,r=a.pingedLanes;n=(1<<31-ie(42|t)+1)-1,n&=u&~(i&~r),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(l=!0,od(a,n))}else n=ft,n=Zu(a,a===At?n:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(n&3)===0||Xa(a,n)||(l=!0,od(a,n));a=a.next}while(l);lf=!1}}function vy(){fd()}function fd(){Gn=ef=!1;var t=0;Tl!==0&&Oy()&&(t=Tl);for(var e=ue(),l=null,a=Yn;a!==null;){var u=a.next,n=rd(a,e);n===0?(a.next=null,l===null?Yn=u:l.next=u,u===null&&(Na=l)):(l=a,(t!==0||(n&3)!==0)&&(Gn=!0)),a=u}Lt!==0&&Lt!==5||Tu(t),Tl!==0&&(Tl=0)}function rd(t,e){for(var l=t.suspendedLanes,a=t.pingedLanes,u=t.expirationTimes,n=t.pendingLanes&-62914561;0<n;){var i=31-ie(n),r=1<<i,h=u[i];h===-1?((r&l)===0||(r&a)!==0)&&(u[i]=Zh(r,e)):h<=e&&(t.expiredLanes|=r),n&=~r}if(e=At,l=ft,l=Zu(t,t===e?l:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),a=t.callbackNode,l===0||t===e&&(gt===2||gt===9)||t.cancelPendingCommit!==null)return a!==null&&a!==null&&mi(a),t.callbackNode=null,t.callbackPriority=0;if((l&3)===0||Xa(t,l)){if(e=l&-l,e===t.callbackPriority)return e;switch(a!==null&&mi(a),gi(l)){case 2:case 8:l=If;break;case 32:l=Yu;break;case 268435456:l=Pf;break;default:l=Yu}return a=sd.bind(null,t),l=hi(l,a),t.callbackPriority=e,t.callbackNode=l,e}return a!==null&&a!==null&&mi(a),t.callbackPriority=2,t.callbackNode=null,2}function sd(t,e){if(Lt!==0&&Lt!==5)return t.callbackNode=null,t.callbackPriority=0,null;var l=t.callbackNode;if(Ln()&&t.callbackNode!==l)return null;var a=ft;return a=Zu(t,t===At?a:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),a===0?null:(Ko(t,a,e),rd(t,ue()),t.callbackNode!=null&&t.callbackNode===l?sd.bind(null,t):null)}function od(t,e){if(Ln())return null;Ko(t,e,!0)}function gy(){Dy(function(){(mt&6)!==0?hi(Ff,vy):fd()})}function af(){if(Tl===0){var t=ya;t===0&&(t=Gu,Gu<<=1,(Gu&261888)===0&&(Gu=256)),Tl=t}return Tl}function dd(t){return t==null||typeof t=="symbol"||typeof t=="boolean"?null:typeof t=="function"?t:Ju(""+t)}function hd(t,e){var l=e.ownerDocument.createElement("input");return l.name=e.name,l.value=e.value,t.id&&l.setAttribute("form",t.id),e.parentNode.insertBefore(l,e),t=new FormData(t),l.parentNode.removeChild(l),t}function py(t,e,l,a,u){if(e==="submit"&&l&&l.stateNode===u){var n=dd((u[Ft]||null).action),i=a.submitter;i&&(e=(e=i[Ft]||null)?dd(e.formAction):i.getAttribute("formAction"),e!==null&&(n=e,i=null));var r=new Fu("action","action",null,a,u);t.push({event:r,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(Tl!==0){var h=i?hd(u,i):new FormData(u);zc(l,{pending:!0,data:h,method:u.method,action:n},null,h)}}else typeof n=="function"&&(r.preventDefault(),h=i?hd(u,i):new FormData(u),zc(l,{pending:!0,data:h,method:u.method,action:n},n,h))},currentTarget:u}]})}}for(var uf=0;uf<Gi.length;uf++){var nf=Gi[uf],Sy=nf.toLowerCase(),by=nf[0].toUpperCase()+nf.slice(1);Oe(Sy,"on"+by)}Oe(Zr,"onAnimationEnd"),Oe(Vr,"onAnimationIteration"),Oe(Kr,"onAnimationStart"),Oe("dblclick","onDoubleClick"),Oe("focusin","onFocus"),Oe("focusout","onBlur"),Oe(Bm,"onTransitionRun"),Oe(qm,"onTransitionStart"),Oe(Lm,"onTransitionCancel"),Oe(wr,"onTransitionEnd"),ea("onMouseEnter",["mouseout","mouseover"]),ea("onMouseLeave",["mouseout","mouseover"]),ea("onPointerEnter",["pointerout","pointerover"]),ea("onPointerLeave",["pointerout","pointerover"]),Cl("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Cl("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Cl("onBeforeInput",["compositionend","keypress","textInput","paste"]),Cl("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Cl("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Cl("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var zu="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ey=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(zu));function md(t,e){e=(e&4)!==0;for(var l=0;l<t.length;l++){var a=t[l],u=a.event;a=a.listeners;t:{var n=void 0;if(e)for(var i=a.length-1;0<=i;i--){var r=a[i],h=r.instance,T=r.currentTarget;if(r=r.listener,h!==n&&u.isPropagationStopped())break t;n=r,u.currentTarget=T;try{n(u)}catch(M){tn(M)}u.currentTarget=null,n=h}else for(i=0;i<a.length;i++){if(r=a[i],h=r.instance,T=r.currentTarget,r=r.listener,h!==n&&u.isPropagationStopped())break t;n=r,u.currentTarget=T;try{n(u)}catch(M){tn(M)}u.currentTarget=null,n=h}}}}function ct(t,e){var l=e[pi];l===void 0&&(l=e[pi]=new Set);var a=t+"__bubble";l.has(a)||(yd(e,t,2,!1),l.add(a))}function cf(t,e,l){var a=0;e&&(a|=4),yd(l,t,a,e)}var Xn="_reactListening"+Math.random().toString(36).slice(2);function ff(t){if(!t[Xn]){t[Xn]=!0,cr.forEach(function(l){l!=="selectionchange"&&(Ey.has(l)||cf(l,!1,t),cf(l,!0,t))});var e=t.nodeType===9?t:t.ownerDocument;e===null||e[Xn]||(e[Xn]=!0,cf("selectionchange",!1,e))}}function yd(t,e,l,a){switch(Vd(e)){case 2:var u=Wy;break;case 8:u=ky;break;default:u=zf}l=u.bind(null,e,l,t),u=void 0,!Oi||e!=="touchstart"&&e!=="touchmove"&&e!=="wheel"||(u=!0),a?u!==void 0?t.addEventListener(e,l,{capture:!0,passive:u}):t.addEventListener(e,l,!0):u!==void 0?t.addEventListener(e,l,{passive:u}):t.addEventListener(e,l,!1)}function rf(t,e,l,a,u){var n=a;if((e&1)===0&&(e&2)===0&&a!==null)t:for(;;){if(a===null)return;var i=a.tag;if(i===3||i===4){var r=a.stateNode.containerInfo;if(r===u)break;if(i===4)for(i=a.return;i!==null;){var h=i.tag;if((h===3||h===4)&&i.stateNode.containerInfo===u)return;i=i.return}for(;r!==null;){if(i=Il(r),i===null)return;if(h=i.tag,h===5||h===6||h===26||h===27){a=n=i;continue t}r=r.parentNode}}a=a.return}Sr(function(){var T=n,M=_i(l),C=[];t:{var _=Jr.get(t);if(_!==void 0){var O=Fu,Z=t;switch(t){case"keypress":if(Wu(l)===0)break t;case"keydown":case"keyup":O=mm;break;case"focusin":Z="focus",O=Ui;break;case"focusout":Z="blur",O=Ui;break;case"beforeblur":case"afterblur":O=Ui;break;case"click":if(l.button===2)break t;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":O=Tr;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":O=lm;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":O=gm;break;case Zr:case Vr:case Kr:O=nm;break;case wr:O=Sm;break;case"scroll":case"scrollend":O=tm;break;case"wheel":O=Em;break;case"copy":case"cut":case"paste":O=cm;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":O=Ar;break;case"toggle":case"beforetoggle":O=zm}var I=(e&4)!==0,Tt=!I&&(t==="scroll"||t==="scrollend"),p=I?_!==null?_+"Capture":null:_;I=[];for(var v=T,E;v!==null;){var U=v;if(E=U.stateNode,U=U.tag,U!==5&&U!==26&&U!==27||E===null||p===null||(U=Ka(v,p),U!=null&&I.push(Au(v,U,E))),Tt)break;v=v.return}0<I.length&&(_=new O(_,Z,null,l,M),C.push({event:_,listeners:I}))}}if((e&7)===0){t:{if(_=t==="mouseover"||t==="pointerover",O=t==="mouseout"||t==="pointerout",_&&l!==Ai&&(Z=l.relatedTarget||l.fromElement)&&(Il(Z)||Z[Fl]))break t;if((O||_)&&(_=M.window===M?M:(_=M.ownerDocument)?_.defaultView||_.parentWindow:window,O?(Z=l.relatedTarget||l.toElement,O=T,Z=Z?Il(Z):null,Z!==null&&(Tt=m(Z),I=Z.tag,Z!==Tt||I!==5&&I!==27&&I!==6)&&(Z=null)):(O=null,Z=T),O!==Z)){if(I=Tr,U="onMouseLeave",p="onMouseEnter",v="mouse",(t==="pointerout"||t==="pointerover")&&(I=Ar,U="onPointerLeave",p="onPointerEnter",v="pointer"),Tt=O==null?_:Va(O),E=Z==null?_:Va(Z),_=new I(U,v+"leave",O,l,M),_.target=Tt,_.relatedTarget=E,U=null,Il(M)===T&&(I=new I(p,v+"enter",Z,l,M),I.target=E,I.relatedTarget=Tt,U=I),Tt=U,O&&Z)e:{for(I=Ty,p=O,v=Z,E=0,U=p;U;U=I(U))E++;U=0;for(var k=v;k;k=I(k))U++;for(;0<E-U;)p=I(p),E--;for(;0<U-E;)v=I(v),U--;for(;E--;){if(p===v||v!==null&&p===v.alternate){I=p;break e}p=I(p),v=I(v)}I=null}else I=null;O!==null&&vd(C,_,O,I,!1),Z!==null&&Tt!==null&&vd(C,Tt,Z,I,!0)}}t:{if(_=T?Va(T):window,O=_.nodeName&&_.nodeName.toLowerCase(),O==="select"||O==="input"&&_.type==="file")var dt=Cr;else if(Nr(_))if(xr)dt=xm;else{dt=Um;var w=Nm}else O=_.nodeName,!O||O.toLowerCase()!=="input"||_.type!=="checkbox"&&_.type!=="radio"?T&&zi(T.elementType)&&(dt=Cr):dt=Cm;if(dt&&(dt=dt(t,T))){Ur(C,dt,l,M);break t}w&&w(t,_,T),t==="focusout"&&T&&_.type==="number"&&T.memoizedProps.value!=null&&Ti(_,"number",_.value)}switch(w=T?Va(T):window,t){case"focusin":(Nr(w)||w.contentEditable==="true")&&(ca=w,qi=T,Pa=null);break;case"focusout":Pa=qi=ca=null;break;case"mousedown":Li=!0;break;case"contextmenu":case"mouseup":case"dragend":Li=!1,Xr(C,l,M);break;case"selectionchange":if(Hm)break;case"keydown":case"keyup":Xr(C,l,M)}var ut;if(xi)t:{switch(t){case"compositionstart":var rt="onCompositionStart";break t;case"compositionend":rt="onCompositionEnd";break t;case"compositionupdate":rt="onCompositionUpdate";break t}rt=void 0}else ia?Mr(t,l)&&(rt="onCompositionEnd"):t==="keydown"&&l.keyCode===229&&(rt="onCompositionStart");rt&&(_r&&l.locale!=="ko"&&(ia||rt!=="onCompositionStart"?rt==="onCompositionEnd"&&ia&&(ut=br()):(il=M,Mi="value"in il?il.value:il.textContent,ia=!0)),w=Qn(T,rt),0<w.length&&(rt=new zr(rt,t,null,l,M),C.push({event:rt,listeners:w}),ut?rt.data=ut:(ut=Dr(l),ut!==null&&(rt.data=ut)))),(ut=_m?Rm(t,l):Om(t,l))&&(rt=Qn(T,"onBeforeInput"),0<rt.length&&(w=new zr("onBeforeInput","beforeinput",null,l,M),C.push({event:w,listeners:rt}),w.data=ut)),py(C,t,T,l,M)}md(C,e)})}function Au(t,e,l){return{instance:t,listener:e,currentTarget:l}}function Qn(t,e){for(var l=e+"Capture",a=[];t!==null;){var u=t,n=u.stateNode;if(u=u.tag,u!==5&&u!==26&&u!==27||n===null||(u=Ka(t,l),u!=null&&a.unshift(Au(t,u,n)),u=Ka(t,e),u!=null&&a.push(Au(t,u,n))),t.tag===3)return a;t=t.return}return[]}function Ty(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5&&t.tag!==27);return t||null}function vd(t,e,l,a,u){for(var n=e._reactName,i=[];l!==null&&l!==a;){var r=l,h=r.alternate,T=r.stateNode;if(r=r.tag,h!==null&&h===a)break;r!==5&&r!==26&&r!==27||T===null||(h=T,u?(T=Ka(l,n),T!=null&&i.unshift(Au(l,T,h))):u||(T=Ka(l,n),T!=null&&i.push(Au(l,T,h)))),l=l.return}i.length!==0&&t.push({event:e,listeners:i})}var zy=/\r\n?/g,Ay=/\u0000|\uFFFD/g;function gd(t){return(typeof t=="string"?t:""+t).replace(zy,` +`).replace(Ay,"")}function pd(t,e){return e=gd(e),gd(t)===e}function Et(t,e,l,a,u,n){switch(l){case"children":typeof a=="string"?e==="body"||e==="textarea"&&a===""||aa(t,a):(typeof a=="number"||typeof a=="bigint")&&e!=="body"&&aa(t,""+a);break;case"className":Ku(t,"class",a);break;case"tabIndex":Ku(t,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":Ku(t,l,a);break;case"style":gr(t,a,n);break;case"data":if(e!=="object"){Ku(t,"data",a);break}case"src":case"href":if(a===""&&(e!=="a"||l!=="href")){t.removeAttribute(l);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=Ju(""+a),t.setAttribute(l,a);break;case"action":case"formAction":if(typeof a=="function"){t.setAttribute(l,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof n=="function"&&(l==="formAction"?(e!=="input"&&Et(t,e,"name",u.name,u,null),Et(t,e,"formEncType",u.formEncType,u,null),Et(t,e,"formMethod",u.formMethod,u,null),Et(t,e,"formTarget",u.formTarget,u,null)):(Et(t,e,"encType",u.encType,u,null),Et(t,e,"method",u.method,u,null),Et(t,e,"target",u.target,u,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=Ju(""+a),t.setAttribute(l,a);break;case"onClick":a!=null&&(t.onclick=Ye);break;case"onScroll":a!=null&&ct("scroll",t);break;case"onScrollEnd":a!=null&&ct("scrollend",t);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(f(61));if(l=a.__html,l!=null){if(u.children!=null)throw Error(f(60));t.innerHTML=l}}break;case"multiple":t.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":t.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){t.removeAttribute("xlink:href");break}l=Ju(""+a),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",l);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,""+a):t.removeAttribute(l);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,""):t.removeAttribute(l);break;case"capture":case"download":a===!0?t.setAttribute(l,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?t.setAttribute(l,a):t.removeAttribute(l);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?t.removeAttribute(l):t.setAttribute(l,a);break;case"popover":ct("beforetoggle",t),ct("toggle",t),Vu(t,"popover",a);break;case"xlinkActuate":Le(t,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":Le(t,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":Le(t,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":Le(t,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":Le(t,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":Le(t,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":Le(t,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":Le(t,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":Le(t,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":Vu(t,"is",a);break;case"innerText":case"textContent":break;default:(!(2<l.length)||l[0]!=="o"&&l[0]!=="O"||l[1]!=="n"&&l[1]!=="N")&&(l=Ih.get(l)||l,Vu(t,l,a))}}function sf(t,e,l,a,u,n){switch(l){case"style":gr(t,a,n);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(f(61));if(l=a.__html,l!=null){if(u.children!=null)throw Error(f(60));t.innerHTML=l}}break;case"children":typeof a=="string"?aa(t,a):(typeof a=="number"||typeof a=="bigint")&&aa(t,""+a);break;case"onScroll":a!=null&&ct("scroll",t);break;case"onScrollEnd":a!=null&&ct("scrollend",t);break;case"onClick":a!=null&&(t.onclick=Ye);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!fr.hasOwnProperty(l))t:{if(l[0]==="o"&&l[1]==="n"&&(u=l.endsWith("Capture"),e=l.slice(2,u?l.length-7:void 0),n=t[Ft]||null,n=n!=null?n[l]:null,typeof n=="function"&&t.removeEventListener(e,n,u),typeof a=="function")){typeof n!="function"&&n!==null&&(l in t?t[l]=null:t.hasAttribute(l)&&t.removeAttribute(l)),t.addEventListener(e,a,u);break t}l in t?t[l]=a:a===!0?t.setAttribute(l,""):Vu(t,l,a)}}}function Kt(t,e,l){switch(e){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":ct("error",t),ct("load",t);var a=!1,u=!1,n;for(n in l)if(l.hasOwnProperty(n)){var i=l[n];if(i!=null)switch(n){case"src":a=!0;break;case"srcSet":u=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(f(137,e));default:Et(t,e,n,i,l,null)}}u&&Et(t,e,"srcSet",l.srcSet,l,null),a&&Et(t,e,"src",l.src,l,null);return;case"input":ct("invalid",t);var r=n=i=u=null,h=null,T=null;for(a in l)if(l.hasOwnProperty(a)){var M=l[a];if(M!=null)switch(a){case"name":u=M;break;case"type":i=M;break;case"checked":h=M;break;case"defaultChecked":T=M;break;case"value":n=M;break;case"defaultValue":r=M;break;case"children":case"dangerouslySetInnerHTML":if(M!=null)throw Error(f(137,e));break;default:Et(t,e,a,M,l,null)}}hr(t,n,r,h,T,i,u,!1);return;case"select":ct("invalid",t),a=i=n=null;for(u in l)if(l.hasOwnProperty(u)&&(r=l[u],r!=null))switch(u){case"value":n=r;break;case"defaultValue":i=r;break;case"multiple":a=r;default:Et(t,e,u,r,l,null)}e=n,l=i,t.multiple=!!a,e!=null?la(t,!!a,e,!1):l!=null&&la(t,!!a,l,!0);return;case"textarea":ct("invalid",t),n=u=a=null;for(i in l)if(l.hasOwnProperty(i)&&(r=l[i],r!=null))switch(i){case"value":a=r;break;case"defaultValue":u=r;break;case"children":n=r;break;case"dangerouslySetInnerHTML":if(r!=null)throw Error(f(91));break;default:Et(t,e,i,r,l,null)}yr(t,a,u,n);return;case"option":for(h in l)l.hasOwnProperty(h)&&(a=l[h],a!=null)&&(h==="selected"?t.selected=a&&typeof a!="function"&&typeof a!="symbol":Et(t,e,h,a,l,null));return;case"dialog":ct("beforetoggle",t),ct("toggle",t),ct("cancel",t),ct("close",t);break;case"iframe":case"object":ct("load",t);break;case"video":case"audio":for(a=0;a<zu.length;a++)ct(zu[a],t);break;case"image":ct("error",t),ct("load",t);break;case"details":ct("toggle",t);break;case"embed":case"source":case"link":ct("error",t),ct("load",t);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(T in l)if(l.hasOwnProperty(T)&&(a=l[T],a!=null))switch(T){case"children":case"dangerouslySetInnerHTML":throw Error(f(137,e));default:Et(t,e,T,a,l,null)}return;default:if(zi(e)){for(M in l)l.hasOwnProperty(M)&&(a=l[M],a!==void 0&&sf(t,e,M,a,l,void 0));return}}for(r in l)l.hasOwnProperty(r)&&(a=l[r],a!=null&&Et(t,e,r,a,l,null))}function _y(t,e,l,a){switch(e){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var u=null,n=null,i=null,r=null,h=null,T=null,M=null;for(O in l){var C=l[O];if(l.hasOwnProperty(O)&&C!=null)switch(O){case"checked":break;case"value":break;case"defaultValue":h=C;default:a.hasOwnProperty(O)||Et(t,e,O,null,a,C)}}for(var _ in a){var O=a[_];if(C=l[_],a.hasOwnProperty(_)&&(O!=null||C!=null))switch(_){case"type":n=O;break;case"name":u=O;break;case"checked":T=O;break;case"defaultChecked":M=O;break;case"value":i=O;break;case"defaultValue":r=O;break;case"children":case"dangerouslySetInnerHTML":if(O!=null)throw Error(f(137,e));break;default:O!==C&&Et(t,e,_,O,a,C)}}Ei(t,i,r,h,T,M,n,u);return;case"select":O=i=r=_=null;for(n in l)if(h=l[n],l.hasOwnProperty(n)&&h!=null)switch(n){case"value":break;case"multiple":O=h;default:a.hasOwnProperty(n)||Et(t,e,n,null,a,h)}for(u in a)if(n=a[u],h=l[u],a.hasOwnProperty(u)&&(n!=null||h!=null))switch(u){case"value":_=n;break;case"defaultValue":r=n;break;case"multiple":i=n;default:n!==h&&Et(t,e,u,n,a,h)}e=r,l=i,a=O,_!=null?la(t,!!l,_,!1):!!a!=!!l&&(e!=null?la(t,!!l,e,!0):la(t,!!l,l?[]:"",!1));return;case"textarea":O=_=null;for(r in l)if(u=l[r],l.hasOwnProperty(r)&&u!=null&&!a.hasOwnProperty(r))switch(r){case"value":break;case"children":break;default:Et(t,e,r,null,a,u)}for(i in a)if(u=a[i],n=l[i],a.hasOwnProperty(i)&&(u!=null||n!=null))switch(i){case"value":_=u;break;case"defaultValue":O=u;break;case"children":break;case"dangerouslySetInnerHTML":if(u!=null)throw Error(f(91));break;default:u!==n&&Et(t,e,i,u,a,n)}mr(t,_,O);return;case"option":for(var Z in l)_=l[Z],l.hasOwnProperty(Z)&&_!=null&&!a.hasOwnProperty(Z)&&(Z==="selected"?t.selected=!1:Et(t,e,Z,null,a,_));for(h in a)_=a[h],O=l[h],a.hasOwnProperty(h)&&_!==O&&(_!=null||O!=null)&&(h==="selected"?t.selected=_&&typeof _!="function"&&typeof _!="symbol":Et(t,e,h,_,a,O));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var I in l)_=l[I],l.hasOwnProperty(I)&&_!=null&&!a.hasOwnProperty(I)&&Et(t,e,I,null,a,_);for(T in a)if(_=a[T],O=l[T],a.hasOwnProperty(T)&&_!==O&&(_!=null||O!=null))switch(T){case"children":case"dangerouslySetInnerHTML":if(_!=null)throw Error(f(137,e));break;default:Et(t,e,T,_,a,O)}return;default:if(zi(e)){for(var Tt in l)_=l[Tt],l.hasOwnProperty(Tt)&&_!==void 0&&!a.hasOwnProperty(Tt)&&sf(t,e,Tt,void 0,a,_);for(M in a)_=a[M],O=l[M],!a.hasOwnProperty(M)||_===O||_===void 0&&O===void 0||sf(t,e,M,_,a,O);return}}for(var p in l)_=l[p],l.hasOwnProperty(p)&&_!=null&&!a.hasOwnProperty(p)&&Et(t,e,p,null,a,_);for(C in a)_=a[C],O=l[C],!a.hasOwnProperty(C)||_===O||_==null&&O==null||Et(t,e,C,_,a,O)}function Sd(t){switch(t){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function Ry(){if(typeof performance.getEntriesByType=="function"){for(var t=0,e=0,l=performance.getEntriesByType("resource"),a=0;a<l.length;a++){var u=l[a],n=u.transferSize,i=u.initiatorType,r=u.duration;if(n&&r&&Sd(i)){for(i=0,r=u.responseEnd,a+=1;a<l.length;a++){var h=l[a],T=h.startTime;if(T>r)break;var M=h.transferSize,C=h.initiatorType;M&&Sd(C)&&(h=h.responseEnd,i+=M*(h<r?1:(r-T)/(h-T)))}if(--a,e+=8*(n+i)/(u.duration/1e3),t++,10<t)break}}if(0<t)return e/t/1e6}return navigator.connection&&(t=navigator.connection.downlink,typeof t=="number")?t:5}var of=null,df=null;function Zn(t){return t.nodeType===9?t:t.ownerDocument}function bd(t){switch(t){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Ed(t,e){if(t===0)switch(e){case"svg":return 1;case"math":return 2;default:return 0}return t===1&&e==="foreignObject"?0:t}function hf(t,e){return t==="textarea"||t==="noscript"||typeof e.children=="string"||typeof e.children=="number"||typeof e.children=="bigint"||typeof e.dangerouslySetInnerHTML=="object"&&e.dangerouslySetInnerHTML!==null&&e.dangerouslySetInnerHTML.__html!=null}var mf=null;function Oy(){var t=window.event;return t&&t.type==="popstate"?t===mf?!1:(mf=t,!0):(mf=null,!1)}var Td=typeof setTimeout=="function"?setTimeout:void 0,My=typeof clearTimeout=="function"?clearTimeout:void 0,zd=typeof Promise=="function"?Promise:void 0,Dy=typeof queueMicrotask=="function"?queueMicrotask:typeof zd<"u"?function(t){return zd.resolve(null).then(t).catch(Ny)}:Td;function Ny(t){setTimeout(function(){throw t})}function zl(t){return t==="head"}function Ad(t,e){var l=e,a=0;do{var u=l.nextSibling;if(t.removeChild(l),u&&u.nodeType===8)if(l=u.data,l==="/$"||l==="/&"){if(a===0){t.removeChild(u),ja(e);return}a--}else if(l==="$"||l==="$?"||l==="$~"||l==="$!"||l==="&")a++;else if(l==="html")_u(t.ownerDocument.documentElement);else if(l==="head"){l=t.ownerDocument.head,_u(l);for(var n=l.firstChild;n;){var i=n.nextSibling,r=n.nodeName;n[Za]||r==="SCRIPT"||r==="STYLE"||r==="LINK"&&n.rel.toLowerCase()==="stylesheet"||l.removeChild(n),n=i}}else l==="body"&&_u(t.ownerDocument.body);l=u}while(l);ja(e)}function _d(t,e){var l=t;t=0;do{var a=l.nextSibling;if(l.nodeType===1?e?(l._stashedDisplay=l.style.display,l.style.display="none"):(l.style.display=l._stashedDisplay||"",l.getAttribute("style")===""&&l.removeAttribute("style")):l.nodeType===3&&(e?(l._stashedText=l.nodeValue,l.nodeValue=""):l.nodeValue=l._stashedText||""),a&&a.nodeType===8)if(l=a.data,l==="/$"){if(t===0)break;t--}else l!=="$"&&l!=="$?"&&l!=="$~"&&l!=="$!"||t++;l=a}while(l)}function yf(t){var e=t.firstChild;for(e&&e.nodeType===10&&(e=e.nextSibling);e;){var l=e;switch(e=e.nextSibling,l.nodeName){case"HTML":case"HEAD":case"BODY":yf(l),Si(l);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(l.rel.toLowerCase()==="stylesheet")continue}t.removeChild(l)}}function Uy(t,e,l,a){for(;t.nodeType===1;){var u=l;if(t.nodeName.toLowerCase()!==e.toLowerCase()){if(!a&&(t.nodeName!=="INPUT"||t.type!=="hidden"))break}else if(a){if(!t[Za])switch(e){case"meta":if(!t.hasAttribute("itemprop"))break;return t;case"link":if(n=t.getAttribute("rel"),n==="stylesheet"&&t.hasAttribute("data-precedence"))break;if(n!==u.rel||t.getAttribute("href")!==(u.href==null||u.href===""?null:u.href)||t.getAttribute("crossorigin")!==(u.crossOrigin==null?null:u.crossOrigin)||t.getAttribute("title")!==(u.title==null?null:u.title))break;return t;case"style":if(t.hasAttribute("data-precedence"))break;return t;case"script":if(n=t.getAttribute("src"),(n!==(u.src==null?null:u.src)||t.getAttribute("type")!==(u.type==null?null:u.type)||t.getAttribute("crossorigin")!==(u.crossOrigin==null?null:u.crossOrigin))&&n&&t.hasAttribute("async")&&!t.hasAttribute("itemprop"))break;return t;default:return t}}else if(e==="input"&&t.type==="hidden"){var n=u.name==null?null:""+u.name;if(u.type==="hidden"&&t.getAttribute("name")===n)return t}else return t;if(t=ze(t.nextSibling),t===null)break}return null}function Cy(t,e,l){if(e==="")return null;for(;t.nodeType!==3;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!l||(t=ze(t.nextSibling),t===null))return null;return t}function Rd(t,e){for(;t.nodeType!==8;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!e||(t=ze(t.nextSibling),t===null))return null;return t}function vf(t){return t.data==="$?"||t.data==="$~"}function gf(t){return t.data==="$!"||t.data==="$?"&&t.ownerDocument.readyState!=="loading"}function xy(t,e){var l=t.ownerDocument;if(t.data==="$~")t._reactRetry=e;else if(t.data!=="$?"||l.readyState!=="loading")e();else{var a=function(){e(),l.removeEventListener("DOMContentLoaded",a)};l.addEventListener("DOMContentLoaded",a),t._reactRetry=a}}function ze(t){for(;t!=null;t=t.nextSibling){var e=t.nodeType;if(e===1||e===3)break;if(e===8){if(e=t.data,e==="$"||e==="$!"||e==="$?"||e==="$~"||e==="&"||e==="F!"||e==="F")break;if(e==="/$"||e==="/&")return null}}return t}var pf=null;function Od(t){t=t.nextSibling;for(var e=0;t;){if(t.nodeType===8){var l=t.data;if(l==="/$"||l==="/&"){if(e===0)return ze(t.nextSibling);e--}else l!=="$"&&l!=="$!"&&l!=="$?"&&l!=="$~"&&l!=="&"||e++}t=t.nextSibling}return null}function Md(t){t=t.previousSibling;for(var e=0;t;){if(t.nodeType===8){var l=t.data;if(l==="$"||l==="$!"||l==="$?"||l==="$~"||l==="&"){if(e===0)return t;e--}else l!=="/$"&&l!=="/&"||e++}t=t.previousSibling}return null}function Dd(t,e,l){switch(e=Zn(l),t){case"html":if(t=e.documentElement,!t)throw Error(f(452));return t;case"head":if(t=e.head,!t)throw Error(f(453));return t;case"body":if(t=e.body,!t)throw Error(f(454));return t;default:throw Error(f(451))}}function _u(t){for(var e=t.attributes;e.length;)t.removeAttributeNode(e[0]);Si(t)}var Ae=new Map,Nd=new Set;function Vn(t){return typeof t.getRootNode=="function"?t.getRootNode():t.nodeType===9?t:t.ownerDocument}var el=q.d;q.d={f:jy,r:Hy,D:By,C:qy,L:Ly,m:Yy,X:Xy,S:Gy,M:Qy};function jy(){var t=el.f(),e=Hn();return t||e}function Hy(t){var e=Pl(t);e!==null&&e.tag===5&&e.type==="form"?ws(e):el.r(t)}var Ua=typeof document>"u"?null:document;function Ud(t,e,l){var a=Ua;if(a&&typeof e=="string"&&e){var u=ve(e);u='link[rel="'+t+'"][href="'+u+'"]',typeof l=="string"&&(u+='[crossorigin="'+l+'"]'),Nd.has(u)||(Nd.add(u),t={rel:t,crossOrigin:l,href:e},a.querySelector(u)===null&&(e=a.createElement("link"),Kt(e,"link",t),Yt(e),a.head.appendChild(e)))}}function By(t){el.D(t),Ud("dns-prefetch",t,null)}function qy(t,e){el.C(t,e),Ud("preconnect",t,e)}function Ly(t,e,l){el.L(t,e,l);var a=Ua;if(a&&t&&e){var u='link[rel="preload"][as="'+ve(e)+'"]';e==="image"&&l&&l.imageSrcSet?(u+='[imagesrcset="'+ve(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(u+='[imagesizes="'+ve(l.imageSizes)+'"]')):u+='[href="'+ve(t)+'"]';var n=u;switch(e){case"style":n=Ca(t);break;case"script":n=xa(t)}Ae.has(n)||(t=z({rel:"preload",href:e==="image"&&l&&l.imageSrcSet?void 0:t,as:e},l),Ae.set(n,t),a.querySelector(u)!==null||e==="style"&&a.querySelector(Ru(n))||e==="script"&&a.querySelector(Ou(n))||(e=a.createElement("link"),Kt(e,"link",t),Yt(e),a.head.appendChild(e)))}}function Yy(t,e){el.m(t,e);var l=Ua;if(l&&t){var a=e&&typeof e.as=="string"?e.as:"script",u='link[rel="modulepreload"][as="'+ve(a)+'"][href="'+ve(t)+'"]',n=u;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=xa(t)}if(!Ae.has(n)&&(t=z({rel:"modulepreload",href:t},e),Ae.set(n,t),l.querySelector(u)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Ou(n)))return}a=l.createElement("link"),Kt(a,"link",t),Yt(a),l.head.appendChild(a)}}}function Gy(t,e,l){el.S(t,e,l);var a=Ua;if(a&&t){var u=ta(a).hoistableStyles,n=Ca(t);e=e||"default";var i=u.get(n);if(!i){var r={loading:0,preload:null};if(i=a.querySelector(Ru(n)))r.loading=5;else{t=z({rel:"stylesheet",href:t,"data-precedence":e},l),(l=Ae.get(n))&&Sf(t,l);var h=i=a.createElement("link");Yt(h),Kt(h,"link",t),h._p=new Promise(function(T,M){h.onload=T,h.onerror=M}),h.addEventListener("load",function(){r.loading|=1}),h.addEventListener("error",function(){r.loading|=2}),r.loading|=4,Kn(i,e,a)}i={type:"stylesheet",instance:i,count:1,state:r},u.set(n,i)}}}function Xy(t,e){el.X(t,e);var l=Ua;if(l&&t){var a=ta(l).hoistableScripts,u=xa(t),n=a.get(u);n||(n=l.querySelector(Ou(u)),n||(t=z({src:t,async:!0},e),(e=Ae.get(u))&&bf(t,e),n=l.createElement("script"),Yt(n),Kt(n,"link",t),l.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(u,n))}}function Qy(t,e){el.M(t,e);var l=Ua;if(l&&t){var a=ta(l).hoistableScripts,u=xa(t),n=a.get(u);n||(n=l.querySelector(Ou(u)),n||(t=z({src:t,async:!0,type:"module"},e),(e=Ae.get(u))&&bf(t,e),n=l.createElement("script"),Yt(n),Kt(n,"link",t),l.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(u,n))}}function Cd(t,e,l,a){var u=(u=nt.current)?Vn(u):null;if(!u)throw Error(f(446));switch(t){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(e=Ca(l.href),l=ta(u).hoistableStyles,a=l.get(e),a||(a={type:"style",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){t=Ca(l.href);var n=ta(u).hoistableStyles,i=n.get(t);if(i||(u=u.ownerDocument||u,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(t,i),(n=u.querySelector(Ru(t)))&&!n._p&&(i.instance=n,i.state.loading=5),Ae.has(t)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Ae.set(t,l),n||Zy(u,t,l,i.state))),e&&a===null)throw Error(f(528,""));return i}if(e&&a!==null)throw Error(f(529,""));return null;case"script":return e=l.async,l=l.src,typeof l=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=xa(l),l=ta(u).hoistableScripts,a=l.get(e),a||(a={type:"script",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(f(444,t))}}function Ca(t){return'href="'+ve(t)+'"'}function Ru(t){return'link[rel="stylesheet"]['+t+"]"}function xd(t){return z({},t,{"data-precedence":t.precedence,precedence:null})}function Zy(t,e,l,a){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?a.loading=1:(e=t.createElement("link"),a.preload=e,e.addEventListener("load",function(){return a.loading|=1}),e.addEventListener("error",function(){return a.loading|=2}),Kt(e,"link",l),Yt(e),t.head.appendChild(e))}function xa(t){return'[src="'+ve(t)+'"]'}function Ou(t){return"script[async]"+t}function jd(t,e,l){if(e.count++,e.instance===null)switch(e.type){case"style":var a=t.querySelector('style[data-href~="'+ve(l.href)+'"]');if(a)return e.instance=a,Yt(a),a;var u=z({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(t.ownerDocument||t).createElement("style"),Yt(a),Kt(a,"style",u),Kn(a,l.precedence,t),e.instance=a;case"stylesheet":u=Ca(l.href);var n=t.querySelector(Ru(u));if(n)return e.state.loading|=4,e.instance=n,Yt(n),n;a=xd(l),(u=Ae.get(u))&&Sf(a,u),n=(t.ownerDocument||t).createElement("link"),Yt(n);var i=n;return i._p=new Promise(function(r,h){i.onload=r,i.onerror=h}),Kt(n,"link",a),e.state.loading|=4,Kn(n,l.precedence,t),e.instance=n;case"script":return n=xa(l.src),(u=t.querySelector(Ou(n)))?(e.instance=u,Yt(u),u):(a=l,(u=Ae.get(n))&&(a=z({},l),bf(a,u)),t=t.ownerDocument||t,u=t.createElement("script"),Yt(u),Kt(u,"link",a),t.head.appendChild(u),e.instance=u);case"void":return null;default:throw Error(f(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(a=e.instance,e.state.loading|=4,Kn(a,l.precedence,t));return e.instance}function Kn(t,e,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=a.length?a[a.length-1]:null,n=u,i=0;i<a.length;i++){var r=a[i];if(r.dataset.precedence===e)n=r;else if(n!==u)break}n?n.parentNode.insertBefore(t,n.nextSibling):(e=l.nodeType===9?l.head:l,e.insertBefore(t,e.firstChild))}function Sf(t,e){t.crossOrigin==null&&(t.crossOrigin=e.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=e.referrerPolicy),t.title==null&&(t.title=e.title)}function bf(t,e){t.crossOrigin==null&&(t.crossOrigin=e.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=e.referrerPolicy),t.integrity==null&&(t.integrity=e.integrity)}var wn=null;function Hd(t,e,l){if(wn===null){var a=new Map,u=wn=new Map;u.set(l,a)}else u=wn,a=u.get(l),a||(a=new Map,u.set(l,a));if(a.has(t))return a;for(a.set(t,null),l=l.getElementsByTagName(t),u=0;u<l.length;u++){var n=l[u];if(!(n[Za]||n[Xt]||t==="link"&&n.getAttribute("rel")==="stylesheet")&&n.namespaceURI!=="http://www.w3.org/2000/svg"){var i=n.getAttribute(e)||"";i=t+i;var r=a.get(i);r?r.push(n):a.set(i,[n])}}return a}function Bd(t,e,l){t=t.ownerDocument||t,t.head.insertBefore(l,e==="title"?t.querySelector("head > title"):null)}function Vy(t,e,l){if(l===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;return e.rel==="stylesheet"?(t=e.disabled,typeof e.precedence=="string"&&t==null):!0;case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function qd(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Ky(t,e,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var u=Ca(a.href),n=e.querySelector(Ru(u));if(n){e=n._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=Jn.bind(t),e.then(t,t)),l.state.loading|=4,l.instance=n,Yt(n);return}n=e.ownerDocument||e,a=xd(a),(u=Ae.get(u))&&Sf(a,u),n=n.createElement("link"),Yt(n);var i=n;i._p=new Promise(function(r,h){i.onload=r,i.onerror=h}),Kt(n,"link",a),l.instance=n}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(l,e),(e=l.state.preload)&&(l.state.loading&3)===0&&(t.count++,l=Jn.bind(t),e.addEventListener("load",l),e.addEventListener("error",l))}}var Ef=0;function wy(t,e){return t.stylesheets&&t.count===0&&Wn(t,t.stylesheets),0<t.count||0<t.imgCount?function(l){var a=setTimeout(function(){if(t.stylesheets&&Wn(t,t.stylesheets),t.unsuspend){var n=t.unsuspend;t.unsuspend=null,n()}},6e4+e);0<t.imgBytes&&Ef===0&&(Ef=62500*Ry());var u=setTimeout(function(){if(t.waitingForImages=!1,t.count===0&&(t.stylesheets&&Wn(t,t.stylesheets),t.unsuspend)){var n=t.unsuspend;t.unsuspend=null,n()}},(t.imgBytes>Ef?50:800)+e);return t.unsuspend=l,function(){t.unsuspend=null,clearTimeout(a),clearTimeout(u)}}:null}function Jn(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Wn(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var $n=null;function Wn(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,$n=new Map,e.forEach(Jy,t),$n=null,Jn.call(t))}function Jy(t,e){if(!(e.state.loading&4)){var l=$n.get(t);if(l)var a=l.get(null);else{l=new Map,$n.set(t,l);for(var u=t.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n<u.length;n++){var i=u[n];(i.nodeName==="LINK"||i.getAttribute("media")!=="not all")&&(l.set(i.dataset.precedence,i),a=i)}a&&l.set(null,a)}u=e.instance,i=u.getAttribute("data-precedence"),n=l.get(i)||a,n===a&&l.set(null,u),l.set(i,u),this.count++,a=Jn.bind(this),u.addEventListener("load",a),u.addEventListener("error",a),n?n.parentNode.insertBefore(u,n.nextSibling):(t=t.nodeType===9?t.head:t,t.insertBefore(u,t.firstChild)),e.state.loading|=4}}var Mu={$$typeof:W,Provider:null,Consumer:null,_currentValue:tt,_currentValue2:tt,_threadCount:0};function $y(t,e,l,a,u,n,i,r,h){this.tag=1,this.containerInfo=t,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=yi(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=yi(0),this.hiddenUpdates=yi(null),this.identifierPrefix=a,this.onUncaughtError=u,this.onCaughtError=n,this.onRecoverableError=i,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=h,this.incompleteTransitions=new Map}function Ld(t,e,l,a,u,n,i,r,h,T,M,C){return t=new $y(t,e,l,i,h,T,M,C,r),e=1,n===!0&&(e|=24),n=fe(3,null,null,e),t.current=n,n.stateNode=t,e=Pi(),e.refCount++,t.pooledCache=e,e.refCount++,n.memoizedState={element:a,isDehydrated:l,cache:e},ac(n),t}function Yd(t){return t?(t=sa,t):sa}function Gd(t,e,l,a,u,n){u=Yd(u),a.context===null?a.context=u:a.pendingContext=u,a=dl(e),a.payload={element:l},n=n===void 0?null:n,n!==null&&(a.callback=n),l=hl(t,a,e),l!==null&&(ae(l,t,e),iu(l,t,e))}function Xd(t,e){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var l=t.retryLane;t.retryLane=l!==0&&l<e?l:e}}function Tf(t,e){Xd(t,e),(t=t.alternate)&&Xd(t,e)}function Qd(t){if(t.tag===13||t.tag===31){var e=Bl(t,67108864);e!==null&&ae(e,t,67108864),Tf(t,67108864)}}function Zd(t){if(t.tag===13||t.tag===31){var e=he();e=vi(e);var l=Bl(t,e);l!==null&&ae(l,t,e),Tf(t,e)}}var kn=!0;function Wy(t,e,l,a){var u=D.T;D.T=null;var n=q.p;try{q.p=2,zf(t,e,l,a)}finally{q.p=n,D.T=u}}function ky(t,e,l,a){var u=D.T;D.T=null;var n=q.p;try{q.p=8,zf(t,e,l,a)}finally{q.p=n,D.T=u}}function zf(t,e,l,a){if(kn){var u=Af(a);if(u===null)rf(t,e,a,Fn,l),Kd(t,a);else if(Iy(u,t,e,l,a))a.stopPropagation();else if(Kd(t,a),e&4&&-1<Fy.indexOf(t)){for(;u!==null;){var n=Pl(u);if(n!==null)switch(n.tag){case 3:if(n=n.stateNode,n.current.memoizedState.isDehydrated){var i=Ul(n.pendingLanes);if(i!==0){var r=n;for(r.pendingLanes|=2,r.entangledLanes|=2;i;){var h=1<<31-ie(i);r.entanglements[1]|=h,i&=~h}Be(n),(mt&6)===0&&(xn=ue()+500,Tu(0))}}break;case 31:case 13:r=Bl(n,2),r!==null&&ae(r,n,2),Hn(),Tf(n,2)}if(n=Af(a),n===null&&rf(t,e,a,Fn,l),n===u)break;u=n}u!==null&&a.stopPropagation()}else rf(t,e,a,null,l)}}function Af(t){return t=_i(t),_f(t)}var Fn=null;function _f(t){if(Fn=null,t=Il(t),t!==null){var e=m(t);if(e===null)t=null;else{var l=e.tag;if(l===13){if(t=S(e),t!==null)return t;t=null}else if(l===31){if(t=R(e),t!==null)return t;t=null}else if(l===3){if(e.stateNode.current.memoizedState.isDehydrated)return e.tag===3?e.stateNode.containerInfo:null;t=null}else e!==t&&(t=null)}}return Fn=t,null}function Vd(t){switch(t){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Bh()){case Ff:return 2;case If:return 8;case Yu:case qh:return 32;case Pf:return 268435456;default:return 32}default:return 32}}var Rf=!1,Al=null,_l=null,Rl=null,Du=new Map,Nu=new Map,Ol=[],Fy="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Kd(t,e){switch(t){case"focusin":case"focusout":Al=null;break;case"dragenter":case"dragleave":_l=null;break;case"mouseover":case"mouseout":Rl=null;break;case"pointerover":case"pointerout":Du.delete(e.pointerId);break;case"gotpointercapture":case"lostpointercapture":Nu.delete(e.pointerId)}}function Uu(t,e,l,a,u,n){return t===null||t.nativeEvent!==n?(t={blockedOn:e,domEventName:l,eventSystemFlags:a,nativeEvent:n,targetContainers:[u]},e!==null&&(e=Pl(e),e!==null&&Qd(e)),t):(t.eventSystemFlags|=a,e=t.targetContainers,u!==null&&e.indexOf(u)===-1&&e.push(u),t)}function Iy(t,e,l,a,u){switch(e){case"focusin":return Al=Uu(Al,t,e,l,a,u),!0;case"dragenter":return _l=Uu(_l,t,e,l,a,u),!0;case"mouseover":return Rl=Uu(Rl,t,e,l,a,u),!0;case"pointerover":var n=u.pointerId;return Du.set(n,Uu(Du.get(n)||null,t,e,l,a,u)),!0;case"gotpointercapture":return n=u.pointerId,Nu.set(n,Uu(Nu.get(n)||null,t,e,l,a,u)),!0}return!1}function wd(t){var e=Il(t.target);if(e!==null){var l=m(e);if(l!==null){if(e=l.tag,e===13){if(e=S(l),e!==null){t.blockedOn=e,nr(t.priority,function(){Zd(l)});return}}else if(e===31){if(e=R(l),e!==null){t.blockedOn=e,nr(t.priority,function(){Zd(l)});return}}else if(e===3&&l.stateNode.current.memoizedState.isDehydrated){t.blockedOn=l.tag===3?l.stateNode.containerInfo:null;return}}}t.blockedOn=null}function In(t){if(t.blockedOn!==null)return!1;for(var e=t.targetContainers;0<e.length;){var l=Af(t.nativeEvent);if(l===null){l=t.nativeEvent;var a=new l.constructor(l.type,l);Ai=a,l.target.dispatchEvent(a),Ai=null}else return e=Pl(l),e!==null&&Qd(e),t.blockedOn=l,!1;e.shift()}return!0}function Jd(t,e,l){In(t)&&l.delete(e)}function Py(){Rf=!1,Al!==null&&In(Al)&&(Al=null),_l!==null&&In(_l)&&(_l=null),Rl!==null&&In(Rl)&&(Rl=null),Du.forEach(Jd),Nu.forEach(Jd)}function Pn(t,e){t.blockedOn===e&&(t.blockedOn=null,Rf||(Rf=!0,c.unstable_scheduleCallback(c.unstable_NormalPriority,Py)))}var ti=null;function $d(t){ti!==t&&(ti=t,c.unstable_scheduleCallback(c.unstable_NormalPriority,function(){ti===t&&(ti=null);for(var e=0;e<t.length;e+=3){var l=t[e],a=t[e+1],u=t[e+2];if(typeof a!="function"){if(_f(a||l)===null)continue;break}var n=Pl(l);n!==null&&(t.splice(e,3),e-=3,zc(n,{pending:!0,data:u,method:l.method,action:a},a,u))}}))}function ja(t){function e(h){return Pn(h,t)}Al!==null&&Pn(Al,t),_l!==null&&Pn(_l,t),Rl!==null&&Pn(Rl,t),Du.forEach(e),Nu.forEach(e);for(var l=0;l<Ol.length;l++){var a=Ol[l];a.blockedOn===t&&(a.blockedOn=null)}for(;0<Ol.length&&(l=Ol[0],l.blockedOn===null);)wd(l),l.blockedOn===null&&Ol.shift();if(l=(t.ownerDocument||t).$$reactFormReplay,l!=null)for(a=0;a<l.length;a+=3){var u=l[a],n=l[a+1],i=u[Ft]||null;if(typeof n=="function")i||$d(l);else if(i){var r=null;if(n&&n.hasAttribute("formAction")){if(u=n,i=n[Ft]||null)r=i.formAction;else if(_f(u)!==null)continue}else r=i.action;typeof r=="function"?l[a+1]=r:(l.splice(a,3),a-=3),$d(l)}}}function Wd(){function t(n){n.canIntercept&&n.info==="react-transition"&&n.intercept({handler:function(){return new Promise(function(i){return u=i})},focusReset:"manual",scroll:"manual"})}function e(){u!==null&&(u(),u=null),a||setTimeout(l,20)}function l(){if(!a&&!navigation.transition){var n=navigation.currentEntry;n&&n.url!=null&&navigation.navigate(n.url,{state:n.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,u=null;return navigation.addEventListener("navigate",t),navigation.addEventListener("navigatesuccess",e),navigation.addEventListener("navigateerror",e),setTimeout(l,100),function(){a=!0,navigation.removeEventListener("navigate",t),navigation.removeEventListener("navigatesuccess",e),navigation.removeEventListener("navigateerror",e),u!==null&&(u(),u=null)}}}function Of(t){this._internalRoot=t}ei.prototype.render=Of.prototype.render=function(t){var e=this._internalRoot;if(e===null)throw Error(f(409));var l=e.current,a=he();Gd(l,a,t,e,null,null)},ei.prototype.unmount=Of.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var e=t.containerInfo;Gd(t.current,2,null,t,null,null),Hn(),e[Fl]=null}};function ei(t){this._internalRoot=t}ei.prototype.unstable_scheduleHydration=function(t){if(t){var e=ur();t={blockedOn:null,target:t,priority:e};for(var l=0;l<Ol.length&&e!==0&&e<Ol[l].priority;l++);Ol.splice(l,0,t),l===0&&wd(t)}};var kd=s.version;if(kd!=="19.2.4")throw Error(f(527,kd,"19.2.4"));q.findDOMNode=function(t){var e=t._reactInternals;if(e===void 0)throw typeof t.render=="function"?Error(f(188)):(t=Object.keys(t).join(","),Error(f(268,t)));return t=y(e),t=t!==null?N(t):null,t=t===null?null:t.stateNode,t};var tv={bundleType:0,version:"19.2.4",rendererPackageName:"react-dom",currentDispatcherRef:D,reconcilerVersion:"19.2.4"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var li=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!li.isDisabled&&li.supportsFiber)try{Ga=li.inject(tv),ne=li}catch{}}return xu.createRoot=function(t,e){if(!d(t))throw Error(f(299));var l=!1,a="",u=lo,n=ao,i=uo;return e!=null&&(e.unstable_strictMode===!0&&(l=!0),e.identifierPrefix!==void 0&&(a=e.identifierPrefix),e.onUncaughtError!==void 0&&(u=e.onUncaughtError),e.onCaughtError!==void 0&&(n=e.onCaughtError),e.onRecoverableError!==void 0&&(i=e.onRecoverableError)),e=Ld(t,1,!1,null,null,l,a,null,u,n,i,Wd),t[Fl]=e.current,ff(t),new Of(e)},xu.hydrateRoot=function(t,e,l){if(!d(t))throw Error(f(299));var a=!1,u="",n=lo,i=ao,r=uo,h=null;return l!=null&&(l.unstable_strictMode===!0&&(a=!0),l.identifierPrefix!==void 0&&(u=l.identifierPrefix),l.onUncaughtError!==void 0&&(n=l.onUncaughtError),l.onCaughtError!==void 0&&(i=l.onCaughtError),l.onRecoverableError!==void 0&&(r=l.onRecoverableError),l.formState!==void 0&&(h=l.formState)),e=Ld(t,1,!0,e,l??null,a,u,h,n,i,r,Wd),e.context=Yd(null),l=e.current,a=he(),a=vi(a),u=dl(a),u.callback=null,hl(l,u,a),l=a,e.current.lanes=l,Qa(e,l),Be(e),t[Fl]=e.current,ff(t),new ei(e)},xu.version="19.2.4",xu}var ih;function sv(){if(ih)return Nf.exports;ih=1;function c(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(s){console.error(s)}}return c(),Nf.exports=rv(),Nf.exports}var ov=sv();var ch="popstate";function dv(c={}){function s(f,d){let{pathname:m,search:S,hash:R}=f.location;return Lf("",{pathname:m,search:S,hash:R},d.state&&d.state.usr||null,d.state&&d.state.key||"default")}function o(f,d){return typeof d=="string"?d:Hu(d)}return mv(s,o,null,c)}function Mt(c,s){if(c===!1||c===null||typeof c>"u")throw new Error(s)}function _e(c,s){if(!c){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function hv(){return Math.random().toString(36).substring(2,10)}function fh(c,s){return{usr:c.state,key:c.key,idx:s}}function Lf(c,s,o=null,f){return{pathname:typeof c=="string"?c:c.pathname,search:"",hash:"",...typeof s=="string"?Ha(s):s,state:o,key:s&&s.key||f||hv()}}function Hu({pathname:c="/",search:s="",hash:o=""}){return s&&s!=="?"&&(c+=s.charAt(0)==="?"?s:"?"+s),o&&o!=="#"&&(c+=o.charAt(0)==="#"?o:"#"+o),c}function Ha(c){let s={};if(c){let o=c.indexOf("#");o>=0&&(s.hash=c.substring(o),c=c.substring(0,o));let f=c.indexOf("?");f>=0&&(s.search=c.substring(f),c=c.substring(0,f)),c&&(s.pathname=c)}return s}function mv(c,s,o,f={}){let{window:d=document.defaultView,v5Compat:m=!1}=f,S=d.history,R="POP",b=null,y=N();y==null&&(y=0,S.replaceState({...S.state,idx:y},""));function N(){return(S.state||{idx:null}).idx}function z(){R="POP";let G=N(),J=G==null?null:G-y;y=G,b&&b({action:R,location:V.location,delta:J})}function H(G,J){R="PUSH";let X=Lf(V.location,G,J);y=N()+1;let W=fh(X,y),$=V.createHref(X);try{S.pushState(W,"",$)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;d.location.assign($)}m&&b&&b({action:R,location:V.location,delta:1})}function Q(G,J){R="REPLACE";let X=Lf(V.location,G,J);y=N();let W=fh(X,y),$=V.createHref(X);S.replaceState(W,"",$),m&&b&&b({action:R,location:V.location,delta:0})}function F(G){return yv(G)}let V={get action(){return R},get location(){return c(d,S)},listen(G){if(b)throw new Error("A history only accepts one active listener");return d.addEventListener(ch,z),b=G,()=>{d.removeEventListener(ch,z),b=null}},createHref(G){return s(d,G)},createURL:F,encodeLocation(G){let J=F(G);return{pathname:J.pathname,search:J.search,hash:J.hash}},push:H,replace:Q,go(G){return S.go(G)}};return V}function yv(c,s=!1){let o="http://localhost";typeof window<"u"&&(o=window.location.origin!=="null"?window.location.origin:window.location.href),Mt(o,"No window.location.(origin|href) available to create URL");let f=typeof c=="string"?c:Hu(c);return f=f.replace(/ $/,"%20"),!s&&f.startsWith("//")&&(f=o+f),new URL(f,o)}function hh(c,s,o="/"){return vv(c,s,o,!1)}function vv(c,s,o,f){let d=typeof s=="string"?Ha(s):s,m=al(d.pathname||"/",o);if(m==null)return null;let S=mh(c);gv(S);let R=null;for(let b=0;R==null&&b<S.length;++b){let y=Mv(m);R=Rv(S[b],y,f)}return R}function mh(c,s=[],o=[],f="",d=!1){let m=(S,R,b=d,y)=>{let N={relativePath:y===void 0?S.path||"":y,caseSensitive:S.caseSensitive===!0,childrenIndex:R,route:S};if(N.relativePath.startsWith("/")){if(!N.relativePath.startsWith(f)&&b)return;Mt(N.relativePath.startsWith(f),`Absolute route path "${N.relativePath}" nested under path "${f}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),N.relativePath=N.relativePath.slice(f.length)}let z=ll([f,N.relativePath]),H=o.concat(N);S.children&&S.children.length>0&&(Mt(S.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${z}".`),mh(S.children,s,H,z,b)),!(S.path==null&&!S.index)&&s.push({path:z,score:Av(z,S.index),routesMeta:H})};return c.forEach((S,R)=>{if(S.path===""||!S.path?.includes("?"))m(S,R);else for(let b of yh(S.path))m(S,R,!0,b)}),s}function yh(c){let s=c.split("/");if(s.length===0)return[];let[o,...f]=s,d=o.endsWith("?"),m=o.replace(/\?$/,"");if(f.length===0)return d?[m,""]:[m];let S=yh(f.join("/")),R=[];return R.push(...S.map(b=>b===""?m:[m,b].join("/"))),d&&R.push(...S),R.map(b=>c.startsWith("/")&&b===""?"/":b)}function gv(c){c.sort((s,o)=>s.score!==o.score?o.score-s.score:_v(s.routesMeta.map(f=>f.childrenIndex),o.routesMeta.map(f=>f.childrenIndex)))}var pv=/^:[\w-]+$/,Sv=3,bv=2,Ev=1,Tv=10,zv=-2,rh=c=>c==="*";function Av(c,s){let o=c.split("/"),f=o.length;return o.some(rh)&&(f+=zv),s&&(f+=bv),o.filter(d=>!rh(d)).reduce((d,m)=>d+(pv.test(m)?Sv:m===""?Ev:Tv),f)}function _v(c,s){return c.length===s.length&&c.slice(0,-1).every((f,d)=>f===s[d])?c[c.length-1]-s[s.length-1]:0}function Rv(c,s,o=!1){let{routesMeta:f}=c,d={},m="/",S=[];for(let R=0;R<f.length;++R){let b=f[R],y=R===f.length-1,N=m==="/"?s:s.slice(m.length)||"/",z=ii({path:b.relativePath,caseSensitive:b.caseSensitive,end:y},N),H=b.route;if(!z&&y&&o&&!f[f.length-1].route.index&&(z=ii({path:b.relativePath,caseSensitive:b.caseSensitive,end:!1},N)),!z)return null;Object.assign(d,z.params),S.push({params:d,pathname:ll([m,z.pathname]),pathnameBase:Cv(ll([m,z.pathnameBase])),route:H}),z.pathnameBase!=="/"&&(m=ll([m,z.pathnameBase]))}return S}function ii(c,s){typeof c=="string"&&(c={path:c,caseSensitive:!1,end:!0});let[o,f]=Ov(c.path,c.caseSensitive,c.end),d=s.match(o);if(!d)return null;let m=d[0],S=m.replace(/(.)\/+$/,"$1"),R=d.slice(1);return{params:f.reduce((y,{paramName:N,isOptional:z},H)=>{if(N==="*"){let F=R[H]||"";S=m.slice(0,m.length-F.length).replace(/(.)\/+$/,"$1")}const Q=R[H];return z&&!Q?y[N]=void 0:y[N]=(Q||"").replace(/%2F/g,"/"),y},{}),pathname:m,pathnameBase:S,pattern:c}}function Ov(c,s=!1,o=!0){_e(c==="*"||!c.endsWith("*")||c.endsWith("/*"),`Route path "${c}" will be treated as if it were "${c.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${c.replace(/\*$/,"/*")}".`);let f=[],d="^"+c.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(S,R,b)=>(f.push({paramName:R,isOptional:b!=null}),b?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return c.endsWith("*")?(f.push({paramName:"*"}),d+=c==="*"||c==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):o?d+="\\/*$":c!==""&&c!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,s?void 0:"i"),f]}function Mv(c){try{return c.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return _e(!1,`The URL path "${c}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),c}}function al(c,s){if(s==="/")return c;if(!c.toLowerCase().startsWith(s.toLowerCase()))return null;let o=s.endsWith("/")?s.length-1:s.length,f=c.charAt(o);return f&&f!=="/"?null:c.slice(o)||"/"}var Dv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Nv(c,s="/"){let{pathname:o,search:f="",hash:d=""}=typeof c=="string"?Ha(c):c,m;return o?(o=o.replace(/\/\/+/g,"/"),o.startsWith("/")?m=sh(o.substring(1),"/"):m=sh(o,s)):m=s,{pathname:m,search:xv(f),hash:jv(d)}}function sh(c,s){let o=s.replace(/\/+$/,"").split("/");return c.split("/").forEach(d=>{d===".."?o.length>1&&o.pop():d!=="."&&o.push(d)}),o.length>1?o.join("/"):"/"}function jf(c,s,o,f){return`Cannot include a '${c}' character in a manually specified \`to.${s}\` field [${JSON.stringify(f)}]. Please separate it out to the \`to.${o}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Uv(c){return c.filter((s,o)=>o===0||s.route.path&&s.route.path.length>0)}function Qf(c){let s=Uv(c);return s.map((o,f)=>f===s.length-1?o.pathname:o.pathnameBase)}function Zf(c,s,o,f=!1){let d;typeof c=="string"?d=Ha(c):(d={...c},Mt(!d.pathname||!d.pathname.includes("?"),jf("?","pathname","search",d)),Mt(!d.pathname||!d.pathname.includes("#"),jf("#","pathname","hash",d)),Mt(!d.search||!d.search.includes("#"),jf("#","search","hash",d)));let m=c===""||d.pathname==="",S=m?"/":d.pathname,R;if(S==null)R=o;else{let z=s.length-1;if(!f&&S.startsWith("..")){let H=S.split("/");for(;H[0]==="..";)H.shift(),z-=1;d.pathname=H.join("/")}R=z>=0?s[z]:"/"}let b=Nv(d,R),y=S&&S!=="/"&&S.endsWith("/"),N=(m||S===".")&&o.endsWith("/");return!b.pathname.endsWith("/")&&(y||N)&&(b.pathname+="/"),b}var ll=c=>c.join("/").replace(/\/\/+/g,"/"),Cv=c=>c.replace(/\/+$/,"").replace(/^\/*/,"/"),xv=c=>!c||c==="?"?"":c.startsWith("?")?c:"?"+c,jv=c=>!c||c==="#"?"":c.startsWith("#")?c:"#"+c,Hv=class{constructor(c,s,o,f=!1){this.status=c,this.statusText=s||"",this.internal=f,o instanceof Error?(this.data=o.toString(),this.error=o):this.data=o}};function Bv(c){return c!=null&&typeof c.status=="number"&&typeof c.statusText=="string"&&typeof c.internal=="boolean"&&"data"in c}function qv(c){return c.map(s=>s.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var vh=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function gh(c,s){let o=c;if(typeof o!="string"||!Dv.test(o))return{absoluteURL:void 0,isExternal:!1,to:o};let f=o,d=!1;if(vh)try{let m=new URL(window.location.href),S=o.startsWith("//")?new URL(m.protocol+o):new URL(o),R=al(S.pathname,s);S.origin===m.origin&&R!=null?o=R+S.search+S.hash:d=!0}catch{_e(!1,`<Link to="${o}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:f,isExternal:d,to:o}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var ph=["POST","PUT","PATCH","DELETE"];new Set(ph);var Lv=["GET",...ph];new Set(Lv);var Ba=A.createContext(null);Ba.displayName="DataRouter";var ci=A.createContext(null);ci.displayName="DataRouterState";var Yv=A.createContext(!1),Sh=A.createContext({isTransitioning:!1});Sh.displayName="ViewTransition";var Gv=A.createContext(new Map);Gv.displayName="Fetchers";var Xv=A.createContext(null);Xv.displayName="Await";var me=A.createContext(null);me.displayName="Navigation";var Bu=A.createContext(null);Bu.displayName="Location";var Ne=A.createContext({outlet:null,matches:[],isDataRoute:!1});Ne.displayName="Route";var Vf=A.createContext(null);Vf.displayName="RouteError";var bh="REACT_ROUTER_ERROR",Qv="REDIRECT",Zv="ROUTE_ERROR_RESPONSE";function Vv(c){if(c.startsWith(`${bh}:${Qv}:{`))try{let s=JSON.parse(c.slice(28));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string"&&typeof s.location=="string"&&typeof s.reloadDocument=="boolean"&&typeof s.replace=="boolean")return s}catch{}}function Kv(c){if(c.startsWith(`${bh}:${Zv}:{`))try{let s=JSON.parse(c.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new Hv(s.status,s.statusText,s.data)}catch{}}function wv(c,{relative:s}={}){Mt(qa(),"useHref() may be used only in the context of a <Router> component.");let{basename:o,navigator:f}=A.useContext(me),{hash:d,pathname:m,search:S}=qu(c,{relative:s}),R=m;return o!=="/"&&(R=m==="/"?o:ll([o,m])),f.createHref({pathname:R,search:S,hash:d})}function qa(){return A.useContext(Bu)!=null}function Ue(){return Mt(qa(),"useLocation() may be used only in the context of a <Router> component."),A.useContext(Bu).location}var Eh="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Th(c){A.useContext(me).static||A.useLayoutEffect(c)}function La(){let{isDataRoute:c}=A.useContext(Ne);return c?n0():Jv()}function Jv(){Mt(qa(),"useNavigate() may be used only in the context of a <Router> component.");let c=A.useContext(Ba),{basename:s,navigator:o}=A.useContext(me),{matches:f}=A.useContext(Ne),{pathname:d}=Ue(),m=JSON.stringify(Qf(f)),S=A.useRef(!1);return Th(()=>{S.current=!0}),A.useCallback((b,y={})=>{if(_e(S.current,Eh),!S.current)return;if(typeof b=="number"){o.go(b);return}let N=Zf(b,JSON.parse(m),d,y.relative==="path");c==null&&s!=="/"&&(N.pathname=N.pathname==="/"?s:ll([s,N.pathname])),(y.replace?o.replace:o.push)(N,y.state,y)},[s,o,m,d,c])}A.createContext(null);function zh(){let{matches:c}=A.useContext(Ne),s=c[c.length-1];return s?s.params:{}}function qu(c,{relative:s}={}){let{matches:o}=A.useContext(Ne),{pathname:f}=Ue(),d=JSON.stringify(Qf(o));return A.useMemo(()=>Zf(c,JSON.parse(d),f,s==="path"),[c,d,f,s])}function $v(c,s){return Ah(c,s)}function Ah(c,s,o,f,d){Mt(qa(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:m}=A.useContext(me),{matches:S}=A.useContext(Ne),R=S[S.length-1],b=R?R.params:{},y=R?R.pathname:"/",N=R?R.pathnameBase:"/",z=R&&R.route;{let X=z&&z.path||"";Rh(y,!z||X.endsWith("*")||X.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${y}" (under <Route path="${X}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent <Route path="${X}"> to <Route path="${X==="/"?"*":`${X}/*`}">.`)}let H=Ue(),Q;if(s){let X=typeof s=="string"?Ha(s):s;Mt(N==="/"||X.pathname?.startsWith(N),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${N}" but pathname "${X.pathname}" was given in the \`location\` prop.`),Q=X}else Q=H;let F=Q.pathname||"/",V=F;if(N!=="/"){let X=N.replace(/^\//,"").split("/");V="/"+F.replace(/^\//,"").split("/").slice(X.length).join("/")}let G=hh(c,{pathname:V});_e(z||G!=null,`No routes matched location "${Q.pathname}${Q.search}${Q.hash}" `),_e(G==null||G[G.length-1].route.element!==void 0||G[G.length-1].route.Component!==void 0||G[G.length-1].route.lazy!==void 0,`Matched leaf route at location "${Q.pathname}${Q.search}${Q.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let J=Pv(G&&G.map(X=>Object.assign({},X,{params:Object.assign({},b,X.params),pathname:ll([N,m.encodeLocation?m.encodeLocation(X.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:X.pathname]),pathnameBase:X.pathnameBase==="/"?N:ll([N,m.encodeLocation?m.encodeLocation(X.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:X.pathnameBase])})),S,o,f,d);return s&&J?A.createElement(Bu.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...Q},navigationType:"POP"}},J):J}function Wv(){let c=u0(),s=Bv(c)?`${c.status} ${c.statusText}`:c instanceof Error?c.message:JSON.stringify(c),o=c instanceof Error?c.stack:null,f="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:f},m={padding:"2px 4px",backgroundColor:f},S=null;return console.error("Error handled by React Router default ErrorBoundary:",c),S=A.createElement(A.Fragment,null,A.createElement("p",null,"💿 Hey developer 👋"),A.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",A.createElement("code",{style:m},"ErrorBoundary")," or"," ",A.createElement("code",{style:m},"errorElement")," prop on your route.")),A.createElement(A.Fragment,null,A.createElement("h2",null,"Unexpected Application Error!"),A.createElement("h3",{style:{fontStyle:"italic"}},s),o?A.createElement("pre",{style:d},o):null,S)}var kv=A.createElement(Wv,null),_h=class extends A.Component{constructor(c){super(c),this.state={location:c.location,revalidation:c.revalidation,error:c.error}}static getDerivedStateFromError(c){return{error:c}}static getDerivedStateFromProps(c,s){return s.location!==c.location||s.revalidation!=="idle"&&c.revalidation==="idle"?{error:c.error,location:c.location,revalidation:c.revalidation}:{error:c.error!==void 0?c.error:s.error,location:s.location,revalidation:c.revalidation||s.revalidation}}componentDidCatch(c,s){this.props.onError?this.props.onError(c,s):console.error("React Router caught the following error during render",c)}render(){let c=this.state.error;if(this.context&&typeof c=="object"&&c&&"digest"in c&&typeof c.digest=="string"){const o=Kv(c.digest);o&&(c=o)}let s=c!==void 0?A.createElement(Ne.Provider,{value:this.props.routeContext},A.createElement(Vf.Provider,{value:c,children:this.props.component})):this.props.children;return this.context?A.createElement(Fv,{error:c},s):s}};_h.contextType=Yv;var Hf=new WeakMap;function Fv({children:c,error:s}){let{basename:o}=A.useContext(me);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let f=Vv(s.digest);if(f){let d=Hf.get(s);if(d)throw d;let m=gh(f.location,o);if(vh&&!Hf.get(s))if(m.isExternal||f.reloadDocument)window.location.href=m.absoluteURL||m.to;else{const S=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(m.to,{replace:f.replace}));throw Hf.set(s,S),S}return A.createElement("meta",{httpEquiv:"refresh",content:`0;url=${m.absoluteURL||m.to}`})}}return c}function Iv({routeContext:c,match:s,children:o}){let f=A.useContext(Ba);return f&&f.static&&f.staticContext&&(s.route.errorElement||s.route.ErrorBoundary)&&(f.staticContext._deepestRenderedBoundaryId=s.route.id),A.createElement(Ne.Provider,{value:c},o)}function Pv(c,s=[],o=null,f=null,d=null){if(c==null){if(!o)return null;if(o.errors)c=o.matches;else if(s.length===0&&!o.initialized&&o.matches.length>0)c=o.matches;else return null}let m=c,S=o?.errors;if(S!=null){let N=m.findIndex(z=>z.route.id&&S?.[z.route.id]!==void 0);Mt(N>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(S).join(",")}`),m=m.slice(0,Math.min(m.length,N+1))}let R=!1,b=-1;if(o)for(let N=0;N<m.length;N++){let z=m[N];if((z.route.HydrateFallback||z.route.hydrateFallbackElement)&&(b=N),z.route.id){let{loaderData:H,errors:Q}=o,F=z.route.loader&&!H.hasOwnProperty(z.route.id)&&(!Q||Q[z.route.id]===void 0);if(z.route.lazy||F){R=!0,b>=0?m=m.slice(0,b+1):m=[m[0]];break}}}let y=o&&f?(N,z)=>{f(N,{location:o.location,params:o.matches?.[0]?.params??{},unstable_pattern:qv(o.matches),errorInfo:z})}:void 0;return m.reduceRight((N,z,H)=>{let Q,F=!1,V=null,G=null;o&&(Q=S&&z.route.id?S[z.route.id]:void 0,V=z.route.errorElement||kv,R&&(b<0&&H===0?(Rh("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),F=!0,G=null):b===H&&(F=!0,G=z.route.hydrateFallbackElement||null)));let J=s.concat(m.slice(0,H+1)),X=()=>{let W;return Q?W=V:F?W=G:z.route.Component?W=A.createElement(z.route.Component,null):z.route.element?W=z.route.element:W=N,A.createElement(Iv,{match:z,routeContext:{outlet:N,matches:J,isDataRoute:o!=null},children:W})};return o&&(z.route.ErrorBoundary||z.route.errorElement||H===0)?A.createElement(_h,{location:o.location,revalidation:o.revalidation,component:V,error:Q,children:X(),routeContext:{outlet:null,matches:J,isDataRoute:!0},onError:y}):X()},null)}function Kf(c){return`${c} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function t0(c){let s=A.useContext(Ba);return Mt(s,Kf(c)),s}function e0(c){let s=A.useContext(ci);return Mt(s,Kf(c)),s}function l0(c){let s=A.useContext(Ne);return Mt(s,Kf(c)),s}function wf(c){let s=l0(c),o=s.matches[s.matches.length-1];return Mt(o.route.id,`${c} can only be used on routes that contain a unique "id"`),o.route.id}function a0(){return wf("useRouteId")}function u0(){let c=A.useContext(Vf),s=e0("useRouteError"),o=wf("useRouteError");return c!==void 0?c:s.errors?.[o]}function n0(){let{router:c}=t0("useNavigate"),s=wf("useNavigate"),o=A.useRef(!1);return Th(()=>{o.current=!0}),A.useCallback(async(d,m={})=>{_e(o.current,Eh),o.current&&(typeof d=="number"?await c.navigate(d):await c.navigate(d,{fromRouteId:s,...m}))},[c,s])}var oh={};function Rh(c,s,o){!s&&!oh[c]&&(oh[c]=!0,_e(!1,o))}A.memo(i0);function i0({routes:c,future:s,state:o,onError:f}){return Ah(c,void 0,o,f,s)}function c0({to:c,replace:s,state:o,relative:f}){Mt(qa(),"<Navigate> may be used only in the context of a <Router> component.");let{static:d}=A.useContext(me);_e(!d,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:m}=A.useContext(Ne),{pathname:S}=Ue(),R=La(),b=Zf(c,Qf(m),S,f==="path"),y=JSON.stringify(b);return A.useEffect(()=>{R(JSON.parse(y),{replace:s,state:o,relative:f})},[R,y,f,s,o]),null}function kl(c){Mt(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function f0({basename:c="/",children:s=null,location:o,navigationType:f="POP",navigator:d,static:m=!1,unstable_useTransitions:S}){Mt(!qa(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let R=c.replace(/^\/*/,"/"),b=A.useMemo(()=>({basename:R,navigator:d,static:m,unstable_useTransitions:S,future:{}}),[R,d,m,S]);typeof o=="string"&&(o=Ha(o));let{pathname:y="/",search:N="",hash:z="",state:H=null,key:Q="default"}=o,F=A.useMemo(()=>{let V=al(y,R);return V==null?null:{location:{pathname:V,search:N,hash:z,state:H,key:Q},navigationType:f}},[R,y,N,z,H,Q,f]);return _e(F!=null,`<Router basename="${R}"> is not able to match the URL "${y}${N}${z}" because it does not start with the basename, so the <Router> won't render anything.`),F==null?null:A.createElement(me.Provider,{value:b},A.createElement(Bu.Provider,{children:s,value:F}))}function Oh({children:c,location:s}){return $v(Yf(c),s)}function Yf(c,s=[]){let o=[];return A.Children.forEach(c,(f,d)=>{if(!A.isValidElement(f))return;let m=[...s,d];if(f.type===A.Fragment){o.push.apply(o,Yf(f.props.children,m));return}Mt(f.type===kl,`[${typeof f.type=="string"?f.type:f.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),Mt(!f.props.index||!f.props.children,"An index route cannot have child routes.");let S={id:f.props.id||m.join("-"),caseSensitive:f.props.caseSensitive,element:f.props.element,Component:f.props.Component,index:f.props.index,path:f.props.path,middleware:f.props.middleware,loader:f.props.loader,action:f.props.action,hydrateFallbackElement:f.props.hydrateFallbackElement,HydrateFallback:f.props.HydrateFallback,errorElement:f.props.errorElement,ErrorBoundary:f.props.ErrorBoundary,hasErrorBoundary:f.props.hasErrorBoundary===!0||f.props.ErrorBoundary!=null||f.props.errorElement!=null,shouldRevalidate:f.props.shouldRevalidate,handle:f.props.handle,lazy:f.props.lazy};f.props.children&&(S.children=Yf(f.props.children,m)),o.push(S)}),o}var ui="get",ni="application/x-www-form-urlencoded";function fi(c){return typeof HTMLElement<"u"&&c instanceof HTMLElement}function r0(c){return fi(c)&&c.tagName.toLowerCase()==="button"}function s0(c){return fi(c)&&c.tagName.toLowerCase()==="form"}function o0(c){return fi(c)&&c.tagName.toLowerCase()==="input"}function d0(c){return!!(c.metaKey||c.altKey||c.ctrlKey||c.shiftKey)}function h0(c,s){return c.button===0&&(!s||s==="_self")&&!d0(c)}function Gf(c=""){return new URLSearchParams(typeof c=="string"||Array.isArray(c)||c instanceof URLSearchParams?c:Object.keys(c).reduce((s,o)=>{let f=c[o];return s.concat(Array.isArray(f)?f.map(d=>[o,d]):[[o,f]])},[]))}function m0(c,s){let o=Gf(c);return s&&s.forEach((f,d)=>{o.has(d)||s.getAll(d).forEach(m=>{o.append(d,m)})}),o}var ai=null;function y0(){if(ai===null)try{new FormData(document.createElement("form"),0),ai=!1}catch{ai=!0}return ai}var v0=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Bf(c){return c!=null&&!v0.has(c)?(_e(!1,`"${c}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ni}"`),null):c}function g0(c,s){let o,f,d,m,S;if(s0(c)){let R=c.getAttribute("action");f=R?al(R,s):null,o=c.getAttribute("method")||ui,d=Bf(c.getAttribute("enctype"))||ni,m=new FormData(c)}else if(r0(c)||o0(c)&&(c.type==="submit"||c.type==="image")){let R=c.form;if(R==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let b=c.getAttribute("formaction")||R.getAttribute("action");if(f=b?al(b,s):null,o=c.getAttribute("formmethod")||R.getAttribute("method")||ui,d=Bf(c.getAttribute("formenctype"))||Bf(R.getAttribute("enctype"))||ni,m=new FormData(R,c),!y0()){let{name:y,type:N,value:z}=c;if(N==="image"){let H=y?`${y}.`:"";m.append(`${H}x`,"0"),m.append(`${H}y`,"0")}else y&&m.append(y,z)}}else{if(fi(c))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');o=ui,f=null,d=ni,S=c}return m&&d==="text/plain"&&(S=m,m=void 0),{action:f,method:o.toLowerCase(),encType:d,formData:m,body:S}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Jf(c,s){if(c===!1||c===null||typeof c>"u")throw new Error(s)}function p0(c,s,o,f){let d=typeof c=="string"?new URL(c,typeof window>"u"?"server://singlefetch/":window.location.origin):c;return o?d.pathname.endsWith("/")?d.pathname=`${d.pathname}_.${f}`:d.pathname=`${d.pathname}.${f}`:d.pathname==="/"?d.pathname=`_root.${f}`:s&&al(d.pathname,s)==="/"?d.pathname=`${s.replace(/\/$/,"")}/_root.${f}`:d.pathname=`${d.pathname.replace(/\/$/,"")}.${f}`,d}async function S0(c,s){if(c.id in s)return s[c.id];try{let o=await import(c.module);return s[c.id]=o,o}catch(o){return console.error(`Error loading route module \`${c.module}\`, reloading page...`),console.error(o),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function b0(c){return c==null?!1:c.href==null?c.rel==="preload"&&typeof c.imageSrcSet=="string"&&typeof c.imageSizes=="string":typeof c.rel=="string"&&typeof c.href=="string"}async function E0(c,s,o){let f=await Promise.all(c.map(async d=>{let m=s.routes[d.route.id];if(m){let S=await S0(m,o);return S.links?S.links():[]}return[]}));return _0(f.flat(1).filter(b0).filter(d=>d.rel==="stylesheet"||d.rel==="preload").map(d=>d.rel==="stylesheet"?{...d,rel:"prefetch",as:"style"}:{...d,rel:"prefetch"}))}function dh(c,s,o,f,d,m){let S=(b,y)=>o[y]?b.route.id!==o[y].route.id:!0,R=(b,y)=>o[y].pathname!==b.pathname||o[y].route.path?.endsWith("*")&&o[y].params["*"]!==b.params["*"];return m==="assets"?s.filter((b,y)=>S(b,y)||R(b,y)):m==="data"?s.filter((b,y)=>{let N=f.routes[b.route.id];if(!N||!N.hasLoader)return!1;if(S(b,y)||R(b,y))return!0;if(b.route.shouldRevalidate){let z=b.route.shouldRevalidate({currentUrl:new URL(d.pathname+d.search+d.hash,window.origin),currentParams:o[0]?.params||{},nextUrl:new URL(c,window.origin),nextParams:b.params,defaultShouldRevalidate:!0});if(typeof z=="boolean")return z}return!0}):[]}function T0(c,s,{includeHydrateFallback:o}={}){return z0(c.map(f=>{let d=s.routes[f.route.id];if(!d)return[];let m=[d.module];return d.clientActionModule&&(m=m.concat(d.clientActionModule)),d.clientLoaderModule&&(m=m.concat(d.clientLoaderModule)),o&&d.hydrateFallbackModule&&(m=m.concat(d.hydrateFallbackModule)),d.imports&&(m=m.concat(d.imports)),m}).flat(1))}function z0(c){return[...new Set(c)]}function A0(c){let s={},o=Object.keys(c).sort();for(let f of o)s[f]=c[f];return s}function _0(c,s){let o=new Set;return new Set(s),c.reduce((f,d)=>{let m=JSON.stringify(A0(d));return o.has(m)||(o.add(m),f.push({key:m,link:d})),f},[])}function Mh(){let c=A.useContext(Ba);return Jf(c,"You must render this element inside a <DataRouterContext.Provider> element"),c}function R0(){let c=A.useContext(ci);return Jf(c,"You must render this element inside a <DataRouterStateContext.Provider> element"),c}var $f=A.createContext(void 0);$f.displayName="FrameworkContext";function Dh(){let c=A.useContext($f);return Jf(c,"You must render this element inside a <HydratedRouter> element"),c}function O0(c,s){let o=A.useContext($f),[f,d]=A.useState(!1),[m,S]=A.useState(!1),{onFocus:R,onBlur:b,onMouseEnter:y,onMouseLeave:N,onTouchStart:z}=s,H=A.useRef(null);A.useEffect(()=>{if(c==="render"&&S(!0),c==="viewport"){let V=J=>{J.forEach(X=>{S(X.isIntersecting)})},G=new IntersectionObserver(V,{threshold:.5});return H.current&&G.observe(H.current),()=>{G.disconnect()}}},[c]),A.useEffect(()=>{if(f){let V=setTimeout(()=>{S(!0)},100);return()=>{clearTimeout(V)}}},[f]);let Q=()=>{d(!0)},F=()=>{d(!1),S(!1)};return o?c!=="intent"?[m,H,{}]:[m,H,{onFocus:ju(R,Q),onBlur:ju(b,F),onMouseEnter:ju(y,Q),onMouseLeave:ju(N,F),onTouchStart:ju(z,Q)}]:[!1,H,{}]}function ju(c,s){return o=>{c&&c(o),o.defaultPrevented||s(o)}}function M0({page:c,...s}){let{router:o}=Mh(),f=A.useMemo(()=>hh(o.routes,c,o.basename),[o.routes,c,o.basename]);return f?A.createElement(N0,{page:c,matches:f,...s}):null}function D0(c){let{manifest:s,routeModules:o}=Dh(),[f,d]=A.useState([]);return A.useEffect(()=>{let m=!1;return E0(c,s,o).then(S=>{m||d(S)}),()=>{m=!0}},[c,s,o]),f}function N0({page:c,matches:s,...o}){let f=Ue(),{future:d,manifest:m,routeModules:S}=Dh(),{basename:R}=Mh(),{loaderData:b,matches:y}=R0(),N=A.useMemo(()=>dh(c,s,y,m,f,"data"),[c,s,y,m,f]),z=A.useMemo(()=>dh(c,s,y,m,f,"assets"),[c,s,y,m,f]),H=A.useMemo(()=>{if(c===f.pathname+f.search+f.hash)return[];let V=new Set,G=!1;if(s.forEach(X=>{let W=m.routes[X.route.id];!W||!W.hasLoader||(!N.some($=>$.route.id===X.route.id)&&X.route.id in b&&S[X.route.id]?.shouldRevalidate||W.hasClientLoader?G=!0:V.add(X.route.id))}),V.size===0)return[];let J=p0(c,R,d.unstable_trailingSlashAwareDataRequests,"data");return G&&V.size>0&&J.searchParams.set("_routes",s.filter(X=>V.has(X.route.id)).map(X=>X.route.id).join(",")),[J.pathname+J.search]},[R,d.unstable_trailingSlashAwareDataRequests,b,f,m,N,s,c,S]),Q=A.useMemo(()=>T0(z,m),[z,m]),F=D0(z);return A.createElement(A.Fragment,null,H.map(V=>A.createElement("link",{key:V,rel:"prefetch",as:"fetch",href:V,...o})),Q.map(V=>A.createElement("link",{key:V,rel:"modulepreload",href:V,...o})),F.map(({key:V,link:G})=>A.createElement("link",{key:V,nonce:o.nonce,...G,crossOrigin:G.crossOrigin??o.crossOrigin})))}function U0(...c){return s=>{c.forEach(o=>{typeof o=="function"?o(s):o!=null&&(o.current=s)})}}var C0=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{C0&&(window.__reactRouterVersion="7.13.0")}catch{}function x0({basename:c,children:s,unstable_useTransitions:o,window:f}){let d=A.useRef();d.current==null&&(d.current=dv({window:f,v5Compat:!0}));let m=d.current,[S,R]=A.useState({action:m.action,location:m.location}),b=A.useCallback(y=>{o===!1?R(y):A.startTransition(()=>R(y))},[o]);return A.useLayoutEffect(()=>m.listen(b),[m,b]),A.createElement(f0,{basename:c,children:s,location:S.location,navigationType:S.action,navigator:m,unstable_useTransitions:o})}var Nh=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Wl=A.forwardRef(function({onClick:s,discover:o="render",prefetch:f="none",relative:d,reloadDocument:m,replace:S,state:R,target:b,to:y,preventScrollReset:N,viewTransition:z,unstable_defaultShouldRevalidate:H,...Q},F){let{basename:V,unstable_useTransitions:G}=A.useContext(me),J=typeof y=="string"&&Nh.test(y),X=gh(y,V);y=X.to;let W=wv(y,{relative:d}),[$,P,B]=O0(f,Q),Y=q0(y,{replace:S,state:R,target:b,preventScrollReset:N,relative:d,viewTransition:z,unstable_defaultShouldRevalidate:H,unstable_useTransitions:G});function st(Wt){s&&s(Wt),Wt.defaultPrevented||Y(Wt)}let vt=A.createElement("a",{...Q,...B,href:X.absoluteURL||W,onClick:X.isExternal||m?s:st,ref:U0(F,P),target:b,"data-discover":!J&&o==="render"?"true":void 0});return $&&!J?A.createElement(A.Fragment,null,vt,A.createElement(M0,{page:W})):vt});Wl.displayName="Link";var j0=A.forwardRef(function({"aria-current":s="page",caseSensitive:o=!1,className:f="",end:d=!1,style:m,to:S,viewTransition:R,children:b,...y},N){let z=qu(S,{relative:y.relative}),H=Ue(),Q=A.useContext(ci),{navigator:F,basename:V}=A.useContext(me),G=Q!=null&&Q0(z)&&R===!0,J=F.encodeLocation?F.encodeLocation(z).pathname:z.pathname,X=H.pathname,W=Q&&Q.navigation&&Q.navigation.location?Q.navigation.location.pathname:null;o||(X=X.toLowerCase(),W=W?W.toLowerCase():null,J=J.toLowerCase()),W&&V&&(W=al(W,V)||W);const $=J!=="/"&&J.endsWith("/")?J.length-1:J.length;let P=X===J||!d&&X.startsWith(J)&&X.charAt($)==="/",B=W!=null&&(W===J||!d&&W.startsWith(J)&&W.charAt(J.length)==="/"),Y={isActive:P,isPending:B,isTransitioning:G},st=P?s:void 0,vt;typeof f=="function"?vt=f(Y):vt=[f,P?"active":null,B?"pending":null,G?"transitioning":null].filter(Boolean).join(" ");let Wt=typeof m=="function"?m(Y):m;return A.createElement(Wl,{...y,"aria-current":st,className:vt,ref:N,style:Wt,to:S,viewTransition:R},typeof b=="function"?b(Y):b)});j0.displayName="NavLink";var H0=A.forwardRef(({discover:c="render",fetcherKey:s,navigate:o,reloadDocument:f,replace:d,state:m,method:S=ui,action:R,onSubmit:b,relative:y,preventScrollReset:N,viewTransition:z,unstable_defaultShouldRevalidate:H,...Q},F)=>{let{unstable_useTransitions:V}=A.useContext(me),G=G0(),J=X0(R,{relative:y}),X=S.toLowerCase()==="get"?"get":"post",W=typeof R=="string"&&Nh.test(R),$=P=>{if(b&&b(P),P.defaultPrevented)return;P.preventDefault();let B=P.nativeEvent.submitter,Y=B?.getAttribute("formmethod")||S,st=()=>G(B||P.currentTarget,{fetcherKey:s,method:Y,navigate:o,replace:d,state:m,relative:y,preventScrollReset:N,viewTransition:z,unstable_defaultShouldRevalidate:H});V&&o!==!1?A.startTransition(()=>st()):st()};return A.createElement("form",{ref:F,method:X,action:J,onSubmit:f?b:$,...Q,"data-discover":!W&&c==="render"?"true":void 0})});H0.displayName="Form";function B0(c){return`${c} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Uh(c){let s=A.useContext(Ba);return Mt(s,B0(c)),s}function q0(c,{target:s,replace:o,state:f,preventScrollReset:d,relative:m,viewTransition:S,unstable_defaultShouldRevalidate:R,unstable_useTransitions:b}={}){let y=La(),N=Ue(),z=qu(c,{relative:m});return A.useCallback(H=>{if(h0(H,s)){H.preventDefault();let Q=o!==void 0?o:Hu(N)===Hu(z),F=()=>y(c,{replace:Q,state:f,preventScrollReset:d,relative:m,viewTransition:S,unstable_defaultShouldRevalidate:R});b?A.startTransition(()=>F()):F()}},[N,y,z,o,f,s,c,d,m,S,R,b])}function Ch(c){_e(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let s=A.useRef(Gf(c)),o=A.useRef(!1),f=Ue(),d=A.useMemo(()=>m0(f.search,o.current?null:s.current),[f.search]),m=La(),S=A.useCallback((R,b)=>{const y=Gf(typeof R=="function"?R(new URLSearchParams(d)):R);o.current=!0,m("?"+y,b)},[m,d]);return[d,S]}var L0=0,Y0=()=>`__${String(++L0)}__`;function G0(){let{router:c}=Uh("useSubmit"),{basename:s}=A.useContext(me),o=a0(),f=c.fetch,d=c.navigate;return A.useCallback(async(m,S={})=>{let{action:R,method:b,encType:y,formData:N,body:z}=g0(m,s);if(S.navigate===!1){let H=S.fetcherKey||Y0();await f(H,o,S.action||R,{unstable_defaultShouldRevalidate:S.unstable_defaultShouldRevalidate,preventScrollReset:S.preventScrollReset,formData:N,body:z,formMethod:S.method||b,formEncType:S.encType||y,flushSync:S.flushSync})}else await d(S.action||R,{unstable_defaultShouldRevalidate:S.unstable_defaultShouldRevalidate,preventScrollReset:S.preventScrollReset,formData:N,body:z,formMethod:S.method||b,formEncType:S.encType||y,replace:S.replace,state:S.state,fromRouteId:o,flushSync:S.flushSync,viewTransition:S.viewTransition})},[f,d,s,o])}function X0(c,{relative:s}={}){let{basename:o}=A.useContext(me),f=A.useContext(Ne);Mt(f,"useFormAction must be used inside a RouteContext");let[d]=f.matches.slice(-1),m={...qu(c||".",{relative:s})},S=Ue();if(c==null){m.search=S.search;let R=new URLSearchParams(m.search),b=R.getAll("index");if(b.some(N=>N==="")){R.delete("index"),b.filter(z=>z).forEach(z=>R.append("index",z));let N=R.toString();m.search=N?`?${N}`:""}}return(!c||c===".")&&d.route.index&&(m.search=m.search?m.search.replace(/^\?/,"?index&"):"?index"),o!=="/"&&(m.pathname=m.pathname==="/"?o:ll([o,m.pathname])),Hu(m)}function Q0(c,{relative:s}={}){let o=A.useContext(Sh);Mt(o!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:f}=Uh("useViewTransitionState"),d=qu(c,{relative:s});if(!o.isTransitioning)return!1;let m=al(o.currentLocation.pathname,f)||o.currentLocation.pathname,S=al(o.nextLocation.pathname,f)||o.nextLocation.pathname;return ii(d.pathname,S)!=null||ii(d.pathname,m)!=null}function Z0(){const[c,s]=A.useState(""),[o,f]=A.useState(""),d=La(),m=async S=>{S.preventDefault(),f("");try{const R=new URLSearchParams;R.append("password",c);const b=await fetch("/api/login",{method:"POST",body:R});if(b.ok)d("/");else{const y=await b.json();f(y.message||"Login failed")}}catch{f("Network error")}};return j.jsx("div",{className:"login-container",children:j.jsxs("form",{onSubmit:m,className:"login-form",children:[j.jsx("h1",{children:"neko rss mode"}),j.jsxs("div",{className:"form-group",children:[j.jsx("label",{htmlFor:"password",children:"password"}),j.jsx("input",{id:"password",type:"password",value:c,onChange:S=>s(S.target.value),autoFocus:!0})]}),o&&j.jsx("div",{className:"error-message",children:o}),j.jsx("button",{type:"submit",children:"login"})]})})}function V0({theme:c,setTheme:s}){const[o,f]=A.useState([]),[d,m]=A.useState([]),[S,R]=A.useState(!0),[b,y]=A.useState(""),[N,z]=A.useState(!1),[H,Q]=A.useState(""),F=La(),[V]=Ch(),G=Ue(),{feedId:J,tagName:X}=zh(),W=V.get("filter")||(G.pathname==="/"&&!J&&!X?"unread":""),$=B=>{B.preventDefault(),H.trim()&&F(`/?q=${encodeURIComponent(H.trim())}`)},P=()=>{z(!N)};return A.useEffect(()=>{Promise.all([fetch("/api/feed/").then(B=>{if(!B.ok)throw new Error("Failed to fetch feeds");return B.json()}),fetch("/api/tag").then(B=>{if(!B.ok)throw new Error("Failed to fetch tags");return B.json()})]).then(([B,Y])=>{f(B),m(Y),R(!1)}).catch(B=>{y(B.message),R(!1)})},[]),S?j.jsx("div",{className:"feed-list-loading",children:"Loading feeds..."}):b?j.jsxs("div",{className:"feed-list-error",children:["Error: ",b]}):j.jsxs("div",{className:"feed-list",children:[j.jsx("div",{className:"search-section",children:j.jsx("form",{onSubmit:$,className:"search-form",children:j.jsx("input",{type:"search",placeholder:"Search items...",value:H,onChange:B=>Q(B.target.value),className:"search-input"})})}),j.jsx("div",{className:"filter-section",children:j.jsxs("ul",{className:"filter-list",children:[j.jsx("li",{children:j.jsx(Wl,{to:"/?filter=unread",className:W==="unread"?"active":"",children:"Unread"})}),j.jsx("li",{children:j.jsx(Wl,{to:"/?filter=all",className:W==="all"?"active":"",children:"All"})}),j.jsx("li",{children:j.jsx(Wl,{to:"/?filter=starred",className:W==="starred"?"active":"",children:"Starred"})})]})}),j.jsxs("div",{className:"feed-section",children:[j.jsxs("h2",{onClick:P,className:"feed-section-header",children:[j.jsx("span",{className:"toggle-indicator",children:N?"▼":"▶"})," Feeds"]}),N&&(o.length===0?j.jsx("p",{children:"No feeds found."}):j.jsx("ul",{className:"feed-list-items",children:o.map(B=>j.jsxs("li",{className:"sidebar-feed-item",children:[j.jsx(Wl,{to:`/feed/${B._id}`,className:`feed-title ${J===String(B._id)?"active":""}`,children:B.title||B.url}),B.category&&j.jsx("span",{className:"feed-category",children:B.category})]},B._id))}))]}),d&&d.length>0&&j.jsxs("div",{className:"tag-section",children:[j.jsx("h2",{children:"Tags"}),j.jsx("ul",{className:"tag-list-items",children:d.map(B=>j.jsx("li",{className:"tag-item",children:j.jsx(Wl,{to:`/tag/${encodeURIComponent(B.title)}`,className:`tag-link ${X===B.title?"active":""}`,children:B.title})},B.title))})]}),j.jsxs("div",{className:"theme-section",children:[j.jsx("h2",{children:"Themes"}),j.jsxs("div",{className:"theme-selector",children:[j.jsx("button",{onClick:()=>s("light"),className:c==="light"?"active":"",children:"light"}),j.jsx("button",{onClick:()=>s("dark"),className:c==="dark"?"active":"",children:"dark"}),j.jsx("button",{onClick:()=>s("black"),className:c==="black"?"active":"",children:"black"})]})]})]})}function K0({item:c}){const[s,o]=A.useState(c),[f,d]=A.useState(!1);A.useEffect(()=>{o(c)},[c]);const m=()=>{S({...s,starred:!s.starred})},S=R=>{d(!0);const b=s;o(R),fetch(`/api/item/${R._id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({_id:R._id,read:R.read,starred:R.starred})}).then(y=>{if(!y.ok)throw new Error("Failed to update item");return y.json()}).then(()=>{d(!1)}).catch(y=>{console.error("Error updating item:",y),o(b),d(!1)})};return j.jsxs("li",{className:`feed-item ${s.read?"read":"unread"} ${f?"loading":""}`,children:[j.jsxs("div",{className:"item-header",children:[j.jsx("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"item-title",children:s.title||"(No Title)"}),j.jsx("button",{onClick:R=>{R.stopPropagation(),m()},className:`star-btn ${s.starred?"is-starred":"is-unstarred"}`,title:s.starred?"Unstar":"Star",children:"★"})]}),j.jsxs("div",{className:"dateline",children:[j.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",children:[new Date(s.publish_date).toLocaleDateString(),s.feed_title&&` - ${s.feed_title}`]}),j.jsx("div",{className:"item-actions",style:{display:"inline-block",float:"right"}})]}),s.description&&j.jsx("div",{className:"item-description",dangerouslySetInnerHTML:{__html:s.description}})]})}function qf(){const{feedId:c,tagName:s}=zh(),[o]=Ch(),f=o.get("filter")||"unread",[d,m]=A.useState([]),[S,R]=A.useState(!0),[b,y]=A.useState(!1),[N,z]=A.useState(!0),[H,Q]=A.useState(""),F=$=>{$?y(!0):(R(!0),m([])),Q("");let P="/api/stream";const B=new URLSearchParams;c?B.append("feed_id",c):s&&B.append("tag",s),$&&B.append("max_id",$);const Y=o.get("q");Y&&B.append("q",Y),f==="all"?B.append("read_filter","all"):f==="starred"?(B.append("starred","true"),B.append("read_filter","all")):Y||B.append("read_filter","unread");const st=B.toString();st&&(P+=`?${st}`),fetch(P).then(vt=>{if(!vt.ok)throw new Error("Failed to fetch items");return vt.json()}).then(vt=>{m($?Wt=>[...Wt,...vt]:vt),z(vt.length>0),R(!1),y(!1)}).catch(vt=>{Q(vt.message),R(!1),y(!1)})};A.useEffect(()=>{F(),G(-1)},[c,s,f,o]);const[V,G]=A.useState(-1);A.useEffect(()=>{const $=P=>{d.length!==0&&(P.key==="j"?G(B=>{const Y=Math.min(B+1,d.length-1);if(Y!==B){const st=d[Y];st.read||X(st),J(Y)}return Y}):P.key==="k"?G(B=>{const Y=Math.max(B-1,0);return Y!==B&&J(Y),Y}):P.key==="s"&&G(B=>(B>=0&&B<d.length&&W(d[B]),B)))};return window.addEventListener("keydown",$),()=>window.removeEventListener("keydown",$)},[d]);const J=$=>{const P=document.getElementById(`item-${$}`);P&&P.scrollIntoView({behavior:"auto",block:"start"})},X=$=>{const P={...$,read:!0};m(B=>B.map(Y=>Y._id===$._id?P:Y)),fetch(`/api/item/${$._id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({read:!0,starred:$.starred})}).catch(B=>console.error("Failed to mark read",B))},W=$=>{const P={...$,starred:!$.starred};m(B=>B.map(Y=>Y._id===$._id?P:Y)),fetch(`/api/item/${$._id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({read:$.read,starred:!$.starred})}).catch(B=>console.error("Failed to toggle star",B))};return A.useEffect(()=>{const $=new IntersectionObserver(B=>{B.forEach(Y=>{if(Y.target.id==="load-more-sentinel"){Y.isIntersecting&&!b&&N&&d.length>0&&F(String(d[d.length-1]._id));return}if(!Y.isIntersecting&&Y.boundingClientRect.top<0){const st=Number(Y.target.getAttribute("data-index"));if(!isNaN(st)&&st>=0&&st<d.length){const vt=d[st];vt.read||X(vt)}}})},{root:null,threshold:0});d.forEach((B,Y)=>{const st=document.getElementById(`item-${Y}`);st&&$.observe(st)});const P=document.getElementById("load-more-sentinel");return P&&$.observe(P),()=>$.disconnect()},[d,b,N]),S?j.jsx("div",{className:"feed-items-loading",children:"Loading items..."}):H?j.jsxs("div",{className:"feed-items-error",children:["Error: ",H]}):j.jsx("div",{className:"feed-items",children:d.length===0?j.jsx("p",{children:"No items found."}):j.jsxs("ul",{className:"item-list",children:[d.map(($,P)=>j.jsx("div",{id:`item-${P}`,"data-index":P,"data-selected":P===V,onClick:()=>G(P),children:j.jsx(K0,{item:$})},$._id)),N&&j.jsx("div",{id:"load-more-sentinel",className:"loading-more",children:b?"Loading more...":""})]})})}function w0(){const[c,s]=A.useState([]),[o,f]=A.useState(""),[d,m]=A.useState(!1),[S,R]=A.useState(null);A.useEffect(()=>{b()},[]);const b=()=>{m(!0),fetch("/api/feed/").then(z=>{if(!z.ok)throw new Error("Failed to fetch feeds");return z.json()}).then(z=>{s(z),m(!1)}).catch(z=>{R(z.message),m(!1)})},y=z=>{z.preventDefault(),o&&(m(!0),fetch("/api/feed/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:o})}).then(H=>{if(!H.ok)throw new Error("Failed to add feed");return H.json()}).then(()=>{f(""),b()}).catch(H=>{R(H.message),m(!1)}))},N=z=>{globalThis.confirm("Are you sure you want to delete this feed?")&&(m(!0),fetch(`/api/feed/${z}`,{method:"DELETE"}).then(H=>{if(!H.ok)throw new Error("Failed to delete feed");s(c.filter(Q=>Q._id!==z)),m(!1)}).catch(H=>{R(H.message),m(!1)}))};return j.jsxs("div",{className:"settings-page",children:[j.jsx("h2",{children:"Settings"}),j.jsxs("div",{className:"add-feed-section",children:[j.jsx("h3",{children:"Add New Feed"}),j.jsxs("form",{onSubmit:y,className:"add-feed-form",children:[j.jsx("input",{type:"url",value:o,onChange:z=>f(z.target.value),placeholder:"https://example.com/feed.xml",required:!0,className:"feed-input",disabled:d}),j.jsx("button",{type:"submit",disabled:d,children:"Add Feed"})]}),S&&j.jsx("p",{className:"error-message",children:S})]}),j.jsxs("div",{className:"feed-list-section",children:[j.jsx("h3",{children:"Manage Feeds"}),d&&j.jsx("p",{children:"Loading..."}),j.jsx("ul",{className:"settings-feed-list",children:c.map(z=>j.jsxs("li",{className:"settings-feed-item",children:[j.jsxs("div",{className:"feed-info",children:[j.jsx("span",{className:"feed-title",children:z.title||"(No Title)"}),j.jsx("span",{className:"feed-url",children:z.url})]}),j.jsx("button",{onClick:()=>N(z._id),className:"delete-btn",disabled:d,title:"Delete Feed",children:"Delete"})]},z._id))})]})]})}function J0({children:c}){const[s,o]=A.useState(null),f=Ue();return A.useEffect(()=>{fetch("/api/auth").then(d=>{d.ok?o(!0):o(!1)}).catch(()=>o(!1))},[]),s===null?j.jsx("div",{children:"Loading..."}):s?c:j.jsx(c0,{to:"/login",state:{from:f},replace:!0})}function $0({theme:c,setTheme:s}){const o=La(),[f,d]=A.useState(!0);return j.jsxs("div",{className:`dashboard ${f?"sidebar-visible":"sidebar-hidden"} theme-${c}`,children:[j.jsxs("header",{className:"dashboard-header",children:[j.jsx("h1",{className:"logo",onClick:()=>d(!f),style:{cursor:"pointer"},children:"🐱"}),j.jsxs("nav",{children:[j.jsx("button",{onClick:()=>o("/settings"),className:"nav-link",style:{color:"white",marginRight:"1rem",background:"none",border:"none",cursor:"pointer",fontSize:"inherit",fontFamily:"inherit"},children:"Settings"}),j.jsx("button",{onClick:()=>{fetch("/api/logout",{method:"POST"}).then(()=>window.location.href="/v2/login")},className:"logout-btn",children:"Logout"})]})]}),j.jsxs("div",{className:"dashboard-content",children:[j.jsx("aside",{className:`dashboard-sidebar ${f?"":"hidden"}`,children:j.jsx(V0,{theme:c,setTheme:s})}),j.jsx("main",{className:"dashboard-main",children:j.jsxs(Oh,{children:[j.jsx(kl,{path:"/feed/:feedId",element:j.jsx(qf,{})}),j.jsx(kl,{path:"/tag/:tagName",element:j.jsx(qf,{})}),j.jsx(kl,{path:"/settings",element:j.jsx(w0,{})}),j.jsx(kl,{path:"/",element:j.jsx(qf,{})})]})})]})]})}function W0(){const[c,s]=A.useState(localStorage.getItem("neko-theme")||"light"),o=f=>{s(f),localStorage.setItem("neko-theme",f)};return j.jsx(x0,{basename:"/v2",children:j.jsxs(Oh,{children:[j.jsx(kl,{path:"/login",element:j.jsx(Z0,{})}),j.jsx(kl,{path:"/*",element:j.jsx(J0,{children:j.jsx($0,{theme:c,setTheme:o})})})]})})}ov.createRoot(document.getElementById("root")).render(j.jsx(A.StrictMode,{children:j.jsx(W0,{})})); diff --git a/dist/v2/index.html b/dist/v2/index.html new file mode 100644 index 0000000..bd7b234 --- /dev/null +++ b/dist/v2/index.html @@ -0,0 +1,14 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <link rel="icon" type="image/svg+xml" href="/v2/vite.svg" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Neko Reader</title> + <script type="module" crossorigin src="/v2/assets/index-f8d4YxQn.js"></script> + <link rel="stylesheet" crossorigin href="/v2/assets/index-B3U-SMew.css"> + </head> + <body> + <div id="root"></div> + </body> +</html> diff --git a/dist/v2/vite.svg b/dist/v2/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/dist/v2/vite.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file diff --git a/dist/vanilla/app.js b/dist/vanilla/app.js new file mode 100644 index 0000000..65a0833 --- /dev/null +++ b/dist/vanilla/app.js @@ -0,0 +1,257 @@ +document.addEventListener('DOMContentLoaded', () => { + fetchFeeds(); + fetchItems(); // Default to fetching recent items + + const searchInput = document.getElementById('search-input'); + searchInput.addEventListener('keypress', (e) => { + if (e.key === 'Enter') { + const query = searchInput.value.trim(); + if (query) { + document.getElementById('feed-title').textContent = `Search: ${query}`; + document.querySelectorAll('.feed-item').forEach(el => el.classList.remove('active')); + fetchItems(null, null, query); + } + } + }); +}); + +export async function fetchFeeds(apiBase = '') { + try { + const response = await fetch(`${apiBase}/api/feed/`); + if (!response.ok) throw new Error('Failed to fetch feeds'); + const feeds = await response.json(); + renderFeeds(feeds); + return feeds; + } catch (err) { + console.error(err); + const nav = document.getElementById('feeds-nav'); + if (nav) nav.innerHTML = '<div class="error">Error loading feeds</div>'; + throw err; + } +} + +export async function fetchItems(feedId = null, filter = null, query = null, apiBase = '') { + const listEl = document.getElementById('entries-list'); + if (listEl) listEl.innerHTML = '<div class="loading">Loading items...</div>'; + + let url = `${apiBase}/api/stream/`; + const params = new URLSearchParams(); + if (feedId) params.append('feed_id', feedId); + if (filter === 'unread') params.append('read_filter', 'unread'); + if (filter === 'starred') params.append('starred', 'true'); + if (query) params.append('q', query); + + if ([...params].length > 0) { + url += '?' + params.toString(); + } + + try { + const response = await fetch(url); + if (!response.ok) throw new Error('Failed to fetch items'); + const items = await response.json(); + renderItems(items); + return items; + } catch (err) { + console.error(err); + if (listEl) listEl.innerHTML = '<div class="error">Error loading items</div>'; + throw err; + } +} + +export function renderFeeds(feeds) { + const nav = document.getElementById('feeds-nav'); + if (!nav) return; + + // Clear existing items but keep search container if present + const searchContainer = nav.querySelector('.search-container'); + nav.innerHTML = ''; + if (searchContainer) nav.appendChild(searchContainer); + + const allLink = document.createElement('div'); + allLink.className = 'feed-item'; + allLink.textContent = 'All Items'; + allLink.onclick = () => { + document.querySelectorAll('.feed-item').forEach(el => el.classList.remove('active')); + allLink.classList.add('active'); + const title = document.getElementById('feed-title'); + if (title) title.textContent = 'All Items'; + fetchItems(); + }; + nav.appendChild(allLink); + + const unreadLink = document.createElement('div'); + unreadLink.className = 'feed-item'; + unreadLink.textContent = 'Unread Items'; + unreadLink.onclick = () => { + document.querySelectorAll('.feed-item').forEach(el => el.classList.remove('active')); + unreadLink.classList.add('active'); + const title = document.getElementById('feed-title'); + if (title) title.textContent = 'Unread Items'; + fetchItems(null, 'unread'); + }; + nav.appendChild(unreadLink); + + const starredLink = document.createElement('div'); + starredLink.className = 'feed-item'; + starredLink.textContent = 'Starred Items'; + starredLink.onclick = () => { + document.querySelectorAll('.feed-item').forEach(el => el.classList.remove('active')); + starredLink.classList.add('active'); + const title = document.getElementById('feed-title'); + if (title) title.textContent = 'Starred Items'; + fetchItems(null, 'starred'); + }; + nav.appendChild(starredLink); + + if (Array.isArray(feeds)) { + feeds.forEach(feed => { + const div = document.createElement('div'); + div.className = 'feed-item'; + div.textContent = feed.title || feed.url; + div.title = feed.url; + div.onclick = () => { + document.querySelectorAll('.feed-item').forEach(el => el.classList.remove('active')); + div.classList.add('active'); + const title = document.getElementById('feed-title'); + if (title) title.textContent = feed.title; + fetchItems(feed.id); + }; + nav.appendChild(div); + }); + } +} + +export function renderItems(items) { + const list = document.getElementById('entries-list'); + if (!list) return; + list.innerHTML = ''; + + if (!items || items.length === 0) { + list.innerHTML = '<div class="empty">No items found.</div>'; + return; + } + + items.forEach(item => { + const article = document.createElement('article'); + article.className = 'entry'; + + const date = new Date(item.published_at || item.created_at).toLocaleString(); + + article.innerHTML = ` + <header class="entry-header"> + <div class="entry-controls"> + <button class="btn-star ${item.starred ? 'active' : ''}" data-id="${item.id}" data-starred="${item.starred}">${item.starred ? '★' : '☆'}</button> + <button class="btn-read ${item.read ? 'read' : 'unread'}" data-id="${item.id}" data-read="${item.read}">${item.read ? 'Mark Unread' : 'Mark Read'}</button> + </div> + <a href="${item.url}" class="entry-title ${item.read ? 'read' : ''}" target="_blank">${item.title}</a> + <div class="entry-meta"> + ${item.feed ? `<span class="feed-name">${item.feed.title}</span> • ` : ''} + <span class="date">${date}</span> + </div> + </header> + <div class="entry-content"> + ${item.description || ''} + </div> + `; + + // Add event listeners programmatically to avoid inline onclick with modules + const starBtn = article.querySelector('.btn-star'); + starBtn.onclick = () => toggleStar(item.id, item.starred, starBtn); + + const readBtn = article.querySelector('.btn-read'); + readBtn.onclick = () => toggleRead(item.id, item.read, readBtn); + + list.appendChild(article); + }); +} + +export async function toggleStar(id, currentStatus, btn, apiBase = '') { + const newStatus = !currentStatus; + try { + const response = await fetch(`${apiBase}/api/item/${id}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ id: id, starred: newStatus }) + }); + if (!response.ok) throw new Error('Failed to toggle star'); + + // Update UI + btn.textContent = newStatus ? '★' : '☆'; + btn.classList.toggle('active'); + btn.onclick = () => toggleStar(id, newStatus, btn, apiBase); + + // Update data attributes + btn.dataset.starred = newStatus; + + return newStatus; + } catch (err) { + console.error(err); + alert('Error toggling star'); + throw err; + } +} + +export async function toggleRead(id, currentStatus, btn, apiBase = '') { + const newStatus = !currentStatus; + try { + const response = await fetch(`${apiBase}/api/item/${id}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ id: id, read: newStatus }) + }); + if (!response.ok) throw new Error('Failed to toggle read'); + + // Update UI + btn.textContent = newStatus ? 'Mark Unread' : 'Mark Read'; + btn.classList.toggle('read'); + btn.classList.toggle('unread'); + btn.onclick = () => toggleRead(id, newStatus, btn, apiBase); + + // Update data attributes + btn.dataset.read = newStatus; + + // Find title and dim it if read + const header = btn.closest('.entry-header'); + if (header) { + const title = header.querySelector('.entry-title'); + if (title) { + if (newStatus) { + title.classList.add('read'); + } else { + title.classList.remove('read'); + } + } + } + + return newStatus; + } catch (err) { + console.error(err); + alert('Error toggling read status'); + throw err; + } +} + +export function init() { + if (typeof document !== 'undefined') { + // Only run if we're in a browser environment with these elements + if (document.getElementById('feeds-nav')) { + fetchFeeds(); + fetchItems(); + + const searchInput = document.getElementById('search-input'); + if (searchInput) { + searchInput.addEventListener('keypress', (e) => { + if (e.key === 'Enter') { + const query = searchInput.value.trim(); + if (query) { + const title = document.getElementById('feed-title'); + if (title) title.textContent = `Search: ${query}`; + document.querySelectorAll('.feed-item').forEach(el => el.classList.remove('active')); + fetchItems(null, null, query); + } + } + }); + } + } + } +} diff --git a/dist/vanilla/index.html b/dist/vanilla/index.html new file mode 100644 index 0000000..c504f6f --- /dev/null +++ b/dist/vanilla/index.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Neko Reader (Vanilla)</title> + <link rel="stylesheet" href="style.css"> + <style> + /* Minimal reset for now, proper styles in style.css */ + body, + html { + margin: 0; + padding: 0; + height: 100%; + font-family: sans-serif; + } + </style> +</head> + +<body> + <div id="app"> + <aside id="sidebar"> + <header> + <h1>🐱 Neko</h1> + </header> + <nav id="feeds-nav"> + <div class="search-container"> + <input type="text" id="search-input" placeholder="Search items..." /> + </div> + <div class="loading">Loading feeds...</div> + </nav> + </aside> + <main id="main"> + <header id="main-header"> + <h2 id="feed-title">All Items</h2> + </header> + <div id="entries-list"> + <div class="loading">Loading items...</div> + </div> + </main> + </div> + <script type="module"> + import { init } from './app.js'; + document.addEventListener('DOMContentLoaded', init); + </script> +</body> + +</html>
\ No newline at end of file diff --git a/dist/vanilla/style.css b/dist/vanilla/style.css new file mode 100644 index 0000000..573248d --- /dev/null +++ b/dist/vanilla/style.css @@ -0,0 +1,173 @@ +:root { + --bg-color: #f6f6f6; + --sidebar-bg: #eaeaea; + --item-bg: #fff; + --text-color: #222; + --link-color: #0000EE; + /* Standard blue link */ + --border-color: #ddd; + --selected-bg: #e8f0fe; +} + +body { + background-color: var(--bg-color); + color: var(--text-color); + overflow: hidden; + /* App container handles scrolling */ +} + +#app { + display: flex; + height: 100vh; +} + +#sidebar { + width: 250px; + background-color: var(--sidebar-bg); + border-right: 1px solid var(--border-color); + display: flex; + flex-direction: column; +} + +#sidebar header { + padding: 1rem; + border-bottom: 1px solid var(--border-color); +} + +#sidebar h1 { + margin: 0; + font-size: 1.2rem; +} + +.search-container { + padding: 0.5rem; + border-bottom: 1px solid var(--border-color); +} + +#search-input { + width: 100%; + padding: 0.5rem; + border: 1px solid var(--border-color); + border-radius: 4px; + box-sizing: border-box; +} + +#feeds-nav { + flex: 1; + overflow-y: auto; + padding: 0.5rem; +} + +.feed-item { + padding: 0.5rem; + cursor: pointer; + border-radius: 4px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.feed-item:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +.feed-item.active { + font-weight: bold; + background-color: rgba(0, 0, 0, 0.1); +} + +#main { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; + background-color: #fff; +} + +#main-header { + padding: 1rem; + border-bottom: 1px solid var(--border-color); + background-color: #fcfcfc; +} + +#main-header h2 { + margin: 0; + font-size: 1.5rem; +} + +#entries-list { + flex: 1; + overflow-y: auto; + padding: 1rem; +} + +.entry { + background-color: var(--item-bg); + border-bottom: 1px solid var(--border-color); + padding: 1rem 0; +} + +.entry-header { + margin-bottom: 0.5rem; + position: relative; + padding-left: 0; +} + +.entry-controls { + display: inline-block; + vertical-align: middle; + margin-right: 0.5rem; +} + +.btn-star, +.btn-read { + background: none; + border: none; + cursor: pointer; + font-size: 1rem; + padding: 2px 4px; + margin-right: 4px; + color: #ccc; +} + +.btn-star.active { + color: orange; +} + +.btn-star:hover, +.btn-read:hover { + color: #888; +} + +.entry-title { + font-size: 1.2rem; + font-weight: bold; + color: var(--link-color); + text-decoration: none; + display: inline-block; + /* Changed to inline-block for alignment */ + vertical-align: middle; + margin-bottom: 0.25rem; +} + +.entry-title.read { + font-weight: normal; + color: #555; + text-decoration: none; +} + +.entry-meta { + font-size: 0.85rem; + color: #666; + margin-top: 4px; +} + +.entry-content { + line-height: 1.6; + max-width: 800px; +} + +.entry-content img { + max-width: 100%; + height: auto; +}
\ No newline at end of file diff --git a/tui/style.go b/tui/style.go deleted file mode 100644 index 0fbfa5a..0000000 --- a/tui/style.go +++ /dev/null @@ -1,52 +0,0 @@ -package tui - -import "github.com/charmbracelet/lipgloss" - -var ( - // Colors - maroon = lipgloss.Color("#800000") - lavender = lipgloss.Color("#E6E6FA") - gray = lipgloss.Color("#808080") - darkGray = lipgloss.Color("#404040") - - // Styles - TitleStyle = lipgloss.NewStyle(). - Bold(true). - Foreground(lavender). - Background(maroon). - Padding(0, 1) - - ListStyle = lipgloss.NewStyle(). - Padding(1, 2) - - SelectedItemStyle = lipgloss.NewStyle(). - PaddingLeft(2). - Foreground(lavender). - Background(darkGray). - Bold(true) - - ItemStyle = lipgloss.NewStyle(). - PaddingLeft(2) - - HeaderStyle = lipgloss.NewStyle(). - Bold(true). - Foreground(maroon). - MarginBottom(1) - - ContentStyle = lipgloss.NewStyle(). - Padding(1, 4) - - StatusStyle = lipgloss.NewStyle(). - Foreground(gray). - Italic(true). - MarginTop(1) - - // Layout Styles - PaneStyle = lipgloss.NewStyle(). - Border(lipgloss.RoundedBorder()). - BorderForeground(gray). - Padding(0, 1) - - ActivePaneStyle = PaneStyle.Copy(). - BorderForeground(maroon) -) diff --git a/tui/tui.go b/tui/tui.go deleted file mode 100644 index 4a6f2be..0000000 --- a/tui/tui.go +++ /dev/null @@ -1,318 +0,0 @@ -package tui - -import ( - "fmt" - - "adammathes.com/neko/models/feed" - "adammathes.com/neko/models/item" - "github.com/charmbracelet/bubbles/list" - "github.com/charmbracelet/bubbles/viewport" - tea "github.com/charmbracelet/bubbletea" - "github.com/charmbracelet/lipgloss" -) - -type sessionState int - -const ( - sidebarFocus sessionState = iota - itemFocus - contentFocus -) - -// itemString implements list.Item -type itemString string - -func (i itemString) FilterValue() string { return string(i) } - -type Model struct { - state sessionState - sidebar list.Model - items list.Model - content viewport.Model - - feedData []*feed.Feed - itemData []*item.Item - - selectedFeed *feed.Feed - selectedItem *item.Item - - width int - height int - err error - - ready bool -} - -func NewModel() Model { - // sidebar - s := list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0) - s.Title = "Feeds" - s.SetShowHelp(false) - s.DisableQuitKeybindings() - - // items - i := list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0) - i.Title = "Items" - i.SetShowHelp(false) - i.DisableQuitKeybindings() - - return Model{ - state: sidebarFocus, - sidebar: s, - items: i, - content: viewport.New(0, 0), - } -} - -func (m Model) Init() tea.Cmd { - return loadFeeds -} - -type ( - feedsMsg []*feed.Feed - itemsMsg []*item.Item - errMsg error -) - -const ( - SpecialFeedAllId = -100 - SpecialFeedUnreadId = -101 - SpecialFeedStarredId = -102 -) - -func loadFeeds() tea.Msg { - feeds, err := feed.All() - if err != nil { - return errMsg(err) - } - special := []*feed.Feed{ - {Id: SpecialFeedUnreadId, Title: "Unread"}, - {Id: SpecialFeedAllId, Title: "All"}, - {Id: SpecialFeedStarredId, Title: "Starred"}, - } - return feedsMsg(append(special, feeds...)) -} - -func loadItems(feedID int64) tea.Cmd { - return func() tea.Msg { - var items []*item.Item - var err error - - switch feedID { - case SpecialFeedAllId: - items, err = item.Filter(0, 0, "", false, false, 0, "") - case SpecialFeedUnreadId: - items, err = item.Filter(0, 0, "", true, false, 0, "") - case SpecialFeedStarredId: - items, err = item.Filter(0, 0, "", false, true, 0, "") - default: - items, err = item.Filter(0, feedID, "", false, false, 0, "") - } - - if err != nil { - return errMsg(err) - } - return itemsMsg(items) - } -} - -func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { - var cmd tea.Cmd - var cmds []tea.Cmd - - switch msg := msg.(type) { - case tea.WindowSizeMsg: - m.width = msg.Width - m.height = msg.Height - m.ready = true - - // Layout: Sidebar 30%, Main 70% - sidebarWidth := int(float64(m.width) * 0.3) - mainWidth := m.width - sidebarWidth - 4 // minus borders/padding - - m.sidebar.SetSize(sidebarWidth, m.height-2) - m.items.SetSize(mainWidth, m.height-2) - m.content.Width = mainWidth - m.content.Height = m.height - 4 - - case feedsMsg: - m.feedData = msg - items := make([]list.Item, len(m.feedData)) - for i, f := range m.feedData { - items[i] = itemString(f.Title) - } - m.sidebar.SetItems(items) - - case itemsMsg: - m.itemData = msg - m.updateListItems() - // Switch focus to items when loaded? - // Maybe keep focus where it was, or auto-switch - // User expectation: Enter on feed -> focus items - // But loadItems is async. - // Let's rely on explicit focus switch or handle it here if intent was "select feed". - // For now, let's keep focus as is, but if we just selected a feed, maybe we are still in sidebar. - // Actually, standard TUI behavior: Enter on sidebar -> focus items. - if m.state == sidebarFocus { - m.state = itemFocus - } - - case errMsg: - m.err = msg - return m, tea.Quit - - case tea.KeyMsg: - switch msg.String() { - case "ctrl+c", "q": - if m.state == contentFocus { - m.state = itemFocus - return m, nil - } - return m, tea.Quit - - case "tab": - if m.state == sidebarFocus { - m.state = itemFocus - } else if m.state == itemFocus { - m.state = sidebarFocus - } - return m, nil - - case "esc": - if m.state == contentFocus { - m.state = itemFocus - return m, nil - } - if m.state == itemFocus { - m.state = sidebarFocus - return m, nil - } - - case "s": - if m.state == itemFocus || m.state == contentFocus { - if m.selectedItem != nil { - m.selectedItem.Starred = !m.selectedItem.Starred - m.selectedItem.Save() - m.updateListItems() - } - } - - case "m", "r": - if m.state == itemFocus || m.state == contentFocus { - if m.selectedItem != nil { - m.selectedItem.ReadState = !m.selectedItem.ReadState - m.selectedItem.Save() - m.updateListItems() - } - } - - case "o": - if m.selectedItem != nil { - _ = openUrl(m.selectedItem.Url) - } - - case "enter": - if m.state == sidebarFocus { - idx := m.sidebar.Index() - if idx >= 0 && idx < len(m.feedData) { - m.selectedFeed = m.feedData[idx] - return m, loadItems(m.selectedFeed.Id) - } - } else if m.state == itemFocus { - idx := m.items.Index() - if idx >= 0 && idx < len(m.itemData) { - m.selectedItem = m.itemData[idx] - // Mark as read when opening - if !m.selectedItem.ReadState { - m.selectedItem.ReadState = true - m.selectedItem.Save() - m.updateListItems() - } - - formattedContent := fmt.Sprintf("%s\n\n%s", - HeaderStyle.Render(m.selectedItem.Title), - m.selectedItem.Description) - m.content.SetContent(formattedContent) - m.content.YPosition = 0 - m.state = contentFocus - } - } - } - } - - // Route messages to components based on focus - if m.state == sidebarFocus { - m.sidebar, cmd = m.sidebar.Update(msg) - cmds = append(cmds, cmd) - } else if m.state == itemFocus { - m.items, cmd = m.items.Update(msg) - cmds = append(cmds, cmd) - } else if m.state == contentFocus { - m.content, cmd = m.content.Update(msg) - cmds = append(cmds, cmd) - } - - return m, tea.Batch(cmds...) -} - -func (m *Model) updateListItems() { - if len(m.itemData) == 0 { - return - } - items := make([]list.Item, len(m.itemData)) - for i, it := range m.itemData { - title := it.Title - if it.Starred { - title = "★ " + title - } - if !it.ReadState { - title = "● " + title - } - items[i] = itemString(title) - } - m.items.SetItems(items) -} - -func openUrl(url string) error { - // Simple xdg-open wrapper, ignored for now or use exec - return nil -} - -func (m Model) View() string { - if m.err != nil { - return fmt.Sprintf("Error: %v", m.err) - } - if !m.ready { - return "Initializing..." - } - - var sidebarView, mainView string - - // Render Sidebar - if m.state == sidebarFocus { - sidebarView = ActivePaneStyle.Render(m.sidebar.View()) - } else { - sidebarView = PaneStyle.Render(m.sidebar.View()) - } - - // Render Main Area (Item List or Content) - if m.state == contentFocus { - mainView = ActivePaneStyle.Render(m.content.View()) - } else { - if m.state == itemFocus { - mainView = ActivePaneStyle.Render(m.items.View()) - } else { - mainView = PaneStyle.Render(m.items.View()) - } - } - - return lipgloss.JoinHorizontal(lipgloss.Top, sidebarView, mainView) -} - -func Run() error { - p := tea.NewProgram(NewModel(), tea.WithAltScreen()) - if _, err := p.Run(); err != nil { - return err - } - return nil -} diff --git a/tui/tui_test.go b/tui/tui_test.go deleted file mode 100644 index d2d2e5f..0000000 --- a/tui/tui_test.go +++ /dev/null @@ -1,184 +0,0 @@ -package tui - -import ( - "fmt" - "path/filepath" - "strings" - "testing" - - "adammathes.com/neko/config" - "adammathes.com/neko/models" - "adammathes.com/neko/models/feed" - "adammathes.com/neko/models/item" - tea "github.com/charmbracelet/bubbletea" -) - -func setupTestDB(t *testing.T) { - t.Helper() - config.Config.DBFile = filepath.Join(t.TempDir(), "test.db") - models.InitDB() - t.Cleanup(func() { - if models.DB != nil { - models.DB.Close() - } - }) -} - -func seedData(t *testing.T) { - t.Helper() - f := &feed.Feed{Url: "http://example.com", Title: "Test Feed", Category: "tech"} - f.Create() - - i := &item.Item{ - Title: "Test Item", - Url: "http://example.com/1", - FeedId: f.Id, - } - i.Create() -} - -func TestNewModel(t *testing.T) { - m := NewModel() - if m.state != sidebarFocus { - t.Errorf("Expected initial state sidebarFocus, got %v", m.state) - } -} - -func TestUpdateWindowSizeNoPanic(t *testing.T) { - m := NewModel() - msg := tea.WindowSizeMsg{Width: 80, Height: 24} - newModel, _ := m.Update(msg) - tm := newModel.(Model) - if tm.width != 80 || tm.height != 24 { - t.Errorf("Expected size 80x24, got %dx%d", tm.width, tm.height) - } - if !tm.ready { - t.Error("Model should be ready after WindowSizeMsg") - } -} - -func TestStateTransitions(t *testing.T) { - setupTestDB(t) - m := NewModel() - m1, _ := m.Update(tea.WindowSizeMsg{Width: 80, Height: 24}) - m = m1.(Model) - - // Feed loaded - feeds := []*feed.Feed{{Id: 1, Title: "Test Feed"}} - m2, _ := m.Update(feedsMsg(feeds)) - tm2 := m2.(Model) - if len(tm2.feedData) != 1 { - t.Fatal("Expected 1 feed") - } - - // Items loaded - items := []*item.Item{{Id: 1, Title: "Test Item", Description: "Desc"}} - // Simulate switching to item focus via Enter (which triggers loadItems) - // But explicitly setting state for unit test - tm2.state = sidebarFocus // Ensure we are in sidebar - // Update with itemsMsg - m3, _ := tm2.Update(itemsMsg(items)) - tm3 := m3.(Model) - - // In the new implementation, loading items doesn't auto-switch focus unless logic says so. - // But let's check if the items are populated. - if len(tm3.itemData) != 1 { - t.Fatal("Expected 1 item") - } - - // Manually switch focus to items (simulating Tab or logic) - tm3.state = itemFocus - - // Test entering content view - // Needs selection first. In unit test, list selection might be 0 by default but items need to be set in list model. - // The list model update happens in Update command usually, but here we just updated data. - // We need to sync list items. - // In Update(itemsMsg), we do `m.items.SetItems(...)`. So list should have items. - - // Select item 0 - tm3.items.Select(0) - - m4, _ := tm3.Update(tea.KeyMsg{Type: tea.KeyEnter}) - tm4m := m4.(Model) - if tm4m.state != contentFocus { - t.Errorf("Expected state contentFocus, got %v", tm4m.state) - } - if !strings.Contains(tm4m.content.View(), "Test Item") { - t.Error("Expected content view to show item title") - } - - // Back from content to items - m5, _ := tm4m.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune("q")}) - tm5m := m5.(Model) - if tm5m.state != itemFocus { - t.Errorf("Expected back to itemFocus, got %v", tm5m.state) - } -} - -func TestTuiCommands(t *testing.T) { - setupTestDB(t) - seedData(t) - - m := NewModel() - cmd := m.Init() - if cmd == nil { - t.Fatal("Init should return a command") - } - - msg := loadFeeds() - feeds, ok := msg.(feedsMsg) - if !ok || len(feeds) == 0 { - t.Errorf("loadFeeds should return feedsMsg, got %T", msg) - } - - msg2 := loadItems(feeds[0].Id)() - _, ok = msg2.(itemsMsg) - if !ok { - t.Errorf("loadItems should return itemsMsg, got %T", msg2) - } -} - -func TestUpdateError(t *testing.T) { - m := NewModel() - msg := errMsg(fmt.Errorf("test error")) - newModel, cmd := m.Update(msg) - tm := newModel.(Model) - if tm.err == nil { - t.Error("Expected error to be set in model") - } - if cmd == nil { - t.Error("Expected tea.Quit command (non-nil)") - } -} - -func TestSwitchFocus(t *testing.T) { - m := NewModel() - m.state = sidebarFocus - - // Tab to switch - m1, _ := m.Update(tea.KeyMsg{Type: tea.KeyTab}) - if m1.(Model).state != itemFocus { - t.Error("Tab from sidebar should go to itemFocus") - } - - m2, _ := m1.Update(tea.KeyMsg{Type: tea.KeyTab}) - if m2.(Model).state != sidebarFocus { - t.Error("Tab from itemFocus should go back to sidebarFocus") - } -} - -func TestView(t *testing.T) { - m := NewModel() - // Trigger WindowSizeMsg to make it ready and size components - m1, _ := m.Update(tea.WindowSizeMsg{Width: 80, Height: 24}) - tm := m1.(Model) - - v := tm.View() - // It should render "Feeds" and "Items" (titles of lists) - if !strings.Contains(v, "Feeds") { - t.Error("View should contain Feeds") - } - if !strings.Contains(v, "Items") { - t.Error("View should contain Items") - } -} @@ -40,14 +40,14 @@ func init() { log.Printf("Warning: Could not find staticBox at ../static: %v", err) } - frontendBox, err = rice.FindBox("../frontend/dist") + frontendBox, err = rice.FindBox("../dist/v2") if err != nil { - log.Printf("Warning: Could not find frontendBox at ../frontend/dist: %v", err) + log.Printf("Warning: Could not find frontendBox at ../dist/v2: %v", err) } - vanillaBox, err = rice.FindBox("../vanilla") + vanillaBox, err = rice.FindBox("../dist/vanilla") if err != nil { - log.Printf("Warning: Could not find vanillaBox at ../vanilla: %v", err) + log.Printf("Warning: Could not find vanillaBox at ../dist/vanilla: %v", err) } } |
