diff --git a/suites-experimental/social-network/.gitignore b/suites-experimental/social-network/.gitignore new file mode 100644 index 000000000..994970872 --- /dev/null +++ b/suites-experimental/social-network/.gitignore @@ -0,0 +1,19 @@ +node_modules + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +pnpm-debug.log* + +# dist-ssr / local +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.sw? diff --git a/suites-experimental/social-network/README.md b/suites-experimental/social-network/README.md new file mode 100644 index 000000000..76f2b17a2 --- /dev/null +++ b/suites-experimental/social-network/README.md @@ -0,0 +1,94 @@ +## Description + +Social feeds are among the most used pages on the web. A reader scrolls a long, +virtualized list of rich stories, opens one to read its comments, types a reply, +visits a profile and goes back, and searches, all on a page that also runs a +lot of instrumentation: every callback is wrapped, every interaction is timed, +and a steady stream of analytics events is batched, compressed and sent. + +This workload is an original, self-contained React 19 app built to reproduce +that mix. It was modeled on the kind of work a large production feed does, +measured from the outside with performance traces, and is **not** derived from +any existing product's source code. It ships no third-party assets: all names, +text and pictures are generated or written for it. + +## What are we testing + +- React reconciliation of deep, many-component stories, mounting and + unmounting as a virtualized feed scrolls, with layout effects that measure + each unit. Stories, comment threads, the post dialog and the menus are sized + after a large production feed: a few hundred elements per story, and a + dialog that grows from about a thousand to about four thousand elements +- A normalized client cache fed by streamed, chunked responses with deferred + fragments. Components read it through fragments: each declares the fields + it renders and receives masked references for its children, every publish + re-reads the subscriptions that touched a changed record and keeps the + identity of unchanged data, and released queries are garbage collected +- A design-system layer: every box, text run, link, image and control is a + component that reads theme, logging surface and route from context, keeps + its own interaction state, and registers with interaction and + visual-completion trackers, so a page runs about two hooks per element +- A home page kept mounted inside `` while the profile is shown, so + leaving it tears down its effects and returning reconnects them, re-checks + its cached data and restores its scroll position +- Component and event interception through the app's JSX runtime: every + component render is tracked and every event handler is wrapped, so an + interaction can be attributed to the component that rendered it +- ICU-style message formatting (plurals, selects, numbers) for every UI + string, at render time +- A typo-tolerant typeahead index over a large bootstrap payload: prefix + lookup over sorted terms, bounded edit distance, and ranking by rarity, + match quality and affinity +- A modal layer that makes the page underneath inert while it is open, and + comment drafts that outlive the dialog and show up in the feed +- Transitions for page navigation, and synchronous scroll-driven updates + (`flushSync`) for the feed window +- Forced layout from viewability checks (`getBoundingClientRect`, + `elementFromPoint`), auto-growing text areas and scroll-depth tracking +- Analytics work: error-guard wrappers, event enrichment, sampling, batching, + LZW compression and checksums, User Timing marks and feature-gate exposures +- Many small atomic CSS classes per element (Tailwind), masked SVG avatars + and generated SVG photos + +## How are we testing + +All content is generated deterministically at load time from fixed seeds (no +`Math.random`, no `Date.now`). An in-page server answers each query with +GraphQL-shaped JSON split into chunks, delivered one task apiece through a +`MessageChannel`, so every iteration renders identical data without a network. + +The app fires a window event when the result of an interaction has committed +(`feed-page-loaded`, `post-dialog-ready`, `search-results`, …), and the steps +wait on those instead of on timers. + +- `RefreshHomeFeed`: clicks Home while on the home page, which refetches the + stories tray, rails and badges, fetches a new ranking and remounts the feed. +- `LoadMoreStories`: reads down the feed one story at a time, loading the next + page whenever the end comes into range. +- `ExpandStoryTexts`: scrolls back to the top, expanding every truncated story. +- `OpenPostDialog`: opens a busy thread in the post dialog. +- `ExpandCommentReplies`: expands every reply thread on the first page, + following "more replies" until each thread is fully shown. +- `ChangeCommentOrder`: switches the comment order to "All comments". +- `LoadMoreComments`: scrolls the dialog to load more pages of comments. +- `TypeComment`: types a comment key by key, with a mention typeahead, + emoticon replacement and highlighting. +- `VisitOwnProfile`: closes the dialog, which saves the draft and hands the + feed back its focus and viewability, navigates to the viewer's profile and + scrolls through it, then returns to the home feed, which stays mounted while + hidden and comes back at its old position. +- `SearchTypeahead`: types a name into search; each key filters the local + index and asks the server. +- `OpenHeaderMenus`: opens and closes the menu, chats, notifications and + account popovers. + +## Developer Documentation + +The app was created with Vite + React 19 and Tailwind CSS. It can be previewed +during development with `npm run dev`. To update the files run in the harness +you have to run `npm run build`, which regenerates the committed `dist/` +directory. + +The built workload can be loaded within the harness at e.g. +`http://localhost:8080/?developerMode&suites=SocialNetwork-React`, or directly at +`http://localhost:8080/suites-experimental/social-network/dist/index.html`. diff --git a/suites-experimental/social-network/dist/assets/index.css b/suites-experimental/social-network/dist/assets/index.css new file mode 100644 index 000000000..8a7123c48 --- /dev/null +++ b/suites-experimental/social-network/dist/assets/index.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-inset-0\.5{top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.-bottom-1{bottom:-.25rem}.-bottom-2\.5{bottom:-.625rem}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-3{bottom:.75rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.top-10{top:2.5rem}.top-12{top:3rem}.top-2{top:.5rem}.top-\[134px\]{top:134px}.top-\[80px\]{top:80px}.top-\[84px\]{top:84px}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.row-span-2{grid-row:span 2 / span 2}.m-1{margin:.25rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.-mt-12{margin-top:-3rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-1{margin-left:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-\[1\.91\/1\]{aspect-ratio:1.91/1}.aspect-square{aspect-ratio:1 / 1}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-3{height:.75rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[120px\]{height:120px}.h-\[150px\]{height:150px}.h-\[200px\]{height:200px}.h-\[220px\]{height:220px}.h-\[90px\]{height:90px}.h-\[calc\(100\%-32px\)\]{height:calc(100% - 32px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[140px\]{max-height:140px}.max-h-\[200px\]{max-height:200px}.max-h-\[420px\]{max-height:420px}.max-h-\[440px\]{max-height:440px}.max-h-\[460px\]{max-height:460px}.max-h-\[480px\]{max-height:480px}.min-h-0{min-height:0px}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-3{width:.75rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[112px\]{width:112px}.w-\[120px\]{width:120px}.w-\[150px\]{width:150px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[232px\]{width:232px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[320px\]{width:320px}.w-\[360px\]{width:360px}.w-\[560px\]{width:560px}.w-\[90px\]{width:90px}.w-\[calc\(100\%-8px\)\]{width:calc(100% - 8px)}.w-\[min\(700px\,calc\(100\%-32px\)\)\]{width:min(700px,calc(100% - 32px))}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[19px\]{min-width:19px}.max-w-\[500px\]{max-width:500px}.max-w-\[740px\]{max-width:740px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[300px_1fr\]{grid-template-columns:300px 1fr}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.25rem * var(--tw-space-x-reverse));margin-left:calc(-.25rem * calc(1 - var(--tw-space-x-reverse)))}.-space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.375rem * var(--tw-space-x-reverse));margin-left:calc(-.375rem * calc(1 - var(--tw-space-x-reverse)))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.5rem * var(--tw-space-x-reverse));margin-left:calc(-.5rem * calc(1 - var(--tw-space-x-reverse)))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[30px\]{border-radius:30px}.rounded-\[36px\]{border-radius:36px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-divider{border-color:var(--divider)}.border-surface{border-color:var(--surface)}.bg-accent{background-color:var(--accent)}.bg-accent-soft{background-color:var(--accent-soft)}.bg-badge-blue{background-color:var(--badge-blue)}.bg-badge-green{background-color:var(--badge-green)}.bg-badge-pink{background-color:var(--badge-pink)}.bg-badge-purple{background-color:var(--badge-purple)}.bg-badge-red{background-color:var(--badge-red)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-canvas{background-color:var(--canvas)}.bg-glimmer{background-color:var(--glimmer)}.bg-hover{background-color:var(--hover)}.bg-reaction-care{background-color:var(--reaction-care)}.bg-reaction-like{background-color:var(--reaction-like)}.bg-reaction-love{background-color:var(--reaction-love)}.bg-reaction-warm{background-color:var(--reaction-warm)}.bg-scrim{background-color:var(--scrim)}.bg-surface{background-color:var(--surface)}.bg-surface-alt{background-color:var(--surface-alt)}.bg-transparent{background-color:transparent}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-black\/70{--tw-gradient-from: rgb(0 0 0 / .7) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.fill-none{fill:none}.fill-online{fill:var(--online)}.stroke-accent{stroke:var(--accent)}.stroke-black\/10{stroke:#0000001a}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-0\.5{padding-left:.125rem}.pl-3{padding-left:.75rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-\[-0\.15em\]{vertical-align:-.15em}.font-sans{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[1\.15em\]{font-size:1.15em}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[28px\]{font-size:28px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.ordinal{--tw-ordinal: ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-8{line-height:2rem}.leading-\[19px\]{line-height:19px}.leading-none{line-height:1}.text-accent{color:var(--accent)}.text-badge-blue{color:var(--badge-blue)}.text-badge-green{color:var(--badge-green)}.text-badge-purple{color:var(--badge-purple)}.text-link{color:var(--link)}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.decoration-1{text-decoration-thickness:1px}.underline-offset-2{text-underline-offset:2px}.caret-primary{caret-color:var(--text-primary)}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-5{opacity:.05}.shadow-card,.shadow-header{--tw-shadow: 0 1px 2px var(--shadow);--tw-shadow-colored: 0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-popover{--tw-shadow: 0 12px 28px 0 var(--shadow-strong), 0 2px 4px 0 var(--shadow);--tw-shadow-colored: 0 12px 28px 0 var(--tw-shadow-color), 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-accent{--tw-ring-color: var(--accent)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.\[overflow-anchor\:none\]{overflow-anchor:none}:root{--canvas: #f2f1ee;--surface: #ffffff;--surface-alt: #eeede9;--text-primary: #1d1b19;--text-secondary: #67625c;--divider: #dedbd5;--hover: rgba(0, 0, 0, .05);--accent: #2f7d6d;--accent-soft: #dcefe9;--link: #1f6b5c;--glimmer: #e4e2dd;--online: #31a24c;--scrim: rgba(250, 249, 246, .82);--shadow: rgba(0, 0, 0, .12);--shadow-strong: rgba(0, 0, 0, .18);--badge-red: #d9443c;--badge-green: #3a9b5d;--badge-blue: #3d78c4;--badge-pink: #d4537e;--badge-purple: #8358c2;--reaction-like: #3d78c4;--reaction-love: #e0475b;--reaction-care: #f2b33d;--reaction-warm: #f2b33d}html,body,#root{height:100%}body{margin:0;overflow:hidden;-webkit-font-smoothing:antialiased}.emoji{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.placeholder\:text-secondary::-moz-placeholder{color:var(--text-secondary)}.placeholder\:text-secondary::placeholder{color:var(--text-secondary)}.last\:border-0:last-child{border-width:0px}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-hover:hover{background-color:var(--hover)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-10:hover{opacity:.1}.hover\:brightness-95:hover{--tw-brightness: brightness(.95);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.group\/bubble:hover .group-hover\/bubble\:opacity-100{opacity:1} diff --git a/suites-experimental/social-network/dist/assets/index.js b/suites-experimental/social-network/dist/assets/index.js new file mode 100644 index 000000000..7902c01c6 --- /dev/null +++ b/suites-experimental/social-network/dist/assets/index.js @@ -0,0 +1,57 @@ +var Ly=Object.defineProperty;var jy=(e,t,l)=>t in e?Ly(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l;var no=(e,t,l)=>(jy(e,typeof t!="symbol"?t+"":t,l),l);var fh={exports:{}},Nc={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Yy=Symbol.for("react.transitional.element"),Gy=Symbol.for("react.fragment");function dh(e,t,l){var n=null;if(l!==void 0&&(n=""+l),t.key!==void 0&&(n=""+t.key),"key"in t){l={};for(var a in t)a!=="key"&&(l[a]=t[a])}else l=t;return t=l.ref,{$$typeof:Yy,type:e,key:n,ref:t!==void 0?t:null,props:l}}Nc.Fragment=Gy;Nc.jsx=dh;Nc.jsxs=dh;fh.exports=Nc;var Rt=fh.exports,mh={exports:{}},B={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ps=Symbol.for("react.transitional.element"),ky=Symbol.for("react.portal"),Qy=Symbol.for("react.fragment"),Zy=Symbol.for("react.strict_mode"),Vy=Symbol.for("react.profiler"),Xy=Symbol.for("react.consumer"),$y=Symbol.for("react.context"),Ky=Symbol.for("react.forward_ref"),Jy=Symbol.for("react.suspense"),Fy=Symbol.for("react.memo"),hh=Symbol.for("react.lazy"),Wy=Symbol.for("react.activity"),Iy=Symbol.for("react.view_transition"),Lf=Symbol.iterator;function Py(e){return e===null||typeof e!="object"?null:(e=Lf&&e[Lf]||e["@@iterator"],typeof e=="function"?e:null)}var gh={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},yh=Object.assign,ph={};function Ea(e,t,l){this.props=e,this.context=t,this.refs=ph,this.updater=l||gh}Ea.prototype.isReactComponent={};Ea.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=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,e,t,"setState")};Ea.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function vh(){}vh.prototype=Ea.prototype;function vs(e,t,l){this.props=e,this.context=t,this.refs=ph,this.updater=l||gh}var bs=vs.prototype=new vh;bs.constructor=vs;yh(bs,Ea.prototype);bs.isPureReactComponent=!0;var jf=Array.isArray;function Zo(){}var se={H:null,A:null,T:null,S:null},bh=Object.prototype.hasOwnProperty;function _s(e,t,l){var n=l.ref;return{$$typeof:ps,type:e,key:t,ref:n!==void 0?n:null,props:l}}function ep(e,t){return _s(e.type,t,e.props)}function Ss(e){return typeof e=="object"&&e!==null&&e.$$typeof===ps}function tp(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(l){return t[l]})}var Yf=/\/+/g;function ao(e,t){return typeof e=="object"&&e!==null&&e.key!=null?tp(""+e.key):t.toString(36)}function lp(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Zo,Zo):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function On(e,t,l,n,a){var u=typeof e;(u==="undefined"||u==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(u){case"bigint":case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case ps:case ky:i=!0;break;case hh:return i=e._init,On(i(e._payload),t,l,n,a)}}if(i)return a=a(e),i=n===""?"."+ao(e,0):n,jf(a)?(l="",i!=null&&(l=i.replace(Yf,"$&/")+"/"),On(a,t,l,"",function(s){return s})):a!=null&&(Ss(a)&&(a=ep(a,l+(a.key==null||e&&e.key===a.key?"":(""+a.key).replace(Yf,"$&/")+"/")+i)),t.push(a)),1;i=0;var c=n===""?".":n+":";if(jf(e))for(var r=0;r"),message:String(a&&a.message),stack:String(a&&a.stack).split(` +`).slice(0,6).join(` +`)}),a}finally{const a=performance.now()-n;Kn.pop(),a>up&&ka&&ka("slow_callback",{context:e,duration:Math.round(a)})}}function ue(e,t){return function(...n){return De(e,t,...n)}}const kf="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";class op{constructor(){this.output=[],this.buffer=0,this.bits=0}write(t,l){for(let n=0;n>>n&1,this.bits++,this.bits===6&&(this.output.push(kf[this.buffer]),this.buffer=0,this.bits=0)}finish(){return this.bits&&this.output.push(kf[this.buffer<<6-this.bits]),this.output.join("")}}function rp(e){if(!e)return"";const t=new Map;let l=65536+1,n=17;const a=new op;let u=e[0];for(let i=1;i=1<>>1:n>>>1;Fu[l]=n>>>0}}let t=4294967295;for(let l=0;l>>8;return(t^4294967295)>>>0}const fp=24,dp=40,mp=3,hp={key_activity:4,scroll_depth:2,store_publish:8},me={seq:0,queue:[],outbox:[],pendingAcks:new Map,sampleCounters:new Map,flushScheduled:!1,context:null,route:"unknown",bytesSent:0,batches:0},gp=new TextEncoder,xh=new MessageChannel;xh.port1.onmessage=e=>De("logger.ack",Sp,e.data);function yp({userId:e,sessionSeed:t}){const l=Intl.DateTimeFormat().resolvedOptions();me.context={app:"commons-web",build:"2026.04.18-r812",user_id:e,session_id:`s${t.toString(36)}`,locale:navigator.language,time_zone:l.timeZone,platform:navigator.platform,user_agent:navigator.userAgent,device_pixel_ratio:window.devicePixelRatio,connection:navigator.connection?navigator.connection.effectiveType:"unknown"},ip(L),L("session_start",{referrer:document.referrer?new URL(document.referrer).origin:""})}function Nh(e){me.route=e}function pp(e){const t=hp[e];if(!t)return!0;const l=(me.sampleCounters.get(e)??0)+1;return me.sampleCounters.set(e,l),l%t===0}function L(e,t={}){pp(e)&&(me.queue.push({name:e,seq:++me.seq,time:Math.round(performance.now()*100)/100,route:me.route,context:cp(),props:t}),me.queue.length>=fp&&Tc("batch"))}function Tc(e){me.flushScheduled||(me.flushScheduled=!0,queueMicrotask(()=>De("logger.flush",Vo,e)))}function vp(e,t){return e.time-t.time||e.seq-t.seq}function Vo(e){if(me.flushScheduled=!1,!me.queue.length)return;const t=me.queue;me.queue=[],t.sort(vp);const l={schema:mp,reason:e,sent_at:Math.round(performance.now()),context:{...me.context,viewport:[window.innerWidth,window.innerHeight],visibility:document.visibilityState,route:me.route},counts:bp(t),events:t},n=JSON.stringify(l),a=rp(n);_p({url:"/ajax/log/batch",method:"POST",headers:{"content-type":"text/plain;charset=UTF-8","x-log-checksum":sp(a).toString(16),"x-log-range":`${t[0].seq}-${t[t.length-1].seq}`,"x-log-raw-length":String(n.length)},body:a})}function bp(e){const t={};for(const l of e)t[l.name]=(t[l.name]??0)+1;return t}function _p(e){const t=gp.encode(e.body),l=++me.batches;me.bytesSent+=t.byteLength,me.outbox.push({id:l,request:e,bytes:t.byteLength}),me.outbox.length>dp&&me.outbox.shift(),me.pendingAcks.set(l,e.headers["x-log-checksum"]),xh.port2.postMessage({id:l,checksum:e.headers["x-log-checksum"]})}function Sp({id:e,checksum:t}){me.pendingAcks.get(e)===t&&me.pendingAcks.delete(e)}const xp=Symbol.for("react.memo"),Qf=new WeakMap,Zf=new WeakMap,Hn=[],Vf=new Map,Np=new Set(["onClick","onKeyDown","onInput","onChange","onFocus","onMouseDown","onPointerDown","onSubmit"]);let Tp=0;function Ep(e){return e.displayName||e.name||"Anonymous"}function Th(e){let t=Qf.get(e);if(t)return t;const l=Ep(e);return t=function(a){Hn.push(l),Vf.set(l,(Vf.get(l)??0)+1);try{return e(a)}finally{Hn.pop()}},t.displayName=l,Qf.set(e,t),t}function Mp(e){var l;let t=Zf.get(e);return t||(t=typeof e.type=="function"&&!((l=e.type.prototype)!=null&&l.isReactComponent)?_.memo(Th(e.type),e.compare):e,Zf.set(e,t)),t}function Eh(e){return typeof e=="function"?e.prototype&&e.prototype.isReactComponent?e:Th(e):e!==null&&typeof e=="object"&&e.$$typeof===xp?Mp(e):e}function Ap(e,t,l,n){const a=Np.has(t);return function(i){if(!a)return De(`${l}.${t}`,e,i);const c={id:++Tp,owner:l,path:n,event:t.slice(2).toLowerCase(),start:performance.now()};try{return De(`${l}.${t}`,e,i)}finally{L("ui_event",{flowlet:c.id,owner:l,path:n,event:c.event,duration:Math.round((performance.now()-c.start)*100)/100})}}}function Mh(e,t){if(typeof e!="string"||t===null)return t;let l=null,n=null;for(const a in t)a.charCodeAt(0)!==111||a.charCodeAt(1)!==110||typeof t[a]!="function"||(l===null&&(l=Hn.length?Hn[Hn.length-1]:"root",n=Hn.slice(-4).join(">")),t[a]=Ap(t[a],a,l,n));return t}function o(e,t,l){return Rt.jsx(Eh(e),Mh(e,t),l)}function b(e,t,l){return Rt.jsxs(Eh(e),Mh(e,t),l)}var Ah={exports:{}},Ec={},Ch={exports:{}},wh={};/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(e){function t(O,Q){var k=O.length;O.push(Q);e:for(;0>>1,Ce=O[be];if(0>>1;bea(lo,k))Ila(Ku,lo)?(O[be]=Ku,O[Il]=k,be=Il):(O[be]=lo,O[$u]=k,be=$u);else if(Ila(Ku,k))O[be]=Ku,O[Il]=k,be=Il;else break e}}return Q}function a(O,Q){var k=O.sortIndex-Q.sortIndex;return k!==0?k:O.id-Q.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var i=Date,c=i.now();e.unstable_now=function(){return i.now()-c}}var r=[],s=[],f=1,p=null,m=3,y=!1,N=!1,E=!1,w=!1,h=typeof setTimeout=="function"?setTimeout:null,d=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;function v(O){for(var Q=l(s);Q!==null;){if(Q.callback===null)n(s);else if(Q.startTime<=O)n(s),Q.sortIndex=Q.expirationTime,t(r,Q);else break;Q=l(s)}}function S(O){if(E=!1,v(O),!N)if(l(r)!==null)N=!0,C||(C=!0,Ht());else{var Q=l(s);Q!==null&&to(S,Q.startTime-O)}}var C=!1,A=-1,z=5,ne=-1;function j(){return w?!0:!(e.unstable_now()-neO&&j());){var be=p.callback;if(typeof be=="function"){p.callback=null,m=p.priorityLevel;var Ce=be(p.expirationTime<=O);if(O=e.unstable_now(),typeof Ce=="function"){p.callback=Ce,v(O),Q=!0;break t}p===l(r)&&n(r),v(O)}else n(r);p=l(r)}if(p!==null)Q=!0;else{var Xu=l(s);Xu!==null&&to(S,Xu.startTime-O),Q=!1}}break e}finally{p=null,m=k,y=!1}Q=void 0}}finally{Q?Ht():C=!1}}}var Ht;if(typeof g=="function")Ht=function(){g(Te)};else if(typeof MessageChannel<"u"){var pl=new MessageChannel,Vu=pl.port2;pl.port1.onmessage=Te,Ht=function(){Vu.postMessage(null)}}else Ht=function(){h(Te,0)};function to(O,Q){A=h(function(){O(e.unstable_now())},Q)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(O){O.callback=null},e.unstable_forceFrameRate=function(O){0>O||125be?(O.sortIndex=k,t(s,O),l(r)===null&&O===l(s)&&(E?(d(A),A=-1):E=!0,to(S,k-be))):(O.sortIndex=Ce,t(r,O),N||y||(N=!0,C||(C=!0,Ht()))),O},e.unstable_shouldYield=j,e.unstable_wrapCallback=function(O){var Q=m;return function(){var k=m;m=Q;try{return O.apply(this,arguments)}finally{m=k}}}})(wh);Ch.exports=wh;var Cp=Ch.exports,zh={exports:{}},Xe={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wp=_;function Oh(e){var t="https://react.dev/errors/"+e;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Rh)}catch(e){console.error(e)}}Rh(),zh.exports=Xe;var Dh=zh.exports;/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ae=Cp,Uh=_,Dp=Dh;function x(e){var t="https://react.dev/errors/"+e;if(1Ln||(e.current=er[Ln],er[Ln]=null,Ln--)}function fe(e,t){Ln++,er[Ln]=e.current,e.current=t}var Wt=el(null),su=el(null),Rl=el(null),qi=el(null);function Li(e,t){switch(fe(Rl,t),fe(su,e),fe(Wt,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?rm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=rm(t),e=s1(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Le(Wt),fe(Wt,e)}function sa(){Le(Wt),Le(su),Le(Rl)}function tr(e){var t=e.memoizedState;t!==null&&(_a._currentValue=t.memoizedState,fe(qi,e)),t=Wt.current;var l=s1(t,e.type);t!==l&&(fe(su,e),fe(Wt,l))}function ji(e){su.current===e&&(Le(Wt),Le(su)),qi.current===e&&(Le(qi),_a._currentValue=cn)}var uo,Wf;function _l(e){if(uo===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);uo=t&&t[1]||"",Wf=-1)":-1a||r[n]!==s[a]){var f=` +`+r[n].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=n&&0<=a);break}}}finally{io=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?_l(l):""}function kp(e,t){switch(e.tag){case 26:case 27:case 5:return _l(e.type);case 16:return _l("Lazy");case 13:return e.child!==t&&t!==null?_l("Suspense Fallback"):_l("Suspense");case 19:return _l("SuspenseList");case 0:case 15:return co(e.type,!1);case 11:return co(e.type.render,!1);case 1:return co(e.type,!0);case 31:return _l("Activity");case 30:return _l("ViewTransition");default:return""}}function If(e){try{var t="",l=null;do t+=kp(e,l),l=e,e=e.return;while(e);return t}catch(n){return` +Error generating stack: `+n.message+` +`+n.stack}}var lr=Object.prototype.hasOwnProperty,Ts=Ae.unstable_scheduleCallback,oo=Ae.unstable_cancelCallback,Qp=Ae.unstable_shouldYield,Zp=Ae.unstable_requestPaint,mt=Ae.unstable_now,Vp=Ae.unstable_getCurrentPriorityLevel,Qh=Ae.unstable_ImmediatePriority,Zh=Ae.unstable_UserBlockingPriority,Yi=Ae.unstable_NormalPriority,Xp=Ae.unstable_LowPriority,Vh=Ae.unstable_IdlePriority,$p=Ae.log,Kp=Ae.unstable_setDisableYieldValue,Ru=null,ht=null;function El(e){if(typeof $p=="function"&&Kp(e),ht&&typeof ht.setStrictMode=="function")try{ht.setStrictMode(Ru,e)}catch{}}var gt=Math.clz32?Math.clz32:Wp,Jp=Math.log,Fp=Math.LN2;function Wp(e){return e>>>=0,e===0?32:31-(Jp(e)/Fp|0)|0}var Iu=256,Pu=262144,ei=4194304;function tn(e){var t=e&42;if(t!==0)return t;switch(e&-e){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 e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ac(e,t,l){var n=e.pendingLanes;if(n===0)return 0;var a=0,u=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var c=n&134217727;return c!==0?(n=c&~u,n!==0?a=tn(n):(i&=c,i!==0?a=tn(i):l||(l=c&~e,l!==0&&(a=tn(l))))):(c=n&~u,c!==0?a=tn(c):i!==0?a=tn(i):l||(l=n&~e,l!==0&&(a=tn(l)))),a===0?0:t!==0&&t!==a&&!(t&u)&&(u=a&-a,l=t&-t,u>=l||u===32&&(l&4194048)!==0)?t:a}function Du(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Xh(e,t){t&8&&(t|=t&32);var l=e.entangledLanes;if(l!==0)for(e=e.entanglements,l&=t;0l;l++)t.push(e);return t}function Uu(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Pp(e,t,l,n,a,u){var i=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var c=e.entanglements,r=e.expirationTimes,s=e.hiddenUpdates;for(l=i&~l;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ir=!1;if(ol)try{var Ba={};Object.defineProperty(Ba,"passive",{get:function(){ir=!0}}),window.addEventListener("test",Ba,Ba),window.removeEventListener("test",Ba,Ba)}catch{ir=!1}var Ml=null,ws=null,vi=null;function o0(){if(vi)return vi;var e,t=ws,l=t.length,n,a="value"in Ml?Ml.value:Ml.textContent,u=a.length;for(e=0;e=Fa),fd=String.fromCharCode(32),dd=!1;function s0(e,t){switch(e){case"keyup":return Hv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function f0(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Yn=!1;function qv(e,t){switch(e){case"compositionend":return f0(t);case"keypress":return t.which!==32?null:(dd=!0,fd);case"textInput":return e=t.data,e===fd&&dd?null:e;default:return null}}function Lv(e,t){if(Yn)return e==="compositionend"||!Os&&s0(e,t)?(e=o0(),vi=ws=Ml=null,Yn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function pd(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function vd(e,t){var l=pd(e);e=0;for(var n;l;){if(l.nodeType===3){if(n=e+l.textContent.length,e<=t&&n>=t)return{node:l,offset:t-e};e=n}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=pd(l)}}function g0(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?g0(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function y0(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=cr(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=cr(e.document)}return t}function Rs(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Xv=ol&&"documentMode"in document&&11>=document.documentMode,Gn=null,or=null,Ia=null,rr=!1;function bd(e,t,l){var n=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;rr||Gn==null||Gn!==cr(n)||(n=Gn,"selectionStart"in n&&Rs(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Ia&&mu(Ia,n)||(Ia=n,n=rc(or,"onSelect"),0>=i,a-=i,Jt=1<<32-gt(t)+a|l<z?(ne=A,A=null):ne=A.sibling;var j=m(h,A,g[z],v);if(j===null){A===null&&(A=ne);break}e&&A&&j.alternate===null&&t(h,A),d=u(j,d,z),C===null?S=j:C.sibling=j,C=j,A=ne}if(z===g.length)return l(h,A),G&&al(h,z),S;if(A===null){for(;zz?(ne=A,A=null):ne=A.sibling;var Te=m(h,A,j.value,v);if(Te===null){A===null&&(A=ne);break}e&&A&&Te.alternate===null&&t(h,A),d=u(Te,d,z),C===null?S=Te:C.sibling=Te,C=Te,A=ne}if(j.done)return l(h,A),G&&al(h,z),S;if(A===null){for(;!j.done;z++,j=g.next())j=p(h,j.value,v),j!==null&&(d=u(j,d,z),C===null?S=j:C.sibling=j,C=j);return G&&al(h,z),S}for(A=n(A);!j.done;z++,j=g.next())j=y(A,h,z,j.value,v),j!==null&&(e&&(ne=j.alternate,ne!==null&&A.delete(ne.key===null?z:ne.key)),d=u(j,d,z),C===null?S=j:C.sibling=j,C=j);return e&&A.forEach(function(Ht){return t(h,Ht)}),G&&al(h,z),S}function w(h,d,g,v){if(typeof g=="object"&&g!==null&&g.type===qn&&g.key===null&&g.props.ref===void 0&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Wu:e:{for(var S=g.key;d!==null;){if(d.key===S){if(S=g.type,S===qn){if(d.tag===7){l(h,d.sibling),v=a(d,g.props.children),bl(v,g),v.return=h,h=v;break e}}else if(d.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===xl&&ln(S)===d.type){l(h,d.sibling),v=a(d,g.props),bl(v,g),v.return=h,h=v;break e}l(h,d);break}else t(h,d);d=d.sibling}g.type===qn?(v=on(g.props.children,h.mode,v,g.key),bl(v,g),v.return=h,h=v):(v=_i(g.type,g.key,g.props,null,h.mode,v),bl(v,g),v.return=h,h=v)}return i(h);case Qa:e:{for(S=g.key;d!==null;){if(d.key===S)if(d.tag===4&&d.stateNode.containerInfo===g.containerInfo&&d.stateNode.implementation===g.implementation){l(h,d.sibling),v=a(d,g.children||[]),v.return=h,h=v;break e}else{l(h,d);break}else t(h,d);d=d.sibling}v=_o(g,h.mode,v),v.return=h,h=v}return i(h);case xl:return g=ln(g),w(h,d,g,v)}if(Za(g))return N(h,d,g,v);if(Ha(g)){if(S=Ha(g),typeof S!="function")throw Error(x(150));return g=S.call(g),E(h,d,g,v)}if(typeof g.then=="function")return w(h,d,ai(g),v);if(g.$$typeof===$t)return w(h,d,ni(h,g),v);ui(h,g)}return typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint"?(g=""+g,d!==null&&d.tag===6?(l(h,d.sibling),v=a(d,g),v.return=h,h=v):(l(h,d),v=bo(g,h.mode,v),v.return=h,h=v),i(h)):l(h,d)}return function(h,d,g,v){try{yu=0;var S=w(h,d,g,v);return Pn=null,S}catch(A){if(A===Ca||A===Hc)throw A;var C=lt(29,A,null,h.mode);return C.lanes=v,C.return=h,C}finally{}}}var yn=O0(!0),R0=O0(!1),Nl=!1;function Ys(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function gr(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ul(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Hl(e,t,l){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,F&2){var a=n.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),n.pending=t,t=Qi(e),N0(e,null,l),t}return Dc(e,n,t,l),Qi(e)}function eu(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var n=t.lanes;n&=e.pendingLanes,l|=n,t.lanes=l,Jh(e,l)}}function xo(e,t){var l=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,l===n)){var a=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var i={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?a=u=i:u=u.next=i,l=l.next}while(l!==null);u===null?a=u=t:u=u.next=t}else a=u=t;l={baseState:n.baseState,firstBaseUpdate:a,lastBaseUpdate:u,shared:n.shared,callbacks:n.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var yr=!1;function tu(){if(yr){var e=In;if(e!==null)throw e}}function lu(e,t,l,n){yr=!1;var a=e.updateQueue;Nl=!1;var u=a.firstBaseUpdate,i=a.lastBaseUpdate,c=a.shared.pending;if(c!==null){a.shared.pending=null;var r=c,s=r.next;r.next=null,i===null?u=s:i.next=s,i=r;var f=e.alternate;f!==null&&(f=f.updateQueue,c=f.lastBaseUpdate,c!==i&&(c===null?f.firstBaseUpdate=s:c.next=s,f.lastBaseUpdate=r))}if(u!==null){var p=a.baseState;i=0,f=s=r=null,c=u;do{var m=c.lane&-536870913,y=m!==c.lane;if(y?(X&m)===m:(n&m)===m){m!==0&&m===gn&&(yr=!0),f!==null&&(f=f.next={lane:0,tag:c.tag,payload:c.payload,callback:null,next:null});e:{var N=e,E=c;m=t;var w=l;switch(E.tag){case 1:if(N=E.payload,typeof N=="function"){p=N.call(w,p,m);break e}p=N;break e;case 3:N.flags=N.flags&-65537|128;case 0:if(N=E.payload,m=typeof N=="function"?N.call(w,p,m):N,m==null)break e;p=ce({},p,m);break e;case 2:Nl=!0}}m=c.callback,m!==null&&(e.flags|=64,y&&(e.flags|=8192),y=a.callbacks,y===null?a.callbacks=[m]:y.push(m))}else y={lane:m,tag:c.tag,payload:c.payload,callback:c.callback,next:null},f===null?(s=f=y,r=p):f=f.next=y,i|=m;if(c=c.next,c===null){if(c=a.shared.pending,c===null)break;y=c,c=y.next,y.next=null,a.lastBaseUpdate=y,a.shared.pending=null}}while(1);f===null&&(r=p),a.baseState=r,a.firstBaseUpdate=s,a.lastBaseUpdate=f,u===null&&(a.shared.lanes=0),$l|=i,e.lanes=i,e.memoizedState=p}}function D0(e,t){if(typeof e!="function")throw Error(x(191,e));e.call(t)}function U0(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eu?u:8;var i=D.T,c={};c.types=i!==null?i.types:null,D.T=c,ef(e,!1,t,l);try{var r=a(),s=D.S;if(s!==null&&s(c,r),r!==null&&typeof r=="object"&&typeof r.then=="function"){var f=nb(r,n);nu(e,t,f,yt(e))}else nu(e,t,n,yt(e))}catch(p){nu(e,t,{then:function(){},status:"rejected",reason:p},yt())}finally{W.p=u,i!==null&&c.types!==null&&(i.types=c.types),D.T=i}}function rb(){}function Sr(e,t,l,n){if(e.tag!==5)throw Error(x(476));var a=ug(e).queue;ag(e,a,t,cn,l===null?rb:function(){return ig(e),l(n)})}function ug(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:cn,baseState:cn,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fl,lastRenderedState:cn},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fl,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ig(e){var t=ug(e);t.next===null&&(t=e.alternate.memoizedState),nu(e,t.next.queue,{},yt())}function Ps(){return qe(_a)}function cg(){return _e().memoizedState}function og(){return _e().memoizedState}function sb(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=yt();e=Ul(l);var n=Hl(t,e,l);n!==null&&(nt(n,t,l),eu(n,t,l)),t={cache:qs()},e.payload=t;return}t=t.return}}function fb(e,t,l){var n=yt();l={lane:n,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},jc(e)?sg(t,l):(l=Us(e,t,l,n),l!==null&&(nt(l,e,n),fg(l,t,n)))}function rg(e,t,l){var n=yt();nu(e,t,l,n)}function nu(e,t,l,n){var a={lane:n,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(jc(e))sg(t,a);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var i=t.lastRenderedState,c=u(i,l);if(a.hasEagerState=!0,a.eagerState=c,pt(c,i))return Dc(e,t,a,0),ie===null&&Rc(),!1}catch{}finally{}if(l=Us(e,t,a,n),l!==null)return nt(l,e,n),fg(l,t,n),!0}return!1}function ef(e,t,l,n){if(n={lane:2,revertLane:df(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},jc(e)){if(t)throw Error(x(479))}else t=Us(e,l,n,2),t!==null&&nt(t,e,2)}function jc(e){var t=e.alternate;return e===q||t!==null&&t===q}function sg(e,t){ea=Fi=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function fg(e,t,l){if(l&4194048){var n=t.lanes;n&=e.pendingLanes,l|=n,t.lanes=l,Jh(e,l)}}var Ii={readContext:qe,use:qc,useCallback:ye,useContext:ye,useEffect:ye,useImperativeHandle:ye,useLayoutEffect:ye,useInsertionEffect:ye,useMemo:ye,useReducer:ye,useRef:ye,useState:ye,useDebugValue:ye,useDeferredValue:ye,useTransition:ye,useSyncExternalStore:ye,useId:ye,useHostTransitionStatus:ye,useFormState:ye,useActionState:ye,useOptimistic:ye,useMemoCache:ye,useCacheRefresh:ye,useEffectEvent:ye},dg={readContext:qe,use:qc,useCallback:function(e,t){return Je().memoizedState=[e,t===void 0?null:t],e},useContext:qe,useEffect:Hd,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,Ti(4194308,4,P0.bind(null,t,e),l)},useLayoutEffect:function(e,t){return Ti(4194308,4,e,t)},useInsertionEffect:function(e,t){Ti(4,2,e,t)},useMemo:function(e,t){var l=Je();t=t===void 0?null:t;var n=e();if(pn){El(!0);try{e()}finally{El(!1)}}return l.memoizedState=[n,t],n},useReducer:function(e,t,l){var n=Je();if(l!==void 0){var a=l(t);if(pn){El(!0);try{l(t)}finally{El(!1)}}}else a=t;return n.memoizedState=n.baseState=a,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:a},n.queue=e,e=e.dispatch=fb.bind(null,q,e),[n.memoizedState,e]},useRef:function(e){var t=Je();return e={current:e},t.memoizedState=e},useState:function(e){e=br(e);var t=e.queue,l=rg.bind(null,q,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:Ws,useDeferredValue:function(e,t){var l=Je();return Is(l,e,t)},useTransition:function(){var e=br(!1);return e=ag.bind(null,q,e.queue,!0,!1),Je().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var n=q,a=Je();if(G){if(l===void 0)throw Error(x(407));l=l()}else{if(l=t(),ie===null)throw Error(x(349));X&127||j0(n,t,l)}a.memoizedState=l;var u={value:l,getSnapshot:t};return a.queue=u,Hd(G0.bind(null,n,u,e),[e]),n.flags|=2048,ma(9,{destroy:void 0},Y0.bind(null,n,u,l,t),null),l},useId:function(){var e=Je(),t=ie.identifierPrefix;if(G){var l=Ft,n=Jt;l=(n&~(1<<32-gt(n)-1)).toString(32)+l,t="_"+t+"R_"+l,l=Wi++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof n.is=="string"?i.createElement("select",{is:n.is}):i.createElement("select"),n.multiple?u.multiple=!0:n.size&&(u.size=n.size);break;default:u=typeof n.is=="string"?i.createElement(a,{is:n.is}):i.createElement(a)}}u[Be]=t,u[ut]=n;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)u.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=u;e:switch(Ye(u,a,n),a){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break e;case"img":n=!0;break e;default:n=!1}n&&nl(t)}}return oe(t),t.subtreeFlags&=-33554433,Mo(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&nl(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(x(166));if(e=Rl.current,wn(t)){if(e=t.stateNode,l=t.memoizedProps,n=null,a=Re,a!==null)switch(a.tag){case 27:case 5:n=a.memoizedProps}e[Be]=t,e=!!(e.nodeValue===l||n!==null&&n.suppressHydrationWarning===!0||r1(e.nodeValue,l)),e||Zl(t,!0)}else e=Su(e).createTextNode(n),e[Be]=t,t.stateNode=e}return oe(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(n=wn(t),l!==null){if(e===null){if(!n)throw Error(x(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(x(557));e[Be]=t}else dn(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;oe(t),e=!1}else l=So(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(st(t),t):(st(t),null);if(t.flags&128)throw Error(x(558))}return oe(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=wn(t),n!==null&&n.dehydrated!==null){if(e===null){if(!a)throw Error(x(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(x(317));a[Be]=t}else dn(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;oe(t),a=!1}else a=So(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(st(t),t):(st(t),null)}return st(t),t.flags&128?(t.lanes=l,t):(l=n!==null,e=e!==null&&e.memoizedState!==null,l&&(n=t.child,a=null,n.alternate!==null&&n.alternate.memoizedState!==null&&n.alternate.memoizedState.cachePool!==null&&(a=n.alternate.memoizedState.cachePool.pool),u=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(u=n.memoizedState.cachePool.pool),u!==a&&(n.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),oi(t,t.updateQueue),oe(t),null);case 4:return sa(),e===null&&mf(t.stateNode.containerInfo),t.flags|=67108864,oe(t),null;case 10:return cl(t.type),oe(t),null;case 19:if(ks(t),n=t.memoizedState,n===null)return oe(t),null;if(a=(t.flags&128)!==0,u=n.rendering,u===null)if(a)La(n,!1);else{if(pe!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(u=Ji(e),u!==null){for(t.flags|=128,La(n,!1),e=u.updateQueue,t.updateQueue=e,oi(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)T0(l,e),l=l.sibling;return pu(t,je.current&1|2),G&&al(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&mt()>uc&&(t.flags|=128,a=!0,La(n,!1),t.lanes=4194304)}else{if(!a)if(e=Ji(u),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,oi(t,e),La(n,!0),n.tail===null&&n.tailMode!=="collapsed"&&n.tailMode!=="visible"&&!u.alternate&&!G)return oe(t),null}else 2*mt()-n.renderingStartTime>uc&&l!==536870912&&(t.flags|=128,a=!0,La(n,!1),t.lanes=4194304);n.isBackwards?(u.sibling=t.child,t.child=u):(e=n.last,e!==null?e.sibling=u:t.child=u,n.last=u)}if(n.tail!==null){e=n.tail;e:{for(l=e;l!==null;){if(l.alternate!==null){l=!1;break e}l=l.sibling}l=!0}return n.rendering=e,n.tail=e.sibling,n.renderingStartTime=mt(),e.sibling=null,u=je.current,u=a?u&1|2:u&1,n.tailMode==="visible"||n.tailMode==="collapsed"||!l||G?pu(t,u):(l=u,fe(Ge,t),fe(je,l),Qe===null&&(Qe=t)),G&&al(t,n.treeForkCount),e}return oe(t),null;case 22:case 23:return st(t),Gs(),n=t.memoizedState!==null,e!==null?e.memoizedState!==null!==n&&(t.flags|=8192):n&&(t.flags|=8192),n?l&536870912&&!(t.flags&128)&&(oe(t),t.subtreeFlags&6&&(t.flags|=8192)):oe(t),l=t.updateQueue,l!==null&&oi(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),n=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(n=t.memoizedState.cachePool.pool),n!==l&&(t.flags|=2048),e!==null&&Le(rn),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),cl(xe),oe(t),null;case 25:return null;case 30:return t.flags|=33554432,oe(t),null}throw Error(x(156,t.tag))}function vb(e,t){switch(Bs(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return cl(xe),sa(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ji(t),null;case 31:if(t.memoizedState!==null){if(st(t),t.alternate===null)throw Error(x(340));dn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(st(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(x(340));dn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ks(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return sa(),null;case 10:return cl(t.type),null;case 22:case 23:return st(t),Gs(),e!==null&&Le(rn),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return cl(xe),null;case 25:return null;default:return null}}function Ng(e,t){switch(Bs(t),t.tag){case 3:cl(xe),sa();break;case 26:case 27:case 5:ji(t);break;case 4:sa();break;case 31:t.memoizedState!==null&&st(t);break;case 13:st(t);break;case 19:ks(t);break;case 10:cl(t.type);break;case 22:case 23:st(t),Gs(),e!==null&&Le(rn);break;case 24:cl(xe)}}function ju(e,t){try{var l=t.updateQueue,n=l!==null?l.lastEffect:null;if(n!==null){var a=n.next;l=a;do{if((l.tag&e)===e){n=void 0;var u=l.create,i=l.inst;n=u(),i.destroy=n}l=l.next}while(l!==a)}}catch(c){le(t,t.return,c)}}function Xl(e,t,l){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var u=a.next;n=u;do{if((n.tag&e)===e){var i=n.inst,c=i.destroy;if(c!==void 0){i.destroy=void 0,a=t;var r=l,s=c;try{s()}catch(f){le(a,r,f)}}}n=n.next}while(n!==u)}}catch(f){le(t,t.return,f)}}function Tg(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{U0(t,l)}catch(n){le(e,e.return,n)}}}function Eg(e,t,l){l.props=vn(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(n){le(e,t,n)}}function Vt(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var n=e.stateNode;break;case 30:var a=e.stateNode,u=rl(e.memoizedProps,a);(a.ref===null||a.ref.name!==u)&&(a.ref=g1(u)),n=a.ref;break;case 7:if(e.stateNode===null){var i=new _t(e);at(e.child,!1,o2,i,void 0,void 0),e.stateNode=i}n=e.stateNode;break;default:n=e.stateNode}typeof l=="function"?e.refCleanup=l(n):l.current=n}}catch(c){le(e,t,c)}}function He(e,t){var l=e.ref,n=e.refCleanup;if(l!==null)if(typeof n=="function")try{n()}catch(a){le(e,t,a)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(a){le(e,t,a)}else l.current=null}function ec(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var l=0;l title"))),Ye(n,t,l),n[Be]=e,Oe(n),t=n;break e;case"link":if(u=Sm("link","href",a).get(t+(l.href||""))){for(i=0;iw&&(i=w,w=E,E=i);var h=vd(c,E),d=vd(c,w);if(h&&d&&(y.rangeCount!==1||y.anchorNode!==h.node||y.anchorOffset!==h.offset||y.focusNode!==d.node||y.focusOffset!==d.offset)){var g=p.createRange();g.setStart(h.node,h.offset),y.removeAllRanges(),E>w?(y.addRange(g),y.extend(d.node,d.offset)):(g.setEnd(d.node,d.offset),y.addRange(g))}}}}for(p=[],y=c;y=y.parentNode;)y.nodeType===1&&p.push({element:y,left:y.scrollLeft,top:y.scrollTop});for(typeof c.focus=="function"&&c.focus(),c=0;cl?32:l,D.T=null,l=Yr,Yr=null;var u=Yt,i=It;if(ge=0,bn=Yt=null,It=0,F&6)throw Error(x(331));var c=F;if(F|=4,Zg(u.current),Gg(u,u.current,i,l),F=c,Yu(0,!1),ht&&typeof ht.onPostCommitFiberRoot=="function")try{ht.onPostCommitFiberRoot(Ru,u)}catch{}return!0}finally{W.p=a,D.T=n,l1(e,t)}}function nm(e,t,l){t=At(l,t),t=Nr(e.stateNode,t,2),e=Hl(e,t,2),e!==null&&(Uu(e,2),tl(e))}function le(e,t,l){if(e.tag===3)nm(e,e,l);else for(;t!==null;){if(t.tag===3){nm(t,e,l);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(Ll===null||!Ll.has(n))){e=At(l,e),l=pg(2),n=Hl(t,l,2),n!==null&&(vg(l,n,t,e),Uu(n,2),tl(n));break}}t=t.return}}function Oo(e,t,l){var n=e.pingCache;if(n===null){n=e.pingCache=new xb;var a=new Set;n.set(t,a)}else a=n.get(t),a===void 0&&(a=new Set,n.set(t,a));a.has(l)||(sf=!0,a.add(l),e=zb.bind(null,e,t,l),t.then(e,e))}function zb(e,t,l){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,ie===e&&(X&l)===l&&(pe===4||pe===3&&(X&62914560)===X&&300>mt()-Gc?F&2?ac|=l:ya(e,0):ac|=l,ha===X&&(ha=0)),tl(e)}function n1(e,t){t===0&&(t=$h()),e=En(e,t),e!==null&&(Uu(e,t),tl(e))}function Ob(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),n1(e,l)}function Rb(e,t){var l=0;switch(e.tag){case 31:case 13:var n=e.stateNode,a=e.memoizedState;a!==null&&(l=a.retryLane);break;case 19:n=e.stateNode;break;case 22:n=e.stateNode._retryCache;break;default:throw Error(x(314))}n!==null&&n.delete(t),n1(e,l)}function Db(e,t){return Ts(e,t)}var pa=null,Un=null,Vr=!1,oc=!1,Ro=!1,zl=0;function tl(e){e!==Un&&e.next===null&&(Un===null?pa=Un=e:Un=Un.next=e),oc=!0,Vr||(Vr=!0,Hb())}function Yu(e,t){if(!Ro&&oc){Ro=!0;do for(var l=!1,n=pa;n!==null;){if(!t)if(e!==0){var a=n.pendingLanes;if(a===0)var u=0;else{var i=n.suspendedLanes,c=n.pingedLanes;u=(1<<31-gt(42|e)+1)-1,u&=a&~(i&~c),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,am(n,u))}else u=X,u=Ac(n,n===ie?u:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),!(u&3)||Du(n,u)||(l=!0,am(n,u));n=n.next}while(l);Ro=!1}}function Ub(){a1()}function a1(){oc=Vr=!1;var e=0;zl!==0&&Xb()&&(e=zl);for(var t=mt(),l=null,n=pa;n!==null;){var a=n.next,u=u1(n,t);u===0?(n.next=null,l===null?pa=a:l.next=a,a===null&&(Un=l)):(l=n,(e!==0||u&3)&&(oc=!0)),n=a}ge!==0&&ge!==5||Yu(e,!1),zl!==0&&(zl=0)}function u1(e,t){for(var l=e.suspendedLanes,n=e.pingedLanes,a=e.expirationTimes,u=e.pendingLanes&-62914561;0c)break;var f=r.transferSize,p=r.initiatorType;f&&om(p)&&(r=r.responseEnd,i+=f*(rRi){E.length=N;break}g=new Promise(Ib.bind(g)),E.push(g)}}}if(0"u"?null:document;function N1(e,t,l){var n=Oa;if(n&&typeof t=="string"&&t){var a=Mt(t);a='link[rel="'+e+'"][href="'+a+'"]',typeof l=="string"&&(a+='[crossorigin="'+l+'"]'),vm.has(a)||(vm.add(a),e={rel:e,crossOrigin:l,href:t},n.querySelector(a)===null&&(t=n.createElement("link"),Ye(t,"link",e),Oe(t),n.head.appendChild(t)))}}function p2(e){yl.D(e),N1("dns-prefetch",e,null)}function v2(e,t){yl.C(e,t),N1("preconnect",e,t)}function b2(e,t,l){yl.L(e,t,l);var n=Oa;if(n&&e&&t){var a='link[rel="preload"][as="'+Mt(t)+'"]';t==="image"&&l&&l.imageSrcSet?(a+='[imagesrcset="'+Mt(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(a+='[imagesizes="'+Mt(l.imageSizes)+'"]')):a+='[href="'+Mt(e)+'"]';var u=a;switch(t){case"style":u=ba(e);break;case"script":u=Ra(e)}if(!(Dt.has(u)||(e=ce({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),Dt.set(u,e),n.querySelector(a)!==null||t==="style"&&n.querySelector(Gu(u))||t==="script"&&n.querySelector(ku(u))))){var i=n.createElement("link");Ye(i,"link",e),t==="style"&&(i[Gi]=!0,i.onload=i.onerror=function(){Ih(i)}),Oe(i),n.head.appendChild(i)}}}function _2(e,t){yl.m(e,t);var l=Oa;if(l&&e){var n=t&&typeof t.as=="string"?t.as:"script",a='link[rel="modulepreload"][as="'+Mt(n)+'"][href="'+Mt(e)+'"]',u=a;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ra(e)}if(!Dt.has(u)&&(e=ce({rel:"modulepreload",href:e},t),Dt.set(u,e),l.querySelector(a)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(ku(u)))return}n=l.createElement("link"),Ye(n,"link",e),Oe(n),l.head.appendChild(n)}}}function S2(e,t,l){yl.S(e,t,l);var n=Oa;if(n&&e){var a=Jn(n).hoistableStyles,u=ba(e);t=t||"default";var i=a.get(u);if(!i){var c={loading:0,preload:null};if(i=n.querySelector(Gu(u)))c.loading=5;else{e=ce({rel:"stylesheet",href:e,"data-precedence":t},l),(l=Dt.get(u))&&pf(e,l);var r=i=n.createElement("link");Oe(r),Ye(r,"link",e),r._p=new Promise(function(s,f){r.onload=s,r.onerror=f}),r.addEventListener("load",function(){c.loading|=1}),r.addEventListener("error",function(){c.loading|=2}),c.loading|=4,zi(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:c},a.set(u,i)}}}function x2(e,t){yl.X(e,t);var l=Oa;if(l&&e){var n=Jn(l).hoistableScripts,a=Ra(e),u=n.get(a);u||(u=l.querySelector(ku(a)),u||(e=ce({src:e,async:!0},t),(t=Dt.get(a))&&vf(e,t),u=l.createElement("script"),Oe(u),Ye(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},n.set(a,u))}}function N2(e,t){yl.M(e,t);var l=Oa;if(l&&e){var n=Jn(l).hoistableScripts,a=Ra(e),u=n.get(a);u||(u=l.querySelector(ku(a)),u||(e=ce({src:e,async:!0,type:"module"},t),(t=Dt.get(a))&&vf(e,t),u=l.createElement("script"),Oe(u),Ye(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},n.set(a,u))}}function bm(e,t,l,n){var a=(a=Rl.current)?xu(a):null;if(!a)throw Error(x(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(l=ba(l.href),t=Jn(a).hoistableStyles,n=t.get(l),n||(n={type:"style",instance:null,count:0,state:null},t.set(l,n)),n):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=ba(l.href);var u=Jn(a).hoistableStyles,i=u.get(e);if(i||(a=a.ownerDocument||a,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,i),(u=a.querySelector(Gu(e)))?u._p||(i.instance=u,i.state.loading=5):(u=Dt.get(e),u||(u={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Dt.set(e,u)),T2(a,e,u,i.state))),t&&n===null)throw Error(x(528,""));return i}if(t&&n!==null)throw Error(x(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(l=Ra(l),t=Jn(a).hoistableScripts,n=t.get(l),n||(n={type:"script",instance:null,count:0,state:null},t.set(l,n)),n):{type:"void",instance:null,count:0,state:null};default:throw Error(x(444,e))}}function ba(e){return'href="'+Mt(e)+'"'}function Gu(e){return'link[rel="stylesheet"]['+e+"]"}function T1(e){return ce({},e,{"data-precedence":e.precedence,precedence:null})}function T2(e,t,l,n){if(t=e.querySelector('link[rel="preload"][as="style"]['+t+"]")){if(t[Gi]!==!0){n.loading=1;return}}else t=e.createElement("link"),t[Gi]=!0,t.onload=t.onerror=Ih.bind(null,t),Ye(t,"link",l),Oe(t),e.head.appendChild(t);n.preload=t,t.addEventListener("load",function(){return n.loading|=1}),t.addEventListener("error",function(){return n.loading|=2})}function Ra(e){return'[src="'+Mt(e)+'"]'}function ku(e){return"script[async]"+e}function _m(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+Mt(l.href)+'"]');if(n)return t.instance=n,Oe(n),n;var a=ce({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),Oe(n),Ye(n,"style",a),zi(n,l.precedence,e),t.instance=n;case"stylesheet":a=ba(l.href);var u=e.querySelector(Gu(a));if(u)return t.state.loading|=4,t.instance=u,Oe(u),u;n=T1(l),(a=Dt.get(a))&&pf(n,a),u=(e.ownerDocument||e).createElement("link"),Oe(u);var i=u;return i._p=new Promise(function(c,r){i.onload=c,i.onerror=r}),Ye(u,"link",n),t.state.loading|=4,zi(u,l.precedence,e),t.instance=u;case"script":return u=Ra(l.src),(a=e.querySelector(ku(u)))?(t.instance=a,Oe(a),a):(n=l,(a=Dt.get(u))&&(n=ce({},l),vf(n,a)),e=e.ownerDocument||e,a=e.createElement("script"),Oe(a),Ye(a,"link",n),e.head.appendChild(a),t.instance=a);case"void":return null;default:throw Error(x(443,t.type))}else t.type==="stylesheet"&&!(t.state.loading&4)&&(n=t.instance,t.state.loading|=4,zi(n,l.precedence,e));return t.instance}function zi(e,t,l){for(var n=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=n.length?n[n.length-1]:null,u=a,i=0;i title"):null)}function E2(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function xm(e,t){return e==="img"&&t.src!=null&&t.src!==""&&t.onLoad==null&&t.loading!=="lazy"}function E1(e){return!(e.type==="stylesheet"&&!(e.state.loading&3))}function M1(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function Nm(e,t){typeof t.decode=="function"&&(e.imgCount++,t.complete||(e.imgBytes+=M1(t),e.suspenseyImages.push(t)),e=C2.bind(e),t.decode().then(e,e))}function M2(e,t,l,n){if(l.type==="stylesheet"&&(typeof n.media!="string"||matchMedia(n.media).matches!==!1)&&!(l.state.loading&4)){if(l.instance===null){var a=ba(n.href),u=t.querySelector(Gu(a));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Nu.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=u,Oe(u);return}u=t.ownerDocument||t,n=T1(n),(a=Dt.get(a))&&pf(n,a),u=u.createElement("link"),Oe(u);var i=u;i._p=new Promise(function(c,r){i.onload=c,i.onerror=r}),Ye(u,"link",n),l.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&!(l.state.loading&3)&&(e.count++,l=Nu.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var Ri=0;function A2(e,t){return e.stylesheets&&e.count===0&&Di(e,e.stylesheets),0Ri?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(a)}}:null}function A1(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)Di(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function Nu(){this.count--,A1(this)}function C2(){this.imgCount--,A1(this)}var sc=null;function Di(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,sc=new Map,t.forEach(w2,e),sc=null,Nu.call(e))}function w2(e,t){if(!(t.state.loading&4)){var l=sc.get(e);if(l)var n=l.get(null);else{l=new Map,sc.set(e,l);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(H1)}catch(e){console.error(e)}}H1(),Ah.exports=Ec;var q2=Ah.exports;function ve(e){let t=2166136261;for(let l=0;l>>0}function ct(e){let t=e>>>0;const l=()=>{t=t+1831565813>>>0;let n=t;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296};return{next:l,int(n,a){return n+Math.floor(l()*(a-n+1))},pick(n){return n[Math.floor(l()*n.length)]},chance(n){return l()>>3))%dc.length],n=mc[(t*13+(t>>>2))%mc.length];Ut.push({__typename:"User",id:`u${t}`,name:`${l} ${n}`,short_name:l,avatar_seed:t*5+3,is_verified:e.chance(.04),mutual_friends:e.int(0,85),online:e.chance(.35)})}L2.forEach((t,l)=>{Mu.push({__typename:"Page",id:`p${l}`,name:t,category:e.pick(["Local business","Community","Shop","Club","Café","Arts"]),followers:e.int(300,48e3),avatar_seed:200+l*11,is_verified:e.chance(.2)})}),B1.forEach((t,l)=>{Na.push({__typename:"Group",id:`g${l}`,name:t,member_count:e.int(150,92e3),privacy:e.chance(.6)?"public":"private",cover_seed:400+l*7,viewer_is_member:l<8})})}J2();const Xc=new Map(Ut.map(e=>[e.id,e]));function it(e){return{__typename:e.__typename,id:e.id,name:e.name,avatar_seed:e.avatar_seed,is_verified:e.is_verified}}function _n(e){return Ut[e.int(1,j1-1)]}const F2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Tf(e,t){const l=ct(e);let n="";for(let a=0;a`#${r}`).join(" ")}`),{text:i,topic:n.name}}function Y1(e){const t=[];let l="",n=0;for(const a of e.matchAll(/@\[(u\d+)\]/g)){l+=e.slice(n,a.index);const u=Xc.get(a[1]);t.push({offset:l.length,length:u.name.length,entity:{__typename:"User",id:u.id,name:u.name}}),l+=u.name,n=a.index+a[0].length}return l+=e.slice(n),{text:l,ranges:t}}function G1(e,t){const l=e.sample(K2,e.int(1,3));let n=t;return l.map((a,u)=>{const i=u===l.length-1?n:Math.floor(n*(.5+e.next()*.3));return n-=i,{key:a,count:i}})}function I2(e,t){return t&&e.chance(.6)?e.int(28,140):e.int(0,14)}function P2(e){const t=ct(ve(`story:${e%Z2}`)),l=`s${e}`,n=e%6===4;let a,u=null;n||t.chance(.18)?a=Mu[t.int(0,Mu.length-1)]:a=_n(t),!n&&a.__typename==="User"&&t.chance(.25)&&(u=Na[t.int(0,Na.length-1)]);const i=t.chance(.4),{text:c,topic:r}=W2(t,i?{minSentences:5,maxSentences:8}:{minSentences:1,maxSentences:3}),s=[],f=t.next();let p=null;if(f<.62){const E=f<.3?1:t.int(2,5);for(let w=0;w0);return{__typename:"Story",id:l,actor:it(a),to_group:u?{__typename:"Group",id:u.id,name:u.name,privacy:u.privacy}:null,sponsored:n,created_time:Qu-(e*2711+t.int(60,2400)),privacy:u?u.privacy:t.pick(["public","friends","friends","public"]),message:Y1(c),attachments:s,link:p,url:`#/post/${l}`,tracking:Tf(ve(`${l}:tracking`),180),viewer_follows_actor:a.__typename==="User"||t.chance(.5),can_translate:t.chance(.15),feedback:{__typename:"Feedback",id:`fb-${l}`,reaction_count:m,top_reactions:G1(t,m),comment_count:y,share_count:t.int(0,Math.max(1,m>>3)),viewer_reaction:null,can_comment:!0}}}const Rm=new Map;function Au(e){let t=Rm.get(e);return t||(t=P2(e),Rm.set(e,t)),t}function Ef(e){return Number(e.slice(1))}function k1(e,t,l){const n=ct(ve(`${e}:${l??"root"}:${t}`)),a=_n(n),u=l!==null;let i=u?n.pick(q1):n.pick(hc);!u&&n.chance(.35)&&(i+=` ${n.pick(hc)}`),u&&n.chance(.5)&&(i=`@[${_n(n).id}] ${i}`),n.chance(.12)&&(i+=` #${n.pick(Nf)}`);const c=n.next();let r=null;c<.08?r={__typename:"Sticker",id:`st-${e}-${l??"r"}-${t}`,seed:ve(`sticker:${t%9}`),label:n.pick(["Applause sticker","Heart sticker","Thumbs up sticker"])}:c<.13&&(r={__typename:"Photo",id:`cph-${e}-${l??"r"}-${t}`,seed:ve(`${e}:c:${t}`),width:400,height:300,alt:"Photo in comment"});const s=n.chance(.4)?n.int(1,90):0;return{__typename:"Comment",id:`c-${e}-${l?`${l.split("-").pop()}r`:""}${t}`,author:it(a),body:Y1(i),attachment:r,created_time:Qu-n.int(120,86400*3),reaction_count:s,top_reactions:s?G1(n,s):[],reply_count:0,badges:n.chance(.18)?[n.pick(["Top contributor","Neighbour","Rising voice"])]:[],is_edited:n.chance(.1),can_translate:n.chance(.12),tracking:Tf(ve(`${e}:${l??"r"}:${t}:t`),64),is_spam:!u&&n.chance(.08),score:s*3+i.length/20+n.next()*4,depth:u?1:0}}const Dm=new Map;function Q1(e){let t=Dm.get(e);if(t)return t;const l=Au(Ef(e)).feedback,n=ct(ve(`thread:${e}`)),a=Math.max(0,Math.ceil(l.comment_count*.55));let u=l.comment_count-a;t=[];for(let i=0;i0&&n.chance(r)){const s=Math.min(u,n.chance(.2)?n.int(10,30):n.int(1,7));c.reply_count=s,u-=s}c.score+=c.reply_count*25,t.push(c)}return Dm.set(e,t),t}function Z1(e,t){const l=Q1(e);return t==="newest"?l.filter(n=>!n.is_spam).sort((n,a)=>a.created_time-n.created_time):t==="all"?l.slice().sort((n,a)=>n.created_time-a.created_time):l.filter(n=>!n.is_spam).sort((n,a)=>a.score-n.score)}function Mf(e){const t={...e};return delete t.score,delete t.is_spam,t}function e5(e){return e.feedback.comment_count?Z1(e.id,"relevant").slice(0,2).map(Mf):[]}function t5(e){return e.feedback.reaction_count?ct(ve(`reactors:${e.id}`)).sample(Ut.slice(1),Math.min(2,e.feedback.reaction_count)).map(it):[]}function Af(e){const{feedback:t,...l}=e;return{...l,feedback:{__typename:"Feedback",id:t.id,comment_count:t.comment_count}}}function Cf(e){return{__typename:"Story",id:e.id,feedback:{...e.feedback,top_comments:e5(e),reactors:t5(e)}}}function $c(e,t,l){return{edges:e,page_info:{end_cursor:String(t),has_next_page:l}}}function St(e){return e.map(t=>JSON.stringify(t))}function l5(e,t){const l=ct(ve(`pymk:${e}:${t}`)),n=l.sample(Ut.slice(1),8).map(a=>({__typename:"Suggestion",id:`sg-${e}-${t}-${a.id}`,user:it(a),mutual_count:a.mutual_friends,mutual_friends:l.sample(Ut.slice(1),2).map(it),tracking:Tf(ve(`sg:${a.id}`),48)}));return{__typename:"SuggestionsUnit",id:`pymk-${e}-${t}`,title:"People you may know",suggestions:n}}function n5({cursor:e=0,count:t=V2,seed:l=0}){const n=Number(e),a=[];for(let r=0;r({cursor:String(n+s+1),node:Af(r)}));n/t%2===1&&u.splice(2,0,{cursor:`${n}:pymk`,node:l5(l,n)});const i={data:{home_feed:$c(u,n+t,!0)},extensions:{is_final:!1}},c=a.map((r,s)=>({incremental:[{label:"StoryFeedback",path:["home_feed","edges",s,"node"],data:Cf(r)}],extensions:{is_final:s===a.length-1}}));return St([i,...c])}function a5({storyId:e}){const t=Au(Ef(e));return St([{data:{node:Af(t)}},{incremental:[{data:Cf(t)}]}])}function u5({storyId:e,order:t="relevant",cursor:l=0}){const n=Z1(e,t),a=Number(l),u=n.slice(a,a+X2).map(Mf),i=n.length;return St([{data:{node:{__typename:"Feedback",id:`fb-${e}`,comments:{order:t,total_count:i,...$c(u.map((c,r)=>({cursor:String(a+r+1),node:c})),a+u.length,a+u.lengthc.id===e),a=n?n.reply_count:0,u=Number(l),i=[];for(let c=u;c({cursor:String(u+r+1),node:c})),u+i.length,u+i.length({cursor:String(p+1),node:f})),4,!0)}}]},s=c.map(f=>({incremental:[{data:Cf(Au(Ef(f.id)))}]}));return St([u,i,r,...s])}function o5({refresh:e=0}){const l=ct(11+e).sample(Ut.slice(1),9).map((n,a)=>({__typename:"StoryCard",id:`card${e}-${a}`,owner:it(n),seed:ve(`card:${e}:${a}`),seen:a>5-e}));return St([{data:{stories_tray:l}}])}function r5({refresh:e=0}){const t=ct(12+e),l=Ut.slice(1,25).map(c=>({...it(c),online:e?ve(`${c.id}:${e}`)%3===0:c.online})),n=[["Handmade ceramic mugs","claystudio.example"],["Weekend bike tune-up","spokeshop.example"],["Fresh roasted beans delivered","beanbox.example"],["Learn to sail this summer","sailschool.example"]],a=t.sample(n,2).map(([c,r],s)=>({__typename:"Ad",id:`ad${s}`,title:c,domain:r,seed:ve(`ad:${s}`)})),u=[it(Ut[37+e])],i=Na.slice(0,4).map(c=>({__typename:"Group",id:c.id,name:c.name,cover_seed:c.cover_seed}));return St([{data:{right_rail:{sponsored:a,birthdays:u,contacts:l,group_chats:i}}}])}function s5({refresh:e=0}){const t=Na.slice(e%4,8+e%4).map(l=>({__typename:"Group",id:l.id,name:l.name,cover_seed:l.cover_seed}));return St([{data:{shortcuts:t,badges:{notifications:7+e,messages:3+e*2}}}])}function f5(){const e=ct(13),t=[["comment",(n,a)=>`**${n}** replied in your discussion: "${e.pick(hc)}"`],["reaction",(n,a)=>`**${n}** and **${a}** appreciated your update.`],["group",n=>`New in **${e.pick(B1)}**: a post from **${n}**.`],["birthday",n=>`**${n}** is celebrating a birthday today 🎂`],["friend",n=>`**${n}** would like to connect.`],["memory",()=>"A photo you shared on this day three years ago is waiting for you."],["event",n=>`**${n}** invited you to **${e.pick(["Harbor Night Market","Spring Seed Swap","Open Studio Day","Trail Clean-up"])}**.`],["mention",n=>`**${n}** mentioned you in a comment.`]],l=[];for(let n=0;n<30;n++){const[a,u]=e.pick(t),i=_n(e),c=_n(e);l.push({__typename:"Notification",id:`n${n}`,kind:a,actor:it(i),text:u(i.name,c.name),created_time:Qu-(n*3600+e.int(0,3e3)),unread:n<7||e.chance(.1),has_action:a==="friend"})}return St([{data:{notifications:{unread_count:l.filter(n=>n.unread).length,edges:l}}}])}function d5(){const e=ct(14),t=[];for(let l=0;l<20;l++){const n=_n(e);t.push({__typename:"Thread",id:`t${l}`,participant:it(n),snippet:e.pick(q1.concat(hc)),from_viewer:e.chance(.4),updated_time:Qu-(l*5400+e.int(0,4e3)),unread:l<3,online:n.online})}return St([{data:{threads:t}}])}function m5(){const e=Xc.get(Ze);return St([{data:{account:{viewer:it(e),profiles:Mu.slice(0,2).map(it),rows:[{icon:"settings",label:"Preferences",chevron:!0},{icon:"lock",label:"Who can see what",chevron:!0},{icon:"moon",label:"Theme and text size",chevron:!0},{icon:"help",label:"Questions and answers",chevron:!0},{icon:"feedback",label:"Tell us what you think",shortcut:"Ctrl B"},{icon:"logout",label:"Sign out"}]}}}])}const h5=1400;function g5(){const e=[];for(const n of Ut.slice(1))e.push({id:n.id,type:"user",name:n.name,subtitle:n.mutual_friends?`${n.mutual_friends} shared connections`:"Connection",avatar_seed:n.avatar_seed,affinity:40+n.mutual_friends});const t=ct(15);for(let n=0;n>>4))%mc.length],i=t.chance(.4)?t.int(1,30):0;e.push({id:`x${n}`,type:"person",name:`${a} ${u}`,subtitle:i?`${i} shared connections`:`Lives in ${t.pick(ns)}`,avatar_seed:1e3+n*3,affinity:i})}for(const n of Mu)e.push({id:n.id,type:"page",name:n.name,subtitle:`${n.category} · ${n.followers.toLocaleString("en-US")} followers`,avatar_seed:n.avatar_seed,affinity:Math.log10(n.followers)*4});for(const n of Na)e.push({id:n.id,type:"group",name:n.name,subtitle:`${n.privacy==="public"?"Public":"Private"} group · ${n.member_count.toLocaleString("en-US")} members`,avatar_seed:n.cover_seed,affinity:n.viewer_is_member?30:5});for(const[n,a]of L1.entries())e.push({id:`k${n}`,type:"keyword",name:a,subtitle:"",avatar_seed:0,affinity:10});for(const[n,a]of Nf.entries())e.push({id:`h${n}`,type:"keyword",name:`#${a}`,subtitle:"",avatar_seed:0,affinity:8});const l=[e[3],e[250],e[241],e[270]].filter(Boolean);return St([{data:{search_bootstrap:{entries:e,recent:l}}}])}function y5({text:e}){const t=e.trim().toLowerCase(),l=[],n=ct(ve(`search:${t}`));for(const a of L1)a.includes(t)&&l.push({id:`kw-${a}`,type:"keyword",name:a,subtitle:"",avatar_seed:0});for(let a=0;a<3;a++)l.push({id:`post-${t}-${a}`,type:"post",name:`${t} ${n.pick(["near me","tips","this weekend","group","for beginners"])}`,subtitle:`${n.int(2,90)} new posts`,avatar_seed:0});return St([{data:{search:{query:e,results:l}}}])}const p5={HomeFeed:n5,Story:a5,StoryComments:u5,CommentReplies:i5,Profile:c5,StoriesTray:o5,RightRail:r5,Shortcuts:s5,Notifications:f5,Threads:d5,Account:m5,SearchBootstrap:g5,Search:y5};function v5(e,t){const l=p5[e];if(!l)throw new Error(`Unknown query ${e}`);return l(t??{})}function b5(e){return Xc.get(e)}const _5=8;function S5(e){const t=[];let l=e;for(;l&&l.nodeType===1&&t.length<_5;){let n=l.localName;l.id?n+=`#${l.id}`:l.classList.length&&(n+=`.${l.classList[0]}`);const a=l.parentElement;if(a){let u=1;for(let i=l.previousElementSibling;i;i=i.previousElementSibling)u++;n+=`:${u}`}t.unshift(n),l=a}return t.join(">")}function x5(e){const t=e.closest("[data-log]");if(!t)return null;const l=[];for(let n=t.parentElement&&t.parentElement.closest("[data-log-scope]");n;n=n.parentElement&&n.parentElement.closest("[data-log-scope]"))l.unshift(n.getAttribute("data-log-scope"));return{target:t,name:t.getAttribute("data-log"),scopes:l}}function N5(e){const t=x5(e.target),l=t?t.target:e.target;L("click",{target:t?t.name:"untagged",scopes:t?t.scopes.join("/"):"",path:S5(l),label:(l.getAttribute("aria-label")||l.textContent||"").trim().slice(0,48),role:l.getAttribute("role")||l.localName})}const Um=new WeakMap;function T5(e){const t=e.target;if(!(t instanceof HTMLElement))return;const l=(Um.get(t)??0)+1;Um.set(t,l),L("key_activity",{field:t.getAttribute("data-log")||t.localName,keys:l,modifier:e.ctrlKey||e.metaKey||e.altKey})}function E5(e){const t=e.target;t.matches&&t.matches("input, textarea, [contenteditable]")&&L("field_focus",{field:t.getAttribute("data-log")||t.getAttribute("aria-label")||t.localName})}const Hm=new WeakMap;function M5(e){const t=e.target.nodeType===1?e.target:document.scrollingElement;if(!t)return;const l=t.scrollHeight-t.clientHeight;if(l<=0)return;const n=Math.min(100,Math.round(t.scrollTop/l*100)),a=Math.floor(n/25)*25,u=Hm.get(t)??-1;a>u&&(Hm.set(t,a),L("scroll_milestone",{scroller:t.id||t.className.split(" ")[0],depth:a})),L("scroll_depth",{depth:n})}function A5(e){e.addEventListener("click",t=>De("autotrack.click",N5,t),!0),e.addEventListener("keydown",t=>De("autotrack.key",T5,t),!0),e.addEventListener("focusin",t=>De("autotrack.focus",E5,t),!0),e.addEventListener("scroll",t=>De("autotrack.scroll",M5,t),{capture:!0,passive:!0}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Vo("hidden")}),window.addEventListener("pagehide",()=>Vo("pagehide"))}const C5={feed_deferred_feedback:1,feed_prefetch_next_page:1,story_reaction_summary_v2:.5,comments_inline_composer:1,comments_mentions_typeahead:1,search_remote_typeahead:1,menu_message_previews:.8,profile_intro_card_v3:.4};let V1="anonymous";const Bm=new Map;function w5(e){V1=e}function Da(e){let t=Bm.get(e);if(t===void 0){const l=ve(`${V1}:${e}`)%1e4/1e4;t=l<(C5[e]??0),Bm.set(e,t),L("gate_exposure",{gate:e,pass:t,bucket:Math.round(l*1e4)})}return t}const z5=4,wt=new Map,Cu=new Set,ua=new Map,ia=[];let ca=new Set,X1=0,as=!1;function O5(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.id=="string"&&typeof e.__typename=="string"}function R5(e,t){if(e===t)return!0;if(!e||!t||typeof e!="object"||typeof t!="object"||Array.isArray(e)!==Array.isArray(t))return!1;const l=Object.keys(e);if(l.length!==Object.keys(t).length)return!1;for(const n of l){const a=e[n],u=t[n];if(a!==u&&!(a&&u&&a.__ref!==void 0&&a.__ref===u.__ref))return!1}return!0}function gc(e){if(Array.isArray(e))return e.map(gc);if(O5(e))return D5(e),{__ref:e.id};if(e!==null&&typeof e=="object"){const t={};for(const l in e)t[l]=gc(e[l]);return t}return e}function D5(e){const t=wt.get(e.id);let l=t;for(const n in e){const a=gc(e[n]),u=l?l[n]:void 0;u===a||R5(u,a)||(l===t&&(l=t?{...t}:{}),l[n]=a)}l!==t&&(wt.set(e.id,l),ca.add(e.id))}function us(e){return gc(e)}function We(e){return wt.get(e)}function Sn(e,t){const l=wt.get(e),n=l?{...l,...t}:{id:e,...t};wt.set(e,n),ca.add(e)}function $1(e,t){const l=wt.get(e);l&&(wt.set(e,{...l,...t(l)}),ca.add(e))}function U5(e){return Cu.add(e),()=>Cu.delete(e)}function qm(){return X1}function H5(e,t){for(const l of t)if(e.has(l))return!0;return!1}function Kl(){if(!ca.size)return;const e=ca;ca=new Set,X1++;let t=0;for(const l of Cu)H5(l.seen,e)&&(l.refresh(),t++);L("store_publish",{changed:e.size,refreshed:t,subscriptions:Cu.size})}function Kc(e){ua.set(e,(ua.get(e)??0)+1);const t=ia.indexOf(e);t!==-1&&ia.splice(t,1);let l=!1;return()=>{l||(l=!0,B5(e))}}function B5(e){const t=ua.get(e)-1;if(t>0){ua.set(e,t);return}ua.delete(e),ia.push(e),ia.length>z5&&(ia.shift(),q5())}function q5(){as||(as=!0,queueMicrotask(L5))}function is(e,t){if(!(e===null||typeof e!="object")){if(Array.isArray(e)){for(const l of e)is(l,t);return}if(e.__ref!==void 0){t.push(e.__ref);return}for(const l in e)is(e[l],t)}}function L5(){as=!1;const e=performance.now(),t=[...ua.keys(),...ia];for(const a of Cu)for(const u of a.seen)t.push(u);for(const a of wt.keys())a.startsWith("client:draft:")&&t.push(a);const l=new Set;for(;t.length;){const a=t.pop();if(l.has(a))continue;l.add(a);const u=wt.get(a);u&&is(u,t)}let n=0;for(const a of wt.keys())l.has(a)||(wt.delete(a),n++);L("store_gc",{marked:l.size,collected:n,remaining:wt.size,duration:Math.round((performance.now()-e)*100)/100})}const K1=new MessageChannel,J1=[];K1.port1.onmessage=()=>{J1.shift()()};function j5(e){J1.push(e),K1.port2.postMessage(0)}let Y5=0;function ke(e,t){return`${e}(${t?JSON.stringify(t):""})`}function Ve(e){return`client:query:${e}`}function wf(e,t,{apply:l,key:n=ke(e,t)}={}){var y;const a=++Y5,u=Ve(n),i=`q:${e}:${a}`;performance.mark(`${i}:start`),Sn(u,{status:"loading",requestId:a,root:((y=We(u))==null?void 0:y.root)??null}),Kl(),L("query_start",{query:e,request:a});const c=v5(e,t),r=Kc(u);let s=!1,f=0,p=null;return{promise:new Promise(N=>{c.forEach((E,w)=>{j5(()=>De(`network.${e}`,()=>{if(s){r();return}f+=E.length;const h=JSON.parse(E),d=h.data?us(h.data):null;if(d&&!p&&(p=d),h.incremental)for(const v of h.incremental)us(v.data);const g=w===c.length-1;if(l&&l(d,g),Sn(u,{status:g?"ready":"loading",requestId:a,root:p}),Kl(),g){performance.mark(`${i}:end`),performance.measure(i,`${i}:start`,`${i}:end`);const v=performance.getEntriesByName(i,"measure"),S=v.length?v[v.length-1].duration:0;performance.clearMarks(`${i}:start`),performance.clearMarks(`${i}:end`),performance.clearMeasures(i),L("query_complete",{query:e,request:a,chunks:c.length,bytes:f,duration:Math.round(S*10)/10}),r(),N(d)}}))})}),cancel(){s=!0,L("query_cancelled",{query:e,request:a})}}}const Yo=new Map;function Ua(e,t,l){const n=(l==null?void 0:l.key)??ke(e,t),a=We(Ve(n));if(a&&a.status==="ready"&&!(l!=null&&l.force))return Promise.resolve(a.root);let u=Yo.get(n);return u||(u=wf(e,t,{...l,key:n}),Yo.set(n,u),u.promise.then(()=>Yo.delete(n))),u.promise}const wu="client:home_feed";function yc(e,t){return`client:comments:${e}:${t}`}function cs(e){return`client:replies:${e}`}function pc(e){return`client:draft:${e}`}function F1(e,t,l,n,a){const u=Kc(e),{promise:i}=wf(t,l,{key:`${e}:${l.cursor??0}`,apply(c,r){if(c){const s=n(c),f=We(e);Sn(e,{edges:a?f.edges.concat(s.edges):s.edges,page_info:s.page_info,total_count:s.total_count??f.total_count})}r&&Sn(e,{status:"ready"})}});return i.then(u),i}function zf(e,t,l,n,a={}){return Sn(e,{edges:[],page_info:null,status:"loading",...a}),Kl(),F1(e,t,l,n,!1)}function Of(e,t,l,n){const a=We(e);return!a||a.status!=="ready"||!a.page_info||!a.page_info.has_next_page?null:(Sn(e,{status:"loading-more"}),Kl(),F1(e,t,{...l,cursor:a.page_info.end_cursor},n,!0))}const W1=e=>e.home_feed,I1=e=>We(e.node.__ref).comments,Lm=e=>We(e.node.__ref).replies;let Hi=-1,jm=!1;function P1(){return jm||(Kc(wu),jm=!0),Hi++,zf(wu,"HomeFeed",{cursor:0,seed:Hi},W1,{generation:Hi})}function G5(){return Of(wu,"HomeFeed",{seed:Hi},W1)}function Ym(e,t){const l=yc(e,t),n=We(l);return n&&n.status!=="error"?Promise.resolve():zf(l,"StoryComments",{storyId:e,order:t,cursor:0},I1,{order:t})}function k5(e,t){return Of(yc(e,t),"StoryComments",{storyId:e,order:t},I1)}function Q5(e,t){const l=cs(t);return We(l)?Of(l,"CommentReplies",{storyId:e,commentId:t},Lm):zf(l,"CommentReplies",{storyId:e,commentId:t,cursor:0},Lm)}function ey(e){return Ua("Profile",{userId:e})}const ty=["StoriesTray","RightRail","Shortcuts"];function Z5(){return Promise.all(ty.map(e=>Ua(e)))}let Gm=0;function V5(){return Gm++,Promise.all(ty.map(e=>Ua(e,{refresh:Gm},{key:ke(e),force:!0})))}const ly=_.createContext(null);function ru(e){return e.startsWith("/profile/")?"profile":"home"}function X5(e){const t=e.replace(/^#/,"")||"/";return t.startsWith("/post/")?{page:"/",overlay:t.slice(6)}:{page:t,overlay:null}}let Jc=null,vc="/";function Zu(e){Nh(ru(e)),L("page_view",{route:ru(e),from:ru(vc)}),vc=e,Tc("navigation"),_.startTransition(()=>Jc.setPage(e))}function $5(e){L("page_view",{route:"post",from:ru(vc),overlay:!0}),Tc("navigation"),Jc.setOverlay(e)}function K5(){L("overlay_dismiss",{route:"post"}),Tc("navigation"),Jc.setOverlay(null)}function J5({children:e}){const[t]=_.useState(()=>{const i=X5(window.location.hash);return vc=i.page,i}),[l,n]=_.useState(t.page),[a,u]=_.useState(t.overlay);return Jc={setPage:n,setOverlay:u},_.useEffect(()=>{Nh(ru(l))},[]),o(ly.Provider,{value:{page:l,overlay:a},children:e})}function Rf(){return _.useContext(ly)}const Df="...",ny=new Map;function Y(e,t){const l={name:e,selections:t};return ny.set(e,l),l}function he(...e){return{[Df]:e.map(t=>t.name)}}function $(e){const t={};for(const l of e.split(" "))t[l]=!0;return t}function os(e,t,l){const n={};for(const a in t){const u=t[a];if(a===Df){n.__id=e.id,n.__fragments=u;continue}const i=e[a];u===!0||i===null||i===void 0?n[a]=i:Array.isArray(i)?n[a]=i.map(c=>km(c,u,l)):n[a]=km(i,u,l)}return n}function km(e,t,l){if(e==null)return e;if(e.__ref!==void 0){l.add(e.__ref);const n=We(e.__ref);return n===void 0?void 0:os(n,t,l)}return os(e,t,l)}function F5(e,t,l=new Set){if(t==null)return null;l.add(t);const n=We(t);return n===void 0?void 0:os(n,e.selections,l)}function rs(e,t,l){for(const n in t){const a=t[n];if(n===Df){for(const i of a)rs(e,ny.get(i).selections,l);continue}l.fields++;const u=e[n];u===void 0?l.missing++:a!==!0&&u!==null&&Array.isArray(u)?u.forEach(i=>ss(i,a,l)):a!==!0&&u!==null&&ss(u,a,l)}}function ss(e,t,l){if(e.__ref===void 0){rs(e,t,l);return}const n=We(e.__ref);if(n===void 0){l.missing++;return}l.records++,rs(n,t,l)}function W5(e,t){const l={records:0,fields:0,missing:0};return ss({__ref:t},e.selections,l),l}function fs(e,t){if(e===t||typeof e!="object"||typeof t!="object"||e===null||t===null)return t;const l=Array.isArray(e);if(l!==Array.isArray(t))return t;let n=!0;if(l){const i=t.length;n=e.length===i;for(let c=0;c{this.listener=t,this.epoch!==qm()&&this.read();const l=U5(this);return()=>{this.listener=null,l()}});no(this,"getData",()=>this.data);this.fragment=t,this.id=l,this.listener=null,this.read()}read(){this.seen=new Set,this.epoch=qm();const t=F5(this.fragment,this.id,this.seen),l=fs(this.data,t),n=l!==this.data;return this.data=l,n}refresh(){this.read()&&this.listener&&this.listener()}}function H(e,t){const l=I5(t),n=_.useRef(null);let a=n.current;(!a||a.id!==l||a.fragment!==e)&&(a=new P5(e,l),n.current=a);const u=_.useCallback(i=>a.subscribe(i),[a]);return _.useSyncExternalStore(u,a.getData)}function An(e){_.useEffect(()=>e?Kc(e):void 0,[e])}const ds=new Map;let e_=0;function Jl(e,t={}){const l=++e_,n=`ix:${e}:${l}`;performance.mark(`${n}:start`),ds.set(e,{id:l,mark:n,props:t,start:performance.now()}),L("interaction_start",{interaction:e,trace:l,...t})}function t_(e){const t=ds.get(e);if(!t)return;ds.delete(e),performance.mark(`${t.mark}:end`),performance.measure(t.mark,`${t.mark}:start`,`${t.mark}:end`);const l=performance.now()-t.start;performance.clearMarks(`${t.mark}:start`),performance.clearMarks(`${t.mark}:end`),performance.clearMeasures(t.mark),L("interaction_complete",{interaction:e,trace:t.id,duration:Math.round(l*10)/10,...t.props})}const Qm={home:"M3 11.5 12 4l9 7.5M5.5 9.5V20h4.5v-5.5h4V20h4.5V9.5",store:"M3.5 4.5h17l1 4.5a3 3 0 0 1-5.75 1 3 3 0 0 1-5.5 0 3 3 0 0 1-5.5 0A3 3 0 0 1 2.5 9ZM4.5 12v8h15v-8M10 20v-4.5h4V20",groups:"M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm8.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM2.5 19.5c0-3 2.5-5.5 5.5-5.5s5.5 2.5 5.5 5.5m1-5.3a5 5 0 0 1 7 4.8",chat:"M5 4.5h14A1.5 1.5 0 0 1 20.5 6v9a1.5 1.5 0 0 1-1.5 1.5h-6l-4.5 4v-4H5A1.5 1.5 0 0 1 3.5 15V6A1.5 1.5 0 0 1 5 4.5Zm3 6.25h.01m3.99 0h.01m3.99 0h.01",compass:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm3.5 5.5-2 5-5 2 2-5Z",communities:"M12 4.5a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm-6.5 3a2.25 2.25 0 1 0 0 4.5m13-4.5a2.25 2.25 0 1 1 0 4.5M6.5 19.5a5.5 5.5 0 0 1 11 0M2 18a4 4 0 0 1 3.5-4m16.5 4a4 4 0 0 0-3.5-4",map:"M3.5 6.5 9 4.5l6 2 5.5-2v13L15 19.5l-6-2-5.5 2Zm5.5-2v13m6-11v13",megaphone:"M4 10v4h3l8 4.5v-13L7 10Zm3 4 1.5 5h2.5l-1.5-5m9.5-4.5a3 3 0 0 1 0 5",poll:"M5 19.5V12m5 7.5V5m5 14.5v-9m5 9v-5",album:"M5.5 7.5h13v12h-13Zm2-3h9m-6 9 2 2 3.5-4",gift:"M4.5 10h15v10h-15Zm-1-3.5h17V10h-17ZM12 6.5V20M12 6.5C10.5 3.5 7 3.5 7.5 5.5S12 6.5 12 6.5Zm0 0c1.5-3 5-3 4.5-1S12 6.5 12 6.5Z",bell:"M12 3.5a6 6 0 0 0-6 6v3.5L4 16.5h16L18 13V9.5a6 6 0 0 0-6-6Zm-2.25 15a2.25 2.25 0 0 0 4.5 0",search:"M10.5 4.5a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm4.25 10.25L20 20",like:"M7.5 10.5v9h-3v-9Zm0 9h9.2a2 2 0 0 0 2-1.6l1.2-5.6a2 2 0 0 0-2-2.3h-4.4l.7-3.4a1.8 1.8 0 0 0-3.3-1.3L7.5 10.5",comment:"M4.5 4.5h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-9l-5.5 4v-4h-.5a1 1 0 0 1-1-1v-10a1 1 0 0 1 1-1Z",share:"M13.5 5l7 6.5-7 6.5v-4c-5 0-8 1.5-10.5 5 .8-5 3.5-9.5 10.5-10.5Z",dots:"M5 12h.01M12 12h.01M19 12h.01",close:"M6 6l12 12M18 6 6 18",globe:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm-9 9h18M12 3c2.5 2.5 3.5 5.5 3.5 9s-1 6.5-3.5 9c-2.5-2.5-3.5-5.5-3.5-9s1-6.5 3.5-9Z",friends:"M9 11a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm-6 9c0-3.3 2.7-6 6-6s6 2.7 6 6m1-9.5a3 3 0 1 0 0-6m2.5 15.5c0-2.4-1.2-4.4-3-5.4",lock:"M6.5 10.5h11v9h-11Zm2.5 0V8a3 3 0 0 1 6 0v2.5",camera:"M4 7.5h3l1.5-2h7l1.5 2h3v11H4Zm8 2.5a3.25 3.25 0 1 0 0 6.5 3.25 3.25 0 0 0 0-6.5Z",gif:"M3.5 5.5h17v13h-17Zm6 4.5H7v4h2.5v-2M12 10v4m2.5 0v-4h2.5m-2.5 2H16.5",smile:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18ZM8.5 14.5a4.5 4.5 0 0 0 7 0M9 9.5h.01M15 9.5h.01",sticker:"M4.5 4.5h15v8l-7 7h-8Zm15 8h-5a2 2 0 0 0-2 2v5",send:"M3.5 11.5 20.5 4l-7.5 17-2-7.5Zm7.5 2 9.5-9.5",chevronDown:"M6 9.5 12 15l6-5.5",chevronRight:"M9.5 6 15 12l-5.5 6",chevronLeft:"M14.5 6 9 12l5.5 6",plus:"M12 5v14M5 12h14",photo:"M4 5h16v14H4Zm0 10 4.5-4.5 4 4 2.5-2.5L20 17M15.5 9h.01",star:"M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9Z",reply:"M9.5 6 4 11.5 9.5 17M4.5 11.5h9a6 6 0 0 1 6 6V19",userPlus:"M10 11a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm-6.5 9c0-3.6 2.9-6.5 6.5-6.5 1.3 0 2.5.4 3.5 1M18.5 13v6m-3-3h6",translate:"M4 5.5h9M8.5 3.5v2c0 4-2 7-5 8.5m2.5-5c1 2 3 3.5 5.5 4.5M12.5 20.5l4-9 4 9m-6.75-2.5h5.5",hide:"M5 5l14 14M10.6 6.1A9 9 0 0 1 12 6c5 0 8.5 4.5 9 6-.3.9-1.2 2.3-2.6 3.6M6.6 7.6C4.6 8.9 3.4 10.9 3 12c.5 1.5 4 6 9 6 1.6 0 3-.4 4.2-1",settings:"M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm7.5 3a7.5 7.5 0 0 0-.1-1.2l2-1.6-2-3.4-2.4 1a7.5 7.5 0 0 0-2-1.2L14.5 3h-5l-.5 2.6a7.5 7.5 0 0 0-2 1.2l-2.4-1-2 3.4 2 1.6a7.5 7.5 0 0 0 0 2.4l-2 1.6 2 3.4 2.4-1a7.5 7.5 0 0 0 2 1.2l.5 2.6h5l.5-2.6a7.5 7.5 0 0 0 2-1.2l2.4 1 2-3.4-2-1.6c.1-.4.1-.8.1-1.2Z",help:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm-2.5 6.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6m0 3h.01",moon:"M19.5 14.5A8 8 0 0 1 9.5 4.5a8 8 0 1 0 10 10Z",feedback:"M4.5 4.5h15v11h-8l-4.5 4v-4h-2.5Zm7.5 3v3.5m0 2.5h.01",logout:"M14.5 4.5h5v15h-5M10 8l-4 4 4 4m-4-4h11",work:"M4 8h16v11H4Zm5-3h6v3H9Zm-5 7.5h16",school:"M2.5 9 12 4.5 21.5 9 12 13.5Zm4 2v5c1.5 1.5 3.5 2.5 5.5 2.5s4-1 5.5-2.5v-5",location:"M12 21s-6.5-6-6.5-11a6.5 6.5 0 0 1 13 0c0 5-6.5 11-6.5 11Zm0-13.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z",heart:"M12 20s-7.5-4.5-7.5-10a4.25 4.25 0 0 1 7.5-2.7A4.25 4.25 0 0 1 19.5 10c0 5.5-7.5 10-7.5 10Z",clock:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm0 4.5V12l3 2",calendar:"M4.5 6h15v14h-15Zm0 4.5h15M8.5 3.5v4m7-4v4",feed:"M4.5 4.5h15v15h-15Zm3 4h9m-9 3.5h9m-9 3.5h5",memories:"M4 12a8 8 0 1 0 2.4-5.7L4 8.5m0-4v4h4m4-.5V12l3 2",saved:"M6.5 4h11v16.5L12 16.5l-5.5 4Z",ads:"M4 19.5V5m0 14.5h16M8 15.5l3.5-4 3 2.5 4.5-6",jobs:"M4 8.5h16V19H4Zm5.5-3h5v3h-5Z",fundraisers:"M12 19.5s-6-3.6-6-8a3.4 3.4 0 0 1 6-2.2 3.4 3.4 0 0 1 6 2.2c0 4.4-6 8-6 8ZM3.5 21h17",post:"M15.5 4.5l4 4L9 19H5v-4Zm-2.5 2.5 4 4",story:"M6 3.5h9.5l3 3V20.5H6Zm3.5 7h5m-5 3.5h5",edit:"M15.5 4.5l4 4L9 19H5v-4Z",verified:"M12 2.5l2.3 1.7 2.8-.2.9 2.7 2.4 1.5-.6 2.8 1.2 2.6-2 2 .1 2.8-2.7.8-1.5 2.4-2.8-.6L12 22l-2.1-1.8-2.8.6-1.5-2.4-2.7-.8.1-2.8-2-2 1.2-2.6-.6-2.8 2.4-1.5.9-2.7 2.8.2Zm-3.5 9.5 2.5 2.5 4.5-5",filter:"M4 6h16M7 12h10m-7 6h4",pencil:"M15.5 4.5l4 4L9 19H5v-4Z"};function U({name:e,size:t=20,className:l="",strokeWidth:n=2,label:a}){return o("svg",{className:`inline-block shrink-0 ${l}`,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round",role:a?"img":void 0,"aria-label":a,"aria-hidden":a?void 0:!0,children:o("path",{d:Qm[e]??Qm.dots})})}const Zm=[["#fbc2a4","#f7797d"],["#a1c4fd","#c2e9fb"],["#d4fc79","#96e6a1"],["#fddb92","#d1fdff"],["#c79081","#dfa579"],["#89f7fe","#66a6ff"],["#fcb69f","#ffecd2"],["#30cfd0","#330867"],["#a8edea","#fed6e3"],["#5ee7df","#b490ca"]],Vm=["#2f4858","#33658a","#55505c","#3d5a40","#6b4e3d","#264653","#4a4e69","#386641"],l_=5;function n_(e,t,l,n){switch(e){case 0:return``;case 1:return``;case 2:{let a="";for(let u=0;u<9;u++){const i=t/9,c=l*(.25+u*37%40/100);a+=``}return a}case 3:return``;default:return``}}const Xm=new Map;function vt(e,t,l){const n=e%Zm.length,a=(e>>>4)%l_,u=Vm[(e>>>8)%Vm.length],i=`${n}-${a}-${u}-${t}x${l}`;let c=Xm.get(i);if(c)return c;const[r,s]=Zm[n],f=`s${n}${a}`,p=`${n_(a,t,l,u)}`;return c=`data:image/svg+xml,${encodeURIComponent(p)}`,Xm.set(i,c),c}const $m=["#e76f51","#2a9d8f","#e9c46a","#264653","#8ab17d","#b56576","#6d597a","#457b9d","#f4a261","#3d405b","#81b29a","#e07a5f"],Km=["#f1c27d","#e0ac69","#c68642","#8d5524","#ffdbac","#a0522d"],Jm=["#2b2118","#5a3825","#b7950b","#1c1c1c","#8e4b32","#d6d6d6"],Fm=new Map;function a_(e){const t=e%144;let l=Fm.get(t);if(l)return l;const n=$m[t%$m.length],a=Km[(t>>>1)%Km.length],u=Jm[(t>>>2)%Jm.length],i=t%3===0,c=`${i?``:""}`;return l=`data:image/svg+xml,${encodeURIComponent(c)}`,Fm.set(t,l),l}function Ue({seed:e,size:t=40,online:l=!1,ring:n=!1,square:a=!1,label:u=""}){const i=_.useId(),c=t/2,r=Math.max(8,t*.24),s=n?t+8:t,f=n?4:0;return b("svg",{className:"block shrink-0 overflow-visible",width:s,height:s,viewBox:`0 0 ${s} ${s}`,role:u?"img":void 0,"aria-label":u||void 0,"aria-hidden":u?void 0:!0,children:[b("mask",{id:i,children:[a?o("rect",{x:f,y:f,width:t,height:t,rx:t*.2,fill:"white"}):o("circle",{cx:f+c,cy:f+c,r:c,fill:"white"}),l&&o("circle",{cx:f+t-r/2,cy:f+t-r/2,r:r/2+2,fill:"black"})]}),b("g",{mask:`url(#${i})`,children:[o("image",{x:f,y:f,width:t,height:t,href:a_(e),preserveAspectRatio:"xMidYMid slice"}),a?o("rect",{className:"fill-none stroke-black/10",x:f+.5,y:f+.5,width:t-1,height:t-1,rx:t*.2}):o("circle",{className:"fill-none stroke-black/10",cx:f+c,cy:f+c,r:c-.5})]}),n&&o("circle",{className:"stroke-accent fill-none",cx:s/2,cy:s/2,r:s/2-1.5,strokeWidth:"3"}),l&&o("circle",{className:"fill-online",cx:f+t-r/2,cy:f+t-r/2,r:r/2})]})}const Wm="a[href], button:not([disabled]), input, textarea, [tabindex]:not([tabindex='-1'])";function Uf({label:e,anchorRef:t,onClose:l,className:n="",children:a,role:u="dialog",autoFocus:i=!0}){const c=_.useRef(null);return _.useLayoutEffect(()=>{if(!i)return;(c.current.querySelector(Wm)??c.current).focus({preventScroll:!0})},[i]),_.useEffect(()=>{const r=c.current,s=p=>De("popover.outside",()=>{!r.contains(p.target)&&!(t&&t.current&&t.current.contains(p.target))&&l("outside")}),f=p=>De("popover.keys",()=>{if(p.key==="Escape"){p.preventDefault(),l("escape"),t&&t.current&&t.current.focus();return}if(p.key!=="Tab")return;const m=r.querySelectorAll(Wm);if(!m.length)return;const y=m[0],N=m[m.length-1];p.shiftKey&&document.activeElement===y?(p.preventDefault(),N.focus()):!p.shiftKey&&document.activeElement===N&&(p.preventDefault(),y.focus())});return document.addEventListener("mousedown",s,!0),r.addEventListener("keydown",f),()=>{document.removeEventListener("mousedown",s,!0),r.removeEventListener("keydown",f)}},[t,l]),o("div",{ref:c,role:u,"aria-label":e,tabIndex:-1,className:`bg-surface shadow-popover absolute z-40 overflow-hidden rounded-lg outline-none ${n}`,children:a})}function zt(e){t_(e),window.dispatchEvent(new Event(e))}const u_={user:3,person:1.5,group:2,page:2,keyword:1,post:.5},i_=/[\s&\-·,.'#]+/;function ms(e){return e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()}function ay(e){const t=[],l=ms(e);let n=0;for(const a of l.split(i_)){const u=l.indexOf(a,n);a&&t.push({term:a,start:u}),n=u+a.length}return t}function c_(e){const t=new Map,l=e.map((u,i)=>{const c=ay(u.name);return c.forEach((r,s)=>{let f=t.get(r.term);f||(f=[],t.set(r.term,f)),f.push({doc:i,position:s,start:r.start})}),{entry:u,length:c.length}}),n=Array.from(t.keys()).sort(),a=new Map;for(const u of n){let i=a.get(u[0]);i||(i=[],a.set(u[0],i)),i.push(u)}return{docs:l,postings:t,terms:n,byInitial:a}}function o_(e,t){let l=0,n=e.length;for(;l>>1;e[a]l)return l+1;let n=null,a=new Array(t.length+1);for(let u=0;u<=t.length;u++)a[u]=u;for(let u=1;u<=e.length;u++){const i=new Array(t.length+1);i[0]=u;let c=u;for(let r=1;r<=t.length;r++){const s=e.charCodeAt(u-1)===t.charCodeAt(r-1)?0:1;let f=Math.min(a[r]+1,i[r-1]+1,a[r-1]+s);n&&u>1&&r>1&&e[u-1]===t[r-2]&&e[u-2]===t[r-1]&&(f=Math.min(f,n[r-2]+1)),i[r]=f,fl)return l+1;n=a,a=i}return a[t.length]}function s_(e){return e.length>=7?2:e.length>=4?1:0}function f_(e,t,l){const n=new Map;if(e.postings.has(t)&&n.set(t,1),l)for(let i=o_(e.terms,t);it.length?i.slice(0,t.length):i,r=r_(t,c,u);r<=u&&n.set(i,(.5-r*.15)*(c.length/i.length))}return n}function d_(e,t,l){const n=ay(t).map(c=>c.term);if(!n.length)return[];const a=e.docs.length;let u=null;n.forEach((c,r)=>{const s=f_(e,c,r===n.length-1),f=new Map;for(const[m,y]of s){const N=e.postings.get(m),E=Math.log(1+a/N.length);for(const w of N){if(u&&!u.has(w.doc))continue;const h=E*y*(w.position===0?1.2:1),d=f.get(w.doc);(!d||d.valuer.score-c.score||c.entry.name.localeCompare(r.entry.name)),i.slice(0,l)}const uy=_.createContext(()=>{}),Ol=_.createContext(!1),m_=_.createContext({scheme:"light",density:"comfortable"}),zu=_.createContext("app"),Im=new Map,Ga=new Map;function iy(e,t,l){_.useLayoutEffect(()=>{const n=e.current;return Im.set(n,{name:t,surface:l}),Ga.set(l,(Ga.get(l)??0)+1),()=>{Im.delete(n);const a=Ga.get(l)-1;a?Ga.set(l,a):Ga.delete(l)}},[e,t,l])}const bc=new Set;let h_=0;function g_(e){bc.delete(e)&&bc.size===0&&L("visually_complete",{epoch:++h_})}function y_(e){return _.useLayoutEffect(()=>{const t=e.current;return t.complete||bc.add(t),()=>bc.delete(t)},[e]),_.useCallback(t=>g_(t.currentTarget),[])}function Fc(e){const t=_.useContext(m_);return _.useMemo(()=>t.density==="compact"?`${e} density-compact`:e,[t,e])}function T({as:e="div",className:t="",ref:l,...n}){const a=Fc(t),u=_.useContext(zu),i=n["data-log-scope"],c=_.useMemo(()=>i?`${u}/${i}`:u,[u,i]),r=o(e,{ref:l,className:a||void 0,...n});return c===u?r:o(zu.Provider,{value:c,children:r})}const Pm=_.createContext(null);function M({as:e="span",className:t="",children:l,...n}){const a=_.useContext(Pm),u=Fc(t),i=_.useMemo(()=>({depth:a?a.depth+1:0,className:u}),[a,u]);return o(Pm.Provider,{value:i,children:o(e,{className:u||void 0,...n,children:l})})}const p_=[[/^#\/profile\/([^/]+)$/,"profile"],[/^#\/post\/([^/]+)$/,"post"],[/^#\/groups\/([^/]+)/,"group"],[/^#\/hashtag\/([^/]+)$/,"hashtag"],[/^#\/photo\/([^/]+)$/,"photo"],[/^#\/comment\/([^/]+)$/,"comment"],[/^#\/messages/,"messages"],[/^#\/search\//,"search"]];function v_(e){if(!e||!e.startsWith("#/"))return null;for(const[t,l]of p_)if(t.test(e))return l;return"page"}function K({href:e,className:t="",onClick:l,children:n,ref:a,...u}){const i=_.useRef(null),c=a??i,r=_.useContext(Ol),s=_.useContext(zu),f=Fc(t),p=_.useMemo(()=>v_(e),[e]),{page:m}=Rf(),y=e===`#${m}`?"page":void 0;iy(c,u["data-log"]??p??"outbound",s);const N=_.useCallback(E=>{l&&l(E),p&&!E.defaultPrevented&&E.preventDefault()},[l,p]);return o("a",{ref:c,href:e,className:f||void 0,onClick:N,"aria-current":y,...u,tabIndex:r?-1:u.tabIndex,children:n})}function bt({className:e="",alt:t="",...l}){const n=_.useRef(null),[a,u]=_.useState(!1),i=Fc(e),c=y_(n),r=_.useCallback(s=>{c(s),u(!0)},[c]);return o("img",{ref:n,className:i||void 0,alt:t,onLoad:r,"data-loaded":a||void 0,...l})}const b_=8,__=[],S_=Y("SearchBootstrapQuery",{status:!0,root:{search_bootstrap:!0}});function x_(e,t){const l=ms(e),n=[];for(const a of ms(t).split(/\s+/).filter(Boolean)){let u=0,i;for(;(i=l.indexOf(a,u))!==-1;)n.push([i,i+a.length]),u=i+a.length}return n}function N_({text:e,ranges:t}){const l=new Array(e.length).fill(!1);for(const[u,i]of t)for(let c=u;cu.preventDefault(),children:[a?o(M,{className:"bg-surface-alt text-secondary flex h-9 w-9 items-center justify-center rounded-full",children:o(U,{name:"search",size:16})}):o(Ue,{seed:t.avatar_seed,size:36,square:t.type!=="user"&&t.type!=="person",label:""}),b(M,{className:"min-w-0",children:[o(M,{className:"text-primary block truncate text-[15px]",children:o(N_,{text:t.name,ranges:l})}),t.subtitle&&o(M,{className:"text-secondary block truncate text-[13px]",children:t.subtitle})]})]})})});function T_(){const[e,t]=_.useState(!1),[l,n]=_.useState(""),[a,u]=_.useState({query:"",results:[]}),[i,c]=_.useState(-1),r=_.useRef(null),s=_.useRef(null),f=_.useRef(null),p=H(S_,Ve(ke("SearchBootstrap")));An(e?Ve(ke("SearchBootstrap")):null);const m=p&&p.status==="ready",y=_.useMemo(()=>m?c_(p.root.search_bootstrap.entries):null,[m,p]),N=_.useMemo(()=>y?d_(y,l,b_):[],[y,l]);_.useEffect(()=>{e&&m&&zt("search-ready")},[e,m]),_.useEffect(()=>{a.query&&a.query===l&&zt("search-results")},[a,l]);const E=ue("search.focus",()=>{e||(Jl("search-ready"),Ua("SearchBootstrap"),t(!0),L("search_open",{}))}),w=ue("search.close",S=>{t(!1),n(""),c(-1),r.current&&(r.current.value=""),f.current&&f.current.cancel(),L("search_close",{reason:S})}),h=ue("search.input",S=>{const C=S.target.value;if(n(C),c(-1),f.current&&f.current.cancel(),f.current=null,!C.trim()||!Da("search_remote_typeahead"))return;const A=wf("Search",{text:C},{key:`Search:${C}`});f.current=A,A.promise.then(z=>De("search.remote",()=>{f.current===A&&u({query:C,results:z.search.results})}))}),d=ue("search.keys",S=>{const C=N.length+(a.query===l?a.results.length:0);S.key==="ArrowDown"?(S.preventDefault(),c(A=>Math.min(C-1,A+1))):S.key==="ArrowUp"?(S.preventDefault(),c(A=>Math.max(-1,A-1))):S.key==="Escape"?(w("escape"),r.current.blur()):S.key==="Enter"&&l.trim()&&L("search_submit",{length:l.length,results:C})}),g=a.query===l?a.results.filter(S=>!N.some(C=>C.entry.name===S.name)):[],v=m?p.root.search_bootstrap.recent:[];return b(T,{ref:s,className:"relative",children:[b("label",{className:"bg-surface-alt text-secondary flex h-10 w-[200px] items-center gap-2 rounded-xl px-3",children:[o(U,{name:"search",size:16}),o("input",{ref:r,id:"search-input",className:"text-primary placeholder:text-secondary w-full bg-transparent text-[15px] outline-none",placeholder:"Search Commons","aria-label":"Search Commons",role:"combobox","aria-expanded":e,"aria-controls":"search-results","aria-autocomplete":"list",autoComplete:"off",onFocus:E,onClick:E,onInput:h,onKeyDown:d,"data-log":"search_input"})]}),e&&o(Uf,{label:"Search",anchorRef:s,onClose:w,className:"left-0 top-12 w-[320px] p-2",role:"presentation",autoFocus:!1,children:b(T,{as:"ul",id:"search-results",role:"listbox","aria-label":"Search results",className:"max-h-[440px] overflow-y-auto",children:[!l&&b(Rt.Fragment,{children:[b(T,{as:"li",className:"flex items-center justify-between px-2 py-1",children:[o(M,{className:"text-primary text-[17px] font-semibold",children:"Recent"}),o("button",{type:"button",className:"text-accent hover:bg-hover rounded-md px-2 py-1 text-[15px]",children:"Edit"})]}),v.map((S,C)=>o(Go,{entry:S,ranges:__,active:C===i},S.id))]}),N.map((S,C)=>o(Go,{entry:S.entry,ranges:S.highlights,active:C===i},S.entry.id)),g.map((S,C)=>o(Go,{entry:S,ranges:x_(S.name,l),active:N.length+C===i},S.id)),l&&o(T,{as:"li",children:b(K,{className:"text-accent hover:bg-hover flex items-center gap-3 rounded-md px-2 py-2 text-[15px]",href:`#/search/${encodeURIComponent(l)}`,onClick:S=>S.preventDefault(),children:[o(M,{className:"bg-accent flex h-9 w-9 items-center justify-center rounded-full text-white",children:o(U,{name:"search",size:16})}),"Search for ",l]})})]})})]})}const E_=new Intl.DateTimeFormat("en-US",{month:"long",day:"numeric",timeZone:"UTC"}),M_=new Intl.DateTimeFormat("en-US",{weekday:"long",year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit",timeZone:"UTC"}),A_=new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1});function Wc(e){const t=Qu-e;return t<60?"Just now":t<3600?`${Math.floor(t/60)}m`:t<86400?`${Math.floor(t/3600)}h`:t<86400*7?`${Math.floor(t/86400)}d`:E_.format(new Date(e*1e3))}function cy(e){return M_.format(new Date(e*1e3))}function ko(e){return A_.format(e)}function kl({width:e="100%",height:t=10}){return o("span",{className:"bg-glimmer block animate-pulse rounded-full",style:{width:e,height:t}})}function Cn({avatarSize:e=40,lines:t=2}){return b("div",{className:"flex items-center gap-3 px-3 py-2","aria-hidden":"true",children:[o("span",{className:"bg-glimmer block shrink-0 animate-pulse rounded-full",style:{width:e,height:e}}),o("div",{className:"flex flex-1 flex-col gap-2",children:["70%","45%","60%"].slice(0,t).map(n=>o(kl,{width:n},n))})]})}function oa(){return b("div",{className:"bg-surface shadow-card rounded-lg p-4","aria-busy":"true","aria-label":"Loading post",children:[o(Cn,{}),b("div",{className:"mt-3 flex flex-col gap-2",children:[o(kl,{width:"92%"}),o(kl,{width:"80%"}),o(kl,{width:"40%"})]}),o("div",{className:"bg-glimmer mt-4 h-48 animate-pulse rounded-md"})]})}function Ic(e){_.useEffect(()=>{e&&zt("menu-ready")},[e])}function Hf({title:e,children:t}){return b(T,{className:"flex items-center justify-between px-4 pb-2 pt-3",children:[o(M,{as:"h2",className:"text-primary text-2xl font-bold",children:e}),o(T,{className:"flex gap-1",children:t})]})}function oy({icon:e,label:t}){return o("button",{type:"button",className:"text-secondary hover:bg-hover rounded-full p-2","aria-label":t,children:o(U,{name:e,size:18})})}function C_(){const[e,t]=_.useState(""),l=_.useMemo(()=>{const n=e.trim().toLowerCase();return n?Om.map(a=>({...a,items:a.items.filter(u=>`${u.label} ${u.description}`.toLowerCase().includes(n))})).filter(a=>a.items.length):Om},[e]);return Ic(!0),b(T,{className:"w-[560px]",children:[o(Hf,{title:"Explore"}),b(T,{className:"bg-canvas flex max-h-[480px] gap-3 overflow-y-auto p-3",children:[b(T,{className:"bg-surface shadow-card flex-1 rounded-lg p-3",children:[b("label",{className:"bg-surface-alt text-secondary flex items-center gap-2 rounded-full px-3 py-2",children:[o(U,{name:"search",size:16}),o("input",{className:"text-primary placeholder:text-secondary w-full bg-transparent text-[15px] outline-none",placeholder:"Find a destination",value:e,onChange:n=>t(n.target.value),"data-log":"menu_search"})]}),l.map(n=>b(T,{as:"section",className:"border-divider border-b py-2 last:border-0",children:[o(M,{as:"h3",className:"text-primary px-2 py-1 text-[17px] font-semibold",children:n.title}),o(T,{as:"ul",children:n.items.map(a=>o(T,{as:"li",children:b(K,{className:"hover:bg-hover flex items-start gap-3 rounded-md p-2",href:`#/${a.label.toLowerCase().replace(/\s+/g,"-")}`,"data-log":"menu_item",onClick:u=>u.preventDefault(),children:[o(M,{className:"bg-accent-soft text-accent flex h-9 w-9 shrink-0 items-center justify-center rounded-lg",children:o(U,{name:a.icon,size:20})}),b(M,{className:"min-w-0",children:[o(M,{className:"text-primary block text-[15px] font-medium",children:a.label}),o(M,{className:"text-secondary block text-[13px] leading-4",children:a.description})]})]})},a.label))})]},n.title))]}),b(T,{className:"bg-surface shadow-card w-[180px] shrink-0 self-start rounded-lg p-2",children:[o(M,{as:"h3",className:"text-primary px-2 py-1 text-[17px] font-semibold",children:"Start something"}),Q2.map(n=>b("button",{type:"button",className:"text-primary hover:bg-hover flex w-full items-center gap-3 rounded-md p-2 text-left text-[15px] font-medium","data-log":"menu_create",children:[o(M,{className:"bg-surface-alt flex h-8 w-8 items-center justify-center rounded-full",children:o(U,{name:n.icon,size:18})}),n.label]},n.label))]})]})]})}const Pc=$("id name avatar_seed"),ry=Y("ThreadRow_thread",{...$("id snippet from_viewer updated_time unread online"),participant:Pc}),w_=Y("ThreadsQuery",{status:!0,root:{threads:he(ry)}});function z_({thread:e,previews:t}){const{participant:l}=e;return o(T,{as:"li",children:b(K,{className:"hover:bg-hover flex items-center gap-3 rounded-lg p-2",href:`#/messages/${e.id}`,"data-log":"messages_thread",onClick:n=>n.preventDefault(),children:[o(Ue,{seed:l.avatar_seed,size:56,online:e.online,label:l.name}),b(M,{className:"min-w-0 flex-1",children:[o(M,{className:`block truncate text-[15px] ${e.unread?"font-semibold":""} text-primary`,children:l.name}),t&&b(M,{className:`flex gap-1 text-[13px] ${e.unread?"text-primary font-semibold":"text-secondary"}`,children:[b(M,{className:"truncate",children:[e.from_viewer?"You: ":"",e.snippet]}),o(M,{"aria-hidden":"true",children:"·"}),o(M,{className:"shrink-0",children:Wc(e.updated_time)})]})]}),e.unread&&o(M,{className:"bg-accent h-3 w-3 shrink-0 rounded-full","aria-label":"Unread"})]})})}function O_(){const e=H(w_,Ve(ke("Threads")));An(Ve(ke("Threads")));const t=e&&e.status==="ready",[l,n]=_.useState("all"),a=Da("menu_message_previews");return Ic(t),b(T,{className:"w-[360px]",children:[o(Hf,{title:"Messages",children:o(oy,{icon:"edit",label:"Write a message"})}),b(T,{className:"px-4 pb-2",children:[b("label",{className:"bg-surface-alt text-secondary flex items-center gap-2 rounded-full px-3 py-2",children:[o(U,{name:"search",size:16}),o("input",{className:"placeholder:text-secondary w-full bg-transparent text-[15px] outline-none",placeholder:"Search messages","data-log":"messages_search"})]}),o(T,{className:"mt-2 flex gap-1",role:"tablist",children:["all","unread","requests"].map(u=>o("button",{type:"button",role:"tab","aria-selected":l===u,className:`rounded-full px-3 py-1.5 text-[15px] font-semibold capitalize ${l===u?"bg-accent-soft text-accent":"text-primary hover:bg-hover"}`,onClick:()=>n(u),children:u},u))})]}),o(T,{as:"ul",className:"max-h-[420px] overflow-y-auto px-2 pb-2",children:t?e.root.threads.map(u=>o(R_,{threadRef:u,previews:a},u.__id)):[0,1,2,3,4].map(u=>o(Cn,{avatarSize:56},u))}),o(K,{className:"border-divider text-accent hover:bg-hover block border-t py-3 text-center text-[15px] font-semibold",href:"#/messages",children:"Open messages"})]})}function R_({threadRef:e,previews:t}){const l=H(ry,e);return o(z_,{thread:l,previews:t})}const D_={comment:["comment","bg-badge-green"],reaction:["like","bg-accent"],group:["groups","bg-badge-blue"],birthday:["calendar","bg-badge-pink"],friend:["friends","bg-accent"],memory:["memories","bg-badge-purple"],event:["calendar","bg-badge-red"],mention:["chat","bg-badge-green"]};function U_({text:e}){return e.split("**").map((l,n)=>n%2?o(M,{as:"strong",children:l},n):o(M,{children:l},n))}const sy=Y("NotificationRow_notification",{...$("id kind text created_time unread has_action"),actor:Pc}),H_=Y("NotificationsQuery",{status:!0,root:{notifications:{unread_count:!0,edges:he(sy)}}});function B_({notificationRef:e}){const t=H(sy,e),{actor:l}=t,[n,a]=D_[t.kind];return o(T,{as:"li",children:b(K,{className:"hover:bg-hover flex items-start gap-3 rounded-lg p-2",href:`#/notifications/${t.id}`,"data-log":"notification",onClick:u=>u.preventDefault(),children:[b(M,{className:"relative shrink-0",children:[o(Ue,{seed:l.avatar_seed,size:56,label:l.name}),o(M,{className:`absolute -bottom-1 -right-1 flex h-7 w-7 items-center justify-center rounded-full text-white ${a}`,children:o(U,{name:n,size:14})})]}),b(M,{className:"min-w-0 flex-1",children:[o(M,{className:`line-clamp-3 text-[15px] leading-5 ${t.unread?"text-primary":"text-secondary"}`,children:o(U_,{text:t.text})}),o(M,{className:`text-[13px] ${t.unread?"text-accent font-semibold":"text-secondary"}`,children:Wc(t.created_time)}),t.has_action&&b(M,{className:"mt-2 flex gap-2",children:[o("button",{type:"button",className:"bg-accent flex-1 rounded-md py-1.5 text-sm font-semibold text-white",children:"Accept"}),o("button",{type:"button",className:"bg-surface-alt text-primary flex-1 rounded-md py-1.5 text-sm font-semibold",children:"Ignore"})]})]}),t.unread&&o(M,{className:"bg-accent mt-6 h-3 w-3 shrink-0 rounded-full","aria-label":"Unread"})]})})}function q_(){const e=H(H_,Ve(ke("Notifications")));An(Ve(ke("Notifications")));const t=e&&e.status==="ready",[l,n]=_.useState("everything");Ic(t);const a=_.useMemo(()=>{if(!t)return[];const u=e.root.notifications.edges;return[{title:"Today",items:u.slice(0,5)},{title:"Before that",items:u.slice(5)}]},[t,e]);return b(T,{className:"w-[360px]",children:[o(Hf,{title:"Activity",children:o(oy,{icon:"settings",label:"Activity settings"})}),o(T,{className:"flex gap-1 px-4 pb-2",role:"tablist",children:["everything","mentions"].map(u=>o("button",{type:"button",role:"tab","aria-selected":l===u,className:`rounded-full px-3 py-1.5 text-[15px] font-semibold capitalize ${l===u?"bg-accent-soft text-accent":"text-primary hover:bg-hover"}`,onClick:()=>n(u),children:u},u))}),o(T,{className:"max-h-[460px] overflow-y-auto px-2 pb-2",children:t?a.map(u=>b(T,{as:"section",children:[b(T,{className:"flex items-center justify-between px-2 py-1",children:[o(M,{as:"h3",className:"text-primary text-[17px] font-semibold",children:u.title}),u.title==="Today"&&o(K,{className:"text-accent text-[15px] hover:underline",href:"#/notifications",children:"Mark all read"})]}),o(T,{as:"ul",children:u.items.map(i=>o(B_,{notificationRef:i},i.__id))})]},u.title)):[0,1,2,3,4].map(u=>o(Cn,{avatarSize:56,lines:3},u))})]})}const L_=ue("menu.profile",(e,t)=>{e.preventDefault(),Zu(`/profile/${t}`)}),fy=Y("ProfileSwitchRow_profile",Pc),j_=Y("AccountQuery",{status:!0,root:{account:{viewer:Pc,profiles:he(fy),rows:!0}}});function Y_({profileRef:e}){const t=H(fy,e);return b("button",{type:"button",className:"hover:bg-hover flex w-full items-center gap-3 rounded-md p-2 text-left",children:[o(Ue,{seed:t.avatar_seed,size:36,square:!0,label:t.name}),o(M,{className:"text-primary text-[15px] font-medium",children:t.name})]})}function G_(){const e=H(j_,Ve(ke("Account")));An(Ve(ke("Account")));const t=e&&e.status==="ready";Ic(t);const l=t?e.root.account:null,n=l?l.viewer:null;return o(T,{className:"w-[360px] p-3",children:t?b(Rt.Fragment,{children:[b(T,{className:"shadow-card rounded-lg p-1",children:[b(K,{className:"hover:bg-hover flex items-center gap-3 rounded-md p-2",href:`#/profile/${n.id}`,onClick:a=>L_(a,n.id),"data-log":"account_profile",children:[o(Ue,{seed:n.avatar_seed,size:40,label:n.name}),o(M,{className:"text-primary text-[17px] font-semibold",children:n.name})]}),o(T,{className:"border-divider mx-2 border-t"}),l.profiles.map(a=>o(Y_,{profileRef:a},a.__id)),o("button",{type:"button",className:"bg-surface-alt text-primary hover:bg-hover m-1 w-[calc(100%-8px)] rounded-md py-2 text-[15px] font-semibold",children:"Switch profile"})]}),o(T,{as:"ul",className:"mt-2",children:l.rows.map(a=>o(T,{as:"li",children:b("button",{type:"button",className:"hover:bg-hover flex w-full items-center gap-3 rounded-md p-2 text-left","data-log":"account_row",children:[o(M,{className:"bg-surface-alt text-primary flex h-9 w-9 items-center justify-center rounded-full",children:o(U,{name:a.icon,size:20})}),o(M,{className:"text-primary flex-1 text-[15px] font-medium",children:a.label}),a.shortcut&&o(M,{className:"text-secondary text-xs",children:a.shortcut}),a.chevron&&o(U,{name:"chevronRight",size:20,className:"text-secondary"})]})},a.label))}),o(M,{as:"p",className:"text-secondary px-2 pt-2 text-xs",children:"About · Privacy · Terms · Accessibility · Commons © 2026"})]}):o(Cn,{lines:2})})}const k_=[{id:"home",label:"Home"},{id:"communities",label:"Communities"},{id:"events",label:"Events"}],Ka={explore:{label:"Explore",icon:"compass",query:null,Component:C_},messages:{label:"Messages",icon:"chat",query:"Threads",badge:"messages",Component:O_},notifications:{label:"Notifications",icon:"bell",query:"Notifications",badge:"notifications",Component:q_},account:{label:"Account",icon:null,query:"Account",Component:G_}},hs={current:null},Q_=Y("HeaderBadgesQuery",{status:!0,root:{badges:!0}}),Z_=ue("header.home",e=>{if(e==="/"){Jl("home-feed-refreshed"),hs.current&&(hs.current.scrollTop=0),V5(),P1();return}Jl("home-ready"),Zu("/")});function V_({id:e,open:t,onToggle:l,badge:n,viewerSeed:a}){const u=_.useRef(null),i=Ka[e],c=_.useCallback(()=>l(null),[l]);return b("div",{className:"relative",children:[b("button",{ref:u,type:"button",id:`header-${e}`,className:`relative flex h-10 w-10 items-center justify-center rounded-xl ${t?"bg-accent-soft text-accent":"bg-surface-alt text-primary hover:bg-hover"}`,"aria-label":n?`${i.label}, ${n} unread`:i.label,"aria-expanded":t,"aria-haspopup":"dialog",onClick:()=>l(t?null:e),"data-log":`header_${e}`,children:[i.icon?o(U,{name:i.icon,size:20}):o(Ue,{seed:a,size:40,label:""}),n>0&&o("span",{className:"bg-badge-red absolute -right-1 -top-1 min-w-[19px] rounded-full px-1 text-center text-xs font-semibold leading-[19px] text-white",children:n})]}),t&&o(Uf,{label:i.label,anchorRef:u,onClose:c,className:"right-0 top-12",children:o(i.Component,{})})]})}function X_({viewerSeed:e}){const{page:t}=Rf(),[l,n]=_.useState(null),a=H(Q_,Ve(ke("Shortcuts"))),u=a&&a.root?a.root.badges:{notifications:0,messages:0},i=_.useCallback(ue("header.menu",c=>{c&&(Jl("menu-ready",{menu:c}),Ka[c].query&&Ua(Ka[c].query),L("menu_open",{menu:c})),n(c)}),[]);return b("header",{className:"bg-surface shadow-header relative z-30 flex h-14 shrink-0 items-center justify-between px-3",children:[b("div",{className:"flex items-center gap-2",children:[o("a",{className:"bg-accent flex h-10 w-10 items-center justify-center rounded-xl text-white",href:"#/","aria-label":"Commons home",onClick:c=>c.preventDefault(),children:b("svg",{width:"26",height:"26",viewBox:"0 0 26 26",fill:"none",stroke:"currentColor",strokeWidth:"2.2","aria-hidden":"true",children:[o("circle",{cx:"9.5",cy:"10",r:"5.5"}),o("circle",{cx:"16.5",cy:"10",r:"5.5"}),o("circle",{cx:"13",cy:"16",r:"5.5"})]})}),o(T_,{})]}),o("nav",{className:"flex items-center gap-1","aria-label":"Primary",children:k_.map(c=>{const r=c.id==="home"&&t==="/";return o("button",{type:"button",id:`tab-${c.id}`,className:`rounded-lg px-3 py-2 text-[15px] font-semibold ${r?"bg-accent-soft text-accent":"text-secondary hover:bg-hover"}`,"aria-current":r?"page":void 0,onClick:c.id==="home"?()=>Z_(t):void 0,"data-log":`tab_${c.id}`,children:c.label},c.id)})}),o("nav",{className:"flex items-center gap-2","aria-label":"Account controls and settings",children:Object.keys(Ka).map(c=>o(V_,{id:c,open:l===c,onToggle:i,badge:u[Ka[c].badge]??0,viewerSeed:e},c))})]})}const $_=.5,eh=new Set;function K_(e,t){const l=e.getBoundingClientRect();for(const n of t){const a=n.getAttribute("data-story-id");if(!a||eh.has(a))continue;const u=n.getBoundingClientRect();if(!u.height)continue;const i=Math.max(0,Math.min(u.bottom,l.bottom)-Math.max(u.top,l.top)),c=i/Math.min(u.height,l.height);if(c<$_)continue;const r=u.left+u.width/2,s=Math.max(u.top,l.top)+i/2,f=document.elementFromPoint(r,s);if(!f||!n.contains(f))continue;eh.add(a);const p=n.hasAttribute("data-sponsored");L(p?"ad_viewable":"story_impression",{story:a,position:Number(n.getAttribute("data-position")),ratio:Math.round(c*100)/100,height:Math.round(u.height)})}}const ra="en-US",J_=new Intl.PluralRules(ra),F_=new Intl.PluralRules(ra,{type:"ordinal"}),th={number:new Intl.NumberFormat(ra),compact:new Intl.NumberFormat(ra,{notation:"compact",maximumFractionDigits:1}),percent:new Intl.NumberFormat(ra,{style:"percent"})},W_=new Intl.ListFormat(ra,{style:"long",type:"conjunction"}),I_=new Map,lh=new Map;function P_(e,t){const l={};for(;;){for(;/\s/.test(e[t.index]);)t.index++;if(e[t.index]==="}")return l;let n="";for(;e[t.index]!=="{"&&!/\s/.test(e[t.index]);)n+=e[t.index++];for(;e[t.index]!=="{";)t.index++;t.index++,l[n]=dy(e,t,!0),t.index++}}function dy(e,t,l){const n=[];let a="";for(;t.index{n||(clearTimeout(u.current),u.current=setTimeout(()=>De("hovercard.intent",c,!0),t3))},[n]),s=_.useCallback(()=>{clearTimeout(u.current),c(!1)},[]);return _.useEffect(()=>{i&&L("hovercard_intent",{kind:e,id:t,surface:a})},[i,e,t,a]),_.useEffect(()=>()=>clearTimeout(u.current),[]),o("span",{className:"inline-flex min-w-0","data-hovercard":`${e}:${t}`,onPointerEnter:r,onPointerLeave:s,children:l})}function P({className:e="",children:t,onPress:l,label:n,disabled:a=!1,...u}){const i=_.useRef(null),c=_.useContext(Ol),r=_.useContext(zu),[s,f]=_.useState(!1),[p,m]=_.useState(!1),[y,N]=_.useState(!1),E=a||c;iy(i,u["data-log"]??n??"pressable",r);const w=_.useCallback(()=>{E||f(!0)},[E]),h=_.useCallback(()=>{f(!1),m(!1)},[]),d=_.useCallback(()=>{E||m(!0)},[E]),g=_.useCallback(()=>m(!1),[]),v=_.useCallback(z=>N(z.currentTarget.matches(":focus-visible")),[]),S=_.useCallback(()=>N(!1),[]),C=_.useCallback(z=>{E||!l||z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),l(z))},[E,l]),A=_.useMemo(()=>p?"opacity-10":s?"opacity-5":"opacity-0",[s,p]);return b("div",{ref:i,role:"button",tabIndex:E?-1:0,"aria-label":n,"aria-disabled":a||void 0,className:`relative cursor-pointer select-none outline-none ${e}`,onClick:a?void 0:l,onKeyDown:C,onPointerEnter:w,onPointerLeave:h,onPointerDown:d,onPointerUp:g,onFocus:v,onBlur:S,...u,children:[o("span",{className:"contents",children:t}),o("span",{className:`pointer-events-none absolute inset-0 rounded-[inherit] bg-black transition-opacity ${A}`,"aria-hidden":"true"}),o("span",{className:`ring-accent pointer-events-none absolute -inset-0.5 rounded-[inherit] ring-2 ${y?"opacity-100":"opacity-0"}`,"aria-hidden":"true"})]})}const l3=/(#[\p{L}\p{N}_]+)|(https?:\/\/[^\s]+)|(\p{Extended_Pictographic}(?:️|‍\p{Extended_Pictographic})*)/gu;function nh(e,t){let l=0;for(const n of e.matchAll(l3))n.index>l&&t.push({type:"text",value:e.slice(l,n.index)}),n[1]?t.push({type:"hashtag",value:n[1]}):n[2]?t.push({type:"link",value:n[2]}):t.push({type:"emoji",value:n[3]}),l=n.index+n[0].length;lu.offset-i.offset);for(const u of a)u.offseta.offset+a.length<=n)}}const a3=ue("richtext.mention",(e,t)=>{e.preventDefault(),Zu(`/profile/${t}`)});function u3({token:e}){switch(e.type){case"mention":return o(K,{className:"text-link font-semibold hover:underline",href:`#/profile/${e.id}`,"data-log":"mention",onClick:t=>a3(t,e.id),children:e.value});case"hashtag":return o(K,{className:"text-link font-semibold hover:underline",href:`#/hashtag/${e.value.slice(1)}`,"data-log":"hashtag",children:e.value});case"link":return o(K,{className:"text-link underline decoration-1 underline-offset-2",href:e.value,target:"_blank",rel:"noreferrer","data-log":"outbound_link",children:e.value});case"emoji":return o(M,{className:"emoji inline-block align-[-0.15em] text-[1.15em] leading-none",role:"img","aria-label":"emoji",children:e.value});default:return e.value}}function i3({text:e,ranges:t,className:l=""}){const n=_.useMemo(()=>{const a=[];let u=0;for(const i of e.split(` + +`)){const c=u,r=c+i.length,s=(t??[]).filter(f=>f.offset>=c&&f.offset+f.length<=r).map(f=>({...f,offset:f.offset-c}));a.push(my(i,s)),u=r+2}return a},[e,t]);return o(T,{className:`break-words ${l}`,dir:"auto",children:n.map((a,u)=>o(M,{as:"p",className:u?"mt-3":"",children:a.map((i,c)=>o(u3,{token:i},c))},u))})}const Bf=_.memo(i3),c3={like:"👍",love:"❤️",thanks:"🙏",laugh:"😂",celebrate:"🎉",wow:"🤩"},o3={like:"bg-reaction-like",love:"bg-reaction-love",thanks:"bg-reaction-care",laugh:"bg-reaction-warm",celebrate:"bg-reaction-care",wow:"bg-reaction-warm"};function hy({reactions:e,size:t=18}){return o(M,{className:"flex -space-x-1",children:e.map(l=>o(M,{className:`border-surface flex items-center justify-center rounded-full border-2 ${o3[l.key]}`,style:{width:t,height:t,fontSize:t*.55},"aria-label":R("{kind}: {count, plural, one {# reaction} other {# reactions}}",{kind:l.key,count:l.count}),children:c3[l.key]},l.key))})}const ah=ue("comment.replies",(e,t)=>{Jl("replies-loaded",{comment:t}),Q5(e,t)}),r3=ue("comment.translate",e=>{L("comment_translate",{comment:e})}),gy=Y("Attachment_attachment",$("id __typename seed label width height alt"));function s3({attachmentRef:e}){const t=H(gy,e);return t?t.__typename==="Sticker"?o(bt,{className:"mt-1 h-[120px] w-[120px]",src:vt(t.seed,120,120),width:"120",height:"120",alt:t.label}):o(P,{className:"mt-1 block w-fit overflow-hidden rounded-xl",label:t.alt,"data-log":"comment_photo",children:o(bt,{className:"max-h-[200px] object-cover",src:vt(t.seed,t.width,t.height),width:t.width/2,height:t.height/2,alt:t.alt})}):null}const qf=Y("CommentBody_comment",{...$("id created_time body reaction_count top_reactions badges is_edited can_translate"),author:$("id name avatar_seed is_verified"),attachment:he(gy)});function yy({commentRef:e,small:t=!1,children:l}){const n=H(qf,e),{author:a}=n,u=Wc(n.created_time);return b(T,{className:"comment flex gap-2",role:"article","aria-label":R("Comment by {name} {when} ago",{name:a.name,when:u}),"data-log-scope":"comment",children:[o(Ta,{kind:"user",id:a.id,children:o(K,{href:`#/profile/${a.id}`,onClick:i=>i.preventDefault(),tabIndex:-1,children:o(Ue,{seed:a.avatar_seed,size:t?24:32,label:a.name})})}),b(T,{className:"min-w-0 flex-1",children:[b(T,{className:"group/bubble flex items-center gap-1",children:[b(T,{className:`bg-surface-alt relative min-w-0 rounded-2xl px-3 py-2 ${n.reaction_count>0?"mb-2":""}`,children:[b(T,{className:"flex flex-wrap items-center gap-x-1.5",children:[o(Ta,{kind:"user",id:a.id,children:o(K,{className:"text-primary text-[13px] font-semibold hover:underline",href:`#/profile/${a.id}`,onClick:i=>i.preventDefault(),children:o(M,{children:a.name})})}),a.is_verified&&o(U,{name:"verified",size:12,className:"text-accent",label:R("Verified account")}),n.badges.map(i=>b(M,{className:"bg-accent-soft text-accent flex items-center gap-0.5 rounded px-1 text-[11px] font-semibold",children:[o(U,{name:"star",size:10}),o(M,{children:i})]},i))]}),o(Bf,{className:"text-primary text-[15px] leading-5",text:n.body.text,ranges:n.body.ranges}),n.reaction_count>0&&o(M,{className:"absolute -bottom-2.5 right-1",children:b(P,{className:"bg-surface shadow-card flex items-center gap-1 rounded-full py-0.5 pl-0.5 pr-1.5 text-[12px]",label:R("{count, plural, one {# reaction} other {# reactions}}; see who reacted",{count:n.reaction_count}),"data-log":"comment_reactors",children:[o(hy,{reactions:n.top_reactions,size:16}),o(M,{className:"text-secondary",children:R("{count, number}",{count:n.reaction_count})})]})})]}),o(P,{className:"text-secondary hover:bg-hover shrink-0 rounded-full p-1.5 opacity-0 group-hover/bubble:opacity-100",label:R("Edit or delete this"),"aria-haspopup":"menu","data-log":"comment_menu",children:o(U,{name:"dots",size:16,strokeWidth:3})})]}),n.attachment&&o(s3,{attachmentRef:n.attachment}),b(T,{className:"text-secondary mt-0.5 flex items-center gap-3 px-3 text-xs",children:[o(K,{className:"hover:underline",href:`#/comment/${n.id}`,title:cy(n.created_time),onClick:i=>i.preventDefault(),children:o(M,{children:u})}),o(P,{className:"font-semibold hover:underline","data-log":"comment_like",children:R("Like")}),o(P,{className:"font-semibold hover:underline","data-log":"comment_reply",children:R("Reply")}),o(P,{className:"font-semibold hover:underline","data-log":"comment_share",children:R("Share")}),n.is_edited&&o(M,{children:R("Edited")})]}),n.can_translate&&o(P,{className:"text-secondary mt-0.5 px-3 text-xs font-semibold hover:underline",onPress:()=>r3(n.id),"data-log":"comment_translate",children:R("See translation")}),l]})]})}const py=Y("Comment_comment",{...$("id reply_count depth"),...he(qf)}),vy=Y("CommentConnection",{...$("id status total_count page_info order"),edges:{cursor:!0,node:he(py)}});function f3({storyId:e,comment:t}){const l=H(vy,cs(t.id));An(l?cs(t.id):null);const n=l?l.status:null,a=l?l.edges.length:0;if(_.useEffect(()=>{n==="ready"&&zt("replies-loaded")},[n,a]),!l)return b(P,{className:"view-replies text-secondary mt-1 flex items-center gap-2 px-3 text-[14px] font-semibold hover:underline",onPress:()=>ah(e,t.id),"data-log":"comment_view_replies",children:[o(U,{name:"reply",size:16}),R("{count, plural, one {View # reply} other {View all # replies}}",{count:t.reply_count})]});const u=(l.total_count??t.reply_count)-l.edges.length;return b(T,{className:"border-divider mt-2 flex flex-col gap-2 border-l-2 pl-3",children:[l.edges.map(i=>o(by,{commentRef:i.node,storyId:e,depth:1},i.node.__id)),n!=="ready"&&o(Cn,{avatarSize:24,lines:2}),n==="ready"&&u>0&&o(P,{className:"view-replies text-secondary text-left text-[14px] font-semibold hover:underline",onPress:()=>ah(e,t.id),"data-log":"comment_more_replies",children:R("{count, plural, one {View # more reply} other {View # more replies}}",{count:u})})]})}function by({commentRef:e,storyId:t,depth:l=0}){const n=H(py,e);return o(T,{className:l?"":"px-4",children:o(yy,{commentRef:n,small:l>0,children:l===0&&n.reply_count>0&&o(f3,{storyId:t,comment:n})})})}const d3=_.memo(by),m3=260,h3={public:"globe",private:"lock",friends:"friends"},g3={public:"Anyone",private:"Members of the group",friends:"Your connections"},y3=60,_y=ue("story.actor",(e,t)=>{e.preventDefault(),t.startsWith("u")&&Zu(`/profile/${t}`)}),p3=ue("story.follow",(e,t)=>{$1(e,()=>({viewer_follows_actor:!0})),Kl(),L("follow",{actor:t,surface:"story_header"})}),v3=ue("story.hide",e=>{L("story_hide_intent",{story:e})}),Sy=Y("ActorLine_story",{...$("id url created_time privacy sponsored viewer_follows_actor"),actor:$("id __typename name is_verified"),to_group:$("id name privacy")});function b3({storyRef:e}){const t=H(Sy,e),{actor:l,to_group:n}=t;return b(T,{className:"flex min-w-0 flex-1 flex-col",children:[b(M,{as:"h3",className:"flex min-w-0 flex-wrap items-center text-[15px] leading-5",children:[o(Ta,{kind:l.__typename==="Page"?"page":"user",id:l.id,children:o(K,{className:"text-primary font-semibold hover:underline",href:`#/profile/${l.id}`,onClick:a=>_y(a,l.id),"data-log":"story_actor",children:o(M,{as:"strong",children:o(M,{children:l.name})})})}),l.is_verified&&o(U,{name:"verified",size:14,className:"text-accent ml-1",label:R("Verified account")}),n&&b(Rt.Fragment,{children:[o(U,{name:"chevronRight",size:14,className:"text-secondary mx-0.5"}),o(Ta,{kind:"group",id:n.id,children:o(K,{className:"text-primary font-semibold hover:underline",href:`#/groups/${n.id}`,"data-log":"story_group",children:o(M,{children:n.name})})})]}),!t.viewer_follows_actor&&b(Rt.Fragment,{children:[o(M,{className:"text-secondary mx-1","aria-hidden":"true",children:"·"}),o(P,{className:"text-link font-semibold hover:underline",onPress:()=>p3(t.id,l.id),"data-log":"story_follow",children:R("Follow")})]})]}),b(T,{className:"text-secondary flex items-center gap-1 text-[13px] leading-4",children:[t.sponsored?o(M,{children:R("Promoted")}):o(K,{className:"hover:underline",href:t.url,title:cy(t.created_time),"data-log":"story_timestamp",children:o(M,{children:Wc(t.created_time)})}),o(M,{"aria-hidden":"true",children:"·"}),o(P,{className:"rounded-full",label:R("Shared with: {audience}",{audience:g3[t.privacy]}),"data-log":"story_audience",children:o(U,{name:h3[t.privacy],size:12})})]})]})}const xy=Y("StoryHeader_story",{id:!0,actor:$("id __typename name avatar_seed"),...he(Sy)});function _3({storyRef:e}){const t=H(xy,e),{actor:l}=t;return b(T,{as:"header",className:"flex items-start gap-2 px-4 pt-3",children:[o(Ta,{kind:l.__typename==="Page"?"page":"user",id:l.id,children:o(K,{href:`#/profile/${l.id}`,onClick:n=>_y(n,l.id),"aria-label":l.name,tabIndex:-1,children:o(Ue,{seed:l.avatar_seed,size:40,square:l.__typename==="Page",label:l.name})})}),o(b3,{storyRef:t}),b(T,{className:"flex items-center",children:[o(P,{className:"text-secondary hover:bg-hover rounded-full p-2",label:R("Actions for this post by {name}",{name:l.name}),"aria-haspopup":"menu","data-log":"story_menu",children:o(U,{name:"dots",size:20,strokeWidth:3})}),o(P,{className:"text-secondary hover:bg-hover rounded-full p-2",label:R("Hide post"),onPress:()=>v3(t.id),"data-log":"story_hide",children:o(U,{name:"close",size:20})})]})]})}function S3({message:e,expanded:t,onExpand:l,translatable:n}){const a=t?null:n3(e.text,e.ranges,m3),u=a??e,i=!t&&e.text.length<90;return b(T,{className:`px-4 pb-3 pt-2 ${i?"text-2xl leading-8":"text-[15px] leading-5"} text-primary`,children:[o(Bf,{text:u.text,ranges:u.ranges}),a&&b(Rt.Fragment,{children:[o(M,{children:"… "}),o(P,{className:"read-more text-link font-semibold hover:underline",onPress:l,"data-log":"story_read_more",children:R("Read more")})]}),n&&b(P,{className:"text-secondary mt-1 flex items-center gap-1 text-[13px] font-semibold hover:underline","data-log":"story_translate",children:[o(U,{name:"translate",size:14}),R("See translation")]})]})}const Ny=Y("PhotoTile_photo",$("id seed width height alt"));function x3({photoRef:e,count:t,index:l,extra:n,span:a}){const u=H(Ny,e),i=t===1?Math.round(600*u.height/u.width):600;return b(K,{href:`#/photo/${u.id}`,className:`relative block overflow-hidden ${a}`,"data-log":"story_photo",onClick:c=>c.preventDefault(),children:[o(bt,{className:"h-full w-full object-cover",src:vt(u.seed,600,i),alt:u.alt,width:"600",height:i,decoding:"async"}),o(M,{className:"pointer-events-none absolute inset-0 bg-black opacity-0 hover:opacity-10","aria-hidden":"true"}),n>0&&l===t-1&&o(M,{className:"absolute inset-0 flex items-center justify-center bg-black/40 text-3xl font-bold text-white",children:R("+{count, number}",{count:n})})]})}function N3({attachments:e}){const t=e.slice(0,5),l=e.length-t.length,n=t.length,a={1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-2 grid-rows-2",4:"grid-cols-2 grid-rows-2",5:"grid-cols-6 grid-rows-2"},u=i=>n===3&&i===0?"row-span-2":n===5?i<2?"col-span-3":"col-span-2":"";return o(T,{className:`grid gap-0.5 ${a[n]} ${n===1?"":"aspect-square"} bg-surface-alt overflow-hidden`,children:t.map((i,c)=>o(x3,{photoRef:i,count:n,index:c,extra:l,span:u(c)},i.__id))})}const Ty=Y("LinkCard_link",$("id url domain title description image_seed"));function T3({linkRef:e,sponsored:t}){const l=H(Ty,e);return b(K,{className:"border-divider bg-surface-alt block border-y hover:brightness-95",href:l.url,target:"_blank",rel:"noreferrer","data-log":"story_link_card",children:[o(bt,{className:"aspect-[1.91/1] w-full object-cover",src:vt(l.image_seed,600,314),width:"600",height:"314",alt:""}),b(T,{className:"flex items-center gap-3 px-3 py-2",children:[b(T,{className:"min-w-0 flex-1",children:[o(T,{className:"text-secondary truncate text-xs uppercase",children:l.domain}),o(T,{className:"text-primary line-clamp-2 text-[16px] font-semibold leading-5",children:l.title}),o(T,{className:"text-secondary line-clamp-1 text-sm",children:l.description})]}),t&&o(P,{className:"bg-hover text-primary shrink-0 rounded-md px-3 py-1.5 text-sm font-semibold","data-log":"ad_cta",children:R("Learn more")})]})]})}const E3=ue("story.like",e=>{$1(e,t=>{const l=t.viewer_reaction==="like";return{viewer_reaction:l?null:"like",reaction_count:t.reaction_count+(l?-1:1)}}),Kl(),L("reaction",{feedback:e,reaction:"like"})}),_c=ue("story.comments",(e,t)=>{Jl("post-dialog-ready",{story:e,source:t}),$5(e)}),uh=ue("story.comment_inline",()=>{const e=document.getElementById("comment-composer");e&&e.focus()}),M3=Y("InlineComposer_viewer",$("id avatar_seed")),A3=Y("InlineComposer_draft",$("id text ranges"));function C3({storyId:e}){const t=H(M3,Ze),l=H(A3,pc(e)),n=l&&l.text.trim();return b(T,{className:"flex items-center gap-2 px-4 pb-3 pt-1",children:[t&&o(Ue,{seed:t.avatar_seed,size:32,label:""}),b(T,{className:"bg-surface-alt flex flex-1 items-center rounded-full pr-1",children:[o(P,{className:`min-w-0 flex-1 px-3 py-2 text-[15px] ${n?"text-primary":"text-secondary"}`,onPress:()=>_c(e,"inline_composer"),"data-log":"story_inline_composer",children:n?b(M,{className:"flex min-w-0 items-baseline gap-1.5",children:[o(M,{className:"text-accent shrink-0 text-xs font-semibold uppercase",children:R("Draft")}),o(Bf,{className:"truncate",text:l.text,ranges:l.ranges})]}):R("Write a comment…")}),[["smile","Insert an emoji"],["camera","Attach a photo or video"],["gif","Comment with a GIF"],["sticker","Comment with a sticker"]].map(([a,u])=>o(P,{className:"text-secondary hover:bg-hover rounded-full p-1.5",label:R(u),children:o(U,{name:a,size:16})},a))]})]})}function w3({storyId:e,comments:t,total:l}){return b(T,{className:"border-divider border-t pt-2",children:[o(T,{className:"flex items-center justify-between px-4 pb-2",children:b(P,{className:"text-secondary flex items-center gap-1 text-[15px] font-semibold hover:underline","data-log":"story_comment_order",children:[R("Most relevant"),o(U,{name:"chevronDown",size:16})]})}),o(T,{className:"flex flex-col gap-2 px-4",children:t.map(n=>o(yy,{commentRef:n},n.__id))}),l>t.length&&o(P,{className:"text-secondary mx-4 mt-2 text-[15px] font-semibold hover:underline",onPress:()=>_c(e,"preview"),"data-log":"story_view_more_comments",children:R("{count, plural, one {View # more comment} other {View # more comments}}",{count:l-t.length})})]})}function z3({feedback:e,summaryV2:t}){const l=e.reactors.map(u=>u.name),n=e.reaction_count-l.length;let a;return t?n>0?a=R("{names} and {count, plural, one {# other} other {# others}}",{names:l.slice(0,1),count:n+l.length-1}):a=R("{names}",{names:l}):a=R("{count, plural, one {# reaction} other {# reactions}}",{count:e.reaction_count}),b(P,{className:"flex min-w-0 items-center gap-1.5 hover:underline",label:R("See who reacted to this"),"data-log":"story_reactors",children:[o(hy,{reactions:e.top_reactions}),o(M,{className:"truncate",children:a})]})}const Ey=Y("Engagement_feedback",{...$("id reaction_count top_reactions comment_count share_count viewer_reaction"),reactors:$("id name"),top_comments:he(qf)});function gi({icon:e,label:t,active:l,onPress:n,className:a="",...u}){return b(P,{className:`${a} hover:bg-hover flex flex-1 items-center justify-center gap-1.5 rounded-lg px-3 py-1.5 text-[14px] font-semibold ${l?"text-accent":"text-secondary"}`,onPress:n,...u,children:[o(U,{name:e,size:18}),o(M,{children:t})]})}function O3({storyId:e,feedbackRef:t,inDialog:l}){const n=H(Ey,t);if(n.reaction_count===void 0)return b(T,{className:"flex items-center justify-between px-4 py-3","aria-busy":"true",children:[o(kl,{width:"30%"}),o(kl,{width:"20%"})]});const a=Da("story_reaction_summary_v2"),u=n.comment_count>=y3,i=R("{count, plural, one {# comment} other {# comments}}",{count:n.comment_count});return b(Rt.Fragment,{children:[b(T,{className:"text-secondary flex items-center justify-between gap-2 px-4 py-2.5 text-[15px]",children:[n.reaction_count>0?o(z3,{feedback:n,summaryV2:a}):o(M,{}),b(T,{className:"flex shrink-0 gap-3",children:[n.comment_count>0&&o(P,{className:"story-comments-count hover:underline",onPress:l?uh:()=>_c(e,"count"),"data-log":"story_comment_count",children:i}),n.share_count>0&&o(P,{className:"hover:underline","data-log":"story_shares",children:R("{count, plural, one {# share} other {# shares}}",{count:n.share_count})})]})]}),b(T,{className:"border-divider mx-3 flex border-t py-1",children:[o(gi,{icon:"like",label:R("Like"),active:!!n.viewer_reaction,onPress:()=>E3(n.id),"aria-pressed":n.viewer_reaction==="like","data-log":"story_like"}),o(gi,{icon:"comment",label:R("Comment"),className:"story-comments-button",onPress:l?uh:()=>_c(e,"button"),"aria-label":R("Comment on this post, {comments}",{comments:i}),"data-thread":u?"busy":"quiet","data-log":"story_comment"}),o(gi,{icon:"share",label:R("Share"),"data-log":"story_share"}),o(gi,{icon:"send",label:R("Send"),"data-log":"story_send"})]}),!l&&n.top_comments.length>0&&o(w3,{storyId:e,comments:n.top_comments,total:n.comment_count}),!l&&o(C3,{storyId:e})]})}const My=Y("Story_story",{...$("id sponsored message can_translate tracking"),attachments:he(Ny),link:he(Ty),feedback:he(Ey),...he(xy)});function R3({id:e,position:t,expandable:l=!0,inDialog:n=!1}){const a=H(My,e),[u,i]=_.useState(!l),c=_.useContext(uy);_.useLayoutEffect(()=>{u&&l&&c(e)},[u,l,e,c]);const r=ue("story.see_more",()=>{i(!0),L("story_expand",{story:e,position:t,length:a.message.text.length,tracking:a.tracking})});return b(T,{as:"article",className:"story bg-surface shadow-card overflow-hidden rounded-lg","aria-label":R("Post {position, number}",{position:t+1}),"data-log-scope":"story",children:[o(_3,{storyRef:a}),o(S3,{message:a.message,expanded:u,onExpand:r,translatable:a.can_translate}),a.attachments.length>0&&o(N3,{attachments:a.attachments}),a.link&&o(T3,{linkRef:a.link,sponsored:a.sponsored}),a.sponsored&&b(T,{className:"bg-surface-alt flex items-center justify-between px-4 py-2",children:[o(M,{className:"text-secondary text-sm",children:R("Offer ends soon")}),o(P,{className:"bg-hover text-primary rounded-md px-3 py-1.5 text-sm font-semibold","data-log":"ad_cta",children:R("Learn more")})]}),o(O3,{storyId:e,feedbackRef:a.feedback,inDialog:n})]})}const Ay=_.memo(R3),D3=ue("suggestions.connect",(e,t)=>{L("connect_request",{user:t,surface:"feed_suggestions",suggestion:e})}),U3=ue("suggestions.dismiss",e=>{L("suggestion_dismiss",{suggestion:e})}),Cy=Y("SuggestionCard_suggestion",{...$("id mutual_count tracking"),user:$("id name avatar_seed is_verified"),mutual_friends:$("id name avatar_seed")}),H3=_.memo(function({suggestionRef:t}){const l=H(Cy,t),{user:n}=l;return b(T,{as:"li",className:"border-divider bg-surface relative w-[180px] shrink-0 overflow-hidden rounded-lg border",children:[o(K,{href:`#/profile/${n.id}`,onClick:a=>a.preventDefault(),tabIndex:-1,children:o(bt,{className:"aspect-square w-full object-cover",src:vt(n.avatar_seed*3,360,360),width:"180",height:"180",alt:""})}),o(M,{className:"absolute right-2 top-2",children:o(P,{className:"rounded-full bg-black/50 p-1 text-white",label:R("Remove {name} from suggestions",{name:n.name}),onPress:()=>U3(l.id),"data-log":"suggestion_dismiss",children:o(U,{name:"close",size:14})})}),b(T,{className:"flex flex-col gap-1 p-3",children:[o(Ta,{kind:"user",id:n.id,children:o(K,{className:"text-primary truncate text-[15px] font-semibold hover:underline",href:`#/profile/${n.id}`,onClick:a=>a.preventDefault(),children:o(M,{children:n.name})})}),o(T,{className:"text-secondary flex h-5 items-center gap-1 text-[13px]",children:l.mutual_count>0&&b(Rt.Fragment,{children:[o(M,{className:"flex -space-x-1.5",children:l.mutual_friends.map(a=>o(M,{className:"border-surface rounded-full border",children:o(Ue,{seed:a.avatar_seed,size:16,label:a.name})},a.id))}),o(M,{className:"truncate",children:R("{count, plural, one {# shared connection} other {# shared connections}}",{count:l.mutual_count})})]})}),b(P,{className:"bg-accent-soft text-accent mt-1 flex items-center justify-center gap-1.5 rounded-md py-1.5 text-[15px] font-semibold",onPress:()=>D3(l.id,n.id),"data-log":"suggestion_connect",children:[o(U,{name:"userPlus",size:16}),R("Connect")]})]})]})}),wy=Y("SuggestionsUnit_unit",{...$("id title"),suggestions:he(Cy)}),Qo=2;function B3({id:e,position:t}){const l=H(wy,e),[n,a]=_.useState(0),u=ue("suggestions.page",i=>a(c=>Math.max(0,Math.min(l.suggestions.length-Qo,c+i))));return b(T,{as:"section",className:"bg-surface shadow-card overflow-hidden rounded-lg py-3","aria-label":R("Post {position, number}: {title}",{position:t+1,title:l.title}),"data-log-scope":"suggestions",children:[b(T,{className:"flex items-center justify-between px-4 pb-3",children:[o(M,{as:"h3",className:"text-primary text-[17px] font-semibold",children:R(l.title)}),o(P,{className:"text-secondary hover:bg-hover rounded-full p-2",label:R("More options for suggestions"),"aria-haspopup":"menu","data-log":"suggestions_menu",children:o(U,{name:"dots",size:20,strokeWidth:3})})]}),b(T,{className:"relative",children:[o(T,{as:"ul",className:"flex gap-2 px-4 transition-transform",style:{transform:`translateX(-${n*188}px)`},children:l.suggestions.map(i=>o(H3,{suggestionRef:i},i.__id))}),n>0&&o(M,{className:"absolute left-2 top-[80px]",children:o(P,{className:"bg-surface shadow-popover rounded-full p-2",label:R("Previous suggestions"),onPress:()=>u(-Qo),children:o(U,{name:"chevronLeft",size:20})})}),o(M,{className:"absolute right-2 top-[80px]",children:o(P,{className:"bg-surface shadow-popover rounded-full p-2",label:R("Next suggestions"),onPress:()=>u(Qo),children:o(U,{name:"chevronRight",size:20})})})]}),o(K,{className:"text-accent mt-3 block px-4 text-[15px] font-semibold hover:underline",href:"#/connections/suggestions",onClick:i=>i.preventDefault(),children:R("See all")})]})}const ih=560,q3=16,Bi=new Map,zy=Y("FeedUnit_story",{id:!0,__typename:!0,sponsored:!0,...he(My,wy)}),Oy={cursor:!0,node:he(zy)};function L3({id:e,position:t,register:l}){const n=_.useRef(null),a=H(zy,e);return _.useLayoutEffect(()=>(l(e,n.current),Bi.set(e,n.current.getBoundingClientRect().height),()=>l(e,null)),[e,l]),o("div",{ref:n,"data-unit-live":"true","data-story-id":e,"data-position":t,"data-sponsored":a.sponsored||void 0,children:a.__typename==="SuggestionsUnit"?o(B3,{id:e,position:t}):o(Ay,{id:e,position:t})})}function Ry({edges:e,scrollerRef:t,onNearEnd:l,label:n}){const a=_.useRef(null),u=_.useRef(new Map),[i,c]=_.useState({start:0,end:Math.min(e.length,2)}),r=_.useRef(i),s=_.useRef({top:-1,count:-1}),f=_.useRef(e);f.current=e;const p=_.useRef(l);p.current=l;const m=_.useContext(Ol),y=_.useRef(m),N=_.useCallback((d,g)=>{g?u.current.set(d,g):u.current.delete(d)},[]),E=_.useCallback(d=>{const g=u.current.get(d);g&&Bi.set(d,g.getBoundingClientRect().height)},[]),w=_.useCallback(()=>{const d=t.current,g=a.current,v=f.current,S=d.scrollTop,C=d.clientHeight,A=g.getBoundingClientRect().top-d.getBoundingClientRect().top+S,z=S-2*C-A,ne=S+3*C-A;let j=0,Te=-1,Ht=0;for(let pl=0;pl=z&&(Te=pl),j<=ne&&(Ht=pl+1),j+=Vu+q3}return Te=Math.max(0,Te),{start:Te,end:Math.max(Te+1,Ht)}},[t]),h=_.useCallback(d=>{const g=w(),v=r.current;(g.start!==v.start||g.end!==v.end)&&(r.current=g,d?Dh.flushSync(()=>c(g)):c(g)),y.current||K_(t.current,a.current.querySelectorAll("[data-unit-live]")),d&&p.current&&g.end>=f.current.length&&p.current()},[w,t]);return _.useLayoutEffect(()=>{s.current.top>0&&(t.current.scrollTop=s.current.top)},[t]),_.useLayoutEffect(()=>{h(!1)},[e.length,h]),_.useEffect(()=>{const d=y.current&&!m;y.current=m,d&&De("feed.resume",h,!1)},[m,h]),_.useLayoutEffect(()=>{const d=t.current,g=()=>De("feed.scroll",()=>{const v=d.scrollTop,S=f.current.length;v===s.current.top&&S===s.current.count||(s.current={top:v,count:S},h(!0))});return d.addEventListener("scroll",g,{passive:!0}),()=>d.removeEventListener("scroll",g)},[t,h]),o(uy.Provider,{value:E,children:o("div",{ref:a,className:"feed flex flex-col gap-4",role:"feed","aria-label":n,"aria-busy":!1,children:e.map((d,g)=>{const v=d.node.__id,S=g>=i.start&&gb("button",{type:"button",className:"text-secondary hover:bg-hover flex flex-1 items-center justify-center gap-2 rounded-md py-2 text-[15px] font-semibold","data-log":`composer_${l.toLowerCase()}`,children:[o(U,{name:t,size:22,className:n}),l]},l))})]})}const Uy=Y("StoryCard_card",{...$("id seed seen"),owner:$("id name avatar_seed")}),Y3=Y("StoriesTrayQuery",{status:!0,root:{stories_tray:he(Uy)}});function G3({cardRef:e}){const t=H(Uy,e),{owner:l}=t;return b(K,{className:"bg-surface-alt relative block h-[200px] w-[112px] shrink-0 overflow-hidden rounded-lg",href:`#/stories/${t.id}`,"data-log":"stories_tray_card",onClick:n=>n.preventDefault(),children:[o(bt,{className:"h-full w-full object-cover transition-transform hover:scale-105",src:vt(t.seed,224,400),width:"112",height:"200",alt:""}),o(M,{className:"absolute left-2 top-2",children:o(Ue,{seed:l.avatar_seed,size:32,ring:!t.seen,label:""})}),o(M,{className:"absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/70 px-2 pb-2 pt-6 text-[13px] font-semibold leading-4 text-white",children:l.name})]})}function k3(){const e=H(Y3,Ve(ke("StoriesTray"))),[t,l]=_.useState(0),n=e&&e.root?e.root.stories_tray:[],a=H(Dy,Ze),u=ue("stories.page",i=>{l(c=>Math.max(0,Math.min(n.length-ch,c+i))),L("stories_tray_page",{delta:i})});return b(T,{className:"relative overflow-hidden","aria-label":"Stories",role:"region","data-log-scope":"stories_tray",children:[b(T,{className:"flex gap-2 transition-transform duration-300",style:{transform:`translateX(-${t*120}px)`},children:[b("button",{type:"button",className:"bg-surface shadow-card relative h-[200px] w-[112px] shrink-0 overflow-hidden rounded-lg","data-log":"stories_create",children:[a&&o(bt,{className:"h-[150px] w-full object-cover",src:vt(a.avatar_seed*31,224,300),width:"112",height:"150",alt:""}),o(M,{className:"border-surface bg-accent absolute left-1/2 top-[134px] flex h-8 w-8 -translate-x-1/2 items-center justify-center rounded-full border-4 text-white",children:o(U,{name:"plus",size:16,strokeWidth:3})}),o(M,{className:"text-primary absolute inset-x-0 bottom-2 text-center text-[13px] font-semibold",children:"Add a moment"})]}),n.map(i=>o(G3,{cardRef:i},i.__id))]}),t>0&&o("button",{type:"button",className:"bg-surface shadow-popover absolute left-2 top-[84px] flex h-10 w-10 items-center justify-center rounded-full","aria-label":"Previous stories",onClick:()=>u(-2),children:o(U,{name:"chevronLeft",size:20})}),tu(2),children:o(U,{name:"chevronRight",size:20})})]})}const Q3=ue("feed.near_end",()=>{Da("feed_prefetch_next_page")&&G5()}),oh=Y("HomeFeedConnection",{...$("id status generation page_info"),edges:Oy});function Z3({scrollerRef:e}){const t=H(oh,wu),l=_.useRef({generation:-1,count:0}),n=t?t.status:"loading",a=t?t.edges.length:0,u=_.useRef(!1);_.useEffect(()=>{if(u.current){const c=W5(oh,wu);L("query_availability",{query:"HomeFeed",...c}),zt("home-ready")}u.current=!0},[]),_.useEffect(()=>{if(n!=="ready")return;const c=l.current;c.generation===-1?zt("home-ready"):t.generation!==c.generation?zt("home-feed-refreshed"):a>c.count&&zt("feed-page-loaded"),l.current={generation:t.generation,count:a}},[n,a,t]);const i=t&&t.edges.length>0;return b(T,{className:"home mx-auto flex w-full max-w-[500px] flex-col gap-4 px-2 py-4","data-feed-status":n,children:[o(j3,{}),o(k3,{}),i?o(Ry,{edges:t.edges,scrollerRef:e,onNearEnd:Q3,label:"Stories"},t.generation):b(Rt.Fragment,{children:[o(oa,{}),o(oa,{})]}),t&&t.status==="loading-more"&&o(oa,{})]})}const V3=140,X3=6,rh=/(?:^|\s)@([\p{L}]{1,24})$/u,$3=[[":)","🙂"],[":D","😄"],["<3","❤️"],[";)","😉"],[":(","🙁"]];function K3(e){let t=e;for(const[l,n]of $3)t.endsWith(`${l} `)&&(t=`${t.slice(0,-l.length-1)}${n} `);return t}function J3(e,t){if(t===null)return[];const l=t.toLowerCase(),n=[];for(const a of e){const i=a.name.toLowerCase().split(" ").findIndex(c=>c.startsWith(l));i!==-1&&n.push({person:a,rank:i*100+a.name.length})}return n.sort((a,u)=>a.rank-u.rank),n.slice(0,X3).map(a=>a.person)}function Hy(e,t){const l=[];for(const n of t){let a=0,u;for(;(u=e.indexOf(n.name,a))!==-1;)l.push({offset:u,length:n.name.length,entity:{id:n.id}}),a=u+n.name.length}return l}function F3(e,{value:t,mentions:l}){const n=We(pc(e));!t.trim()&&!n||(Sn(pc(e),{text:t,ranges:Hy(t,l),mentions:l.map(a=>a.id)}),Kl(),L("composer_draft_saved",{story:e,length:t.length,mentions:l.length}))}function W3({storyId:e,viewer:t,people:l,inputRef:n}){const[a,u]=_.useState(()=>{var v;return((v=We(pc(e)))==null?void 0:v.text)??""}),[i,c]=_.useState(null),[r,s]=_.useState(0),[f,p]=_.useState([]),m=_.useRef(null);m.current={value:a,mentions:f},_.useEffect(()=>()=>De("composer.draft",F3,e,m.current),[e]);const y=_.useRef(null),N=Da("comments_mentions_typeahead"),E=_.useMemo(()=>N?J3(l,i):[],[N,l,i]),w=_.useMemo(()=>my(a,Hy(a,f)),[a,f]);_.useLayoutEffect(()=>{const v=n.current;v.style.height="auto",v.style.height=`${Math.min(v.scrollHeight,V3)}px`,y.current.scrollTop=v.scrollTop},[a,n]);const h=ue("composer.input",v=>{const S=v.target;let C=S.value;const A=K3(C);A!==C&&(S.value=A,C=A);const z=C.slice(0,S.selectionStart??C.length),ne=rh.exec(z);c(ne?ne[1]:null),s(0),!a&&C&&L("composer_start",{story:e}),u(C)}),d=ue("composer.mention",v=>{const S=n.current,C=S.value.replace(rh,A=>`${A.startsWith(" ")?" ":""}${v.name} `);S.value=C,p(A=>A.some(z=>z.id===v.id)?A:[...A,v]),c(null),u(C),L("composer_mention",{story:e,position:E.indexOf(v)})}),g=ue("composer.keys",v=>{if(E.length){if(v.key==="ArrowDown"||v.key==="ArrowUp"){v.preventDefault();const S=v.key==="ArrowDown"?1:-1;s(C=>(C+S+E.length)%E.length);return}if(v.key==="Enter"||v.key==="Tab"){v.preventDefault(),d(E[r]);return}if(v.key==="Escape"){v.preventDefault(),c(null);return}}v.key==="Enter"&&!v.shiftKey&&(v.preventDefault(),a.trim()&&L("composer_submit_attempt",{story:e,length:a.length,mentions:f.length}))});return b("div",{className:"border-divider bg-surface relative flex gap-2 border-t px-4 py-3","data-log-scope":"comment_composer",children:[t&&o(Ue,{seed:t.avatar_seed,size:32,label:""}),b("div",{className:"bg-surface-alt relative flex-1 rounded-2xl",children:[E.length>0&&o("ul",{className:"bg-surface shadow-popover absolute bottom-full left-0 z-10 mb-1 w-[280px] rounded-lg p-1",role:"listbox","aria-label":"Mention suggestions",children:E.map((v,S)=>o("li",{role:"option","aria-selected":S===r,children:b("button",{type:"button",className:`flex w-full items-center gap-2 rounded-md p-1.5 text-left ${S===r?"bg-hover":""}`,onClick:()=>d(v),children:[o(Ue,{seed:v.avatar_seed,size:28,label:""}),o("span",{className:"text-primary text-[15px]",children:v.name})]})},v.id))}),b("div",{className:"relative",children:[b("div",{ref:y,className:"text-primary pointer-events-none absolute inset-0 overflow-hidden whitespace-pre-wrap break-words px-3 py-2 text-[15px] leading-5","aria-hidden":"true",children:[w.map((v,S)=>o("span",{className:v.type==="text"?"":"bg-accent-soft text-link rounded",children:v.value},S)),a.endsWith(` +`)?" ":""]}),o("textarea",{ref:n,id:"comment-composer",className:"caret-primary placeholder:text-secondary relative block max-h-[140px] w-full resize-none overflow-y-auto bg-transparent px-3 py-2 text-[15px] leading-5 text-transparent outline-none",rows:1,defaultValue:a,placeholder:"Add to the discussion…","aria-label":"Add to the discussion…",onInput:h,onKeyDown:g,onScroll:v=>{y.current.scrollTop=v.target.scrollTop},"data-log":"comment_composer"})]}),b("div",{className:"text-secondary flex items-center justify-between px-2 pb-1.5",children:[o("div",{className:"flex gap-1",children:[["smile","Insert an emoji"],["camera","Attach a photo or video"],["gif","Comment with a GIF"],["sticker","Comment with a sticker"]].map(([v,S])=>o("button",{type:"button",className:"hover:bg-hover rounded-full p-1.5","aria-label":S,children:o(U,{name:v,size:16})},v))}),o("button",{type:"button",className:`rounded-full p-1.5 ${a.trim()?"text-accent hover:bg-hover":"opacity-40"}`,"aria-label":"Post comment",disabled:!a.trim(),children:o(U,{name:"send",size:16})})]})]})]})}const sh=[{id:"relevant",label:"Top",description:"Conversations with the most replies and reactions."},{id:"newest",label:"Latest",description:"Every comment, most recent at the top."},{id:"all",label:"Everything",description:"Oldest first, including comments our filters held back."}],I3=300;function P3({order:e,onChange:t}){const[l,n]=_.useState(!1),a=_.useRef(null),u=sh.find(c=>c.id===e),i=_.useCallback(()=>n(!1),[]);return b(T,{className:"relative px-4 py-2",children:[b("button",{ref:a,type:"button",id:"comment-order",className:"text-secondary flex items-center gap-1 text-[15px] font-semibold hover:underline","aria-haspopup":"menu","aria-expanded":l,onClick:()=>n(!l),"data-log":"comment_order",children:[u.label,o(U,{name:"chevronDown",size:16})]}),l&&o(Uf,{label:"Comment order",anchorRef:a,onClose:i,className:"left-4 top-10 w-[300px] p-2",role:"menu",children:sh.map(c=>b("button",{type:"button",role:"menuitemradio","aria-checked":c.id===e,"data-order":c.id,className:`comment-order-option hover:bg-hover block w-full rounded-md p-2 text-left ${c.id===e?"bg-hover":""}`,onClick:()=>{n(!1),t(c.id)},children:[o(M,{className:"text-primary block text-[15px] font-semibold",children:c.label}),o(M,{className:"text-secondary block text-[13px] leading-4",children:c.description})]},c.id))})]})}const eS=Y("PostDialog_story",{id:!0,actor:$("id name")}),tS=Y("PostDialog_viewer",$("id name short_name avatar_seed"));function lS(e){const t=e?e.edges:null;return _.useMemo(()=>{const l=new Map;for(const n of t??[]){const a=We(n.node.__id),u=We(a.author.__ref);l.has(u.id)||l.set(u.id,u)}return Array.from(l.values())},[t])}function nS({storyId:e}){const t=H(eS,e),l=t?t.actor:null,n=H(tS,Ze),[a,u]=_.useState("relevant"),i=H(vy,yc(e,a));An(yc(e,a));const c=lS(i),r=_.useRef(null),s=_.useRef(null),f=_.useRef({order:null,count:0}),p=i?i.status:"loading",m=i?i.edges.length:0;_.useEffect(()=>{t||Ua("Story",{storyId:e}),Ym(e,"relevant")},[t,e]),_.useLayoutEffect(()=>{const h=document.activeElement;return s.current&&s.current.focus({preventScroll:!0}),()=>{h&&h.isConnected&&h.focus({preventScroll:!0})}},[]),_.useEffect(()=>{if(p!=="ready")return;const h=f.current;h.order===null?zt("post-dialog-ready"):h.order!==a?zt("comments-reordered"):m>h.count&&zt("comments-page-loaded"),f.current={order:a,count:m}},[p,m,a]),_.useEffect(()=>{const h=r.current,d=()=>De("dialog.scroll",()=>{h.scrollTop+h.clientHeight>=h.scrollHeight-I3&&k5(e,a)&&L("comments_paginate",{story:e,order:a})});return h.addEventListener("scroll",d,{passive:!0}),()=>h.removeEventListener("scroll",d)},[e,a]),_.useEffect(()=>{const h=d=>{d.key==="Escape"&&!d.defaultPrevented&&N()};return document.addEventListener("keydown",h),()=>document.removeEventListener("keydown",h)});const y=ue("dialog.order",h=>{h!==a&&(Jl("comments-reordered",{order:h}),Ym(e,h),u(h),L("comment_order_change",{story:e,order:h}))}),N=ue("dialog.close",()=>{L("dialog_close",{story:e,comments_seen:m}),K5()}),E=p==="ready",w=E&&i.page_info&&!i.page_info.has_next_page;return o(T,{className:"bg-scrim fixed inset-0 z-50 flex items-center justify-center",onMouseDown:h=>h.target===h.currentTarget&&N(),children:b(T,{id:"post-dialog",role:"dialog","aria-modal":"true","aria-label":l?`Discussion with ${l.name}`:"Discussion",className:"bg-surface shadow-popover flex h-[calc(100%-32px)] w-[min(700px,calc(100%-32px))] flex-col overflow-hidden rounded-lg","data-log-scope":"post_dialog",children:[b(T,{as:"header",className:"border-divider relative flex h-14 shrink-0 items-center justify-center border-b",children:[o(M,{as:"h2",className:"text-primary text-xl font-bold",children:"Discussion"}),o("button",{type:"button",id:"post-dialog-close",className:"bg-surface-alt text-secondary hover:bg-hover absolute right-3 flex h-9 w-9 items-center justify-center rounded-full","aria-label":"Close",onClick:N,"data-log":"dialog_close",children:o(U,{name:"close",size:20})})]}),b(T,{ref:r,id:"post-dialog-body",className:"min-h-0 flex-1 overflow-y-auto",children:[t?o(Ay,{id:e,position:0,expandable:!1,inDialog:!0}):o(oa,{}),o(P3,{order:a,onChange:y}),b(T,{className:"flex flex-col gap-3 pb-4","aria-label":"Comments","aria-busy":!E,children:[i&&i.edges.map(h=>o(d3,{commentRef:h.node,storyId:e},h.node.__id)),!E&&[0,1,2].map(h=>o(Cn,{avatarSize:32},h)),w&&b(T,{className:"comments-end text-secondary px-4 text-center text-[13px]",children:["You've seen all ",i.total_count," comments"]})]})]}),o(W3,{storyId:e,viewer:n,people:c,inputRef:s},e)]})})}const aS=["Activity","About","Connections","Albums","Events"];function ys({title:e,action:t,children:l}){return b(T,{as:"section",className:"bg-surface shadow-card rounded-lg p-4",children:[b(T,{className:"mb-3 flex items-center justify-between",children:[o(M,{as:"h2",className:"text-primary text-xl font-bold",children:e}),t&&o(K,{className:"text-accent hover:bg-hover rounded-md px-2 py-1 text-[15px]",href:"#/",onClick:n=>n.preventDefault(),children:t})]}),l]})}function uS({user:e,own:t}){const l=Da("profile_intro_card_v3");return b(ys,{title:"About",children:[o(M,{as:"p",className:"text-primary mb-3 text-center text-[15px]",children:e.bio}),t&&o("button",{type:"button",className:"bg-surface-alt text-primary hover:bg-hover mb-3 w-full rounded-md py-2 text-[15px] font-semibold",children:"Update bio"}),o(T,{as:"ul",className:"flex flex-col gap-3",children:(e.intro??[]).map(n=>b(T,{as:"li",className:"text-primary flex items-center gap-3 text-[15px]",children:[o(U,{name:n.icon,size:20,className:"text-secondary"}),o(M,{children:n.text})]},n.text))}),t&&o(T,{className:`mt-3 flex ${l?"flex-row":"flex-col"} gap-2`,children:["Edit details","Add interests"].map(n=>o("button",{type:"button",className:"bg-surface-alt text-primary hover:bg-hover flex-1 rounded-md py-2 text-[15px] font-semibold",children:n},n))})]})}const By=Y("PhotoCell_photo",$("id seed alt")),Sc=Y("FriendCell_user",$("id name avatar_seed")),iS=Y("ProfilePage_user",{...$("id name avatar_seed cover_seed bio friend_count follower_count intro"),friends_preview:he(Sc),photos:he(By),friends:he(Sc),timeline:{page_info:!0,edges:Oy}}),cS=Y("ProfileQueryStatus",{status:!0});function oS({photoRef:e}){const t=H(By,e);return o(K,{href:`#/photo/${t.id}`,className:"block aspect-square overflow-hidden",onClick:l=>l.preventDefault(),children:o(bt,{className:"h-full w-full object-cover",src:vt(t.seed,200,200),width:"200",height:"200",alt:t.alt})})}function rS({friendRef:e}){const t=H(Sc,e);return b(K,{href:`#/profile/${t.id}`,className:"block",onClick:l=>l.preventDefault(),children:[o(bt,{className:"aspect-square w-full rounded-lg object-cover",src:`${vt(t.avatar_seed*3,200,200)}`,width:"200",height:"200",alt:""}),o(M,{className:"text-primary mt-1 block truncate text-[13px] font-semibold",children:t.name})]})}function sS({friends:e}){return o(T,{className:"flex -space-x-2",children:e.map(t=>o(fS,{friendRef:t},t.__id))})}function fS({friendRef:e}){const t=H(Sc,e);return o(M,{className:"border-surface rounded-full border-2",children:o(Ue,{seed:t.avatar_seed,size:32,label:t.name})})}function dS({userId:e,scrollerRef:t}){const l=H(iS,e),n=H(cS,Ve(ke("Profile",{userId:e})));An(Ve(ke("Profile",{userId:e})));const[a,u]=_.useState("Activity"),i=n&&n.status==="ready",c=e===Ze;_.useEffect(()=>{ey(e)},[e]),_.useEffect(()=>{i&&zt("profile-ready")},[i]);const r=l&&l.cover_seed!==void 0;return b(T,{className:"pb-6","data-log-scope":"profile",children:[o(T,{className:"bg-surface shadow-card",children:b(T,{className:"mx-auto max-w-[740px]",children:[b(T,{className:"bg-surface-alt relative h-[220px] overflow-hidden rounded-b-lg",children:[r&&o(bt,{className:"h-full w-full object-cover",src:vt(l.cover_seed,740,220),width:"740",height:"220",alt:"Cover photo"}),c&&b("button",{type:"button",className:"bg-surface text-primary absolute bottom-3 right-3 flex items-center gap-2 rounded-md px-3 py-1.5 text-[15px] font-semibold",children:[o(U,{name:"camera",size:16}),"Change cover"]})]}),b(T,{className:"flex items-end gap-4 px-6 pb-4",children:[o(M,{className:"border-surface bg-surface -mt-12 rounded-[36px] border-4",children:l?o(Ue,{seed:l.avatar_seed,size:150,square:!0,label:l.name}):o(M,{className:"bg-glimmer block h-[150px] w-[150px] rounded-[30px]"})}),o(T,{className:"flex-1 pb-2",children:r?b(Rt.Fragment,{children:[o(M,{as:"h1",id:"profile-name",className:"text-primary text-[28px] font-bold leading-8",children:l.name}),b(M,{as:"p",className:"text-secondary text-[15px] font-semibold",children:[ko(l.friend_count)," connections · ",ko(l.follower_count)," followers"]}),o(sS,{friends:l.friends_preview})]}):b(T,{className:"flex flex-col gap-2",children:[o(kl,{width:"50%",height:24}),o(kl,{width:"30%"})]})}),b(T,{className:"flex gap-2 pb-2",children:[b("button",{type:"button",className:"bg-accent flex items-center gap-2 rounded-md px-3 py-2 text-[15px] font-semibold text-white",children:[o(U,{name:"share",size:16}),c?"Share profile":"Connect"]}),b("button",{type:"button",className:"bg-surface-alt text-primary flex items-center gap-2 rounded-md px-3 py-2 text-[15px] font-semibold",children:[o(U,{name:"pencil",size:16}),c?"Edit":"Message"]})]})]}),o(T,{as:"nav",className:"border-divider flex gap-1 border-t px-4",role:"tablist","aria-label":"Profile sections",children:aS.map(s=>o("button",{type:"button",role:"tab","aria-selected":a===s,className:`my-2 rounded-lg px-3 py-1.5 text-[15px] font-semibold ${a===s?"bg-accent-soft text-accent":"text-secondary hover:bg-hover"}`,onClick:()=>u(s),"data-log":"profile_tab",children:s},s))})]})}),b(T,{className:"mx-auto mt-4 grid max-w-[740px] grid-cols-[300px_1fr] gap-4 px-2",children:[b(T,{className:"flex flex-col gap-4",children:[l&&l.intro?o(uS,{user:l,own:c}):o(oa,{}),l&&l.photos&&o(ys,{title:"Albums",action:"Browse",children:o(T,{className:"grid grid-cols-3 gap-1 overflow-hidden rounded-lg",children:l.photos.map(s=>o(oS,{photoRef:s},s.__id))})}),l&&l.friends&&b(ys,{title:"Connections",action:"Browse",children:[b(M,{as:"p",className:"text-secondary -mt-2 mb-2 text-[15px]",children:[ko(l.friend_count)," connections"]}),o(T,{className:"grid grid-cols-3 gap-2",children:l.friends.map(s=>o(rS,{friendRef:s},s.__id))})]})]}),b(T,{className:"flex min-w-0 flex-col gap-4",children:[b(T,{className:"bg-surface shadow-card flex items-center justify-between rounded-lg px-4 py-3",children:[o(M,{as:"h2",className:"text-primary text-xl font-bold",children:"Activity"}),b("button",{type:"button",className:"bg-surface-alt text-primary flex items-center gap-2 rounded-md px-3 py-1.5 text-[15px] font-semibold",children:[o(U,{name:"filter",size:16}),"Sort"]})]}),l&&l.timeline?o(Ry,{edges:l.timeline.edges,scrollerRef:t,label:`${l.name}'s posts`}):o(oa,{})]})]})]})}const mS=[{icon:"friends",label:"Connections"},{icon:"communities",label:"Communities"},{icon:"calendar",label:"Events"},{icon:"map",label:"Local guide"},{icon:"saved",label:"Bookmarks"},{icon:"album",label:"Albums"},{icon:"store",label:"Swap shop"}],hS=ue("rail.profile",e=>{e.preventDefault(),Jl("profile-ready",{source:"left_rail"}),ey(Ze),Zu(`/profile/${Ze}`)}),eo=Y("RailGroup",$("id name cover_seed")),gS=Y("RailViewer",$("id name avatar_seed")),yS=Y("ShortcutsQuery",{status:!0,root:{shortcuts:he(eo)}});function pS({groupRef:e}){const t=H(eo,e);return o(K,{className:"hover:bg-hover flex h-11 w-11 items-center justify-center rounded-lg",href:`#/groups/${t.id}`,title:t.name,"aria-label":t.name,"data-log":"rail_shortcut",onClick:l=>l.preventDefault(),children:o(bt,{className:"h-9 w-9 rounded-lg object-cover",src:vt(t.cover_seed,72,72),width:"36",height:"36",alt:""})})}function vS(){const e=H(gS,Ze),t=H(yS,Ve(ke("Shortcuts")));return b(T,{as:"nav",className:"flex w-14 shrink-0 flex-col items-center gap-1 overflow-y-auto py-3","aria-label":"Shortcuts","data-log-scope":"left_rail",children:[o(K,{id:"rail-profile",className:"hover:bg-hover flex h-11 w-11 items-center justify-center rounded-lg",href:`#/profile/${Ze}`,"aria-label":e?e.name:"Your profile",onClick:hS,"data-log":"rail_profile",children:e?o(Ue,{seed:e.avatar_seed,size:36,label:""}):o(M,{className:"bg-glimmer h-9 w-9 rounded-full"})}),mS.map(l=>o(K,{className:"text-accent hover:bg-hover flex h-11 w-11 items-center justify-center rounded-lg",href:`#/${l.label.toLowerCase()}`,"aria-label":l.label,title:l.label,"data-log":"rail_nav",onClick:n=>n.preventDefault(),children:o(U,{name:l.icon,size:24})},l.label)),o(T,{className:"border-divider my-2 w-8 border-t"}),t&&t.root&&t.root.shortcuts.map(l=>o(pS,{groupRef:l},l.__id))]})}const xc=Y("Contact_user",$("id name avatar_seed online"));function bS({contactRef:e}){const t=H(xc,e);return o(T,{as:"li",children:b(K,{className:"hover:bg-hover flex items-center gap-3 rounded-md px-2 py-1.5",href:`#/messages/${t.id}`,"data-log":"rail_contact",onClick:l=>l.preventDefault(),children:[o(Ue,{seed:t.avatar_seed,size:32,online:t.online,label:""}),o(M,{className:"text-primary truncate text-[15px] font-medium",children:t.name})]})})}function _S({ad:e}){return b(K,{className:"hover:bg-hover flex items-center gap-3 rounded-md p-2",href:`https://${e.domain}`,target:"_blank",rel:"noreferrer","data-log":"rail_ad",children:[o(bt,{className:"h-[90px] w-[90px] shrink-0 rounded-lg object-cover",src:vt(e.seed,180,180),width:"90",height:"90",alt:""}),b(M,{className:"min-w-0",children:[o(M,{className:"text-primary line-clamp-2 block text-[15px] font-medium leading-5",children:e.title}),o(M,{className:"text-secondary block truncate text-[13px]",children:e.domain})]})]})}function SS({userRef:e}){const t=H(xc,e);return b(T,{className:"text-primary flex items-center gap-3 px-2 py-1.5 text-[15px]",children:[o(M,{className:"bg-accent-soft text-accent flex h-9 w-9 shrink-0 items-center justify-center rounded-xl",children:o(U,{name:"gift",size:18})}),b(M,{children:[o(M,{as:"strong",children:t.name})," turns a year older today"]})]})}function xS({groupRef:e}){const t=H(eo,e);return o(T,{as:"li",children:b(K,{className:"hover:bg-hover flex items-center gap-3 rounded-md px-2 py-1.5",href:`#/groups/${t.id}/chat`,onClick:l=>l.preventDefault(),children:[o(bt,{className:"h-8 w-8 rounded-full object-cover",src:vt(t.cover_seed,64,64),width:"32",height:"32",alt:""}),o(M,{className:"text-primary truncate text-[15px] font-medium",children:t.name})]})})}const qy=Y("PromotedCard_ad",$("id title domain seed")),NS=Y("RightRailQuery",{status:!0,root:{right_rail:{sponsored:he(qy),birthdays:he(xc),contacts:he(xc),group_chats:he(eo)}}});function TS(){const e=H(NS,Ve(ke("RightRail"))),t=e&&e.root?e.root.right_rail:null;return o(T,{as:"aside",className:"w-[232px] shrink-0 overflow-y-auto px-2 py-3","aria-label":"Promoted and people online","data-log-scope":"right_rail",children:t?b(Rt.Fragment,{children:[o(M,{as:"h2",className:"text-secondary px-2 pb-1 text-[17px] font-semibold",children:"Promoted"}),t.sponsored.map(l=>o(ES,{adRef:l},l.__id)),o(T,{className:"border-divider mx-2 my-2 border-t"}),o(M,{as:"h2",className:"text-secondary px-2 pb-1 text-[17px] font-semibold",children:"Celebrations"}),t.birthdays.map(l=>o(SS,{userRef:l},l.__id)),o(T,{className:"border-divider mx-2 my-2 border-t"}),b(T,{className:"flex items-center justify-between px-2 pb-1",children:[o(M,{as:"h2",className:"text-secondary text-[17px] font-semibold",children:"Online now"}),b(M,{className:"text-secondary flex gap-1",children:[o(U,{name:"search",size:16}),o(U,{name:"dots",size:16,strokeWidth:3})]})]}),o(T,{as:"ul",children:t.contacts.map(l=>o(bS,{contactRef:l},l.__id))}),o(T,{className:"border-divider mx-2 my-2 border-t"}),o(M,{as:"h2",className:"text-secondary px-2 pb-1 text-[17px] font-semibold",children:"Community chats"}),o(T,{as:"ul",children:t.group_chats.map(l=>o(xS,{groupRef:l},l.__id))})]}):[0,1,2,3].map(l=>o(Cn,{avatarSize:32,lines:1},l))})}function ES({adRef:e}){const t=H(qy,e);return o(_S,{ad:t})}const MS=Y("AppViewer",{id:!0,avatar_seed:!0});function AS(){const{page:e,overlay:t}=Rf(),l=H(MS,Ze),n=_.useRef(null),[a,u]=_.useState(!1),i=_.useCallback(y=>{n.current=y,hs.current=y,y&&u(!0)},[]),c=e==="/",r=e.startsWith("/profile/")?e.slice(9):null,[s,f]=_.useState(c);c&&!s&&f(!0);const p=c?"visible":"hidden",m=!!t||!c;return b("div",{className:"bg-canvas text-primary flex h-screen flex-col font-sans",children:[b(Ol.Provider,{value:!!t,children:[o(X_,{viewerSeed:l?l.avatar_seed:0}),b("div",{className:"flex min-h-0 flex-1",children:[s&&o(_.Activity,{mode:p,children:o(Ol.Provider,{value:m,children:o(vS,{})})}),b("main",{ref:i,id:"main-scroller",className:`min-w-0 flex-1 ${t?"overflow-hidden":"overflow-y-auto"} [overflow-anchor:none]`,"aria-hidden":t?!0:void 0,children:[a&&s&&o(_.Activity,{mode:p,children:o(Ol.Provider,{value:m,children:o(Z3,{scrollerRef:n})})}),a&&r&&o(dS,{userId:r,scrollerRef:n},r)]}),s&&o(_.Activity,{mode:p,children:o(Ol.Provider,{value:m,children:o(TS,{})})})]})]}),t&&o(nS,{storyId:t},t)]})}yp({userId:Ze,sessionSeed:ve(`session:${Ze}`)});w5(Ze);A5(document);us(b5(Ze));Kl();Z5();P1();q2.createRoot(document.getElementById("root")).render(o(J5,{children:o(AS,{})})); +//# sourceMappingURL=index.js.map diff --git a/suites-experimental/social-network/dist/assets/index.js.map b/suites-experimental/social-network/dist/assets/index.js.map new file mode 100644 index 000000000..40b947d5a --- /dev/null +++ b/suites-experimental/social-network/dist/assets/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../node_modules/react/cjs/react-jsx-runtime.production.js","../../node_modules/react/jsx-runtime.js","../../node_modules/react/cjs/react.production.js","../../node_modules/react/index.js","../../src/analytics/guard.js","../../src/analytics/compress.js","../../src/analytics/logger.js","../../src/analytics/interceptor.js","../../src/analytics/jsx-runtime.js","../../node_modules/scheduler/cjs/scheduler.production.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/cjs/react-dom-client.production.js","../../node_modules/react-dom/client.js","../../src/data/rng.js","../../src/data/corpus.js","../../src/data/server.js","../../src/analytics/autotrack.js","../../src/analytics/experiments.js","../../src/store/store.js","../../src/store/network.js","../../src/queries.js","../../src/router.jsx","../../src/store/fragment.js","../../src/analytics/perf.js","../../src/components/icon.jsx","../../src/data/graphics.js","../../src/components/avatar.jsx","../../src/components/popover.jsx","../../src/signals.js","../../src/search-index.js","../../src/components/measure.js","../../src/components/ui.jsx","../../src/components/search-box.jsx","../../src/format.js","../../src/components/glimmer.jsx","../../src/components/header-menus.jsx","../../src/components/header.jsx","../../src/analytics/impressions.js","../../src/i18n.js","../../src/components/hovercard.jsx","../../src/components/pressable.jsx","../../src/components/rich-text.jsx","../../src/components/reactions.jsx","../../src/components/comments.jsx","../../src/components/story.jsx","../../src/components/suggestions.jsx","../../src/components/feed.jsx","../../src/components/home-page.jsx","../../src/components/comment-composer.jsx","../../src/components/post-dialog.jsx","../../src/components/profile-page.jsx","../../src/components/rails.jsx","../../src/components/app.jsx","../../src/main.jsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result,\n thenable = ctor();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1),\n (payload._result = moduleObject),\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2),\n (payload._result = error),\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n );\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction startTransition(scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction addTransitionType(type) {\n var transition = ReactSharedInternals.T;\n if (null !== transition) {\n var transitionTypes = transition.types;\n null === transitionTypes\n ? (transition.types = [type])\n : -1 === transitionTypes.indexOf(type) && transitionTypes.push(type);\n } else startTransition(addTransitionType.bind(null, type));\n}\nvar Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.ViewTransition = REACT_VIEW_TRANSITION_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.addTransitionType = addTransitionType;\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = startTransition;\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// Every handler, timer and network callback runs through guard(), which keeps a stack\n// of named contexts, so an error or a slow callback can be attributed to the feature\n// that ran it.\n\nconst contextStack = [];\nconst SLOW_CALLBACK_MS = 50;\nlet reporter = null;\n\nexport function setGuardReporter(report) {\n reporter = report;\n}\n\nexport function currentContext() {\n return contextStack.length ? contextStack[contextStack.length - 1] : \"root\";\n}\n\nexport function guard(name, callback, ...args) {\n contextStack.push(name);\n const start = performance.now();\n try {\n return callback(...args);\n } catch (error) {\n if (reporter) {\n reporter(\"js_error\", {\n context: contextStack.join(\">\"),\n message: String(error && error.message),\n stack: String(error && error.stack)\n .split(\"\\n\")\n .slice(0, 6)\n .join(\"\\n\"),\n });\n }\n throw error;\n } finally {\n const duration = performance.now() - start;\n contextStack.pop();\n if (duration > SLOW_CALLBACK_MS && reporter)\n reporter(\"slow_callback\", { context: name, duration: Math.round(duration) });\n }\n}\n\nexport function guarded(name, callback) {\n return function guardedCallback(...args) {\n return guard(name, callback, ...args);\n };\n}\n","// Log batches are compressed on the client before upload, which keeps the beacon\n// small on slow networks. LZW with growing code widths, packed into URL-safe base64.\n\nconst BASE64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\nclass BitWriter {\n constructor() {\n this.output = [];\n this.buffer = 0;\n this.bits = 0;\n }\n\n write(value, width) {\n for (let i = 0; i < width; i++) {\n this.buffer = (this.buffer << 1) | ((value >>> i) & 1);\n this.bits++;\n if (this.bits === 6) {\n this.output.push(BASE64[this.buffer]);\n this.buffer = 0;\n this.bits = 0;\n }\n }\n }\n\n finish() {\n if (this.bits)\n this.output.push(BASE64[this.buffer << (6 - this.bits)]);\n return this.output.join(\"\");\n }\n}\n\nexport function compressToString(input) {\n if (!input)\n return \"\";\n const dictionary = new Map();\n let nextCode = 65536 + 1;\n let width = 17;\n const writer = new BitWriter();\n let phrase = input[0];\n for (let i = 1; i < input.length; i++) {\n const char = input[i];\n const candidate = phrase + char;\n if (dictionary.has(candidate)) {\n phrase = candidate;\n continue;\n }\n writer.write(phrase.length === 1 ? phrase.charCodeAt(0) : dictionary.get(phrase), width);\n dictionary.set(candidate, nextCode++);\n if (nextCode >= 1 << width)\n width++;\n phrase = char;\n }\n writer.write(phrase.length === 1 ? phrase.charCodeAt(0) : dictionary.get(phrase), width);\n writer.write(65536, width);\n return writer.finish();\n}\n\nlet crcTable = null;\n\nexport function crc32(text) {\n if (!crcTable) {\n crcTable = new Uint32Array(256);\n for (let n = 0; n < 256; n++) {\n let c = n;\n for (let k = 0; k < 8; k++)\n c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n crcTable[n] = c >>> 0;\n }\n }\n let crc = 0xffffffff;\n for (let i = 0; i < text.length; i++)\n crc = crcTable[(crc ^ text.charCodeAt(i)) & 0xff] ^ (crc >>> 8);\n return (crc ^ 0xffffffff) >>> 0;\n}\n","// First-party event logging. Events are enriched with session context, queued, ordered,\n// and flushed in batches: serialized, compressed, checksummed and handed to a transport\n// that would normally beacon them to a collector.\n\nimport { compressToString, crc32 } from \"./compress.js\";\nimport { currentContext, guard, setGuardReporter } from \"./guard.js\";\n\nconst BATCH_SIZE = 24;\nconst OUTBOX_LIMIT = 40;\nconst SCHEMA_VERSION = 3;\n\n// Chatty events are sampled deterministically by count, so runs stay reproducible.\nconst SAMPLE_EVERY = {\n key_activity: 4,\n scroll_depth: 2,\n store_publish: 8,\n};\n\nconst state = {\n seq: 0,\n queue: [],\n outbox: [],\n pendingAcks: new Map(),\n sampleCounters: new Map(),\n flushScheduled: false,\n context: null,\n route: \"unknown\",\n bytesSent: 0,\n batches: 0,\n};\n\nconst encoder = new TextEncoder();\nconst ackChannel = new MessageChannel();\nackChannel.port1.onmessage = (event) => guard(\"logger.ack\", acknowledge, event.data);\n\nexport function initLogger({ userId, sessionSeed }) {\n const zone = Intl.DateTimeFormat().resolvedOptions();\n state.context = {\n app: \"commons-web\",\n build: \"2026.04.18-r812\",\n user_id: userId,\n session_id: `s${sessionSeed.toString(36)}`,\n locale: navigator.language,\n time_zone: zone.timeZone,\n platform: navigator.platform,\n user_agent: navigator.userAgent,\n device_pixel_ratio: window.devicePixelRatio,\n connection: navigator.connection ? navigator.connection.effectiveType : \"unknown\",\n };\n setGuardReporter(log);\n log(\"session_start\", { referrer: document.referrer ? new URL(document.referrer).origin : \"\" });\n}\n\nexport function setLoggerRoute(route) {\n state.route = route;\n}\n\nfunction sampled(name) {\n const every = SAMPLE_EVERY[name];\n if (!every)\n return true;\n const count = (state.sampleCounters.get(name) ?? 0) + 1;\n state.sampleCounters.set(name, count);\n return count % every === 0;\n}\n\nexport function log(name, props = {}) {\n if (!sampled(name))\n return;\n state.queue.push({ name, seq: ++state.seq, time: Math.round(performance.now() * 100) / 100, route: state.route, context: currentContext(), props });\n if (state.queue.length >= BATCH_SIZE)\n scheduleFlush(\"batch\");\n}\n\n// Navigations flush what is queued, so a route's events never wait for the next batch.\nexport function scheduleFlush(reason) {\n if (state.flushScheduled)\n return;\n state.flushScheduled = true;\n queueMicrotask(() => guard(\"logger.flush\", flush, reason));\n}\n\nfunction onOrBefore(a, b) {\n return a.time - b.time || a.seq - b.seq;\n}\n\nexport function flush(reason) {\n state.flushScheduled = false;\n if (!state.queue.length)\n return;\n const events = state.queue;\n state.queue = [];\n events.sort(onOrBefore);\n const envelope = {\n schema: SCHEMA_VERSION,\n reason,\n sent_at: Math.round(performance.now()),\n context: {\n ...state.context,\n viewport: [window.innerWidth, window.innerHeight],\n visibility: document.visibilityState,\n route: state.route,\n },\n counts: summarize(events),\n events,\n };\n const json = JSON.stringify(envelope);\n const body = compressToString(json);\n send({\n url: \"/ajax/log/batch\",\n method: \"POST\",\n headers: {\n \"content-type\": \"text/plain;charset=UTF-8\",\n \"x-log-checksum\": crc32(body).toString(16),\n \"x-log-range\": `${events[0].seq}-${events[events.length - 1].seq}`,\n \"x-log-raw-length\": String(json.length),\n },\n body,\n });\n}\n\nfunction summarize(events) {\n const counts = {};\n for (const event of events)\n counts[event.name] = (counts[event.name] ?? 0) + 1;\n return counts;\n}\n\nfunction send(request) {\n const bytes = encoder.encode(request.body);\n const id = ++state.batches;\n state.bytesSent += bytes.byteLength;\n state.outbox.push({ id, request, bytes: bytes.byteLength });\n if (state.outbox.length > OUTBOX_LIMIT)\n state.outbox.shift();\n state.pendingAcks.set(id, request.headers[\"x-log-checksum\"]);\n ackChannel.port2.postMessage({ id, checksum: request.headers[\"x-log-checksum\"] });\n}\n\nfunction acknowledge({ id, checksum }) {\n if (state.pendingAcks.get(id) === checksum)\n state.pendingAcks.delete(id);\n}\n\nexport function loggerStats() {\n return { batches: state.batches, bytesSent: state.bytesSent, queued: state.queue.length, pending: state.pendingAcks.size };\n}\n","// Component and event interception for interaction attribution. The JSX runtime routes\n// every element through here: function components are swapped (once) for a wrapper that\n// keeps a stack of the components rendering, and every event handler on a host element is\n// wrapped so the interaction it starts is attributed to the component that rendered it.\n\nimport { memo } from \"react\";\nimport { guard } from \"./guard.js\";\nimport { log } from \"./logger.js\";\n\nconst MEMO_TYPE = Symbol.for(\"react.memo\");\nconst wrappedComponents = new WeakMap();\nconst wrappedMemos = new WeakMap();\nconst renderStack = [];\nconst renderCounts = new Map();\nlet totalRenders = 0;\n\n// Events that start an interaction get a flowlet; the rest are only guarded.\nconst FLOWLET_EVENTS = new Set([\"onClick\", \"onKeyDown\", \"onInput\", \"onChange\", \"onFocus\", \"onMouseDown\", \"onPointerDown\", \"onSubmit\"]);\n\nlet flowletId = 0;\nconst activeFlowlets = [];\n\nfunction componentName(Component) {\n return Component.displayName || Component.name || \"Anonymous\";\n}\n\nfunction wrapComponent(Component) {\n let wrapped = wrappedComponents.get(Component);\n if (wrapped)\n return wrapped;\n const name = componentName(Component);\n wrapped = function InterceptedComponent(props) {\n renderStack.push(name);\n renderCounts.set(name, (renderCounts.get(name) ?? 0) + 1);\n totalRenders++;\n try {\n return Component(props);\n } finally {\n renderStack.pop();\n }\n };\n wrapped.displayName = name;\n wrappedComponents.set(Component, wrapped);\n return wrapped;\n}\n\nfunction wrapMemo(type) {\n let wrapped = wrappedMemos.get(type);\n if (!wrapped) {\n wrapped = typeof type.type === \"function\" && !type.type.prototype?.isReactComponent ? memo(wrapComponent(type.type), type.compare) : type;\n wrappedMemos.set(type, wrapped);\n }\n return wrapped;\n}\n\nexport function interceptType(type) {\n if (typeof type === \"function\")\n return type.prototype && type.prototype.isReactComponent ? type : wrapComponent(type);\n if (type !== null && typeof type === \"object\" && type.$$typeof === MEMO_TYPE)\n return wrapMemo(type);\n return type;\n}\n\nexport function currentFlowlet() {\n return activeFlowlets.length ? activeFlowlets[activeFlowlets.length - 1] : null;\n}\n\nfunction wrapHandler(handler, propName, owner, ownerPath) {\n const flowlet = FLOWLET_EVENTS.has(propName);\n return function interceptedHandler(event) {\n if (!flowlet)\n return guard(`${owner}.${propName}`, handler, event);\n const entry = { id: ++flowletId, owner, path: ownerPath, event: propName.slice(2).toLowerCase(), start: performance.now() };\n activeFlowlets.push(entry);\n try {\n return guard(`${owner}.${propName}`, handler, event);\n } finally {\n activeFlowlets.pop();\n log(\"ui_event\", { flowlet: entry.id, owner, path: ownerPath, event: entry.event, duration: Math.round((performance.now() - entry.start) * 100) / 100 });\n }\n };\n}\n\nexport function interceptProps(type, props) {\n if (typeof type !== \"string\" || props === null)\n return props;\n let owner = null;\n let ownerPath = null;\n for (const key in props) {\n if (key.charCodeAt(0) !== 111 || key.charCodeAt(1) !== 110 || typeof props[key] !== \"function\")\n continue;\n if (owner === null) {\n owner = renderStack.length ? renderStack[renderStack.length - 1] : \"root\";\n ownerPath = renderStack.slice(-4).join(\">\");\n }\n props[key] = wrapHandler(props[key], key, owner, ownerPath);\n }\n return props;\n}\n\nexport function renderStats() {\n return { total: totalRenders, components: renderCounts.size };\n}\n\nexport function topRendered(count) {\n return Array.from(renderCounts.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, count)\n .map(([name, renders]) => `${name}:${renders}`);\n}\n","// The app's JSX import source: React's runtime, with every element passed through the\n// interceptor first.\nimport { Fragment, jsx as reactJsx, jsxs as reactJsxs } from \"react/jsx-runtime\";\nimport { interceptProps, interceptType } from \"./interceptor.js\";\n\nexport { Fragment };\n\nexport function jsx(type, props, key) {\n return reactJsx(interceptType(type), interceptProps(type, props), key);\n}\n\nexport function jsxs(type, props, key) {\n return reactJsxs(interceptType(type), interceptProps(type, props), key);\n}\n\nexport const jsxDEV = jsx;\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n REACT_OPTIMISTIC_KEY = Symbol.for(\"react.optimistic_key\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key:\n null == key\n ? null\n : key === REACT_OPTIMISTIC_KEY\n ? REACT_OPTIMISTIC_KEY\n : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.browser = function (reason) {\n return { $$typeof: REACT_RECOVERABLE_TYPE, _reason: reason };\n};\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.3.1\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n for (var node = fiber, nextNode = node; nextNode && !nextNode.alternate; )\n (node = nextNode),\n 0 !== (node.flags & 4098) && (fiber = node.return),\n (nextNode = node.return);\n for (; node.return; ) node = node.return;\n return 3 === node.tag ? fiber : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nfunction traverseVisibleInstancesAndTextInstances(\n child,\n searchWithinHosts,\n fn,\n a,\n b,\n c\n) {\n for (; null !== child; ) {\n if (\n ((5 === child.tag || 27 === child.tag || 6 === child.tag) &&\n fn(child, a, b, c)) ||\n ((22 !== child.tag || null === child.memoizedState) &&\n (searchWithinHosts || (5 !== child.tag && 27 !== child.tag)) &&\n traverseVisibleInstancesAndTextInstances(\n child.child,\n searchWithinHosts,\n fn,\n a,\n b,\n c\n ))\n )\n return !0;\n child = child.sibling;\n }\n return !1;\n}\nfunction getFragmentParentInstanceOrContainerFiber(fiber) {\n for (fiber = fiber.return; null !== fiber; ) {\n if (3 === fiber.tag || 5 === fiber.tag || 27 === fiber.tag) return fiber;\n fiber = fiber.return;\n }\n return null;\n}\nfunction fiberIsPortaledIntoHost(fiber) {\n var foundPortalParent = !1;\n for (fiber = fiber.return; null !== fiber; ) {\n 4 === fiber.tag && (foundPortalParent = !0);\n if (3 === fiber.tag || 5 === fiber.tag || 27 === fiber.tag) break;\n fiber = fiber.return;\n }\n return foundPortalParent;\n}\nfunction getFragmentInstanceOrTextInstanceSiblings(fiber) {\n var result = [null, null],\n parentHostFiber = getFragmentParentInstanceOrContainerFiber(fiber);\n if (null === parentHostFiber) return result;\n findFragmentInstanceOrTextInstanceSiblings(\n result,\n fiber,\n parentHostFiber.child,\n { foundSelf: !1 }\n );\n return result;\n}\nfunction findFragmentInstanceOrTextInstanceSiblings(\n result,\n self,\n child,\n state\n) {\n for (; null !== child; ) {\n if (child === self) state.foundSelf = !0;\n else if (5 === child.tag || 27 === child.tag || 6 === child.tag) {\n if (state.foundSelf) return (result[1] = child), !0;\n result[0] = child;\n } else if (\n (22 !== child.tag || null === child.memoizedState) &&\n findFragmentInstanceOrTextInstanceSiblings(\n result,\n self,\n child.child,\n state\n )\n )\n return !0;\n child = child.sibling;\n }\n return !1;\n}\nfunction getInstanceFromHostFiber(fiber) {\n switch (fiber.tag) {\n case 5:\n case 27:\n case 6:\n return fiber.stateNode;\n case 3:\n return fiber.stateNode.containerInfo;\n default:\n throw Error(formatProdErrorMessage(559));\n }\n}\nvar searchTarget = null,\n searchBoundary = null;\nfunction isFiberPrecedingCheck(child, target, boundary) {\n return child === boundary\n ? !0\n : child === target\n ? ((searchTarget = child), !0)\n : !1;\n}\nfunction isFiberFollowingCheck(child, target, boundary) {\n return child === boundary\n ? ((searchBoundary = child), !1)\n : child === target\n ? (null !== searchBoundary && (searchTarget = child), !0)\n : !1;\n}\nfunction getParentForFragmentAncestors(inst) {\n if (null === inst) return null;\n do inst = null === inst ? null : inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag && 3 !== inst.tag);\n return inst ? inst : null;\n}\nfunction getLowestCommonAncestor(instA, instB, getParent) {\n for (var depthA = 0, tempA = instA; tempA; tempA = getParent(tempA)) depthA++;\n tempA = 0;\n for (var tempB = instB; tempB; tempB = getParent(tempB)) tempA++;\n for (; 0 < depthA - tempA; ) (instA = getParent(instA)), depthA--;\n for (; 0 < tempA - depthA; ) (instB = getParent(instB)), tempA--;\n for (; depthA--; ) {\n if (instA === instB || (null !== instB && instA === instB.alternate))\n return instA;\n instA = getParent(instA);\n instB = getParent(instB);\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n var stateHook = fiber.memoizedState;\n null !== stateHook &&\n ((HostTransitionContext._currentValue = stateHook.memoizedState),\n push(hostTransitionProviderCursor, fiber));\n stateHook = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(stateHook, fiber.type);\n stateHook !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" ()\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n Fake = !1;\n try {\n var prevProps = Object.getOwnPropertyDescriptor(\n fn.prototype,\n \"props\"\n );\n Object.defineProperty(fn.prototype, \"props\", {\n configurable: !0,\n set: function () {\n throw Error();\n }\n });\n Fake = !0;\n new fn();\n } finally {\n Fake &&\n (void 0 !== prevProps\n ? Object.defineProperty(fn.prototype, \"props\", prevProps)\n : delete fn.prototype.props);\n }\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"\") &&\n (frame = frame.replace(\"\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n case 30:\n return describeBuiltInComponentFrame(\"ViewTransition\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & -lanes;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction getEntangledLanes(root, renderLanes) {\n 0 !== (renderLanes & 8) && (renderLanes |= renderLanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= renderLanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n renderLanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n return renderLanes;\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey,\n internalLoadPendingKey = \"__reactLoad$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst;\n if ((targetInst = targetNode[internalInstanceKey])) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nfunction clearPendingLoadOnNode(node) {\n node[internalLoadPendingKey] = void 0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[: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]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nvar viewTransitionMutationContext = !1;\nfunction pushMutationContext() {\n var prev = viewTransitionMutationContext;\n viewTransitionMutationContext = !1;\n return prev;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? \"number\" === type && element.value == value\n ? setDefaultValue(element, getToStringValue(element.value))\n : setDefaultValue(element, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, value) {\n node.defaultValue !== \"\" + value && (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"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(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"),\n (viewTransitionMutationContext = !0));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n (setValueForStyle(node, styleName$16, styleName),\n (viewTransitionMutationContext = !0));\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"maskType\", \"mask-type\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\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;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n SubmitEventInterface = assign({}, EventInterface, { submitter: 0 }),\n SyntheticSubmitEvent = createSyntheticEvent(SubmitEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0,\n source: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$318;\n if (canUseDOM) {\n var isSupported$jscomp$inline_474 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_474) {\n var element$jscomp$inline_475 = document.createElement(\"div\");\n element$jscomp$inline_475.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_474 =\n \"function\" === typeof element$jscomp$inline_475.oninput;\n }\n JSCompiler_inline_result$jscomp$318 = isSupported$jscomp$inline_474;\n } else JSCompiler_inline_result$jscomp$318 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$318 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e$20) {\n return doc.body;\n }\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError 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(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar globalClientIdCounter$1 = 0;\nfunction getViewTransitionName(props, instance) {\n if (null != props.name && \"auto\" !== props.name) return props.name;\n if (null !== instance.autoName) return instance.autoName;\n props = pendingEffectsRoot.identifierPrefix;\n var globalClientId = globalClientIdCounter$1++;\n props = \"_\" + props + \"t_\" + globalClientId.toString(32) + \"_\";\n return (instance.autoName = props);\n}\nfunction getClassNameByType(classByType) {\n if (null == classByType || \"string\" === typeof classByType)\n return classByType;\n var className = null,\n activeTypes = pendingTransitionTypes;\n if (null !== activeTypes)\n for (var i = 0; i < activeTypes.length; i++) {\n var match = classByType[activeTypes[i]];\n if (null != match) {\n if (\"none\" === match) return \"none\";\n className = null == className ? match : className + (\" \" + match);\n }\n }\n return null == className ? classByType.default : className;\n}\nfunction getViewTransitionClassName(defaultClass, eventClass) {\n defaultClass = getClassNameByType(defaultClass);\n eventClass = getClassNameByType(eventClass);\n return null == eventClass\n ? \"auto\" === defaultClass\n ? null\n : defaultClass\n : \"auto\" === eventClass\n ? null\n : eventClass;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 1206910976;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 1206910978;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof owner) shouldConstruct(owner) && (fiberTag = 1);\n else if (\"string\" === typeof owner)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (owner) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_LEGACY_HIDDEN_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return (\n (type = mode | 32),\n (type = createFiberImplClass(30, pendingProps, key, type)),\n (type.elementType = REACT_VIEW_TRANSITION_TYPE),\n (type.lanes = lanes),\n (type.stateNode = {\n autoName: null,\n paired: null,\n clones: null,\n ref: null\n }),\n type\n );\n default:\n if (\"object\" === typeof owner && null !== owner)\n switch (owner.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else\n 13 === fiber.tag &&\n null !== fiber.memoizedState &&\n null === fiber.memoizedState.dehydrated\n ? ((fiber.lanes |= renderLanes),\n (nextFiber = fiber.alternate),\n null !== nextFiber && (nextFiber.lanes |= renderLanes),\n scheduleContextWorkOnParentPath(\n fiber.return,\n renderLanes,\n workInProgress\n ),\n (nextFiber = fiber.child),\n (nextFiber = null !== nextFiber ? nextFiber.sibling : null))\n : (nextFiber = fiber.child);\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n return null !== current;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nfunction queueTransitionTypes(root, transitionTypes) {\n if (0 !== (root.pendingLanes & 4194048)) {\n var queued = root.transitionTypes;\n null === queued && (queued = root.transitionTypes = []);\n for (root = 0; root < transitionTypes.length; root++) {\n var transitionType = transitionTypes[root];\n -1 === queued.indexOf(transitionType) && queued.push(transitionType);\n }\n }\n}\nvar entangledTransitionTypes = null;\nfunction claimQueuedTransitionTypes(root) {\n var claimed = root.transitionTypes;\n root.transitionTypes = null;\n return claimed;\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n ((entangledTransitionTypes = null), null !== currentEntangledListeners)\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n if (null !== entangledTransitionTypes)\n for (var root$28 = firstScheduledRoot; null !== root$28; )\n queueTransitionTypes(root$28, entangledTransitionTypes),\n (root$28 = root$28.next);\n root$28 = transition.types;\n if (null !== root$28) {\n for (var root$29 = firstScheduledRoot; null !== root$29; )\n queueTransitionTypes(root$29, root$28), (root$29 = root$29.next);\n if (0 !== currentEntangledLane) {\n root$29 = entangledTransitionTypes;\n null === root$29 && (root$29 = entangledTransitionTypes = []);\n for (var i = 0; i < root$28.length; i++) {\n var transitionType = root$28[i];\n -1 === root$29.indexOf(transitionType) && root$29.push(transitionType);\n }\n }\n }\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n thenableState = thenable.reason;\n checkIfUseWrappedInAsyncCatch(thenableState);\n if (void 0 === thenableState && !(\"reason\" in thenable))\n throw Error(formatProdErrorMessage(600));\n throw thenableState;\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null === currentFirstChild.key\n ? existingChildren.set(currentFirstChild.index, currentFirstChild)\n : existingChildren.set(currentFirstChild.key, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 2), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 134217730;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 134217730);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return (\n (returnFiber = updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n )),\n coerceRef(returnFiber, element),\n returnFiber\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n ((newFiber = nextOldFiber.alternate),\n null !== newFiber &&\n oldFiber.delete(null === newFiber.key ? newIdx : newFiber.key)),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n ((nextOldFiber = step.alternate),\n null !== nextOldFiber &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n )),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n void 0 === newChild.props.ref &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack();\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction pushSuspenseListContext(fiber, newContext) {\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n push(suspenseStackCursor, newContext);\n}\nfunction popSuspenseListContext(fiber) {\n pop(suspenseStackCursor);\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n}\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n \"independent\" !== node.memoizedProps.revealOrder\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_RECOVERABLE_TYPE) return;\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$64 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$64 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$64 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$64 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n subscribe =\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook &&\n 0 !== (workInProgressHook.memoizedState.tag & 1));\n pushSimpleEffect(\n subscribe ? 9 : 8,\n { destroy: void 0 },\n updateStoreInstance.bind(null, fiber, hook, getServerSnapshot, getSnapshot),\n null\n );\n if (subscribe) {\n fiber.flags |= 2048;\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$70) {\n onActionError(actionQueue, node, error$70);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 106) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$73 = enqueueUpdate(provider, fiber, lane);\n null !== root$73 &&\n (scheduleUpdateOnFiber(root$73, provider, lane),\n entangleTransitions(root$73, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError,\n useEffectEvent: throwInvalidHookError\n },\n HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh,\n useEffectEvent: updateEvent\n },\n HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh,\n useEffectEvent: updateEvent\n };\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$77 in Component)\n void 0 === newProps[propName$77] &&\n (newProps[propName$77] = Component[propName$77]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$78) {\n setTimeout(function () {\n throw e$78;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$79) {\n setTimeout(function () {\n throw e$79;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n case 19:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n returnFiber = sourceFiber.type;\n wrapperError = sourceFiber.stateNode;\n if (\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n break;\n case 22:\n if (null !== sourceFiber.memoizedState)\n return (sourceFiber.flags |= 65536), !1;\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack());\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n (current.memoizedState = { baseLanes: 0, cachePool: null }),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n if (null === currentTreeHiddenStackCursor.current) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n }\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 134221824);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack();\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n didSuspend = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(),\n (showFallback = workInProgress.mode),\n (didSuspend = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: didSuspend },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (didSuspend.return = workInProgress),\n (nextProps.return = workInProgress),\n (didSuspend.sibling = nextProps),\n (workInProgress.child = didSuspend),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, didSuspend);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated$96 = prevState.dehydrated;\n if (null !== dehydrated$96)\n return updateDehydratedSuspenseComponent(\n current,\n workInProgress,\n didSuspend,\n JSCompiler_temp,\n nextProps,\n dehydrated$96,\n prevState,\n renderLanes\n );\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(),\n (showFallback = nextProps.fallback),\n (didSuspend = workInProgress.mode),\n (prevState = current.child),\n (dehydrated$96 = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 1206910976),\n null !== dehydrated$96\n ? (showFallback = createWorkInProgress(dehydrated$96, showFallback))\n : ((showFallback = createFiberFromFragment(\n showFallback,\n didSuspend,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2)),\n (showFallback.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (showFallback = current.child.memoizedState),\n null === showFallback\n ? (showFallback = mountSuspenseOffscreenState(renderLanes))\n : ((didSuspend = showFallback.cachePool),\n null !== didSuspend\n ? ((prevState = CacheContext._currentValue),\n (didSuspend =\n didSuspend.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : didSuspend))\n : (didSuspend = getSuspendedCache()),\n (showFallback = {\n baseLanes: showFallback.baseLanes | renderLanes,\n cachePool: didSuspend\n })),\n (nextProps.memoizedState = showFallback),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateDehydratedSuspenseComponent(\n current,\n workInProgress,\n didSuspend,\n didPrimaryChildrenDefer,\n nextProps,\n suspenseInstance,\n suspenseState,\n renderLanes\n) {\n if (didSuspend) {\n if (workInProgress.flags & 256)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )\n );\n if (null !== workInProgress.memoizedState)\n return (\n reuseSuspenseHandlerOnStack(),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n null\n );\n reuseSuspenseHandlerOnStack();\n suspenseInstance = nextProps.fallback;\n suspenseState = workInProgress.mode;\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n suspenseState\n );\n suspenseInstance = createFiberFromFragment(\n suspenseInstance,\n suspenseState,\n renderLanes,\n null\n );\n suspenseInstance.flags |= 2;\n nextProps.return = workInProgress;\n suspenseInstance.return = workInProgress;\n nextProps.sibling = suspenseInstance;\n workInProgress.child = nextProps;\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n nextProps = workInProgress.child;\n nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes);\n nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n didPrimaryChildrenDefer,\n renderLanes\n );\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return bailoutOffscreenComponent(null, nextProps);\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n if (isSuspenseInstanceFallback(suspenseInstance)) {\n didPrimaryChildrenDefer =\n suspenseInstance.nextSibling && suspenseInstance.nextSibling.dataset;\n if (didPrimaryChildrenDefer) var digest = didPrimaryChildrenDefer.dgst;\n didPrimaryChildrenDefer = digest;\n \"\" !== didPrimaryChildrenDefer &&\n ((nextProps = Error(formatProdErrorMessage(419))),\n (nextProps.stack = \"\"),\n (nextProps.digest = didPrimaryChildrenDefer),\n queueHydrationError({ value: nextProps, source: null, stack: null }));\n return retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n }\n didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1);\n didPrimaryChildrenDefer = 0 !== (renderLanes & current.childLanes);\n if (didReceiveUpdate || didPrimaryChildrenDefer) {\n if (null !== currentTreeHiddenStackCursor.current)\n return retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n didPrimaryChildrenDefer = workInProgressRoot;\n if (\n null !== didPrimaryChildrenDefer &&\n ((nextProps = getBumpedLaneForHydration(\n didPrimaryChildrenDefer,\n renderLanes\n )),\n 0 !== nextProps && nextProps !== suspenseState.retryLane)\n )\n throw (\n ((suspenseState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(didPrimaryChildrenDefer, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(suspenseInstance) ||\n renderDidSuspendDelayIfPossible();\n return retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n }\n if (isSuspenseInstancePending(suspenseInstance))\n return (\n (workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n null\n );\n current = suspenseState.treeContext;\n nextHydratableInstance = getNextHydratable(suspenseInstance.nextSibling);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !1;\n null !== current && restoreSuspendedTreeContext(workInProgress, current);\n workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n );\n workInProgress.flags |= 134221824;\n return workInProgress;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction findLastContentRow(firstChild) {\n for (var lastContentRow = null; null !== firstChild; ) {\n var currentRow = firstChild.alternate;\n null !== currentRow &&\n null === findFirstSuspended(currentRow) &&\n (lastContentRow = firstChild);\n firstChild = firstChild.sibling;\n }\n return lastContentRow;\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction reverseChildren(fiber) {\n var row = fiber.child;\n for (fiber.child = null; null !== row; ) {\n var nextRow = row.sibling;\n row.sibling = fiber.child;\n fiber.child = row;\n row = nextRow;\n }\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current;\n if (workInProgress.flags & 128)\n return pushSuspenseListContext(workInProgress, suspenseContext), null;\n var shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n pushSuspenseListContext(workInProgress, suspenseContext);\n \"backwards\" === revealOrder && null !== current\n ? (reverseChildren(current),\n reconcileChildren(current, workInProgress, nextProps, renderLanes),\n reverseChildren(current))\n : reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"backwards\":\n renderLanes = findLastContentRow(workInProgress.child);\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling),\n (renderLanes.sibling = null),\n reverseChildren(workInProgress));\n initSuspenseListRenderState(\n workInProgress,\n !0,\n revealOrder,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n case \"independent\":\n workInProgress.memoizedState = null;\n break;\n default:\n (renderLanes = findLastContentRow(workInProgress.child)),\n null === renderLanes\n ? ((revealOrder = workInProgress.child),\n (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null)),\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n }\n return workInProgress.child;\n}\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n pushProvider(workInProgress, workInProgress.type, newProps.value);\n reconcileChildren(current, workInProgress, newProps.children, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$108 = workInProgress.memoizedState;\n if (null !== state$108) {\n if (null !== state$108.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n state$108 = propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n );\n var primaryChildLanes = workInProgress.child.childLanes;\n if (state$108 || 0 !== (renderLanes & primaryChildLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n if (workInProgress.flags & 128)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n primaryChildLanes = 0 !== (current.flags & 128);\n state$108 = 0 !== (renderLanes & workInProgress.childLanes);\n state$108 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$108 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (primaryChildLanes) {\n if (state$108)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n primaryChildLanes = workInProgress.memoizedState;\n null !== primaryChildLanes &&\n ((primaryChildLanes.rendering = null),\n (primaryChildLanes.tail = null),\n (primaryChildLanes.lastEffect = null));\n pushSuspenseListContext(workInProgress, suspenseStackCursor.current);\n if (state$108) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_CONTEXT_TYPE) {\n workInProgress.tag = 10;\n workInProgress.type = current;\n workInProgress = updateContextProvider(\n null,\n workInProgress,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 134221824),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n (workInProgress.stateNode = createHoistableInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current,\n workInProgress\n ))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n (props = workInProgress.pendingProps),\n markRef(current, workInProgress),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return updateContextProvider(current, workInProgress, renderLanes);\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 30:\n return (\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n autoName: null,\n paired: null,\n clones: null,\n ref: null\n }),\n (props = workInProgress.pendingProps),\n null != props.name && \"auto\" !== props.name\n ? (workInProgress.flags |= null === current ? 18882560 : 18874368)\n : isHydrating && pushMaterializedTreeId(workInProgress),\n null !== current && current.memoizedProps.name !== props.name\n ? (workInProgress.flags |= 4194816)\n : markRef(current, workInProgress),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n var JSCompiler_temp;\n if ((JSCompiler_temp = 0 !== (workInProgress.mode & 32)))\n JSCompiler_temp =\n null === oldProps\n ? maySuspendCommit(type, newProps)\n : maySuspendCommit(type, newProps) &&\n (newProps.src !== oldProps.src ||\n newProps.srcSet !== oldProps.srcSet);\n if (JSCompiler_temp) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"visible\":\n break;\n case \"collapsed\":\n for (\n var tailNode = renderState.tail, lastTailNode = null;\n null !== tailNode;\n\n )\n null !== tailNode.alternate && (lastTailNode = tailNode),\n (tailNode = tailNode.sibling);\n null === lastTailNode\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode.sibling = null);\n break;\n default:\n hasRenderedATailFallback = renderState.tail;\n for (tailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (tailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === tailNode\n ? (renderState.tail = null)\n : (tailNode.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$113 = completedWork.child; null !== child$113; )\n (newChildLanes |= child$113.lanes | child$113.childLanes),\n (subtreeFlags |= child$113.subtreeFlags & 1206910976),\n (subtreeFlags |= child$113.flags & 1206910976),\n (child$113.return = completedWork),\n (child$113 = child$113.sibling);\n else\n for (child$113 = completedWork.child; null !== child$113; )\n (newChildLanes |= child$113.lanes | child$113.childLanes),\n (subtreeFlags |= child$113.subtreeFlags),\n (subtreeFlags |= child$113.flags),\n (child$113.return = completedWork),\n (child$113 = child$113.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \" + + + + +
+ + + diff --git a/suites-experimental/social-network/dist/resources.txt b/suites-experimental/social-network/dist/resources.txt new file mode 100644 index 000000000..eca8290f0 --- /dev/null +++ b/suites-experimental/social-network/dist/resources.txt @@ -0,0 +1,4 @@ +assets/index.css +assets/index.js +assets/index.js.map +index.html diff --git a/suites-experimental/social-network/index.html b/suites-experimental/social-network/index.html new file mode 100644 index 000000000..bcff2a523 --- /dev/null +++ b/suites-experimental/social-network/index.html @@ -0,0 +1,21 @@ + + + + + + Commons + + + +
+ + + diff --git a/suites-experimental/social-network/package-lock.json b/suites-experimental/social-network/package-lock.json new file mode 100644 index 000000000..3a5effb75 --- /dev/null +++ b/suites-experimental/social-network/package-lock.json @@ -0,0 +1,2176 @@ +{ + "name": "social-network", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "social-network", + "version": "0.0.0", + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.7.0", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.17", + "vite": "^4.5.14" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.3.0.tgz", + "integrity": "sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.13.tgz", + "integrity": "sha512-j1nvOQCZYSgp7HLmisnCXFTpVvFODiijQ9QHkORfGKWH6YDtskTEeCJS7eV545GZ9UBzrq0e2xsOd5QQ5PjIqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.13", + "@babel/helper-compilation-targets": "^7.29.13", + "@babel/helper-module-transforms": "^7.29.13", + "@babel/helpers": "^7.29.13", + "@babel/parser": "^7.29.13", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.13", + "@babel/types": "^7.29.11", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.13.tgz", + "integrity": "sha512-T5FRo+RzVHvGjWOuF1Ljc44b+NXAOazodHkGUHp4I3zCkQ4/sNVJm56h1S278LMR0bY5xBhztGziSbli8zObIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.13", + "@babel/types": "^7.29.11", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.13.tgz", + "integrity": "sha512-8WxJ4/Vmes3ghacj8VOJy3NW8eyHiFY/4thU/LSBuBE470+igjR/j1ZTNn8fV5VdNrLx6iXUwig526UdOvfP0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.13.tgz", + "integrity": "sha512-/U96wOz+SCoZ7Da/8kjDGltcNY280JPQcRNPK0Hk3PTbdpaiBDQImtC6JsbVwb1HGMr3usZQU2WsWVjhYNmRzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.13" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.13.tgz", + "integrity": "sha512-fWegr+WsEsiMVW4KUNdIIzzMTZSzNiqhy0//6+2MRi2d5NFNsL/AYwBQW8eBnRbTBVRnDVzjaJEUqKaCWjMMdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.13.tgz", + "integrity": "sha512-laoRpD/kO/iA4CDlgJbixHekg7oPvWALK0PQyK3Ob2I2njZRvVAD77RfWCIImtqWCq6KijoBoZK7bp/HlTWASQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.13.tgz", + "integrity": "sha512-fJM50YYjlTiBhgdkGmC1tBpv+FMAyo4annf2X6Aks+0yRlaiVkYW/3f07xAfVVkYIoZ9fFZp+mEThUFnuybhkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.11" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.13.tgz", + "integrity": "sha512-0ve0xMlFA73dgY1oyJRY6RoW+/bncdcOQqg6jjYcVfXBK90OdLXjm9R6lmRetdZVrPjXkKIoMVBqYFPjcAlZ4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.13", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.13", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.11", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.11.tgz", + "integrity": "sha512-WCsemW40Cpc6gouC1SrY6PBaZ+oLRlEVY9XBvZBI7il/HyUrb2nJ505wE1MHEFyDZNnrWDEuy4jL50WVHfTTSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.11", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.6.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.6.2.tgz", + "integrity": "sha512-VOw9/yGTGwPPgzFcODtcv6zhEPIeIWkRSe10L2ri2f5vZ7ID7lCt6jZzRF5/ubgOZ+szYydmEF5AYsA5jxX1tA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.9", + "caniuse-lite": "^1.0.30001810", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.35", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.35.tgz", + "integrity": "sha512-GNk8KX52CHqeNKGk8+7tZnQab/2k1t/BgrUHPKNdijzpEhF1saPQZHVKb6m5loSAxB39gyrTYw34Qf9CQ3u1qQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.29.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.5.tgz", + "integrity": "sha512-khTmKu5NGYTotqcYo8Bew2k4RAE9PuXRSFRXG2lQBrCEQHyeQ/vX6gKMxfokwywBsLiXZMnHsmWMG1pnO8J7uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.33", + "caniuse-lite": "^1.0.30001819", + "electron-to-chromium": "^1.5.464", + "node-releases": "^2.0.60", + "update-browserslist-db": "^1.3.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001823", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001823.tgz", + "integrity": "sha512-TQ5s/djDjNk1axreUW+4rULH+BmdCMLiJkhaXnO5wqivG7tITkSUj4ItIdzqdZHKaXcHAV8dhH3JxOM7/7bwqw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.479", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.479.tgz", + "integrity": "sha512-uAJdJQ7vHa4TvPfzt1TOqoRgHmav5gwmqHMPLxBH6m8Cbj5R9/z/rygTOQiZ8pe5g0ZAEogga1bP6HoKcOzx/Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.18.0.tgz", + "integrity": "sha512-qyax9fgaKOEC4qK8WZn7Q4IcoZC9RC1O1fFxRcRTq/oMMkWT/uXpqpXa12kzWR409zAt1drYN9N9BO26UmBCmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.5.tgz", + "integrity": "sha512-aRAOI9Ia43ygL4o1EOmC/sc/0OFxrm7qcQngiIyWaqVnSnz932ybJ07zyCcgMNGSDP8Yxaf88Xj1zHEXmvQ4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.63", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.63.tgz", + "integrity": "sha512-6li2QanLsAXpIH2R6j77MzRyvOyrvdTqlKtO4CgBdHGNvN99ZZfyxszHc5o5+IZBWD5u6Hzwg83JoGXmqZNG9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.32.tgz", + "integrity": "sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.20", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.6.tgz", + "integrity": "sha512-BK87/Qgti3DIcgS2PaCVoteFIkjIFvCJBizZDIVSjdlFNg4Jv+SRqbN2JONb/qQUH4ZFqfXYF+izg15W2HVRvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz", + "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz", + "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.28.0" + }, + "peerDependencies": { + "react": "^19.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.2.tgz", + "integrity": "sha512-/peqiBB/n07gQGLsWaHho3WfvUyRscw0gYTsEFMhrIe/nWLkYaf5SbKYjGYqtRV3aPwykJgF2VEMo1ac4bnsGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.14", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.14.tgz", + "integrity": "sha512-1ZjYvR9sbkiwC5+9QHetqW5HmA2pHRMaoupD01t2HlYnV/vydC2zPwLixhsMieSWVZt0JJRg5LVIk0Ow1D/TrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.18.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.30.0.tgz", + "integrity": "sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.2.tgz", + "integrity": "sha512-GYrCADwpu6yV5OAvchkQ27Z5wwMxWAEMg5NNWjyHh/5DboFFqbdbvYNIvZouQpxXyeMPoTOh0vdPYKlf0ZswdQ==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/update-browserslist-db": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz", + "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/suites-experimental/social-network/package.json b/suites-experimental/social-network/package.json new file mode 100644 index 000000000..963a79c56 --- /dev/null +++ b/suites-experimental/social-network/package.json @@ -0,0 +1,22 @@ +{ + "name": "social-network", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.7.0", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.17", + "vite": "^4.5.14" + } +} diff --git a/suites-experimental/social-network/postcss.config.js b/suites-experimental/social-network/postcss.config.js new file mode 100644 index 000000000..49c0612d5 --- /dev/null +++ b/suites-experimental/social-network/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/suites-experimental/social-network/src/analytics/autotrack.js b/suites-experimental/social-network/src/analytics/autotrack.js new file mode 100644 index 000000000..09f5b5e56 --- /dev/null +++ b/suites-experimental/social-network/src/analytics/autotrack.js @@ -0,0 +1,100 @@ +// Document-level auto-instrumentation: clicks, focus, typing activity and scroll depth +// are captured without any feature code having to call the logger. + +import { guard } from "./guard.js"; +import { flush, log } from "./logger.js"; + +const MAX_PATH_DEPTH = 8; + +function elementPath(element) { + const parts = []; + let node = element; + while (node && node.nodeType === 1 && parts.length < MAX_PATH_DEPTH) { + let part = node.localName; + if (node.id) + part += `#${node.id}`; + else if (node.classList.length) + part += `.${node.classList[0]}`; + const parent = node.parentElement; + if (parent) { + let index = 1; + for (let sibling = node.previousElementSibling; sibling; sibling = sibling.previousElementSibling) + index++; + part += `:${index}`; + } + parts.unshift(part); + node = parent; + } + return parts.join(">"); +} + +function loggingTarget(element) { + const target = element.closest("[data-log]"); + if (!target) + return null; + const scopes = []; + for (let scope = target.parentElement && target.parentElement.closest("[data-log-scope]"); scope; scope = scope.parentElement && scope.parentElement.closest("[data-log-scope]")) + scopes.unshift(scope.getAttribute("data-log-scope")); + return { target, name: target.getAttribute("data-log"), scopes }; +} + +function onClick(event) { + const found = loggingTarget(event.target); + const element = found ? found.target : event.target; + log("click", { + target: found ? found.name : "untagged", + scopes: found ? found.scopes.join("/") : "", + path: elementPath(element), + label: (element.getAttribute("aria-label") || element.textContent || "").trim().slice(0, 48), + role: element.getAttribute("role") || element.localName, + }); +} + +const keyCounts = new WeakMap(); + +function onKeyDown(event) { + const field = event.target; + if (!(field instanceof HTMLElement)) + return; + const count = (keyCounts.get(field) ?? 0) + 1; + keyCounts.set(field, count); + // Activity only: the content of what is typed never leaves the client. + log("key_activity", { field: field.getAttribute("data-log") || field.localName, keys: count, modifier: event.ctrlKey || event.metaKey || event.altKey }); +} + +function onFocusIn(event) { + const field = event.target; + if (field.matches && field.matches("input, textarea, [contenteditable]")) + log("field_focus", { field: field.getAttribute("data-log") || field.getAttribute("aria-label") || field.localName }); +} + +const depthReached = new WeakMap(); + +function onScroll(event) { + const scroller = event.target.nodeType === 1 ? event.target : document.scrollingElement; + if (!scroller) + return; + const range = scroller.scrollHeight - scroller.clientHeight; + if (range <= 0) + return; + const depth = Math.min(100, Math.round((scroller.scrollTop / range) * 100)); + const bucket = Math.floor(depth / 25) * 25; + const reached = depthReached.get(scroller) ?? -1; + if (bucket > reached) { + depthReached.set(scroller, bucket); + log("scroll_milestone", { scroller: scroller.id || scroller.className.split(" ")[0], depth: bucket }); + } + log("scroll_depth", { depth }); +} + +export function installAutotrack(root) { + root.addEventListener("click", (event) => guard("autotrack.click", onClick, event), true); + root.addEventListener("keydown", (event) => guard("autotrack.key", onKeyDown, event), true); + root.addEventListener("focusin", (event) => guard("autotrack.focus", onFocusIn, event), true); + root.addEventListener("scroll", (event) => guard("autotrack.scroll", onScroll, event), { capture: true, passive: true }); + document.addEventListener("visibilitychange", () => { + if (document.visibilityState === "hidden") + flush("hidden"); + }); + window.addEventListener("pagehide", () => flush("pagehide")); +} diff --git a/suites-experimental/social-network/src/analytics/compress.js b/suites-experimental/social-network/src/analytics/compress.js new file mode 100644 index 000000000..69c571a4d --- /dev/null +++ b/suites-experimental/social-network/src/analytics/compress.js @@ -0,0 +1,74 @@ +// Log batches are compressed on the client before upload, which keeps the beacon +// small on slow networks. LZW with growing code widths, packed into URL-safe base64. + +const BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; + +class BitWriter { + constructor() { + this.output = []; + this.buffer = 0; + this.bits = 0; + } + + write(value, width) { + for (let i = 0; i < width; i++) { + this.buffer = (this.buffer << 1) | ((value >>> i) & 1); + this.bits++; + if (this.bits === 6) { + this.output.push(BASE64[this.buffer]); + this.buffer = 0; + this.bits = 0; + } + } + } + + finish() { + if (this.bits) + this.output.push(BASE64[this.buffer << (6 - this.bits)]); + return this.output.join(""); + } +} + +export function compressToString(input) { + if (!input) + return ""; + const dictionary = new Map(); + let nextCode = 65536 + 1; + let width = 17; + const writer = new BitWriter(); + let phrase = input[0]; + for (let i = 1; i < input.length; i++) { + const char = input[i]; + const candidate = phrase + char; + if (dictionary.has(candidate)) { + phrase = candidate; + continue; + } + writer.write(phrase.length === 1 ? phrase.charCodeAt(0) : dictionary.get(phrase), width); + dictionary.set(candidate, nextCode++); + if (nextCode >= 1 << width) + width++; + phrase = char; + } + writer.write(phrase.length === 1 ? phrase.charCodeAt(0) : dictionary.get(phrase), width); + writer.write(65536, width); + return writer.finish(); +} + +let crcTable = null; + +export function crc32(text) { + if (!crcTable) { + crcTable = new Uint32Array(256); + for (let n = 0; n < 256; n++) { + let c = n; + for (let k = 0; k < 8; k++) + c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + crcTable[n] = c >>> 0; + } + } + let crc = 0xffffffff; + for (let i = 0; i < text.length; i++) + crc = crcTable[(crc ^ text.charCodeAt(i)) & 0xff] ^ (crc >>> 8); + return (crc ^ 0xffffffff) >>> 0; +} diff --git a/suites-experimental/social-network/src/analytics/experiments.js b/suites-experimental/social-network/src/analytics/experiments.js new file mode 100644 index 000000000..4b220cf71 --- /dev/null +++ b/suites-experimental/social-network/src/analytics/experiments.js @@ -0,0 +1,34 @@ +// Feature gates bucket the viewer by hashing their id with the gate name, and log a +// single exposure the first time each gate is checked. + +import { hashString } from "../data/rng.js"; +import { log } from "./logger.js"; + +const ROLLOUT = { + feed_deferred_feedback: 1, + feed_prefetch_next_page: 1, + story_reaction_summary_v2: 0.5, + comments_inline_composer: 1, + comments_mentions_typeahead: 1, + search_remote_typeahead: 1, + menu_message_previews: 0.8, + profile_intro_card_v3: 0.4, +}; + +let viewerId = "anonymous"; +const decisions = new Map(); + +export function setExperimentViewer(id) { + viewerId = id; +} + +export function gate(name) { + let decision = decisions.get(name); + if (decision === undefined) { + const bucket = (hashString(`${viewerId}:${name}`) % 10000) / 10000; + decision = bucket < (ROLLOUT[name] ?? 0); + decisions.set(name, decision); + log("gate_exposure", { gate: name, pass: decision, bucket: Math.round(bucket * 10000) }); + } + return decision; +} diff --git a/suites-experimental/social-network/src/analytics/guard.js b/suites-experimental/social-network/src/analytics/guard.js new file mode 100644 index 000000000..6e1b8731b --- /dev/null +++ b/suites-experimental/social-network/src/analytics/guard.js @@ -0,0 +1,46 @@ +// Every handler, timer and network callback runs through guard(), which keeps a stack +// of named contexts, so an error or a slow callback can be attributed to the feature +// that ran it. + +const contextStack = []; +const SLOW_CALLBACK_MS = 50; +let reporter = null; + +export function setGuardReporter(report) { + reporter = report; +} + +export function currentContext() { + return contextStack.length ? contextStack[contextStack.length - 1] : "root"; +} + +export function guard(name, callback, ...args) { + contextStack.push(name); + const start = performance.now(); + try { + return callback(...args); + } catch (error) { + if (reporter) { + reporter("js_error", { + context: contextStack.join(">"), + message: String(error && error.message), + stack: String(error && error.stack) + .split("\n") + .slice(0, 6) + .join("\n"), + }); + } + throw error; + } finally { + const duration = performance.now() - start; + contextStack.pop(); + if (duration > SLOW_CALLBACK_MS && reporter) + reporter("slow_callback", { context: name, duration: Math.round(duration) }); + } +} + +export function guarded(name, callback) { + return function guardedCallback(...args) { + return guard(name, callback, ...args); + }; +} diff --git a/suites-experimental/social-network/src/analytics/impressions.js b/suites-experimental/social-network/src/analytics/impressions.js new file mode 100644 index 000000000..4ddd497d4 --- /dev/null +++ b/suites-experimental/social-network/src/analytics/impressions.js @@ -0,0 +1,31 @@ +// Viewability: a unit counts as seen once half of it is inside its scroller and its +// center is not covered by anything else, which is what ad and feed ranking need. + +import { log } from "./logger.js"; + +const VISIBLE_RATIO = 0.5; +const seen = new Set(); + +export function checkImpressions(scroller, units) { + const viewport = scroller.getBoundingClientRect(); + for (const element of units) { + const id = element.getAttribute("data-story-id"); + if (!id || seen.has(id)) + continue; + const rect = element.getBoundingClientRect(); + if (!rect.height) + continue; + const visible = Math.max(0, Math.min(rect.bottom, viewport.bottom) - Math.max(rect.top, viewport.top)); + const ratio = visible / Math.min(rect.height, viewport.height); + if (ratio < VISIBLE_RATIO) + continue; + const x = rect.left + rect.width / 2; + const y = Math.max(rect.top, viewport.top) + visible / 2; + const hit = document.elementFromPoint(x, y); + if (!hit || !element.contains(hit)) + continue; + seen.add(id); + const sponsored = element.hasAttribute("data-sponsored"); + log(sponsored ? "ad_viewable" : "story_impression", { story: id, position: Number(element.getAttribute("data-position")), ratio: Math.round(ratio * 100) / 100, height: Math.round(rect.height) }); + } +} diff --git a/suites-experimental/social-network/src/analytics/interceptor.js b/suites-experimental/social-network/src/analytics/interceptor.js new file mode 100644 index 000000000..98d086cd2 --- /dev/null +++ b/suites-experimental/social-network/src/analytics/interceptor.js @@ -0,0 +1,110 @@ +// Component and event interception for interaction attribution. The JSX runtime routes +// every element through here: function components are swapped (once) for a wrapper that +// keeps a stack of the components rendering, and every event handler on a host element is +// wrapped so the interaction it starts is attributed to the component that rendered it. + +import { memo } from "react"; +import { guard } from "./guard.js"; +import { log } from "./logger.js"; + +const MEMO_TYPE = Symbol.for("react.memo"); +const wrappedComponents = new WeakMap(); +const wrappedMemos = new WeakMap(); +const renderStack = []; +const renderCounts = new Map(); +let totalRenders = 0; + +// Events that start an interaction get a flowlet; the rest are only guarded. +const FLOWLET_EVENTS = new Set(["onClick", "onKeyDown", "onInput", "onChange", "onFocus", "onMouseDown", "onPointerDown", "onSubmit"]); + +let flowletId = 0; +const activeFlowlets = []; + +function componentName(Component) { + return Component.displayName || Component.name || "Anonymous"; +} + +function wrapComponent(Component) { + let wrapped = wrappedComponents.get(Component); + if (wrapped) + return wrapped; + const name = componentName(Component); + wrapped = function InterceptedComponent(props) { + renderStack.push(name); + renderCounts.set(name, (renderCounts.get(name) ?? 0) + 1); + totalRenders++; + try { + return Component(props); + } finally { + renderStack.pop(); + } + }; + wrapped.displayName = name; + wrappedComponents.set(Component, wrapped); + return wrapped; +} + +function wrapMemo(type) { + let wrapped = wrappedMemos.get(type); + if (!wrapped) { + wrapped = typeof type.type === "function" && !type.type.prototype?.isReactComponent ? memo(wrapComponent(type.type), type.compare) : type; + wrappedMemos.set(type, wrapped); + } + return wrapped; +} + +export function interceptType(type) { + if (typeof type === "function") + return type.prototype && type.prototype.isReactComponent ? type : wrapComponent(type); + if (type !== null && typeof type === "object" && type.$$typeof === MEMO_TYPE) + return wrapMemo(type); + return type; +} + +export function currentFlowlet() { + return activeFlowlets.length ? activeFlowlets[activeFlowlets.length - 1] : null; +} + +function wrapHandler(handler, propName, owner, ownerPath) { + const flowlet = FLOWLET_EVENTS.has(propName); + return function interceptedHandler(event) { + if (!flowlet) + return guard(`${owner}.${propName}`, handler, event); + const entry = { id: ++flowletId, owner, path: ownerPath, event: propName.slice(2).toLowerCase(), start: performance.now() }; + activeFlowlets.push(entry); + try { + return guard(`${owner}.${propName}`, handler, event); + } finally { + activeFlowlets.pop(); + log("ui_event", { flowlet: entry.id, owner, path: ownerPath, event: entry.event, duration: Math.round((performance.now() - entry.start) * 100) / 100 }); + } + }; +} + +export function interceptProps(type, props) { + if (typeof type !== "string" || props === null) + return props; + let owner = null; + let ownerPath = null; + for (const key in props) { + if (key.charCodeAt(0) !== 111 || key.charCodeAt(1) !== 110 || typeof props[key] !== "function") + continue; + if (owner === null) { + owner = renderStack.length ? renderStack[renderStack.length - 1] : "root"; + ownerPath = renderStack.slice(-4).join(">"); + } + props[key] = wrapHandler(props[key], key, owner, ownerPath); + } + return props; +} + +export function renderStats() { + return { total: totalRenders, components: renderCounts.size }; +} + +export function topRendered(count) { + return Array.from(renderCounts.entries()) + .sort((a, b) => b[1] - a[1]) + .slice(0, count) + .map(([name, renders]) => `${name}:${renders}`); +} diff --git a/suites-experimental/social-network/src/analytics/jsx-runtime.js b/suites-experimental/social-network/src/analytics/jsx-runtime.js new file mode 100644 index 000000000..39f8fee4b --- /dev/null +++ b/suites-experimental/social-network/src/analytics/jsx-runtime.js @@ -0,0 +1,16 @@ +// The app's JSX import source: React's runtime, with every element passed through the +// interceptor first. +import { Fragment, jsx as reactJsx, jsxs as reactJsxs } from "react/jsx-runtime"; +import { interceptProps, interceptType } from "./interceptor.js"; + +export { Fragment }; + +export function jsx(type, props, key) { + return reactJsx(interceptType(type), interceptProps(type, props), key); +} + +export function jsxs(type, props, key) { + return reactJsxs(interceptType(type), interceptProps(type, props), key); +} + +export const jsxDEV = jsx; diff --git a/suites-experimental/social-network/src/analytics/logger.js b/suites-experimental/social-network/src/analytics/logger.js new file mode 100644 index 000000000..5cac1d6bf --- /dev/null +++ b/suites-experimental/social-network/src/analytics/logger.js @@ -0,0 +1,147 @@ +// First-party event logging. Events are enriched with session context, queued, ordered, +// and flushed in batches: serialized, compressed, checksummed and handed to a transport +// that would normally beacon them to a collector. + +import { compressToString, crc32 } from "./compress.js"; +import { currentContext, guard, setGuardReporter } from "./guard.js"; + +const BATCH_SIZE = 24; +const OUTBOX_LIMIT = 40; +const SCHEMA_VERSION = 3; + +// Chatty events are sampled deterministically by count, so runs stay reproducible. +const SAMPLE_EVERY = { + key_activity: 4, + scroll_depth: 2, + store_publish: 8, +}; + +const state = { + seq: 0, + queue: [], + outbox: [], + pendingAcks: new Map(), + sampleCounters: new Map(), + flushScheduled: false, + context: null, + route: "unknown", + bytesSent: 0, + batches: 0, +}; + +const encoder = new TextEncoder(); +const ackChannel = new MessageChannel(); +ackChannel.port1.onmessage = (event) => guard("logger.ack", acknowledge, event.data); + +export function initLogger({ userId, sessionSeed }) { + const zone = Intl.DateTimeFormat().resolvedOptions(); + state.context = { + app: "commons-web", + build: "2026.04.18-r812", + user_id: userId, + session_id: `s${sessionSeed.toString(36)}`, + locale: navigator.language, + time_zone: zone.timeZone, + platform: navigator.platform, + user_agent: navigator.userAgent, + device_pixel_ratio: window.devicePixelRatio, + connection: navigator.connection ? navigator.connection.effectiveType : "unknown", + }; + setGuardReporter(log); + log("session_start", { referrer: document.referrer ? new URL(document.referrer).origin : "" }); +} + +export function setLoggerRoute(route) { + state.route = route; +} + +function sampled(name) { + const every = SAMPLE_EVERY[name]; + if (!every) + return true; + const count = (state.sampleCounters.get(name) ?? 0) + 1; + state.sampleCounters.set(name, count); + return count % every === 0; +} + +export function log(name, props = {}) { + if (!sampled(name)) + return; + state.queue.push({ name, seq: ++state.seq, time: Math.round(performance.now() * 100) / 100, route: state.route, context: currentContext(), props }); + if (state.queue.length >= BATCH_SIZE) + scheduleFlush("batch"); +} + +// Navigations flush what is queued, so a route's events never wait for the next batch. +export function scheduleFlush(reason) { + if (state.flushScheduled) + return; + state.flushScheduled = true; + queueMicrotask(() => guard("logger.flush", flush, reason)); +} + +function onOrBefore(a, b) { + return a.time - b.time || a.seq - b.seq; +} + +export function flush(reason) { + state.flushScheduled = false; + if (!state.queue.length) + return; + const events = state.queue; + state.queue = []; + events.sort(onOrBefore); + const envelope = { + schema: SCHEMA_VERSION, + reason, + sent_at: Math.round(performance.now()), + context: { + ...state.context, + viewport: [window.innerWidth, window.innerHeight], + visibility: document.visibilityState, + route: state.route, + }, + counts: summarize(events), + events, + }; + const json = JSON.stringify(envelope); + const body = compressToString(json); + send({ + url: "/ajax/log/batch", + method: "POST", + headers: { + "content-type": "text/plain;charset=UTF-8", + "x-log-checksum": crc32(body).toString(16), + "x-log-range": `${events[0].seq}-${events[events.length - 1].seq}`, + "x-log-raw-length": String(json.length), + }, + body, + }); +} + +function summarize(events) { + const counts = {}; + for (const event of events) + counts[event.name] = (counts[event.name] ?? 0) + 1; + return counts; +} + +function send(request) { + const bytes = encoder.encode(request.body); + const id = ++state.batches; + state.bytesSent += bytes.byteLength; + state.outbox.push({ id, request, bytes: bytes.byteLength }); + if (state.outbox.length > OUTBOX_LIMIT) + state.outbox.shift(); + state.pendingAcks.set(id, request.headers["x-log-checksum"]); + ackChannel.port2.postMessage({ id, checksum: request.headers["x-log-checksum"] }); +} + +function acknowledge({ id, checksum }) { + if (state.pendingAcks.get(id) === checksum) + state.pendingAcks.delete(id); +} + +export function loggerStats() { + return { batches: state.batches, bytesSent: state.bytesSent, queued: state.queue.length, pending: state.pendingAcks.size }; +} diff --git a/suites-experimental/social-network/src/analytics/perf.js b/suites-experimental/social-network/src/analytics/perf.js new file mode 100644 index 000000000..efca4f27a --- /dev/null +++ b/suites-experimental/social-network/src/analytics/perf.js @@ -0,0 +1,29 @@ +// Interaction timing with User Timing marks: a trace begins in the event handler and +// completes when the component that finishes the interaction commits. + +import { log } from "./logger.js"; + +const active = new Map(); +let traceId = 0; + +export function beginInteraction(name, props = {}) { + const id = ++traceId; + const mark = `ix:${name}:${id}`; + performance.mark(`${mark}:start`); + active.set(name, { id, mark, props, start: performance.now() }); + log("interaction_start", { interaction: name, trace: id, ...props }); +} + +export function completeInteraction(name) { + const trace = active.get(name); + if (!trace) + return; + active.delete(name); + performance.mark(`${trace.mark}:end`); + performance.measure(trace.mark, `${trace.mark}:start`, `${trace.mark}:end`); + const duration = performance.now() - trace.start; + performance.clearMarks(`${trace.mark}:start`); + performance.clearMarks(`${trace.mark}:end`); + performance.clearMeasures(trace.mark); + log("interaction_complete", { interaction: name, trace: trace.id, duration: Math.round(duration * 10) / 10, ...trace.props }); +} diff --git a/suites-experimental/social-network/src/components/app.jsx b/suites-experimental/social-network/src/components/app.jsx new file mode 100644 index 000000000..7d7d152e2 --- /dev/null +++ b/suites-experimental/social-network/src/components/app.jsx @@ -0,0 +1,75 @@ +import { Activity, useCallback, useRef, useState } from "react"; +import { fragment, useFragment } from "../store/fragment.js"; +import { VIEWER_ID } from "../data/server.js"; +import { useRoute } from "../router.jsx"; +import Header, { scrollerHandle } from "./header.jsx"; +import HomePage from "./home-page.jsx"; +import PostDialog from "./post-dialog.jsx"; +import ProfilePage from "./profile-page.jsx"; +import { LeftRail, RightRail } from "./rails.jsx"; +import { BackgroundedContext } from "./measure.js"; + +const AppViewer = fragment("AppViewer", { id: true, avatar_seed: true }); + +export default function App() { + const { page, overlay } = useRoute(); + const viewer = useFragment(AppViewer, VIEWER_ID); + const scrollerRef = useRef(null); + const [hasScroller, setHasScroller] = useState(false); + // Stable, so React never detaches the scroller between renders. + const attachScroller = useCallback((element) => { + scrollerRef.current = element; + scrollerHandle.current = element; + if (element) + setHasScroller(true); + }, []); + const home = page === "/"; + const profileId = page.startsWith("/profile/") ? page.slice("/profile/".length) : null; + // Once visited, the home page and its rails stay mounted, hidden while another page + // is shown, so going back reveals them instead of rebuilding them. + const [homeMounted, setHomeMounted] = useState(home); + if (home && !homeMounted) + setHomeMounted(true); + const homeMode = home ? "visible" : "hidden"; + // A hidden page is as inert as one under a modal layer. + const homeBackgrounded = !!overlay || !home; + + return ( +
+ +
+
+ {homeMounted + && + + + + + } +
+ {/* Pages mount only once the scroller exists: React attaches
's ref after its + children's layout effects, which is where a feed first measures it. A feed can + mount in the same commit as
whenever the first page of stories beats the + first render. */} + {hasScroller && homeMounted + && + + + + + } + {hasScroller && profileId && } +
+ {homeMounted + && + + + + + } +
+ + {overlay && } +
+ ); +} diff --git a/suites-experimental/social-network/src/components/avatar.jsx b/suites-experimental/social-network/src/components/avatar.jsx new file mode 100644 index 000000000..a51199f7f --- /dev/null +++ b/suites-experimental/social-network/src/components/avatar.jsx @@ -0,0 +1,29 @@ +import { useId } from "react"; +import { avatar } from "../data/graphics.js"; + +// Drawn as a masked SVG image, so the online badge can cut a notch out of the photo +// and the outline stays crisp at any size. +export default function Avatar({ seed, size = 40, online = false, ring = false, square = false, label = "" }) { + const maskId = useId(); + const radius = size / 2; + const badge = Math.max(8, size * 0.24); + const total = ring ? size + 8 : size; + const offset = ring ? 4 : 0; + return ( + + + {square ? : } + {online && } + + + + {square + ? + : + } + + {ring && } + {online && } + + ); +} diff --git a/suites-experimental/social-network/src/components/comment-composer.jsx b/suites-experimental/social-network/src/components/comment-composer.jsx new file mode 100644 index 000000000..4fef5eb57 --- /dev/null +++ b/suites-experimental/social-network/src/components/comment-composer.jsx @@ -0,0 +1,208 @@ +import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "react"; +import { getRecord, publish, setClientRecord } from "../store/store.js"; +import { draftId } from "../queries.js"; +import { gate } from "../analytics/experiments.js"; +import { guard, guarded } from "../analytics/guard.js"; +import { log } from "../analytics/logger.js"; +import Avatar from "./avatar.jsx"; +import Icon from "./icon.jsx"; +import { tokenize } from "./rich-text.jsx"; + +const MAX_HEIGHT = 140; +const MAX_SUGGESTIONS = 6; +const MENTION_QUERY = /(?:^|\s)@([\p{L}]{1,24})$/u; +const EMOTICONS = [ + [":)", "🙂"], + [":D", "😄"], + ["<3", "❤️"], + [";)", "😉"], + [":(", "🙁"], +]; + +function replaceEmoticons(value) { + let next = value; + for (const [text, emoji] of EMOTICONS) { + if (next.endsWith(`${text} `)) + next = `${next.slice(0, -text.length - 1)}${emoji} `; + } + + return next; +} + +// Mentions resolve against the people already in the conversation, ranked by how early +// the query matches their name. +function suggestionsFor(people, query) { + if (query === null) + return []; + const needle = query.toLowerCase(); + const matches = []; + for (const person of people) { + const words = person.name.toLowerCase().split(" "); + const index = words.findIndex((word) => word.startsWith(needle)); + if (index !== -1) + matches.push({ person, rank: index * 100 + person.name.length }); + } + matches.sort((a, b) => a.rank - b.rank); + return matches.slice(0, MAX_SUGGESTIONS).map((match) => match.person); +} + +function highlightRanges(value, mentions) { + const ranges = []; + for (const mention of mentions) { + let from = 0; + let at; + while ((at = value.indexOf(mention.name, from)) !== -1) { + ranges.push({ offset: at, length: mention.name.length, entity: { id: mention.id } }); + from = at + mention.name.length; + } + } + return ranges; +} + +function saveDraft(storyId, { value, mentions }) { + const existing = getRecord(draftId(storyId)); + if (!value.trim() && !existing) + return; + setClientRecord(draftId(storyId), { text: value, ranges: highlightRanges(value, mentions), mentions: mentions.map((person) => person.id) }); + publish(); + log("composer_draft_saved", { story: storyId, length: value.length, mentions: mentions.length }); +} + +export default function CommentComposer({ storyId, viewer, people, inputRef }) { + const [value, setValue] = useState(() => getRecord(draftId(storyId))?.text ?? ""); + const [mentionQuery, setMentionQuery] = useState(null); + const [activeSuggestion, setActiveSuggestion] = useState(0); + const [mentions, setMentions] = useState([]); + const latest = useRef(null); + latest.current = { value, mentions }; + + useEffect(() => () => guard("composer.draft", saveDraft, storyId, latest.current), [storyId]); + const overlayRef = useRef(null); + const typeahead = gate("comments_mentions_typeahead"); + + const suggestions = useMemo(() => typeahead ? suggestionsFor(people, mentionQuery) : [], [typeahead, people, mentionQuery]); + const tokens = useMemo(() => tokenize(value, highlightRanges(value, mentions)), [value, mentions]); + + // Grow with the text: collapse to measure the content, then size to it. + useLayoutEffect(() => { + const textarea = inputRef.current; + textarea.style.height = "auto"; + textarea.style.height = `${Math.min(textarea.scrollHeight, MAX_HEIGHT)}px`; + overlayRef.current.scrollTop = textarea.scrollTop; + }, [value, inputRef]); + + const onInput = guarded("composer.input", (event) => { + const textarea = event.target; + let next = textarea.value; + const converted = replaceEmoticons(next); + if (converted !== next) { + textarea.value = converted; + next = converted; + } + const beforeCaret = next.slice(0, textarea.selectionStart ?? next.length); + const match = MENTION_QUERY.exec(beforeCaret); + setMentionQuery(match ? match[1] : null); + setActiveSuggestion(0); + if (!value && next) + log("composer_start", { story: storyId }); + setValue(next); + }); + + const chooseMention = guarded("composer.mention", (person) => { + const textarea = inputRef.current; + const next = textarea.value.replace(MENTION_QUERY, (whole) => `${whole.startsWith(" ") ? " " : ""}${person.name} `); + textarea.value = next; + setMentions((list) => list.some((item) => item.id === person.id) ? list : [...list, person]); + setMentionQuery(null); + setValue(next); + log("composer_mention", { story: storyId, position: suggestions.indexOf(person) }); + }); + + const onKeyDown = guarded("composer.keys", (event) => { + if (suggestions.length) { + if (event.key === "ArrowDown" || event.key === "ArrowUp") { + event.preventDefault(); + const delta = event.key === "ArrowDown" ? 1 : -1; + setActiveSuggestion((index) => (index + delta + suggestions.length) % suggestions.length); + return; + } + if (event.key === "Enter" || event.key === "Tab") { + event.preventDefault(); + chooseMention(suggestions[activeSuggestion]); + return; + } + if (event.key === "Escape") { + event.preventDefault(); + setMentionQuery(null); + return; + } + } + if (event.key === "Enter" && !event.shiftKey) { + event.preventDefault(); + if (value.trim()) + log("composer_submit_attempt", { story: storyId, length: value.length, mentions: mentions.length }); + } + }); + + return ( +
+ {viewer && } +
+ {suggestions.length > 0 + &&
    + {suggestions.map((person, index) => +
  • + +
  • + )} +
+ } +
+ +