ahp-inspector 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +8610 -0
- package/package.json +51 -0
- package/ui-dist/assets/index-CW0QHwfy.css +1 -0
- package/ui-dist/assets/index-Cnwca1lM.js +14 -0
- package/ui-dist/assets/index-Cnwca1lM.js.map +1 -0
- package/ui-dist/fonts/inter/InterVariable.woff2 +0 -0
- package/ui-dist/fonts/inter/LICENSE.txt +92 -0
- package/ui-dist/fonts/jetbrains-mono/JetBrainsMono-Variable.woff2 +0 -0
- package/ui-dist/fonts/jetbrains-mono/LICENSE.txt +93 -0
- package/ui-dist/index.html +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Cnwca1lM.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","memo","memo"],"sources":["../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/cjs/react.production.js","../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/index.js","../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js","../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/cjs/react-dom.production.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/index.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/cjs/react-dom-client.production.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/client.js","../../src/state/filters.ts","../../src/state/persistence.ts","../../../../node_modules/.pnpm/zustand@5.0.13_@types+react@19.2.0_react@19.2.6/node_modules/zustand/esm/vanilla.mjs","../../../../node_modules/.pnpm/zustand@5.0.13_@types+react@19.2.0_react@19.2.6/node_modules/zustand/esm/react.mjs","../../src/components/detail/detail-layout.ts","../../src/state/store.ts","../../src/persistence/persist-effect.ts","../../src/state/selectors.ts","../../src/transport/sessions-client.ts","../../src/transport/sse-client.ts","../../src/version.ts","../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/cjs/react-jsx-runtime.production.js","../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/jsx-runtime.js","../../src/components/banners/WatchErrorBanner.tsx","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/defaultAttributes.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/context.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/Icon.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/createLucideIcon.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/check.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/chevron-down.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/chevron-right.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/file-braces.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/info.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/loader-circle.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/palette.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/pause.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/play.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/search.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/shield-alert.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/wifi-off.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/x.mjs","../../src/transport/http-client.ts","../../src/components/detail/AhpFieldRow.tsx","../../src/components/detail/AhpFieldStrip.tsx","../../src/components/detail/AuthFailureBanner.tsx","../../src/components/detail/clipboard.ts","../../src/components/detail/CopyMenu.tsx","../../src/components/detail/CopyToast.tsx","../../src/components/detail/DetailCorrelation.tsx","../../src/components/detail/DetailResizeHandle.tsx","../../src/components/detail/DetailSummary.tsx","../../src/components/detail/DetailTabs.tsx","../../../../node_modules/.pnpm/react-json-view-lite@2.5.0_react@19.2.6/node_modules/react-json-view-lite/dist/index.modern.js","../../src/components/detail/TruncationBanner.tsx","../../src/components/detail/PrettyJsonView.tsx","../../src/components/detail/PrivacyCaption.tsx","../../src/components/detail/RawJsonView.tsx","../../src/transport/state-client.ts","../../src/components/detail/StateConfidenceBadge.tsx","../../src/components/detail/state-compare.ts","../../src/components/detail/state-pins.ts","../../src/components/detail/PinnedStatePanel.tsx","../../src/components/detail/StateCopyMenu.tsx","../../src/components/detail/StateDiagnosticsPanel.tsx","../../src/components/detail/StateResourceSelector.tsx","../../src/components/detail/StateSummaryView.tsx","../../src/components/detail/StateInspectorPanel.tsx","../../src/components/detail/DetailPanel.tsx","../../src/components/filters/ActiveChip.tsx","../../src/components/filters/ActiveFilterChips.tsx","../../src/components/filters/FacetChip.tsx","../../src/components/filters/FacetPopover.tsx","../../../shared/src/webview-message.ts","../../../protocol/src/actions.ts","../../../protocol/src/action-origin.generated.ts","../../../protocol/src/notifications.ts","../../../protocol/src/source-info.ts","../../../protocol/src/version/registry.ts","../../../core/src/row-projection.ts","../../src/components/filters/GroupToggleChip.tsx","../../src/components/filters/ResultCounter.tsx","../../src/components/filters/SearchInput.tsx","../../src/components/filters/TimeRangePopover.tsx","../../src/components/filters/FilterBar.tsx","../../src/transport/search-client.ts","../../src/components/filters/useSearch.ts","../../src/components/picker/CandidateRow.tsx","../../src/components/picker/NoCandidatesHint.tsx","../../src/components/picker/CandidateList.tsx","../../src/components/picker/ManualOpenInput.tsx","../../src/components/picker/LogPickerPanel.tsx","../../src/components/timeline/StickyGroupBar.tsx","../../src/components/banners/RotationBanner.tsx","../../src/components/shell/NewEventsPill.tsx","../../src/components/states/DisconnectedBanner.tsx","../../src/components/states/EmptyState.tsx","../../src/components/states/LoadingState.tsx","../../src/components/states/NoResultsBanner.tsx","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-virtual@3.13.24_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../src/components/timeline/cells/DirectionGlyph.tsx","../../src/components/timeline/cells/KindTag.tsx","../../src/components/timeline/cells/LatencyCell.tsx","../../src/components/timeline/cells/SummaryCell.tsx","../../src/components/timeline/EventRow.tsx","../../src/components/timeline/GroupHeaderRow.tsx","../../src/components/timeline/ParseErrorRow.tsx","../../src/components/timeline/TimelineList.tsx","../../src/components/timeline/TimelineRegion.tsx","../../src/theme/theme.ts","../../src/components/shell/LivePauseButton.tsx","../../src/components/shell/HeaderBar.tsx","../../src/components/shell/SourceStrip.tsx","../../src/components/shell/StatusBar.tsx","../../src/components/shell/AppShell.tsx","../../src/components/states/NoActiveLogState.tsx","../../src/components/states/ServerNotRunningState.tsx","../../src/transport/transport-context.tsx","../../src/App.tsx","../../src/transport/browser-client.ts","../../src/transport/webview-client.ts","../../src/main.tsx"],"sourcesContent":["/**\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 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 ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\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 },\n 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.__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.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 = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\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};\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.2.6\";\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","/**\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\");\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: null == key ? null : \"\" + 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.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 });\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 });\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.2.6\";\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 var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : 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}\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\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar 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 }\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 null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== 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 ? \" (<anonymous>)\"\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 fn.call(Fake.prototype);\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(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", 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 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 & 261888;\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 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;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) 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}\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}\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}\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) {\n return doc.body;\n }\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 ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, 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, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (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 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 } 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 [\"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 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 }),\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$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\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 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 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 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 & 65011712;\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 &= 65011714;\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 type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\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 (type) {\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 default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$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 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}\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}\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 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 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 throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\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.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, 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 |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\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 updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\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 null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\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 null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\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 (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 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 (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(fiber);\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 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 (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === 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_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$60 = !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$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !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$60 &&\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 if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\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 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$66) {\n onActionError(actionQueue, node, error$66);\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 & 42) ||\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 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$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, 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};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar 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 };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar 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};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\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$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\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$74) {\n setTimeout(function () {\n throw e$74;\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$75) {\n setTimeout(function () {\n throw e$75;\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 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 if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\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 }\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(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\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 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 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 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 |= 4096);\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(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 isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\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, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\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 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 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 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 shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\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 \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (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 break;\n case \"backwards\":\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 default:\n workInProgress.memoizedState = null;\n }\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$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\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 var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) 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 }\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) | 4096),\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 ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\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 reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\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 (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\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 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 if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\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 \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.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$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.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 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 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 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 = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n ) {\n suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$165) {\n handleThrow(root, thrownValue$165);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$201,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$201 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$201 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$201 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$201 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n \"19.2.6\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.6\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n bundleType: 0,\n version: \"19.2.6\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.6\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.6\";\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-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","import type { EventRow, Status } from \"@ahp-inspector/core\";\nimport type { EventKind } from \"@ahp-inspector/shared\";\n\nexport interface FilterState {\n direction: (\"c2s\" | \"s2c\")[];\n kind: EventKind[];\n method: string[];\n actionType: string[];\n session: string[];\n turn: string[];\n status: Status[];\n timeFrom: number | null;\n timeTo: number | null;\n}\n\nexport const EMPTY_FILTERS: FilterState = {\n direction: [],\n kind: [],\n method: [],\n actionType: [],\n session: [],\n turn: [],\n status: [],\n timeFrom: null,\n timeTo: null,\n};\n\nexport function isFiltersEmpty(f: FilterState): boolean {\n return (\n f.direction.length === 0 &&\n f.kind.length === 0 &&\n f.method.length === 0 &&\n f.actionType.length === 0 &&\n f.session.length === 0 &&\n f.turn.length === 0 &&\n f.status.length === 0 &&\n f.timeFrom === null &&\n f.timeTo === null\n );\n}\n\n/**\n * Returns true when the row passes ALL active filter dimensions.\n * An empty array for a dimension means \"no filter on this dimension\" (match-all).\n */\nexport function applyFacets(row: EventRow, f: FilterState): boolean {\n if (f.direction.length > 0 && !f.direction.includes(row.dir as \"c2s\" | \"s2c\")) return false;\n if (f.kind.length > 0 && !f.kind.includes(row.kind)) return false;\n if (f.method.length > 0 && (row.method === null || !f.method.includes(row.method))) return false;\n if (\n f.actionType.length > 0 &&\n (row.actionType === null || !f.actionType.includes(row.actionType))\n )\n return false;\n if (f.session.length > 0 && (row.sessionId === null || !f.session.includes(row.sessionId)))\n return false;\n if (f.turn.length > 0 && (row.turnId === null || !f.turn.includes(row.turnId))) return false;\n if (f.status.length > 0 && !f.status.includes(row.status)) return false;\n if (f.timeFrom !== null && row.ts < f.timeFrom) return false;\n if (f.timeTo !== null && row.ts > f.timeTo) return false;\n return true;\n}\n","// Per-log UI preferences persisted to localStorage. Phase 4 D-18 / RESEARCH §6.3-6.4.\n// Local-first only — never persists log content, paths, or absolute identifiers.\n// Single storage key holds an LRU map keyed by opaque logKey (D-16).\n\nimport type { FilterState } from \"./filters.js\";\nimport type { GroupingMode } from \"./store.js\";\n\nconst STORAGE_KEY = \"ahp-log-prefs-v1\";\nconst MAX_ENTRIES = 50;\nconst MAX_GROUP_COLLAPSED = 1000;\n\nexport interface PerLogPrefs {\n v: 1;\n searchQuery: string;\n filters: FilterState;\n grouping: GroupingMode;\n /** Set serialized as array, capped at MAX_GROUP_COLLAPSED entries. */\n groupCollapsed: string[];\n selectedIdx: number | null;\n detailWidth: number;\n livePaused: boolean;\n}\n\ninterface StoredEntry extends PerLogPrefs {\n _writtenAt: number;\n}\ntype Storage = Record<string, StoredEntry>;\n\nfunction readAll(): Storage {\n try {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Storage;\n }\n } catch {\n /* malformed → reset */\n }\n return {};\n}\n\nfunction writeAll(s: Storage): void {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(s));\n } catch {\n /* quota or unavailable — silent */\n }\n}\n\nfunction isValid(e: unknown): e is StoredEntry {\n if (!e || typeof e !== \"object\") return false;\n const r = e as Record<string, unknown>;\n return (\n r.v === 1 &&\n typeof r.searchQuery === \"string\" &&\n !!r.filters &&\n typeof r.filters === \"object\" &&\n (r.grouping === \"none\" || r.grouping === \"session\" || r.grouping === \"session+turn\") &&\n Array.isArray(r.groupCollapsed) &&\n (r.selectedIdx === null || typeof r.selectedIdx === \"number\") &&\n typeof r.detailWidth === \"number\" &&\n typeof r.livePaused === \"boolean\"\n );\n}\n\nexport function loadPerLogPrefs(logKey: string): PerLogPrefs | null {\n const all = readAll();\n const e = all[logKey];\n if (!e || !isValid(e)) return null;\n return {\n v: 1,\n searchQuery: e.searchQuery,\n filters: e.filters,\n grouping: e.grouping,\n groupCollapsed: e.groupCollapsed,\n selectedIdx: e.selectedIdx,\n detailWidth: e.detailWidth,\n livePaused: e.livePaused,\n };\n}\n\nexport function persistPerLogPrefs(logKey: string, prefs: PerLogPrefs): void {\n const all = readAll();\n const trimmed: PerLogPrefs = {\n ...prefs,\n groupCollapsed: prefs.groupCollapsed.slice(0, MAX_GROUP_COLLAPSED),\n };\n all[logKey] = { ...trimmed, _writtenAt: Date.now() };\n // LRU evict to MAX_ENTRIES.\n const keys = Object.keys(all);\n if (keys.length > MAX_ENTRIES) {\n const sorted = keys\n .map((k) => [k, all[k]?._writtenAt ?? 0] as [string, number])\n .sort((a, b) => a[1] - b[1]);\n const overflow = sorted.length - MAX_ENTRIES;\n for (let i = 0; i < overflow; i++) {\n const k = sorted[i]?.[0];\n if (k) delete all[k];\n }\n }\n writeAll(all);\n}\n\nexport function clearPerLogPrefs(logKey: string): void {\n const all = readAll();\n if (all[logKey]) {\n delete all[logKey];\n writeAll(all);\n }\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","export const DETAIL_MIN_WIDTH = 360;\nexport const DETAIL_DEFAULT_WIDTH = 420;\nexport const DETAIL_MAX_WIDTH = 720;\nexport const DETAIL_DESKTOP_BREAKPOINT = 1400;\nexport const DETAIL_KEYBOARD_STEP = 16;\n","import type { EventRow, LatencyBand, Status } from \"@ahp-inspector/core\";\nimport { create } from \"zustand\";\nimport {\n DETAIL_DEFAULT_WIDTH,\n DETAIL_MAX_WIDTH,\n DETAIL_MIN_WIDTH,\n} from \"../components/detail/detail-layout.js\";\nimport { EMPTY_FILTERS, type FilterState } from \"./filters.js\";\n\nexport type { FilterState } from \"./filters.js\";\n\nexport type GroupingMode = \"none\" | \"session\" | \"session+turn\";\nexport type SearchStatus = \"idle\" | \"searching\" | \"ready\" | \"error\";\n\nexport interface DetailData {\n idx: number;\n loading: boolean;\n error: string | null;\n event: unknown | null;\n pairEvent: unknown | null;\n latencyMs: number | null;\n status: Status | null;\n pairIdx: number | null;\n}\n\nexport type Connection = \"connecting\" | \"connected\" | \"disconnected\" | \"no-server\" | \"no-log\";\n\nexport interface MetaSummary {\n filename: string;\n eventCount: number;\n sessionCount: number;\n}\n\nexport interface PatchUpdate {\n idx: number;\n status: Status;\n latencyMs: number | null;\n latencyBand: LatencyBand | null;\n summary?: string;\n pairIdx?: number | null;\n}\n\nexport interface AppStoreState {\n rows: EventRow[];\n connection: Connection;\n selectedIdx: number | null;\n meta: MetaSummary | null;\n setRows(rows: EventRow[]): void;\n appendRows(rows: EventRow[], from: number): void;\n applyPatch(updates: PatchUpdate[]): void;\n setConnection(c: Connection): void;\n setMeta(m: MetaSummary | null): void;\n selectIdx(idx: number | null): void;\n clearSelection(): void;\n // Phase 3: search\n searchQuery: string;\n searchMatches: Set<number> | null;\n searchTotal: number;\n searchTruncated: boolean;\n searchStatus: SearchStatus;\n searchError: string | null;\n setSearchQuery(q: string): void;\n setSearchMatches(matches: number[] | null): void;\n setSearchPending(): void;\n setSearchResult(matches: number[], total: number, truncated: boolean): void;\n setSearchError(message: string): void;\n clearSearchResults(): void;\n // Phase 3: filters\n filters: FilterState;\n setFilters(f: FilterState): void;\n patchFilter<K extends keyof FilterState>(key: K, value: FilterState[K]): void;\n clearFilters(): void;\n // Phase 3: grouping\n grouping: GroupingMode;\n groupCollapsed: Set<string>;\n setGrouping(mode: GroupingMode): void;\n toggleGroupCollapsed(key: string): void;\n // Phase 3: detail panel\n selectedDetail: DetailData | null;\n detailWidth: number;\n setSelectedDetail(d: DetailData | null): void;\n setDetailWidth(px: number): void;\n // Phase 4: live tail\n livePaused: boolean;\n pendingBuffer: EventRow[];\n pendingNewCount: number;\n followLatest: boolean;\n lastWatchError: { code: \"read-error\" | \"watch-fatal\"; message: string } | null;\n logKey: string | null;\n rotationNotice: boolean;\n lastOpenRef: { kind: \"candidate\"; id: string } | { kind: \"path\"; path: string } | null;\n setLivePaused(p: boolean): void;\n clearPendingNewCount(): void;\n flushPendingBuffer(): void;\n setLastWatchError(e: { code: \"read-error\" | \"watch-fatal\"; message: string } | null): void;\n setLogKey(k: string | null): void;\n setRotationNotice(v: boolean): void;\n setLastOpenRef(\n ref: { kind: \"candidate\"; id: string } | { kind: \"path\"; path: string } | null,\n ): void;\n resetForRotation(): void;\n resetForLogSwitch(): void;\n}\n\nfunction patchRow(row: EventRow, update: PatchUpdate): EventRow {\n return {\n ...row,\n status: update.status,\n latencyMs: update.latencyMs,\n latencyBand: update.latencyBand,\n ...(update.summary !== undefined ? { summary: update.summary } : {}),\n ...(update.pairIdx !== undefined ? { pairIdx: update.pairIdx } : {}),\n };\n}\n\nfunction deriveSessionCount(rows: EventRow[]): number {\n const s = new Set<string>();\n for (const r of rows) if (r.sessionId) s.add(r.sessionId);\n return s.size;\n}\n\nexport const useAppStore = create<AppStoreState>((set) => ({\n rows: [],\n connection: \"connecting\",\n selectedIdx: null,\n meta: null,\n setRows: (rows) =>\n set((s) => ({\n rows,\n meta: s.meta\n ? { ...s.meta, eventCount: rows.length, sessionCount: deriveSessionCount(rows) }\n : s.meta,\n })),\n appendRows: (newRows, from) =>\n set((s) => {\n // Phase 4 D-13: while live-paused, incoming rows accumulate in a hidden\n // buffer + counter instead of mutating visible rows. NewEventsPill flushes\n // them when the user clicks \"Resume Following\".\n if (s.livePaused) {\n return {\n pendingBuffer: s.pendingBuffer.concat(newRows),\n pendingNewCount: s.pendingNewCount + newRows.length,\n };\n }\n const next = s.rows.slice();\n for (let i = 0; i < newRows.length; i++) {\n const row = newRows[i];\n if (row !== undefined) next[from + i] = row;\n }\n return {\n rows: next,\n meta: s.meta\n ? { ...s.meta, eventCount: next.length, sessionCount: deriveSessionCount(next) }\n : s.meta,\n };\n }),\n applyPatch: (updates) =>\n set((s) => {\n const next = s.rows.slice();\n const pendingNext = s.pendingBuffer.slice();\n for (const u of updates) {\n const prev = next[u.idx];\n if (prev) {\n next[u.idx] = patchRow(prev, u);\n }\n const pendingIndex = pendingNext.findIndex((row) => row.idx === u.idx);\n if (pendingIndex !== -1) {\n const pendingPrev = pendingNext[pendingIndex];\n if (pendingPrev) pendingNext[pendingIndex] = patchRow(pendingPrev, u);\n }\n }\n return { rows: next, pendingBuffer: pendingNext };\n }),\n setConnection: (connection) => set({ connection }),\n setMeta: (meta) => set({ meta }),\n selectIdx: (selectedIdx) => set({ selectedIdx }),\n clearSelection: () => set({ selectedIdx: null }),\n // Phase 3 initial state\n searchQuery: \"\",\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n filters: EMPTY_FILTERS,\n grouping: \"none\",\n groupCollapsed: new Set<string>(),\n selectedDetail: null,\n detailWidth: DETAIL_DEFAULT_WIDTH,\n // Phase 3 actions\n setSearchQuery: (q) => set({ searchQuery: q }),\n setSearchMatches: (matches) => set({ searchMatches: matches !== null ? new Set(matches) : null }),\n setSearchPending: () => set({ searchStatus: \"searching\", searchError: null }),\n setSearchResult: (matches, total, truncated) =>\n set({\n searchMatches: new Set(matches),\n searchTotal: total,\n searchTruncated: truncated,\n searchStatus: \"ready\",\n searchError: null,\n }),\n setSearchError: (message) =>\n set({\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"error\",\n searchError: message,\n }),\n clearSearchResults: () =>\n set({\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n }),\n setFilters: (f) => set({ filters: f }),\n patchFilter: (key, value) => set((s) => ({ filters: { ...s.filters, [key]: value } })),\n clearFilters: () => set({ filters: EMPTY_FILTERS }),\n setGrouping: (mode) => set({ grouping: mode }),\n toggleGroupCollapsed: (key) =>\n set((s) => {\n const next = new Set(s.groupCollapsed);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return { groupCollapsed: next };\n }),\n setSelectedDetail: (d) => set({ selectedDetail: d }),\n setDetailWidth: (px) =>\n set({ detailWidth: Math.max(DETAIL_MIN_WIDTH, Math.min(DETAIL_MAX_WIDTH, px)) }),\n // Phase 4 initial state\n livePaused: false,\n pendingBuffer: [],\n pendingNewCount: 0,\n followLatest: true,\n lastWatchError: null,\n logKey: null,\n rotationNotice: false,\n lastOpenRef: null,\n // Phase 4 actions\n setLivePaused: (p) => set({ livePaused: p }),\n clearPendingNewCount: () => set({ pendingNewCount: 0 }),\n flushPendingBuffer: () =>\n set((s) => {\n if (s.pendingBuffer.length === 0) {\n return { pendingNewCount: 0 };\n }\n const next = s.rows.concat(s.pendingBuffer);\n return {\n rows: next,\n pendingBuffer: [],\n pendingNewCount: 0,\n meta: s.meta\n ? { ...s.meta, eventCount: next.length, sessionCount: deriveSessionCount(next) }\n : s.meta,\n };\n }),\n setLastWatchError: (e) => set({ lastWatchError: e }),\n setLogKey: (k) => set({ logKey: k }),\n setRotationNotice: (v) => set({ rotationNotice: v }),\n setLastOpenRef: (ref) => set({ lastOpenRef: ref }),\n resetForRotation: () =>\n set({\n rows: [],\n selectedIdx: null,\n selectedDetail: null,\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n pendingBuffer: [],\n pendingNewCount: 0,\n }),\n resetForLogSwitch: () =>\n set({\n rows: [],\n selectedIdx: null,\n selectedDetail: null,\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n pendingBuffer: [],\n pendingNewCount: 0,\n meta: null,\n logKey: null,\n lastWatchError: null,\n rotationNotice: false,\n }),\n}));\n","// usePersistEffect — Phase 4 Plan 06 Task 3.\n// Hydrates per-log prefs on snapshot-end; persists relevant store changes\n// (debounced 250ms) keyed by store.logKey. Quota errors disable persistence\n// for the rest of the session (D-17/D-18).\n//\n// Naming: this module re-exports the underlying persistence module's\n// `loadPerLogPrefs` / `persistPerLogPrefs` under the plan-mandated aliases\n// `loadForLogKey` / `saveForLogKey` so call sites match UI-SPEC vocabulary.\n\nimport { useEffect, useRef } from \"react\";\nimport { EMPTY_FILTERS } from \"../state/filters.js\";\nimport {\n loadPerLogPrefs as loadForLogKey,\n type PerLogPrefs,\n persistPerLogPrefs as saveForLogKey,\n} from \"../state/persistence.js\";\nimport { useAppStore } from \"../state/store.js\";\n\nconst DEBOUNCE_MS = 250;\nconst MAX_GROUP_COLLAPSED = 1000;\n\nfunction buildPrefs(): PerLogPrefs {\n const s = useAppStore.getState();\n // FIFO trim: keep the most recent 1000 entries (insertion order in Set).\n const groupArr = Array.from(s.groupCollapsed);\n const trimmed =\n groupArr.length > MAX_GROUP_COLLAPSED\n ? groupArr.slice(groupArr.length - MAX_GROUP_COLLAPSED)\n : groupArr;\n return {\n v: 1,\n searchQuery: s.searchQuery,\n filters: s.filters,\n grouping: s.grouping,\n groupCollapsed: trimmed,\n selectedIdx: s.selectedIdx,\n detailWidth: s.detailWidth,\n livePaused: s.livePaused,\n };\n}\n\nexport function usePersistEffect(): void {\n // All mutable state lives in refs so React doesn't unmount/remount the\n // effect when the underlying store changes.\n const stateRef = useRef<{\n hydratedFor: string | null;\n disabled: boolean;\n debounceTimer: ReturnType<typeof setTimeout> | null;\n pendingSaveLogKey: string | null;\n lastLogKey: string | null;\n lastRowsLen: number;\n }>({\n hydratedFor: null,\n disabled: false,\n debounceTimer: null,\n pendingSaveLogKey: null,\n lastLogKey: null,\n lastRowsLen: 0,\n });\n\n useEffect(() => {\n const ref = stateRef.current;\n\n function flushSave(logKey: string): void {\n if (ref.disabled) return;\n try {\n saveForLogKey(logKey, buildPrefs());\n } catch {\n ref.disabled = true;\n } finally {\n if (ref.debounceTimer) {\n clearTimeout(ref.debounceTimer);\n ref.debounceTimer = null;\n }\n ref.pendingSaveLogKey = null;\n }\n }\n\n function scheduleSave(logKey: string): void {\n if (ref.disabled) return;\n if (ref.debounceTimer) clearTimeout(ref.debounceTimer);\n ref.pendingSaveLogKey = logKey;\n ref.debounceTimer = setTimeout(() => {\n ref.debounceTimer = null;\n flushSave(logKey);\n }, DEBOUNCE_MS);\n }\n\n function hydrate(logKey: string, rowsLen: number): void {\n const stored = loadForLogKey(logKey);\n if (stored) {\n const s = useAppStore.getState();\n s.setFilters(stored.filters);\n s.setGrouping(stored.grouping);\n s.setSearchQuery(stored.searchQuery);\n s.clearSearchResults();\n s.setDetailWidth(stored.detailWidth);\n s.setLivePaused(stored.livePaused);\n useAppStore.setState({ groupCollapsed: new Set(stored.groupCollapsed) });\n if (\n stored.selectedIdx !== null &&\n stored.selectedIdx >= 0 &&\n stored.selectedIdx < rowsLen\n ) {\n s.selectIdx(stored.selectedIdx);\n }\n }\n ref.hydratedFor = logKey;\n }\n\n // Initialize tracking from current state and hydrate if a snapshot is\n // already present at mount time.\n {\n const init = useAppStore.getState();\n ref.lastLogKey = init.logKey;\n ref.lastRowsLen = init.rows.length;\n if (init.logKey && init.rows.length > 0 && ref.hydratedFor !== init.logKey) {\n hydrate(init.logKey, init.rows.length);\n }\n }\n\n const unsub = useAppStore.subscribe((curr, prev) => {\n const prevKey = ref.lastLogKey;\n const currKey = curr.logKey;\n\n // logKey switch — flush previous log's pending save synchronously\n // before tracking the new one, then reset per-log view state so the\n // new file starts fresh (the new file's stored prefs, if any, are\n // applied later by hydrate() on snapshot-end).\n if (prevKey && prevKey !== currKey) {\n if (ref.debounceTimer && ref.pendingSaveLogKey === prevKey) {\n flushSave(prevKey);\n }\n ref.hydratedFor = null;\n // Update lastLogKey BEFORE the reset writes so re-entrant subscribe\n // callbacks see prevKey === currKey and skip this branch.\n ref.lastLogKey = currKey;\n const s = useAppStore.getState();\n s.setFilters(EMPTY_FILTERS);\n s.setSearchQuery(\"\");\n s.clearSearchResults();\n s.setGrouping(\"none\");\n useAppStore.setState({ groupCollapsed: new Set<string>() });\n }\n ref.lastLogKey = currKey;\n\n const rowsLen = curr.rows.length;\n const prevLen = ref.lastRowsLen;\n ref.lastRowsLen = rowsLen;\n\n // Snapshot-end: rows transitioned 0 → N for the current logKey, not\n // yet hydrated for this logKey.\n if (currKey && rowsLen > 0 && prevLen === 0 && ref.hydratedFor !== currKey) {\n hydrate(currKey, rowsLen);\n return;\n }\n\n // After hydration, schedule a debounced save when persistable state changed.\n if (currKey && ref.hydratedFor === currKey) {\n const relevantChanged =\n prev.filters !== curr.filters ||\n prev.grouping !== curr.grouping ||\n prev.searchQuery !== curr.searchQuery ||\n prev.detailWidth !== curr.detailWidth ||\n prev.livePaused !== curr.livePaused ||\n prev.selectedIdx !== curr.selectedIdx ||\n prev.groupCollapsed !== curr.groupCollapsed;\n if (relevantChanged) scheduleSave(currKey);\n }\n });\n\n return () => {\n if (ref.debounceTimer) clearTimeout(ref.debounceTimer);\n unsub();\n };\n }, []);\n}\n","import type { EventRow } from \"@ahp-inspector/core\";\nimport { useDeferredValue, useMemo } from \"react\";\nimport { applyFacets, isFiltersEmpty } from \"./filters.js\";\nimport { type GroupingMode, useAppStore } from \"./store.js\";\n\nexport type VirtualItem =\n | { kind: \"row\"; rowIdx: number }\n | {\n kind: \"header\";\n level: \"session\" | \"turn\";\n groupKey: string;\n sessionId: string;\n turnId?: string;\n count: number;\n durationMs: number;\n };\n\n// ── filteredRows ──────────────────────────────────────────────────────────────\nexport function useFilteredRows(): number[] {\n const rows = useAppStore((s) => s.rows);\n const filters = useAppStore((s) => s.filters);\n const deferredFilters = useDeferredValue(filters);\n return useMemo(() => {\n const noFacets = isFiltersEmpty(deferredFilters);\n if (noFacets) return rows.map((_, i) => i);\n const result: number[] = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) continue;\n if (!noFacets && !applyFacets(row, deferredFilters)) continue;\n result.push(i);\n }\n return result;\n }, [rows, deferredFilters]);\n}\n\nexport function useVisibleSearchMatches(): number[] {\n const rows = useAppStore((s) => s.rows);\n const filters = useAppStore((s) => s.filters);\n const searchMatches = useAppStore((s) => s.searchMatches);\n const deferredFilters = useDeferredValue(filters);\n const deferredMatches = useDeferredValue(searchMatches);\n return useMemo(() => {\n if (deferredMatches === null) return [];\n const noFacets = isFiltersEmpty(deferredFilters);\n const result: number[] = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row || !deferredMatches.has(i)) continue;\n if (!noFacets && !applyFacets(row, deferredFilters)) continue;\n result.push(i);\n }\n return result;\n }, [rows, deferredFilters, deferredMatches]);\n}\n\n// ── facetCounts ───────────────────────────────────────────────────────────────\nexport interface FacetCounts {\n direction: Map<string, number>;\n kind: Map<string, number>;\n method: Map<string, number>;\n actionType: Map<string, number>;\n session: Map<string, number>;\n turn: Map<string, number>;\n status: Map<string, number>;\n}\n\nexport function useFacetCounts(): FacetCounts {\n const rows = useAppStore((s) => s.rows);\n return useMemo(() => {\n const r: FacetCounts = {\n direction: new Map(),\n kind: new Map(),\n method: new Map(),\n actionType: new Map(),\n session: new Map(),\n turn: new Map(),\n status: new Map(),\n };\n for (const row of rows) {\n if (!row) continue;\n inc(r.direction, row.dir);\n inc(r.kind, row.kind);\n if (row.method) inc(r.method, row.method);\n if (row.actionType) inc(r.actionType, row.actionType);\n if (row.sessionId) inc(r.session, row.sessionId);\n if (row.turnId) inc(r.turn, row.turnId);\n inc(r.status, row.status);\n }\n return r;\n }, [rows]);\n}\n\nfunction inc(m: Map<string, number>, k: string): void {\n m.set(k, (m.get(k) ?? 0) + 1);\n}\n\n// ── groupedItems ──────────────────────────────────────────────────────────────\nexport function useGroupedItems(filteredRowIdxs: number[]): VirtualItem[] {\n const rows = useAppStore((s) => s.rows);\n const grouping = useAppStore((s) => s.grouping);\n return useMemo(\n () => buildGroupedItems(rows, filteredRowIdxs, grouping),\n [rows, filteredRowIdxs, grouping],\n );\n}\n\nfunction buildGroupedItems(\n rows: EventRow[],\n idxs: number[],\n grouping: GroupingMode,\n): VirtualItem[] {\n if (grouping === \"none\") {\n const items: VirtualItem[] = [];\n for (const rowIdx of idxs) {\n const row = rows[rowIdx];\n if (!row) continue;\n items.push({ kind: \"row\", rowIdx });\n }\n return items;\n }\n\n const items: VirtualItem[] = [];\n let lastSession: string | null = null;\n let lastTurn: string | null = null;\n const groupStartTs = new Map<string, number>();\n const groupEndTs = new Map<string, number>();\n const groupCount = new Map<string, number>();\n\n // Pre-pass to compute group stats.\n for (const rowIdx of idxs) {\n const row = rows[rowIdx];\n if (!row) continue;\n const sKey = row.sessionId ?? \"__none__\";\n const tKey = grouping === \"session+turn\" ? `${sKey}::${row.turnId ?? \"__none__\"}` : sKey;\n const key = grouping === \"session\" ? sKey : tKey;\n if (!groupStartTs.has(key)) groupStartTs.set(key, row.ts);\n groupEndTs.set(key, row.ts);\n groupCount.set(key, (groupCount.get(key) ?? 0) + 1);\n }\n\n for (const rowIdx of idxs) {\n const row = rows[rowIdx];\n if (!row) continue;\n const sessionId = row.sessionId ?? \"__none__\";\n const turnId = row.turnId ?? \"__none__\";\n\n if (sessionId !== lastSession) {\n lastSession = sessionId;\n lastTurn = null;\n const key = sessionId;\n const start = groupStartTs.get(key) ?? row.ts;\n const end = groupEndTs.get(key) ?? row.ts;\n items.push({\n kind: \"header\",\n level: \"session\",\n groupKey: key,\n sessionId: row.sessionId ?? \"\",\n count: groupCount.get(key) ?? 1,\n durationMs: end - start,\n });\n }\n if (grouping === \"session+turn\" && turnId !== lastTurn) {\n lastTurn = turnId;\n const key = `${sessionId}::${turnId}`;\n const start = groupStartTs.get(key) ?? row.ts;\n const end = groupEndTs.get(key) ?? row.ts;\n items.push({\n kind: \"header\",\n level: \"turn\",\n groupKey: key,\n sessionId: row.sessionId ?? \"\",\n ...(row.turnId !== null ? { turnId: row.turnId } : {}),\n count: groupCount.get(key) ?? 1,\n durationMs: end - start,\n });\n }\n items.push({ kind: \"row\", rowIdx });\n }\n return items;\n}\n","/**\n * sessions-client.ts — browser-only HTTP client for session discovery / open\n * (Plan 04-05 Task 1).\n *\n * Endpoints:\n * GET /api/sessions/discover → 200 { candidates: SafeCandidate[] }\n * POST /api/sessions/open → 200 { ok: true } | 4xx { code }\n *\n * Errors thrown to callers carry only the server-supplied `code` string —\n * never the typed path or raw OS error message (T-04-05-01).\n */\n\nimport type { SafeCandidate } from \"../types/safe-candidate.js\";\n\nexport interface ActiveLogMeta {\n readonly filename: string;\n readonly sizeBytes: number;\n readonly startedAt: number;\n readonly logKey: string;\n}\n\nexport interface OpenSessionResult {\n readonly active: {\n readonly logKey: string;\n readonly meta: ActiveLogMeta;\n };\n}\n\nexport class SessionOpenError extends Error {\n public readonly code: string;\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n this.name = \"SessionOpenError\";\n }\n}\n\nexport async function fetchCandidates(): Promise<readonly SafeCandidate[]> {\n let res: Response;\n try {\n res = await fetch(\"/api/sessions/discover\");\n } catch {\n throw new SessionOpenError(\"network\", \"fetch failed\");\n }\n if (!res.ok) {\n throw new SessionOpenError(\"network\", `discover ${res.status}`);\n }\n const data = (await res.json()) as { candidates?: SafeCandidate[] };\n return data.candidates ?? [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction parseOpenResult(value: unknown): OpenSessionResult {\n if (!isRecord(value) || !isRecord(value.active)) {\n throw new SessionOpenError(\"bad-response\", \"open response missing active session\");\n }\n const { active } = value;\n if (typeof active.logKey !== \"string\" || !isRecord(active.meta)) {\n throw new SessionOpenError(\"bad-response\", \"open response missing log key\");\n }\n const { meta } = active;\n if (\n typeof meta.filename !== \"string\" ||\n typeof meta.sizeBytes !== \"number\" ||\n typeof meta.startedAt !== \"number\" ||\n typeof meta.logKey !== \"string\"\n ) {\n throw new SessionOpenError(\"bad-response\", \"open response missing metadata\");\n }\n return {\n active: {\n logKey: active.logKey,\n meta: {\n filename: meta.filename,\n sizeBytes: meta.sizeBytes,\n startedAt: meta.startedAt,\n logKey: meta.logKey,\n },\n },\n };\n}\n\nasync function postOpen(body: unknown): Promise<OpenSessionResult> {\n let res: Response;\n try {\n res = await fetch(\"/api/sessions/open\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n } catch {\n throw new SessionOpenError(\"network\", \"fetch failed\");\n }\n if (res.ok) {\n try {\n return parseOpenResult(await res.json());\n } catch (err) {\n if (err instanceof SessionOpenError) throw err;\n throw new SessionOpenError(\"bad-response\", \"open response was not JSON\");\n }\n }\n let code = \"bad-request\";\n try {\n const json = (await res.json()) as { code?: string };\n if (json && typeof json.code === \"string\") code = json.code;\n } catch {\n /* unparseable body — keep fallback */\n }\n throw new SessionOpenError(code, `open failed ${res.status}`);\n}\n\nexport const openSessionByCandidate = (candidateId: string): Promise<OpenSessionResult> =>\n postOpen({ id: candidateId });\n\nexport const openSessionByPath = (path: string): Promise<OpenSessionResult> => postOpen({ path });\n","// SSE client (Plan 02-06). Bridges the server's log stream into the\n// Zustand store. Maps each SSE event kind to one store mutation.\n//\n// Frame contract is defined by packages/server/src/app-state.ts SsePayload.\n// Snapshot rows are buffered locally until `snapshot-end` so the store sees\n// a single setRows() call (avoids transient flicker for large baselines).\n//\n// T-02-06-02: graceful `bye` closes the EventSource and prevents browser\n// auto-reconnect storms. Before the first snapshot, transient `onerror` keeps\n// connection at 'connecting'. After data has loaded, any stream error is\n// user-visible as disconnected so the retry banner appears promptly.\n\nimport type { EventRow, LatencyBand, Status } from \"@ahp-inspector/core\";\nimport { useAppStore } from \"../state/store.js\";\n\nexport interface ConnectionHandle {\n close(): void;\n}\n\ninterface SnapshotBeginPayload {\n meta: { filename: string; sizeBytes: number; startedAt: number; logKey?: string };\n total: number;\n}\ninterface SnapshotChunkPayload {\n rows: EventRow[];\n from: number;\n}\ninterface AppendPayload {\n rows: EventRow[];\n from: number;\n}\ninterface PatchPayload {\n updates: Array<{\n idx: number;\n status: Status;\n latencyMs: number | null;\n latencyBand: LatencyBand | null;\n summary?: string;\n pairIdx?: number | null;\n }>;\n}\n\nexport interface ConnectOpts {\n /** Override stream URL. Default `/api/log/stream`. */\n url?: string;\n /** Override EventSource constructor. Tests inject a fake. */\n EventSourceCtor?: typeof EventSource;\n}\n\nexport function connectLogStream(opts: ConnectOpts = {}): ConnectionHandle {\n const url = opts.url ?? \"/api/log/stream\";\n const Ctor = opts.EventSourceCtor ?? globalThis.EventSource;\n if (!Ctor) {\n // Defensive: in jsdom without a polyfill, return a no-op handle so the\n // app doesn't crash. Connection stays at whatever it was.\n return { close: () => {} };\n }\n useAppStore.getState().setConnection(\"connecting\");\n\n const es = new Ctor(url);\n let snapshotRows: EventRow[] = [];\n let graceful = false;\n let closedByCaller = false;\n let hasConnected = false;\n\n const onSnapshotBegin = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as SnapshotBeginPayload;\n snapshotRows = [];\n const store = useAppStore.getState();\n store.setMeta({\n filename: data.meta.filename,\n eventCount: 0,\n sessionCount: 0,\n });\n if (typeof data.meta.logKey === \"string\" && data.meta.logKey.length > 0) {\n store.setLogKey(data.meta.logKey);\n }\n } catch {\n /* malformed frame — ignore */\n }\n };\n const onSnapshotChunk = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as SnapshotChunkPayload;\n snapshotRows = snapshotRows.concat(data.rows);\n } catch {\n /* ignore */\n }\n };\n const onSnapshotEnd = (): void => {\n useAppStore.getState().setRows(snapshotRows);\n snapshotRows = [];\n hasConnected = true;\n useAppStore.getState().setConnection(\"connected\");\n };\n const onAppend = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as AppendPayload;\n useAppStore.getState().appendRows(data.rows, data.from);\n } catch {\n /* ignore */\n }\n };\n const onPatch = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as PatchPayload;\n useAppStore.getState().applyPatch(data.updates);\n } catch {\n /* ignore */\n }\n };\n const onPing = (): void => {\n /* heartbeat — no store mutation */\n };\n const onRotation = (): void => {\n useAppStore.getState().setRotationNotice(true);\n useAppStore.getState().resetForRotation();\n snapshotRows = [];\n };\n const onWatchError = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as {\n code?: \"read-error\" | \"watch-fatal\";\n message?: string;\n };\n const code = data.code === \"watch-fatal\" ? \"watch-fatal\" : \"read-error\";\n useAppStore.getState().setLastWatchError({\n code,\n message: typeof data.message === \"string\" ? data.message : \"\",\n });\n } catch {\n useAppStore.getState().setLastWatchError({ code: \"read-error\", message: \"\" });\n }\n };\n const onLogReset = (): void => {\n useAppStore.getState().resetForLogSwitch();\n snapshotRows = [];\n };\n const onBye = (): void => {\n if (closedByCaller) return;\n graceful = true;\n try {\n es.close();\n } catch {\n /* ignore */\n }\n useAppStore.getState().setConnection(\"disconnected\");\n };\n const onError = (): void => {\n if (graceful || closedByCaller) return;\n // EventSource.CLOSED === 2. Browser implementations often report\n // CONNECTING while retrying after a server crash, but once the user has\n // seen data this is a real interruption that should expose Retry.\n if (hasConnected || es.readyState === 2) {\n useAppStore.getState().setConnection(\"disconnected\");\n } else {\n useAppStore.getState().setConnection(\"connecting\");\n }\n };\n\n es.addEventListener(\"snapshot-begin\", onSnapshotBegin);\n es.addEventListener(\"snapshot-chunk\", onSnapshotChunk);\n es.addEventListener(\"snapshot-end\", onSnapshotEnd);\n es.addEventListener(\"append\", onAppend);\n es.addEventListener(\"patch\", onPatch);\n es.addEventListener(\"ping\", onPing);\n es.addEventListener(\"rotation\", onRotation);\n es.addEventListener(\"watch-error\", onWatchError);\n es.addEventListener(\"log-reset\", onLogReset);\n es.addEventListener(\"bye\", onBye);\n es.onerror = onError;\n\n return {\n close: () => {\n closedByCaller = true;\n graceful = true;\n try {\n es.close();\n } catch {\n /* ignore */\n }\n },\n };\n}\n","export const __APP_VERSION__ = \"0.1.0\";\n","/**\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","// WatchErrorBanner (Plan 04-05 Task 2 / UI-SPEC §7).\n// Shown by AppShell while `store.lastWatchError` is non-null.\n// Copy uses MAPPED display strings — never raw OS error text.\n\nimport type { JSX } from \"react\";\n\nconst CODE_DISPLAY: Record<string, string> = {\n \"read-error\": \"file read error\",\n \"watch-fatal\": \"watcher stopped\",\n};\n\nexport function WatchErrorBanner({\n code,\n onRetry,\n onReopen,\n}: {\n code: string;\n onRetry(): void;\n onReopen(): void;\n}): JSX.Element {\n const display = CODE_DISPLAY[code] ?? \"unknown error\";\n return (\n <div\n role=\"alert\"\n data-testid=\"watch-error-banner\"\n style={{\n height: 40,\n background: \"var(--color-banner-watch-error-bg)\",\n color: \"var(--color-banner-watch-error-fg)\",\n borderLeft: \"2px solid var(--color-destructive)\",\n padding: \"0 var(--space-4)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-3)\",\n flex: \"0 0 auto\",\n }}\n >\n <span aria-hidden=\"true\">✕</span>\n <span style={{ flex: 1 }}>Watch error: {display}</span>\n <button\n type=\"button\"\n onClick={onRetry}\n style={{\n height: 24,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid currentColor\",\n borderRadius: 4,\n color: \"inherit\",\n cursor: \"pointer\",\n fontWeight: 600,\n }}\n >\n Retry Connection\n </button>\n <button\n type=\"button\"\n onClick={onReopen}\n style={{\n height: 24,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid currentColor\",\n borderRadius: 4,\n color: \"inherit\",\n cursor: \"pointer\",\n fontWeight: 600,\n }}\n >\n Reopen log\n </button>\n </div>\n );\n}\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({ color, size, strokeWidth, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses(\"lucide\", contextClass, className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n { d: \"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1\", key: \"1oajmo\" }\n ],\n [\n \"path\",\n { d: \"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1\", key: \"mpwhp6\" }\n ]\n];\nconst FileBraces = createLucideIcon(\"file-braces\", __iconNode);\n\nexport { __iconNode, FileBraces as default };\n//# sourceMappingURL=file-braces.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\",\n key: \"e79jfc\"\n }\n ],\n [\"circle\", { cx: \"13.5\", cy: \"6.5\", r: \".5\", fill: \"currentColor\", key: \"1okk4w\" }],\n [\"circle\", { cx: \"17.5\", cy: \"10.5\", r: \".5\", fill: \"currentColor\", key: \"f64h9f\" }],\n [\"circle\", { cx: \"6.5\", cy: \"12.5\", r: \".5\", fill: \"currentColor\", key: \"qy21gx\" }],\n [\"circle\", { cx: \"8.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"fotxhn\" }]\n];\nconst Palette = createLucideIcon(\"palette\", __iconNode);\n\nexport { __iconNode, Palette as default };\n//# sourceMappingURL=palette.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"M12 8v4\", key: \"1got3b\" }],\n [\"path\", { d: \"M12 16h.01\", key: \"1drbdi\" }]\n];\nconst ShieldAlert = createLucideIcon(\"shield-alert\", __iconNode);\n\nexport { __iconNode, ShieldAlert as default };\n//# sourceMappingURL=shield-alert.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 5.17-2.69\", key: \"1dl1wf\" }],\n [\"path\", { d: \"M19 12.859a10 10 0 0 0-2.007-1.523\", key: \"4k23kn\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 4.177-2.643\", key: \"1grhjp\" }],\n [\"path\", { d: \"M22 8.82a15 15 0 0 0-11.288-3.764\", key: \"z3jwby\" }],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst WifiOff = createLucideIcon(\"wifi-off\", __iconNode);\n\nexport { __iconNode, WifiOff as default };\n//# sourceMappingURL=wifi-off.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n","/**\n * http-client.ts — browser-only transport for the detail API (Plan 03-04).\n *\n * MUST NOT import node:, fs, path, hono, or @ahp-inspector/server.\n * boundary.test.ts enforces this at CI time.\n *\n * Security:\n * T-03-04-04: AbortController per idx — previous controller aborted on\n * new selectedIdx change in DetailPanel's useEffect cleanup.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\n\nexport type { AhpEvent };\n\nexport interface DetailResponse {\n event: AhpEvent;\n pair: AhpEvent | null;\n latencyMs: number | null;\n status: Status;\n pairIdx: number | null;\n}\n\n// Simple LRU-16 cache keyed by active log + event idx.\nconst MAX_CACHE = 16;\ntype EventCacheKey = string;\nconst cache = new Map<EventCacheKey, DetailResponse>();\nconst cacheOrder: EventCacheKey[] = [];\n\nfunction cacheKey(logKey: string | null | undefined, idx: number): EventCacheKey {\n return JSON.stringify([logKey ?? null, idx]);\n}\n\nfunction cacheGet(key: EventCacheKey): DetailResponse | undefined {\n const cached = cache.get(key);\n if (cached !== undefined) {\n const existing = cacheOrder.indexOf(key);\n if (existing !== -1) {\n cacheOrder.splice(existing, 1);\n cacheOrder.push(key);\n }\n }\n return cached;\n}\n\nfunction cacheSet(key: EventCacheKey, data: DetailResponse): void {\n if (cache.has(key)) {\n cacheOrder.splice(cacheOrder.indexOf(key), 1);\n cacheOrder.push(key);\n cache.set(key, data);\n return;\n }\n if (cacheOrder.length >= MAX_CACHE) {\n const evict = cacheOrder.shift();\n if (evict !== undefined) cache.delete(evict);\n }\n cacheOrder.push(key);\n cache.set(key, data);\n}\n\n/**\n * Fetch event details from GET /api/log/event/:idx.\n * Returns null on 404, throws on other HTTP errors.\n * Caches last 16 responses by active log key + idx.\n */\nexport async function fetchEvent(\n idx: number,\n signal?: AbortSignal,\n logKey?: string | null,\n): Promise<DetailResponse | null> {\n const key = cacheKey(logKey, idx);\n const cached = cacheGet(key);\n if (cached) return cached;\n const init: RequestInit = signal !== undefined ? { signal } : {};\n const resp = await fetch(`/api/log/event/${idx}`, init);\n if (resp.status === 404) return null;\n if (!resp.ok) throw new Error(`Failed to load event: ${resp.status}`);\n const data: DetailResponse = (await resp.json()) as DetailResponse;\n cacheSet(key, data);\n return data;\n}\n\nexport function clearEventCacheForTests(): void {\n cache.clear();\n cacheOrder.length = 0;\n}\n","/**\n * AhpFieldRow — a single 24 px-tall labeled field row in the AHP strip.\n *\n * Layout: 2px color stripe | 96px label | flex value | optional annotation\n * No raw #hex literals — all colors come from CSS variables.\n */\nimport type { JSX } from \"react\";\n\ninterface AhpFieldRowProps {\n stripeColor: string;\n label: string;\n value: string;\n annotation?: string;\n}\n\nexport function AhpFieldRow({\n stripeColor,\n label,\n value,\n annotation,\n}: AhpFieldRowProps): JSX.Element {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n height: \"24px\",\n borderLeft: `2px solid ${stripeColor}`,\n paddingLeft: \"var(--space-2)\",\n gap: \"var(--space-2)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-mono)\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n flexShrink: 0,\n width: \"96px\",\n color: \"var(--color-text-muted)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {label}\n </span>\n <span\n style={{\n flex: 1,\n color: \"var(--color-text)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {value}\n </span>\n {annotation ? (\n <span\n style={{\n flexShrink: 0,\n color: \"var(--color-warning)\",\n fontSize: \"12px\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n {annotation}\n </span>\n ) : null}\n </div>\n );\n}\n","/**\n * AhpFieldStrip — renders 0–9 AhpFieldRow items for AHP-specific fields.\n *\n * Present fields come from EventRow (projected) and AhpEvent (raw).\n * Absent fields are omitted — the strip has variable row count.\n *\n * Field order follows UI-SPEC §4.3 + §7.6:\n * session, turn, toolCall, actionType, serverSeq, origin,\n * requestId, errorCode, notificationType\n *\n * No raw #hex literals — all stripe colors use CSS var().\n */\n\nimport type { EventRow } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\nimport { AhpFieldRow } from \"./AhpFieldRow.js\";\n\nconst AHP_ERROR_LABELS: Record<number, string> = {\n [-32700]: \"Parse error\",\n [-32600]: \"Invalid request\",\n [-32601]: \"Method not found\",\n [-32602]: \"Invalid params\",\n [-32603]: \"Internal error\",\n [-32007]: \"Authentication required\",\n};\n\ninterface AhpFieldStripProps {\n row: EventRow;\n rawEvent: AhpEvent;\n}\n\ninterface FieldDef {\n label: string;\n stripeColor: string;\n value: string;\n annotation?: string | undefined;\n}\n\nfunction getRawParams(rawEvent: AhpEvent): Record<string, unknown> | null {\n if (rawEvent.raw && typeof rawEvent.raw === \"object\") {\n const r = rawEvent.raw as Record<string, unknown>;\n if (r.params && typeof r.params === \"object\") {\n return r.params as Record<string, unknown>;\n }\n }\n return null;\n}\n\nexport function AhpFieldStrip({ row, rawEvent }: AhpFieldStripProps): JSX.Element {\n const fields: FieldDef[] = [];\n const params = getRawParams(rawEvent);\n\n // 1. session\n if (row.sessionId) {\n fields.push({\n label: \"Session\",\n stripeColor: \"var(--color-info)\",\n value: row.sessionId,\n });\n }\n\n // 2. turn\n if (row.turnId) {\n fields.push({\n label: \"Turn\",\n stripeColor: \"var(--color-info)\",\n value: row.turnId,\n });\n }\n\n // 3. toolCall (from raw.params?.toolCall for tool-call actions)\n const toolCall = params?.toolCall;\n if (toolCall && typeof toolCall === \"object\") {\n const tc = toolCall as Record<string, unknown>;\n const tcName = typeof tc.name === \"string\" ? tc.name : JSON.stringify(toolCall);\n fields.push({\n label: \"Tool call\",\n stripeColor: \"var(--action-tool-call)\",\n value: tcName,\n });\n }\n\n // 4. actionType (for non-NTF rows — NTF uses notificationType below)\n if (row.actionType && row.kindTag !== \"NTF\") {\n fields.push({\n label: \"Action type\",\n stripeColor: \"var(--action-text)\",\n value: row.actionType,\n });\n }\n\n // 5. serverSeq\n if (row.serverSeq !== null) {\n fields.push({\n label: \"Server seq\",\n stripeColor: \"var(--color-text-muted)\",\n value: String(row.serverSeq),\n ...(row.gapBefore ? { annotation: \"gap before\" } : {}),\n });\n }\n\n // 6. origin (from raw.params?.origin)\n const origin = params?.origin;\n if (typeof origin === \"string\" && origin) {\n fields.push({\n label: \"Origin\",\n stripeColor: \"var(--color-text-muted)\",\n value: origin,\n });\n }\n\n // 7. requestId (for REQ/RES rows)\n if (row.keyId && (row.kindTag === \"REQ\" || row.kindTag === \"RES\")) {\n fields.push({\n label: \"Request id\",\n stripeColor: \"var(--kind-request)\",\n value: row.keyId,\n });\n }\n\n // 8. errorCode\n if (row.errorCode !== null) {\n const label = AHP_ERROR_LABELS[row.errorCode];\n const valueStr = label ? `${row.errorCode} — ${label}` : String(row.errorCode);\n fields.push({\n label: \"Error code\",\n stripeColor: \"var(--color-destructive)\",\n value: valueStr,\n });\n }\n\n // 9. notificationType (for NTF rows)\n if (row.kindTag === \"NTF\" && row.actionType) {\n fields.push({\n label: \"Notification type\",\n stripeColor: \"var(--kind-notification)\",\n value: row.actionType,\n });\n }\n\n return (\n <div\n data-testid=\"ahp-field-strip\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1px\",\n padding: \"var(--space-2) 0\",\n }}\n >\n {fields.map((f) => (\n <AhpFieldRow\n key={f.label}\n stripeColor={f.stripeColor}\n label={f.label}\n value={f.value}\n {...(f.annotation !== undefined ? { annotation: f.annotation } : {})}\n />\n ))}\n </div>\n );\n}\n","/**\n * AuthFailureBanner — alert banner shown when an event has isAuthFailure=true.\n *\n * No raw #hex literals; uses --color-auth-fail-banner-bg token.\n */\n\nimport { ShieldAlert } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface AuthFailureBannerProps {\n code?: number;\n notificationType?: string;\n}\n\nexport function AuthFailureBanner({ code, notificationType }: AuthFailureBannerProps): JSX.Element {\n const heading = `Authentication failure (${code ?? notificationType ?? \"unknown\"})`;\n\n const body =\n code === -32007\n ? \"Subsequent requests in this session may fail until re-auth.\"\n : notificationType === \"authRequired\"\n ? \"Server is requesting authentication.\"\n : \"Authentication failure detected.\";\n\n return (\n <div\n data-testid=\"auth-failure-banner\"\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-2) var(--space-3)\",\n background: \"var(--color-auth-fail-banner-bg)\",\n color: \"var(--color-destructive)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n borderBottom: \"1px solid var(--color-border)\",\n }}\n >\n <ShieldAlert size={14} style={{ flexShrink: 0, marginTop: \"1px\" }} />\n <div>\n <div style={{ fontWeight: \"var(--weight-semibold)\" }}>{heading}</div>\n <div style={{ color: \"var(--color-text-muted)\", marginTop: \"2px\" }}>{body}</div>\n </div>\n </div>\n );\n}\n","export async function copyText(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n return;\n } catch {\n const ta = document.createElement(\"textarea\");\n ta.value = text;\n ta.style.position = \"fixed\";\n ta.style.top = \"0\";\n ta.style.left = \"0\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.focus();\n ta.select();\n document.execCommand(\"copy\");\n document.body.removeChild(ta);\n }\n}\n","/**\n * CopyMenu — dropdown button with three copy actions.\n *\n * T-03-04-03: Copy is explicit user action only.\n * Uses navigator.clipboard.writeText with textarea execCommand fallback.\n * PrivacyCaption discloses that raw payload may contain tokens/prompts/paths.\n *\n * No raw #hex literals. No dangerouslySetInnerHTML.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport { ChevronDown } from \"lucide-react\";\nimport { type JSX, useEffect, useRef, useState } from \"react\";\nimport { copyText } from \"./clipboard.js\";\n\ninterface CopyMenuProps {\n event: AhpEvent;\n pairEvent: AhpEvent | null;\n pairIdx: number | null;\n latencyMs: number | null;\n status: Status;\n onCopy(msg: string, ok: boolean): void;\n}\n\nfunction directionWord(dir: string): string {\n switch (dir) {\n case \"c2s\":\n return \"Client→Server\";\n case \"s2c\":\n return \"Server→Client\";\n default:\n return \"Internal\";\n }\n}\n\nfunction fmtTs(ts: number): string {\n const d = new Date(ts);\n const hh = d.getUTCHours().toString().padStart(2, \"0\");\n const mm = d.getUTCMinutes().toString().padStart(2, \"0\");\n const ss = d.getUTCSeconds().toString().padStart(2, \"0\");\n const ms = d.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\n\nfunction eventLabel(event: AhpEvent): string {\n return event.method ?? event.actionType ?? event.kind;\n}\n\nfunction idLabel(event: AhpEvent): string | null {\n if (event.id === null) return null;\n return `${String(event.id)} (${event.idType})`;\n}\n\nfunction appendEventContext(prefix: string, event: AhpEvent): string {\n let out = `${prefix}=${directionWord(event.dir)} ${event.kind} ${eventLabel(event)}`;\n const id = idLabel(event);\n if (id) out += ` id=${id}`;\n if (event.sessionId) out += ` session=${event.sessionId}`;\n if (event.turnId) out += ` turn=${event.turnId}`;\n if (event.toolCallId) out += ` tool=${event.toolCallId}`;\n return `${out}\\n`;\n}\n\nfunction buildSummary(\n event: AhpEvent,\n pairEvent: AhpEvent | null,\n pairIdx: number | null,\n latencyMs: number | null,\n status: Status,\n): string {\n const ts = fmtTs(event.ts);\n const dir = directionWord(event.dir);\n const method = event.method ?? event.actionType ?? \"—\";\n let summary = `${ts} ${dir} ${event.kind} ${method}\\nstatus=${status} latency=${latencyMs !== null ? `${latencyMs}ms` : \"—\"}\\n`;\n\n if (event.sessionId) summary += `session=${event.sessionId}\\n`;\n if (event.turnId) summary += `turn=${event.turnId}\\n`;\n if (event.serverSeq !== null) summary += `serverSeq=${event.serverSeq}\\n`;\n if (pairEvent) {\n summary += `correlation=paired`;\n if (pairIdx !== null) summary += ` pairIdx=${pairIdx}`;\n summary += ` status=${status} latency=${latencyMs !== null ? `${latencyMs}ms` : \"—\"}\\n`;\n summary += appendEventContext(\"current\", event);\n summary += appendEventContext(\"pair\", pairEvent);\n }\n\n return summary;\n}\n\nexport function CopyMenu({\n event,\n pairEvent,\n pairIdx,\n latencyMs,\n status,\n onCopy,\n}: CopyMenuProps): JSX.Element {\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n // Close on click-outside.\n useEffect(() => {\n if (!open) return;\n function handler(e: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n async function handleCopy(getContent: () => string) {\n setOpen(false);\n const text = getContent();\n try {\n await copyText(text);\n onCopy(`Copied ${text.length} chars`, true);\n } catch {\n onCopy(\"Copy failed. Select and copy manually.\", false);\n }\n }\n\n const menuItems = [\n {\n label: \"Copy raw JSON\",\n action: () => {\n try {\n return JSON.stringify(event.raw);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n },\n },\n {\n label: \"Copy pretty JSON\",\n action: () => {\n try {\n return JSON.stringify(event.raw, null, 2);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n },\n },\n {\n label: \"Copy summary\",\n action: () => buildSummary(event, pairEvent, pairIdx, latencyMs, status),\n },\n ];\n\n return (\n <div ref={menuRef} style={{ position: \"relative\" }}>\n <button\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: \"4px\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n padding: \"var(--space-1) var(--space-2)\",\n }}\n >\n Copy <ChevronDown size={12} />\n </button>\n\n {open && (\n <div\n role=\"menu\"\n style={{\n position: \"absolute\",\n top: \"calc(100% + var(--space-1))\",\n right: 0,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: \"4px\",\n minWidth: \"180px\",\n zIndex: 50,\n overflow: \"hidden\",\n }}\n >\n {menuItems.map((item) => (\n <button\n key={item.label}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => handleCopy(item.action)}\n style={{\n display: \"block\",\n width: \"100%\",\n textAlign: \"left\",\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-2) var(--space-3)\",\n }}\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n","/**\n * CopyToast — brief feedback after a clipboard copy attempt.\n *\n * - 1.5s auto-dismiss via useEffect timeout\n * - Success: --color-success tint background\n * - Failure: --color-destructive tint background\n * - prefers-reduced-motion: opacity animation skipped\n *\n * No raw #hex literals.\n */\nimport { type JSX, useEffect, useState } from \"react\";\n\ninterface CopyToastProps {\n message: string;\n kind: \"success\" | \"error\";\n}\n\nexport function CopyToast({ message, kind }: CopyToastProps): JSX.Element | null {\n const [visible, setVisible] = useState(true);\n\n useEffect(() => {\n const id = setTimeout(() => setVisible(false), 1500);\n return () => clearTimeout(id);\n }, []);\n\n if (!visible) return null;\n\n const bgColor =\n kind === \"success\"\n ? \"color-mix(in srgb, var(--color-success) 20%, var(--color-surface-raised))\"\n : \"color-mix(in srgb, var(--color-destructive) 20%, var(--color-surface-raised))\";\n\n const borderColor = kind === \"success\" ? \"var(--color-success)\" : \"var(--color-destructive)\";\n\n return (\n <div\n data-testid=\"copy-toast\"\n role=\"status\"\n aria-live=\"polite\"\n style={{\n position: \"absolute\",\n bottom: \"var(--space-4)\",\n right: \"var(--space-4)\",\n background: bgColor,\n border: `1px solid ${borderColor}`,\n borderRadius: \"4px\",\n padding: \"var(--space-2) var(--space-3)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n color: \"var(--color-text)\",\n zIndex: 100,\n animation: \"ahp-fade-in 0.15s ease\",\n pointerEvents: \"none\",\n }}\n >\n {message}\n </div>\n );\n}\n","/**\n * DetailCorrelation — visible request/response pairing metadata for the\n * selected detail event.\n *\n * Renders only when the detail API reports a correlated pair, so unpaired\n * details stay visually clean.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\n\ninterface DetailCorrelationProps {\n currentIdx: number;\n event: AhpEvent;\n pairEvent: AhpEvent | null;\n pairIdx: number | null;\n latencyMs: number | null;\n status: Status;\n}\n\nfunction directionWord(dir: string): string {\n switch (dir) {\n case \"c2s\":\n return \"Client → Server\";\n case \"s2c\":\n return \"Server → Client\";\n default:\n return \"Internal\";\n }\n}\n\nfunction eventLabel(event: AhpEvent): string {\n return event.method ?? event.actionType ?? event.kind;\n}\n\nfunction requestIdLabel(event: AhpEvent): string | null {\n if (event.id === null) return null;\n return `${String(event.id)} (${event.idType})`;\n}\n\nfunction contextBits(event: AhpEvent): string[] {\n const bits: string[] = [];\n const requestId = requestIdLabel(event);\n if (requestId) bits.push(`id ${requestId}`);\n if (event.sessionId) bits.push(`session ${event.sessionId}`);\n if (event.turnId) bits.push(`turn ${event.turnId}`);\n if (event.toolCallId) bits.push(`tool ${event.toolCallId}`);\n return bits;\n}\n\nfunction CorrelationEventLine({\n label,\n idx,\n event,\n}: {\n label: string;\n idx: number;\n event: AhpEvent;\n}): JSX.Element {\n const bits = contextBits(event);\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2px\",\n minWidth: 0,\n }}\n >\n <div\n style={{\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {label} #{idx} · {event.kind} · {eventLabel(event)}\n </div>\n <div\n style={{\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {directionWord(event.dir)}\n {bits.length ? ` · ${bits.join(\" · \")}` : \"\"}\n </div>\n </div>\n );\n}\n\nexport function DetailCorrelation({\n currentIdx,\n event,\n pairEvent,\n pairIdx,\n latencyMs,\n status,\n}: DetailCorrelationProps): JSX.Element | null {\n if (!pairEvent || pairIdx === null) return null;\n\n return (\n <section\n aria-label=\"Correlation\"\n data-testid=\"detail-correlation\"\n style={{\n borderTop: \"1px solid var(--color-border)\",\n borderBottom: \"1px solid var(--color-border)\",\n padding: \"var(--space-2) var(--space-3)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-2)\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n <strong\n style={{\n color: \"var(--color-text)\",\n fontWeight: \"var(--weight-semibold)\",\n }}\n >\n Correlation\n </strong>\n <span>\n pair idx #{pairIdx} · status {status} · latency{\" \"}\n {latencyMs !== null ? `${latencyMs}ms` : \"—\"}\n </span>\n </div>\n <CorrelationEventLine label=\"This event\" idx={currentIdx} event={event} />\n <CorrelationEventLine label=\"Pair\" idx={pairIdx} event={pairEvent} />\n </section>\n );\n}\n","/**\n * DetailResizeHandle — 4px hit area on the left edge of the detail panel.\n *\n * Mouse drag: onMouseDown → track clientX delta → call onResize(newWidth).\n * Keyboard: Left/Right arrows add/subtract 16px increments.\n * Bounds: clamped to [min, max] (defaults: [360, 720]).\n *\n * No raw #hex literals.\n */\nimport type { JSX, KeyboardEvent, MouseEvent } from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { DETAIL_KEYBOARD_STEP } from \"./detail-layout.js\";\n\ninterface DetailResizeHandleProps {\n width: number;\n onResize(px: number): void;\n min: number;\n max: number;\n}\n\nexport function DetailResizeHandle({\n width,\n onResize,\n min,\n max,\n}: DetailResizeHandleProps): JSX.Element {\n const dragging = useRef(false);\n const startX = useRef(0);\n const startWidth = useRef(0);\n const moveHandler = useRef<((ev: globalThis.MouseEvent) => void) | null>(null);\n const upHandler = useRef<(() => void) | null>(null);\n\n function clamp(v: number): number {\n return Math.max(min, Math.min(max, v));\n }\n\n const stopDrag = useCallback(() => {\n dragging.current = false;\n if (moveHandler.current) {\n document.removeEventListener(\"mousemove\", moveHandler.current);\n moveHandler.current = null;\n }\n if (upHandler.current) {\n document.removeEventListener(\"mouseup\", upHandler.current);\n upHandler.current = null;\n }\n }, []);\n\n useEffect(() => stopDrag, [stopDrag]);\n\n function handleMouseDown(e: MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n stopDrag();\n dragging.current = true;\n startX.current = e.clientX;\n startWidth.current = width;\n\n function onMouseMove(ev: globalThis.MouseEvent) {\n if (!dragging.current) return;\n const delta = startX.current - ev.clientX;\n onResize(clamp(startWidth.current + delta));\n }\n\n function onMouseUp() {\n stopDrag();\n }\n\n moveHandler.current = onMouseMove;\n upHandler.current = onMouseUp;\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>) {\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n onResize(clamp(width + DETAIL_KEYBOARD_STEP));\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n onResize(clamp(width - DETAIL_KEYBOARD_STEP));\n }\n }\n\n return (\n <button\n type=\"button\"\n data-testid=\"detail-resize-handle\"\n aria-label=\"Resize detail panel\"\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"4px\",\n cursor: \"col-resize\",\n background: \"transparent\",\n border: \"none\",\n padding: 0,\n zIndex: 10,\n transition: \"background 0.1s\",\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.background =\n \"color-mix(in srgb, var(--color-accent) 60%, transparent)\";\n }}\n onMouseLeave={(e) => {\n if (!dragging.current) {\n (e.currentTarget as HTMLElement).style.background = \"transparent\";\n }\n }}\n />\n );\n}\n","/**\n * DetailSummary — 2-line summary block for a selected event.\n *\n * Line 1: {tsFmt} · {direction-word} · {kindTag} · {method ?? actionType ?? \"—\"}\n * Line 2: Status: {status} · Latency: {latencyMs}ms or \"—\"\n *\n * Status coloring: ok/200 → --color-success, error → --color-destructive,\n * others → --color-text-muted.\n *\n * No raw #hex literals.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\n\ninterface DetailSummaryProps {\n event: AhpEvent;\n latencyMs: number | null;\n status: Status;\n}\n\nfunction directionWord(dir: string): string {\n switch (dir) {\n case \"c2s\":\n return \"Client → Server\";\n case \"s2c\":\n return \"Server → Client\";\n default:\n return \"Internal\";\n }\n}\n\nfunction statusColor(status: Status): string {\n if (status === \"ok\") return \"var(--color-success)\";\n if (status === \"error\") return \"var(--color-destructive)\";\n return \"var(--color-text-muted)\";\n}\n\nfunction fmtTs(ts: number): string {\n const d = new Date(ts);\n const hh = d.getUTCHours().toString().padStart(2, \"0\");\n const mm = d.getUTCMinutes().toString().padStart(2, \"0\");\n const ss = d.getUTCSeconds().toString().padStart(2, \"0\");\n const ms = d.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\n\nfunction kindTagFor(kind: AhpEvent[\"kind\"]): string {\n switch (kind) {\n case \"request\":\n return \"REQ\";\n case \"response\":\n return \"RES\";\n case \"client-notification\":\n case \"server-notification\":\n case \"protocol-notification\":\n return \"NTF\";\n case \"action\":\n return \"ACT\";\n case \"parse-error\":\n return \"BAD\";\n case \"log\":\n return \"LOG\";\n default:\n return \"?\";\n }\n}\n\nexport function DetailSummary({ event, latencyMs, status }: DetailSummaryProps): JSX.Element {\n const tsFmt = fmtTs(event.ts);\n const dirWord = directionWord(event.dir);\n const kindTag = kindTagFor(event.kind);\n const methodLabel = event.method ?? event.actionType ?? \"—\";\n\n return (\n <div data-testid=\"detail-summary\" style={{ padding: \"var(--space-2) var(--space-3)\" }}>\n <div\n style={{\n fontSize: \"var(--text-row-size)\",\n fontFamily: \"var(--font-mono)\",\n color: \"var(--color-text)\",\n lineHeight: \"var(--text-row-line)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {tsFmt} · {dirWord} · {kindTag} · {methodLabel}\n </div>\n <div\n style={{\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n color: \"var(--color-text-muted)\",\n lineHeight: \"var(--text-row-line)\",\n marginTop: \"2px\",\n }}\n >\n Status: <span style={{ color: statusColor(status) }}>{status}</span>\n {\" · \"}\n Latency: {latencyMs !== null ? `${latencyMs}ms` : \"—\"}\n </div>\n </div>\n );\n}\n","/**\n * DetailTabs — tablist for Pretty / Raw JSON views.\n *\n * Keyboard: Left/Right arrows navigate; Enter/Space activate.\n * Active tab: 2px --color-accent bottom border, weight 600.\n *\n * No raw #hex literals.\n */\nimport type { JSX, KeyboardEvent } from \"react\";\n\ntype Tab = \"pretty\" | \"raw\";\n\ninterface DetailTabsProps {\n active: Tab;\n onChange(tab: Tab): void;\n}\n\nconst TABS: { id: Tab; label: string }[] = [\n { id: \"pretty\", label: \"Pretty\" },\n { id: \"raw\", label: \"Raw\" },\n];\n\nexport function DetailTabs({ active, onChange }: DetailTabsProps): JSX.Element {\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>, idx: number): void {\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const next =\n e.key === \"ArrowRight\" ? (idx + 1) % TABS.length : (idx - 1 + TABS.length) % TABS.length;\n const tab = TABS[next];\n if (tab) onChange(tab.id);\n }\n }\n\n return (\n <div\n role=\"tablist\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n padding: \"0 var(--space-3)\",\n borderBottom: \"1px solid var(--color-border)\",\n height: \"var(--filter-bar-height)\",\n }}\n >\n {TABS.map((tab, idx) => {\n const isActive = tab.id === active;\n return (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n type=\"button\"\n onClick={() => onChange(tab.id)}\n onKeyDown={(e) => handleKeyDown(e, idx)}\n style={{\n background: \"none\",\n border: \"none\",\n borderBottom: isActive ? \"2px solid var(--color-accent)\" : \"2px solid transparent\",\n color: isActive ? \"var(--color-text)\" : \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n fontWeight: isActive ? \"var(--weight-semibold)\" : \"var(--weight-regular)\",\n padding: \"var(--space-2) var(--space-2)\",\n marginBottom: \"-1px\",\n }}\n >\n {tab.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import { createElement, useRef, useState, useEffect, useId } from 'react';\n\nconst isBoolean = data => {\n return typeof data === 'boolean' || data instanceof Boolean;\n};\nconst isNumber = data => {\n return typeof data === 'number' || data instanceof Number;\n};\nconst isBigInt = data => {\n return typeof data === 'bigint' || data instanceof BigInt;\n};\nconst isDate = data => {\n return !!data && data instanceof Date;\n};\nconst isString = data => {\n return typeof data === 'string' || data instanceof String;\n};\nconst isArray = data => {\n return Array.isArray(data);\n};\nconst isObject = data => {\n return typeof data === 'object' && data !== null;\n};\nconst isFunction = data => {\n return !!data && data instanceof Object && typeof data === 'function';\n};\n\nfunction quoteString(value, quoted) {\n if (quoted === void 0) {\n quoted = false;\n }\n return !value || quoted ? `\"${value}\"` : value;\n}\nfunction quoteStringValue(value, quoted, stringify) {\n if (stringify) {\n return JSON.stringify(value);\n }\n return quoted ? `\"${value}\"` : value;\n}\nfunction ExpandableObject(_ref) {\n let {\n field,\n value,\n data,\n lastElement,\n openBracket,\n closeBracket,\n level,\n style,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref;\n const shouldExpandNodeCalledRef = useRef(false);\n const [expanded, setExpanded] = useState(() => shouldExpandNode(level, value, field));\n const expanderButtonRef = useRef(null);\n useEffect(() => {\n if (!shouldExpandNodeCalledRef.current) {\n shouldExpandNodeCalledRef.current = true;\n } else {\n setExpanded(shouldExpandNode(level, value, field));\n }\n }, [shouldExpandNode]);\n const contentsId = useId();\n if (data.length === 0) {\n return EmptyObject({\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n });\n }\n const expanderIconStyle = expanded ? style.collapseIcon : style.expandIcon;\n const ariaLabel = expanded ? style.ariaLables.collapseJson : style.ariaLables.expandJson;\n const childLevel = level + 1;\n const lastIndex = data.length - 1;\n const setExpandWithCallback = newExpandValue => {\n if (expanded !== newExpandValue && (!beforeExpandChange || beforeExpandChange({\n level,\n value,\n field,\n newExpandValue\n }))) {\n setExpanded(newExpandValue);\n }\n };\n const onKeyDown = e => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n e.preventDefault();\n setExpandWithCallback(e.key === 'ArrowRight');\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const direction = e.key === 'ArrowUp' ? -1 : 1;\n if (!outerRef.current) return;\n const buttonElements = outerRef.current.querySelectorAll('[role=button]');\n let currentIndex = -1;\n for (let i = 0; i < buttonElements.length; i++) {\n if (buttonElements[i].tabIndex === 0) {\n currentIndex = i;\n break;\n }\n }\n if (currentIndex < 0) {\n return;\n }\n const nextIndex = (currentIndex + direction + buttonElements.length) % buttonElements.length;\n buttonElements[currentIndex].tabIndex = -1;\n buttonElements[nextIndex].tabIndex = 0;\n buttonElements[nextIndex].focus();\n }\n };\n const onClick = () => {\n var _outerRef$current;\n setExpandWithCallback(!expanded);\n const buttonElement = expanderButtonRef.current;\n if (!buttonElement) return;\n const prevButtonElement = (_outerRef$current = outerRef.current) === null || _outerRef$current === void 0 ? void 0 : _outerRef$current.querySelector('[role=button][tabindex=\"0\"]');\n if (prevButtonElement) {\n prevButtonElement.tabIndex = -1;\n }\n buttonElement.tabIndex = 0;\n buttonElement.focus();\n };\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-expanded\": expanded,\n \"aria-selected\": undefined\n }, /*#__PURE__*/createElement(\"span\", {\n className: expanderIconStyle,\n onClick: onClick,\n onKeyDown: onKeyDown,\n role: 'button',\n \"aria-label\": ariaLabel,\n \"aria-expanded\": expanded,\n \"aria-controls\": expanded ? contentsId : undefined,\n ref: expanderButtonRef,\n tabIndex: level === 0 ? 0 : -1\n }), (field || field === '') && (clickToExpandNode ? (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.clickableLabel,\n onClick: onClick,\n onKeyDown: onKeyDown\n }, quoteString(field, style.quotesForFieldNames), \":\")) : (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\"))), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), expanded ? (/*#__PURE__*/createElement(\"ul\", {\n id: contentsId,\n role: 'group',\n className: style.childFieldsContainer\n }, data.map((dataElement, index) => (/*#__PURE__*/createElement(DataRender, {\n key: dataElement[0] || index,\n field: dataElement[0],\n value: dataElement[1],\n style: style,\n lastElement: index === lastIndex,\n level: childLevel,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n beforeExpandChange: beforeExpandChange,\n outerRef: outerRef\n }))))) : (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.collapsedContent,\n onClick: onClick,\n onKeyDown: onKeyDown\n })), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction EmptyObject(_ref2) {\n let {\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n } = _ref2;\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction JsonObject(_ref3) {\n let {\n field,\n value,\n style,\n lastElement,\n shouldExpandNode,\n clickToExpandNode,\n level,\n outerRef,\n beforeExpandChange\n } = _ref3;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '{',\n closeBracket: '}',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: Object.keys(value).map(key => [key, value[key]]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonArray(_ref4) {\n let {\n field,\n value,\n style,\n lastElement,\n level,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref4;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '[',\n closeBracket: ']',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: value.map(element => [undefined, element]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonPrimitiveValue(_ref5) {\n let {\n field,\n value,\n style,\n lastElement\n } = _ref5;\n let stringValue;\n let valueStyle = style.otherValue;\n if (value === null) {\n stringValue = 'null';\n valueStyle = style.nullValue;\n } else if (value === undefined) {\n stringValue = 'undefined';\n valueStyle = style.undefinedValue;\n } else if (isString(value)) {\n stringValue = quoteStringValue(value, !style.noQuotesForStringValues, style.stringifyStringValues);\n valueStyle = style.stringValue;\n } else if (isBoolean(value)) {\n stringValue = value ? 'true' : 'false';\n valueStyle = style.booleanValue;\n } else if (isNumber(value)) {\n stringValue = value.toString();\n valueStyle = style.numberValue;\n } else if (isBigInt(value)) {\n stringValue = `${value.toString()}n`;\n valueStyle = style.numberValue;\n } else if (isDate(value)) {\n stringValue = value.toISOString();\n } else if (isFunction(value)) {\n stringValue = 'function() { }';\n } else {\n stringValue = value.toString();\n }\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: valueStyle\n }, stringValue), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction DataRender(props) {\n const value = props.value;\n if (isArray(value)) {\n return /*#__PURE__*/createElement(JsonArray, Object.assign({}, props));\n }\n if (isObject(value) && !isDate(value) && !isFunction(value)) {\n return /*#__PURE__*/createElement(JsonObject, Object.assign({}, props));\n }\n return /*#__PURE__*/createElement(JsonPrimitiveValue, Object.assign({}, props));\n}\n\nvar styles = {\"container-base\":\"_GzYRV\",\"punctuation-base\":\"_3eOF8\",\"pointer\":\"_1MFti\",\"expander-base\":\"_f10Tu _1MFti\",\"expand-icon\":\"_1UmXx\",\"collapse-icon\":\"_1LId0\",\"collapsed-content-base\":\"_1pNG9 _1MFti\",\"container-light\":\"_2IvMF _GzYRV\",\"basic-element-style\":\"_2bkNM\",\"child-fields-container\":\"_1BXBN\",\"label-light\":\"_1MGIk\",\"clickable-label-light\":\"_2YKJg _1MGIk _1MFti\",\"punctuation-light\":\"_3uHL6 _3eOF8\",\"value-null-light\":\"_2T6PJ\",\"value-undefined-light\":\"_1Gho6\",\"value-string-light\":\"_vGjyY\",\"value-number-light\":\"_1bQdo\",\"value-boolean-light\":\"_3zQKs\",\"value-other-light\":\"_1xvuR\",\"collapse-icon-light\":\"_oLqym _f10Tu _1MFti _1LId0\",\"expand-icon-light\":\"_2AXVT _f10Tu _1MFti _1UmXx\",\"collapsed-content-light\":\"_2KJWg _1pNG9 _1MFti\",\"container-dark\":\"_11RoI _GzYRV\",\"expand-icon-dark\":\"_17H2C _f10Tu _1MFti _1UmXx\",\"collapse-icon-dark\":\"_3QHg2 _f10Tu _1MFti _1LId0\",\"collapsed-content-dark\":\"_3fDAz _1pNG9 _1MFti\",\"label-dark\":\"_2bSDX\",\"clickable-label-dark\":\"_1RQEj _2bSDX _1MFti\",\"punctuation-dark\":\"_gsbQL _3eOF8\",\"value-null-dark\":\"_LaAZe\",\"value-undefined-dark\":\"_GTKgm\",\"value-string-dark\":\"_Chy1W\",\"value-number-dark\":\"_2bveF\",\"value-boolean-dark\":\"_2vRm-\",\"value-other-dark\":\"_1prJR\"};\n\nconst defaultAriaLables = {\n collapseJson: 'collapse JSON',\n expandJson: 'expand JSON'\n};\nconst defaultStyles = {\n container: styles['container-light'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-light'],\n clickableLabel: styles['clickable-label-light'],\n nullValue: styles['value-null-light'],\n undefinedValue: styles['value-undefined-light'],\n stringValue: styles['value-string-light'],\n booleanValue: styles['value-boolean-light'],\n numberValue: styles['value-number-light'],\n otherValue: styles['value-other-light'],\n punctuation: styles['punctuation-light'],\n collapseIcon: styles['collapse-icon-light'],\n expandIcon: styles['expand-icon-light'],\n collapsedContent: styles['collapsed-content-light'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst darkStyles = {\n container: styles['container-dark'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-dark'],\n clickableLabel: styles['clickable-label-dark'],\n nullValue: styles['value-null-dark'],\n undefinedValue: styles['value-undefined-dark'],\n stringValue: styles['value-string-dark'],\n booleanValue: styles['value-boolean-dark'],\n numberValue: styles['value-number-dark'],\n otherValue: styles['value-other-dark'],\n punctuation: styles['punctuation-dark'],\n collapseIcon: styles['collapse-icon-dark'],\n expandIcon: styles['expand-icon-dark'],\n collapsedContent: styles['collapsed-content-dark'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst allExpanded = () => true;\nconst collapseAllNested = level => level < 1;\nconst JsonView = _ref => {\n let {\n data,\n style = defaultStyles,\n shouldExpandNode = allExpanded,\n clickToExpandNode = false,\n beforeExpandChange,\n compactTopLevel,\n ...ariaAttrs\n } = _ref;\n const outerRef = useRef(null);\n return /*#__PURE__*/createElement(\"div\", Object.assign({\n \"aria-label\": 'JSON view'\n }, ariaAttrs, {\n className: style.container,\n ref: outerRef,\n role: 'tree'\n }), compactTopLevel && isObject(data) ? Object.entries(data).map(_ref2 => {\n let [key, value] = _ref2;\n return /*#__PURE__*/createElement(DataRender, {\n key: key,\n field: key,\n value: value,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 1,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n beforeExpandChange: beforeExpandChange,\n outerRef: outerRef\n });\n }) : (/*#__PURE__*/createElement(DataRender, {\n value: data,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 0,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef,\n beforeExpandChange: beforeExpandChange\n })));\n};\n\nexport { JsonView, allExpanded, collapseAllNested, darkStyles, defaultStyles };\n//# sourceMappingURL=index.modern.js.map\n","/**\n * TruncationBanner — warning shown when payload exceeds 256KB or is server-truncated.\n *\n * No raw #hex literals; uses CSS variable color-mix pattern from tokens.css.\n */\n\nimport { AlertTriangle } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface TruncationBannerProps {\n kind: \"client-cap\" | \"server-cap\";\n bytes?: number;\n onOpenRaw?(): void;\n onCopyFull?(): void;\n}\n\nexport function TruncationBanner({\n kind,\n bytes,\n onOpenRaw,\n onCopyFull,\n}: TruncationBannerProps): JSX.Element {\n return (\n <div\n data-testid=\"truncation-banner\"\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-2) var(--space-3)\",\n background: \"color-mix(in srgb, var(--color-warning) 14%, var(--color-bg))\",\n color: \"var(--color-warning)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n <AlertTriangle size={14} style={{ flexShrink: 0, marginTop: \"1px\" }} />\n <div>\n {kind === \"client-cap\" ? (\n <>\n Tree view truncated at 256 KB to keep the UI responsive.{\" \"}\n {onOpenRaw && (\n <button\n type=\"button\"\n onClick={onOpenRaw}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-warning)\",\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: 0,\n fontSize: \"inherit\",\n fontFamily: \"inherit\",\n }}\n >\n [Open Raw]\n </button>\n )}\n {onOpenRaw && onCopyFull && \" \"}\n {onCopyFull && (\n <button\n type=\"button\"\n onClick={onCopyFull}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-warning)\",\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: 0,\n fontSize: \"inherit\",\n fontFamily: \"inherit\",\n }}\n >\n [Copy full payload]\n </button>\n )}\n </>\n ) : (\n `Payload truncated at ${bytes != null ? Math.round(bytes / 1024) : \"?\"} KB.`\n )}\n </div>\n </div>\n );\n}\n","/**\n * PrettyJsonView — renders a collapsible JSON tree via react-json-view-lite.\n *\n * T-03-04-02: If JSON.stringify(data).length > 256KB, show TruncationBanner\n * instead of the tree. Raw view is still available.\n *\n * No raw #hex literals — token colors come from CSS variables.\n * react-json-view-lite uses text-only rendering, no eval (verified 03-RESEARCH).\n */\nimport type { JSX } from \"react\";\nimport { defaultStyles, JsonView } from \"react-json-view-lite\";\nimport \"react-json-view-lite/dist/index.css\";\nimport { TruncationBanner } from \"./TruncationBanner.js\";\n\nconst CLIENT_CAP_BYTES = 256 * 1024; // 256KB\n\nconst JSON_STYLES: typeof defaultStyles = {\n ...defaultStyles,\n container: \"ahp-json-container\",\n basicChildStyle: \"ahp-json-child\",\n label: \"ahp-json-label\",\n clickableLabel: \"ahp-json-label ahp-json-clickable-label\",\n nullValue: \"ahp-json-null\",\n undefinedValue: \"ahp-json-null\",\n numberValue: \"ahp-json-number\",\n stringValue: \"ahp-json-string\",\n booleanValue: \"ahp-json-boolean\",\n otherValue: \"ahp-json-other\",\n punctuation: \"ahp-json-punctuation\",\n expandIcon: \"ahp-json-expander\",\n collapseIcon: \"ahp-json-expander\",\n collapsedContent: \"ahp-json-collapsed\",\n childFieldsContainer: \"ahp-json-children\",\n};\n\ninterface PrettyJsonViewProps {\n data: unknown;\n query?: string;\n capBytes?: number;\n onOpenRaw?(): void;\n}\n\nexport function PrettyJsonView({\n data,\n capBytes = CLIENT_CAP_BYTES,\n onOpenRaw,\n}: PrettyJsonViewProps): JSX.Element {\n let serialized: string;\n try {\n serialized = JSON.stringify(data);\n } catch {\n serialized = \"[Circular or non-serializable value]\";\n }\n\n if (serialized.length > capBytes) {\n return (\n <TruncationBanner\n kind=\"client-cap\"\n bytes={serialized.length}\n {...(onOpenRaw !== undefined ? { onOpenRaw } : {})}\n />\n );\n }\n\n return (\n <div\n data-testid=\"pretty-json-view\"\n className=\"ahp-json-view\"\n style={{\n padding: \"var(--space-2) var(--space-3)\",\n overflow: \"auto\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text)\",\n background: \"var(--color-json-bg)\",\n flex: 1,\n }}\n >\n <JsonView\n data={data as object}\n shouldExpandNode={(level: number) => level < 5}\n clickToExpandNode\n style={JSON_STYLES}\n />\n </div>\n );\n}\n","/**\n * PrivacyCaption — always-rendered footer line in the detail panel.\n *\n * T-03-04-03: Discloses that copy may include raw payload (tokens, prompts, paths).\n *\n * No raw #hex literals.\n */\n\nimport { Info } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\nexport function PrivacyCaption(): JSX.Element {\n return (\n <div\n data-testid=\"privacy-caption\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n padding: \"var(--space-2) var(--space-3)\",\n color: \"var(--color-text-muted)\",\n fontSize: \"12px\",\n fontFamily: \"var(--font-sans)\",\n borderTop: \"1px solid var(--color-border)\",\n }}\n >\n <Info size={12} style={{ flexShrink: 0 }} />\n <span>Copy includes raw payload — may contain tokens, prompts, or paths.</span>\n </div>\n );\n}\n","/**\n * RawJsonView — renders JSON as plain text in a <pre> element.\n *\n * T-03-04-01: React auto-escapes text children — NO dangerouslySetInnerHTML.\n * This is the safe rendering guarantee for arbitrary event payloads.\n *\n * No raw #hex literals.\n */\nimport type { JSX } from \"react\";\n\ninterface RawJsonViewProps {\n data: unknown;\n query?: string;\n}\n\nexport function RawJsonView({ data }: RawJsonViewProps): JSX.Element {\n const text = (() => {\n try {\n return JSON.stringify(data, null, 2);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n })();\n\n return (\n <pre\n data-testid=\"raw-json-view\"\n style={{\n margin: 0,\n padding: \"var(--space-2) var(--space-3)\",\n overflow: \"auto\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text)\",\n flex: 1,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-all\",\n }}\n >\n {text}\n </pre>\n );\n}\n","/**\n * Browser-only transport for lazy reconstructed state lookup.\n *\n * MUST NOT import node:, fs, path, hono, or @ahp-inspector/server.\n * boundary.test.ts enforces this at CI time.\n */\n\nexport type ReplayConfidence = \"complete\" | \"partial\" | \"unknown\";\nexport type StateResourceKind = \"root\" | \"session\" | \"terminal\" | \"unknown\";\n\nexport interface ReplayDiagnostic {\n readonly code: string;\n readonly severity: \"info\" | \"warning\" | \"error\";\n readonly eventIdx: number | null;\n readonly message: string;\n readonly details?: unknown;\n}\n\nexport interface ReplayClientIntent {\n readonly eventIdx: number;\n readonly ts: number;\n readonly clientSeq: number | null;\n readonly actionType: string | null;\n readonly resource: { readonly kind: StateResourceKind; readonly uri: string } | null;\n readonly ignored: boolean;\n readonly acceptedByServerSeq: number | null;\n}\n\nexport interface StateReplayCacheInfo {\n readonly hit: boolean;\n readonly size: number;\n readonly maxEntries: number;\n}\n\nexport interface StateAtResourceMetadata {\n readonly kind: StateResourceKind;\n readonly uri: string;\n readonly confidence: ReplayConfidence;\n readonly baselineEventIdx: number;\n readonly lastAppliedEventIdx: number;\n readonly baselineFromSeq: number | null;\n readonly lastServerSeq: number | null;\n readonly diagnosticCount: number;\n}\n\nexport interface StateAtSelectedResource extends StateAtResourceMetadata {\n readonly diagnostics: readonly ReplayDiagnostic[];\n readonly state: unknown;\n}\n\nexport interface StateAtSuccessResponse {\n readonly logKey: string;\n readonly targetIndex: number;\n readonly totalEvents: number;\n readonly confidence: ReplayConfidence;\n readonly diagnostics: readonly ReplayDiagnostic[];\n readonly resources: readonly StateAtResourceMetadata[];\n readonly selectedResource: StateAtSelectedResource | null;\n readonly intents: readonly ReplayClientIntent[];\n readonly cache: StateReplayCacheInfo;\n}\n\nexport type StateAtErrorCode = \"bad-request\" | \"no-active-log\" | \"not-found\" | \"log-mismatch\";\n\nexport interface StateAtErrorResponse {\n readonly code: StateAtErrorCode;\n readonly message: string;\n readonly totalEvents?: number;\n}\n\nexport type StateAtResponse = StateAtSuccessResponse | StateAtErrorResponse;\n\nexport interface FetchStateAtOptions {\n readonly logKey?: string | null;\n readonly resourceKind?: Exclude<StateResourceKind, \"unknown\">;\n readonly resourceUri?: string;\n readonly signal?: AbortSignal;\n}\n\nexport async function fetchStateAt(\n idx: number,\n options: FetchStateAtOptions = {},\n): Promise<StateAtSuccessResponse | null> {\n if (!Number.isInteger(idx) || idx < 0) {\n throw new Error(`Invalid state index: ${idx}`);\n }\n if ((options.resourceKind === undefined) !== (options.resourceUri === undefined)) {\n throw new Error(\"resourceKind and resourceUri must be provided together\");\n }\n\n const params = new URLSearchParams({ idx: String(idx) });\n if (options.logKey) params.set(\"logKey\", options.logKey);\n if (options.resourceKind !== undefined && options.resourceUri !== undefined) {\n params.set(\"resourceKind\", options.resourceKind);\n params.set(\"resourceUri\", options.resourceUri);\n }\n\n const init: RequestInit = options.signal !== undefined ? { signal: options.signal } : {};\n const resp = await fetch(`/api/state-at?${params.toString()}`, init);\n if (resp.status === 404) return null;\n if (!resp.ok) {\n const body = await readErrorBody(resp);\n const message = body?.message\n ? `${body.message} (${resp.status})`\n : `Failed to load state: ${resp.status}`;\n throw new Error(message);\n }\n return (await resp.json()) as StateAtSuccessResponse;\n}\n\nasync function readErrorBody(resp: Response): Promise<StateAtErrorResponse | null> {\n try {\n return (await resp.json()) as StateAtErrorResponse;\n } catch {\n return null;\n }\n}\n","import type { JSX } from \"react\";\nimport type { ReplayConfidence } from \"../../transport/state-client.js\";\n\ninterface StateConfidenceBadgeProps {\n readonly confidence: ReplayConfidence;\n readonly label: string;\n}\n\nconst CONFIDENCE_TEXT: Record<ReplayConfidence, string | null> = {\n complete: null,\n partial: \"Reconstruction may be incomplete.\",\n unknown: \"State cannot be treated as authoritative.\",\n};\n\nexport function StateConfidenceBadge({\n confidence,\n label,\n}: StateConfidenceBadgeProps): JSX.Element {\n const caution = CONFIDENCE_TEXT[confidence];\n\n return (\n <div className=\"state-confidence\" data-confidence={confidence}>\n <span className=\"state-confidence-label\">{label}</span>\n <span className=\"state-confidence-pill\">{toTitle(confidence)}</span>\n {caution && <span className=\"state-confidence-caution\">{caution}</span>}\n </div>\n );\n}\n\nfunction toTitle(value: ReplayConfidence): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n","import type { ReplayConfidence } from \"../../transport/state-client.js\";\nimport type { PinnedStatePoint } from \"./state-pins.js\";\n\nexport const MAX_CHANGED_TOP_LEVEL_PATHS = 25;\n\nexport interface StateComparisonResult {\n readonly from: PinnedStatePoint;\n readonly to: PinnedStatePoint;\n readonly changedPaths: readonly string[];\n readonly overflowCount: number;\n readonly same: boolean;\n readonly confidence: ReplayConfidence;\n}\n\nexport function comparePinnedStatePoints(\n from: PinnedStatePoint,\n to: PinnedStatePoint,\n): StateComparisonResult {\n const allChangedPaths = getChangedTopLevelPaths(from.state, to.state);\n const changedPaths = allChangedPaths.slice(0, MAX_CHANGED_TOP_LEVEL_PATHS);\n\n return {\n from,\n to,\n changedPaths,\n overflowCount: Math.max(0, allChangedPaths.length - changedPaths.length),\n same: allChangedPaths.length === 0,\n confidence: compareConfidence(from.confidence, to.confidence),\n };\n}\n\nfunction getChangedTopLevelPaths(from: unknown, to: unknown): string[] {\n if (isPlainComparableObject(from) && isPlainComparableObject(to)) {\n return Array.from(new Set([...Object.keys(from), ...Object.keys(to)])).filter(\n (key) => stableStringify(from[key]) !== stableStringify(to[key]),\n );\n }\n\n if (Array.isArray(from) && Array.isArray(to)) {\n if (from.length !== to.length) {\n return [\"length\"];\n }\n\n return from\n .map((value, index) => ({ index, value }))\n .filter(({ index, value }) => stableStringify(value) !== stableStringify(to[index]))\n .map(({ index }) => `[${index}]`);\n }\n\n return stableStringify(from) === stableStringify(to) ? [] : [\"(root)\"];\n}\n\nfunction isPlainComparableObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction stableStringify(value: unknown): string {\n try {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? \"[Circular or non-serializable value]\" : serialized;\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n}\n\nfunction compareConfidence(from: ReplayConfidence, to: ReplayConfidence): ReplayConfidence {\n if (from === \"complete\" && to === \"complete\") {\n return \"complete\";\n }\n if (from === \"partial\" || to === \"partial\") {\n return \"partial\";\n }\n return \"unknown\";\n}\n","import type { StateAtSelectedResource } from \"../../transport/state-client.js\";\n\nexport const MAX_PINNED_STATE_POINTS = 2;\n\nexport interface PinnedStatePoint {\n readonly id: string;\n readonly logKey: string;\n readonly targetIndex: number;\n readonly eventLabel: string;\n readonly eventTimestamp: number;\n readonly resourceKind: StateAtSelectedResource[\"kind\"];\n readonly resourceUri: string;\n readonly confidence: StateAtSelectedResource[\"confidence\"];\n readonly diagnosticCount: number;\n readonly baselineEventIdx: number;\n readonly lastAppliedEventIdx: number;\n readonly baselineFromSeq: number | null;\n readonly lastServerSeq: number | null;\n readonly state: unknown;\n}\n\ninterface CreatePinnedStatePointArgs {\n readonly logKey: string;\n readonly targetIndex: number;\n readonly eventLabel: string;\n readonly eventTimestamp: number;\n readonly resource: StateAtSelectedResource;\n}\n\nexport function createPinnedStatePoint({\n logKey,\n targetIndex,\n eventLabel,\n eventTimestamp,\n resource,\n}: CreatePinnedStatePointArgs): PinnedStatePoint {\n return {\n id: `${logKey}:${targetIndex}:${resource.kind}:${resource.uri}`,\n logKey,\n targetIndex,\n eventLabel,\n eventTimestamp,\n resourceKind: resource.kind,\n resourceUri: resource.uri,\n confidence: resource.confidence,\n diagnosticCount: resource.diagnosticCount,\n baselineEventIdx: resource.baselineEventIdx,\n lastAppliedEventIdx: resource.lastAppliedEventIdx,\n baselineFromSeq: resource.baselineFromSeq,\n lastServerSeq: resource.lastServerSeq,\n state: resource.state,\n };\n}\n\nexport function upsertPinnedStatePoint(\n existing: readonly PinnedStatePoint[],\n next: PinnedStatePoint,\n): readonly PinnedStatePoint[] {\n const duplicateIndex = existing.findIndex((point) => point.id === next.id);\n if (duplicateIndex >= 0) {\n return existing.map((point, index) => (index === duplicateIndex ? next : point));\n }\n\n return [...existing, next].slice(-MAX_PINNED_STATE_POINTS);\n}\n\nexport function removePinnedStatePoint(\n existing: readonly PinnedStatePoint[],\n id: string,\n): readonly PinnedStatePoint[] {\n return existing.filter((point) => point.id !== id);\n}\n\nexport function clearPinnedStatePoints(): readonly PinnedStatePoint[] {\n return [];\n}\n","import type { JSX } from \"react\";\nimport { StateConfidenceBadge } from \"./StateConfidenceBadge.js\";\nimport { comparePinnedStatePoints } from \"./state-compare.js\";\nimport { MAX_PINNED_STATE_POINTS, type PinnedStatePoint } from \"./state-pins.js\";\n\ninterface PinnedStatePanelProps {\n readonly points: readonly PinnedStatePoint[];\n readonly onRemove: (id: string) => void;\n readonly onClear: () => void;\n}\n\nexport function PinnedStatePanel({\n points,\n onRemove,\n onClear,\n}: PinnedStatePanelProps): JSX.Element {\n const comparison = getComparison(points);\n\n return (\n <section className=\"pinned-state-panel\" aria-label=\"Pinned state points\">\n <div className=\"pinned-state-header\">\n <div>\n <h4>Pinned state points</h4>\n <p>{`Pinned ${points.length}/${MAX_PINNED_STATE_POINTS}`}</p>\n </div>\n {points.length > 0 && (\n <button type=\"button\" className=\"state-secondary-button\" onClick={onClear}>\n Clear pinned states\n </button>\n )}\n </div>\n\n {points.length === 0 ? (\n <p className=\"pinned-state-empty\">\n Pin two state points to compare before/after reducer state.\n </p>\n ) : (\n <ul className=\"pinned-state-list\">\n {points.map((point) => (\n <li key={point.id} className=\"pinned-state-card\">\n <div className=\"pinned-state-meta\">\n <span className=\"mono\">#{point.targetIndex}</span>\n <span>{point.eventLabel}</span>\n <span>{formatTimestamp(point.eventTimestamp)}</span>\n </div>\n <div className=\"state-resource-main\">\n <span className=\"state-resource-kind\">{point.resourceKind}</span>\n <span className=\"state-resource-uri\">{point.resourceUri}</span>\n </div>\n <StateConfidenceBadge confidence={point.confidence} label=\"Confidence\" />\n <div className=\"pinned-state-meta\">\n <span>{point.diagnosticCount} diagnostics</span>\n <span>baseline #{point.baselineEventIdx}</span>\n <span>applied #{point.lastAppliedEventIdx}</span>\n <span>baseline seq {point.baselineFromSeq ?? \"—\"}</span>\n <span>server seq {point.lastServerSeq ?? \"—\"}</span>\n </div>\n <div className=\"pinned-state-actions\">\n <button\n type=\"button\"\n className=\"state-secondary-button\"\n onClick={() => onRemove(point.id)}\n >\n Remove pinned state\n </button>\n </div>\n </li>\n ))}\n </ul>\n )}\n {comparison && (\n <section className=\"state-comparison\" aria-label=\"Pinned comparison\">\n <div className=\"state-comparison-header\">\n <h4>Pinned comparison</h4>\n <StateConfidenceBadge\n confidence={comparison.confidence}\n label=\"Comparison confidence\"\n />\n </div>\n <div className=\"state-comparison-points\">\n <ComparisonPoint label=\"From\" point={comparison.from} />\n <ComparisonPoint label=\"To\" point={comparison.to} />\n </div>\n {comparison.confidence !== \"complete\" && (\n <p className=\"state-comparison-warning\">\n Comparison may be incomplete because at least one pinned state is not complete.\n </p>\n )}\n {comparison.same ? (\n <p className=\"state-comparison-empty\">No top-level changes detected.</p>\n ) : (\n <div className=\"state-comparison-paths\">\n <span className=\"state-section-label\">Changed top-level paths</span>\n <ul>\n {comparison.changedPaths.map((path) => (\n <li key={path}>{path}</li>\n ))}\n </ul>\n {comparison.overflowCount > 0 && <p>{`and ${comparison.overflowCount} more`}</p>}\n </div>\n )}\n </section>\n )}\n </section>\n );\n}\n\nfunction getComparison(points: readonly PinnedStatePoint[]) {\n if (points.length !== MAX_PINNED_STATE_POINTS) {\n return null;\n }\n\n const [from, to] = points;\n if (!from || !to) {\n return null;\n }\n\n return comparePinnedStatePoints(from, to);\n}\n\nfunction ComparisonPoint({\n label,\n point,\n}: {\n readonly label: \"From\" | \"To\";\n readonly point: PinnedStatePoint;\n}): JSX.Element {\n return (\n <div>\n <span className=\"state-section-label\">{`${label} #${point.targetIndex}`}</span>\n <span>{point.eventLabel}</span>\n <span>\n {point.resourceKind} <span className=\"state-resource-uri\">{point.resourceUri}</span>\n </span>\n </div>\n );\n}\n\nfunction formatTimestamp(ts: number): string {\n if (!Number.isFinite(ts)) return \"unknown time\";\n return new Date(ts).toLocaleString();\n}\n","import { ChevronDown } from \"lucide-react\";\nimport { type JSX, useEffect, useRef, useState } from \"react\";\nimport type { StateAtSelectedResource } from \"../../transport/state-client.js\";\nimport { copyText } from \"./clipboard.js\";\n\ninterface StateCopyMenuProps {\n readonly targetIndex: number;\n readonly resource: StateAtSelectedResource;\n readonly onCopy: (message: string, ok: boolean) => void;\n}\n\nexport function StateCopyMenu({ targetIndex, resource, onCopy }: StateCopyMenuProps): JSX.Element {\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n function handler(e: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n async function handleCopy(getContent: () => string) {\n setOpen(false);\n const text = getContent();\n try {\n await copyText(text);\n onCopy(`Copied ${text.length} chars`, true);\n } catch {\n onCopy(\"Copy failed. Select and copy manually.\", false);\n }\n }\n\n const menuItems = [\n { label: \"Copy state raw JSON\", action: () => stringifyState(resource.state) },\n { label: \"Copy state pretty JSON\", action: () => stringifyState(resource.state, 2) },\n { label: \"Copy state summary\", action: () => buildStateSummary(targetIndex, resource) },\n ];\n\n return (\n <div ref={menuRef} className=\"state-copy-menu\">\n <button\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n onClick={() => setOpen((current) => !current)}\n className=\"state-copy-button\"\n >\n Copy state <ChevronDown size={12} />\n </button>\n {open && (\n <div role=\"menu\" className=\"state-copy-menu-list\">\n {menuItems.map((item) => (\n <button\n key={item.label}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => handleCopy(item.action)}\n className=\"state-copy-menu-item\"\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction stringifyState(state: unknown, space?: number): string {\n try {\n return JSON.stringify(state, null, space);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n}\n\nfunction buildStateSummary(targetIndex: number, resource: StateAtSelectedResource): string {\n return [\n `target=#${targetIndex}`,\n `resource=${resource.kind} ${resource.uri}`,\n `confidence=${resource.confidence}`,\n `diagnostics=${resource.diagnostics.length}`,\n `baselineEvent=#${resource.baselineEventIdx}`,\n `lastAppliedEvent=#${resource.lastAppliedEventIdx}`,\n `baselineSeq=${resource.baselineFromSeq ?? \"—\"}`,\n `lastServerSeq=${resource.lastServerSeq ?? \"—\"}`,\n ].join(\"\\n\");\n}\n","import type { JSX } from \"react\";\nimport type {\n ReplayClientIntent,\n ReplayDiagnostic,\n StateReplayCacheInfo,\n} from \"../../transport/state-client.js\";\n\ninterface StateDiagnosticsPanelProps {\n readonly aggregateDiagnostics: readonly ReplayDiagnostic[];\n readonly selectedDiagnostics: readonly ReplayDiagnostic[];\n readonly intents: readonly ReplayClientIntent[];\n readonly cache: StateReplayCacheInfo;\n}\n\nexport function StateDiagnosticsPanel({\n aggregateDiagnostics,\n selectedDiagnostics,\n intents,\n cache,\n}: StateDiagnosticsPanelProps): JSX.Element {\n const hasDiagnostics = aggregateDiagnostics.length > 0 || selectedDiagnostics.length > 0;\n\n return (\n <section className=\"state-diagnostics\" aria-label=\"Replay diagnostics\">\n <div className=\"state-diagnostics-header\">\n <h4>Replay diagnostics</h4>\n <span>\n cache {cache.hit ? \"hit\" : \"miss\"} · {cache.size}/{cache.maxEntries}\n </span>\n <span>{intents.length} client intents</span>\n </div>\n {!hasDiagnostics ? (\n <p className=\"state-diagnostics-empty\">No replay diagnostics for this state point.</p>\n ) : (\n <div className=\"state-diagnostics-groups\">\n <DiagnosticGroup title=\"Aggregate\" diagnostics={aggregateDiagnostics} />\n <DiagnosticGroup title=\"Selected resource\" diagnostics={selectedDiagnostics} />\n </div>\n )}\n </section>\n );\n}\n\nfunction DiagnosticGroup({\n title,\n diagnostics,\n}: {\n readonly title: string;\n readonly diagnostics: readonly ReplayDiagnostic[];\n}): JSX.Element {\n if (diagnostics.length === 0) {\n return (\n <div className=\"state-diagnostic-group\">\n <h5>{title}</h5>\n <p className=\"state-diagnostics-empty\">No diagnostics.</p>\n </div>\n );\n }\n\n return (\n <div className=\"state-diagnostic-group\">\n <h5>{title}</h5>\n <ul>\n {diagnostics.map((diagnostic) => (\n <li\n key={`${title}-${diagnostic.code}-${diagnostic.eventIdx ?? \"none\"}-${diagnostic.message}`}\n >\n <span className=\"state-diagnostic-meta\">\n <span data-severity={diagnostic.severity}>{diagnostic.severity}</span>\n <span>{diagnostic.code}</span>\n {diagnostic.eventIdx !== null && <span>event #{diagnostic.eventIdx}</span>}\n </span>\n <span className=\"state-diagnostic-message\">{diagnostic.message}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport type { StateAtResourceMetadata, StateResourceKind } from \"../../transport/state-client.js\";\n\nexport type SelectableStateResourceKind = Exclude<StateResourceKind, \"unknown\">;\nexport type SelectableStateResource = StateAtResourceMetadata & {\n readonly kind: SelectableStateResourceKind;\n};\n\ninterface StateResourceSelectorProps {\n readonly resources: readonly StateAtResourceMetadata[];\n readonly selectedKey: string | null;\n readonly onSelect: (resource: SelectableStateResource) => void;\n}\n\nexport function isSelectableResource(\n resource: StateAtResourceMetadata,\n): resource is SelectableStateResource {\n return resource.kind === \"root\" || resource.kind === \"session\" || resource.kind === \"terminal\";\n}\n\nexport function stateResourceKey(resource: StateAtResourceMetadata): string {\n return `${resource.kind}\\u0000${resource.uri}`;\n}\n\nexport function chooseDefaultResource(\n resources: readonly StateAtResourceMetadata[],\n): SelectableStateResource | null {\n const selectable = resources.filter(isSelectableResource);\n return selectable.find((resource) => resource.confidence === \"complete\") ?? selectable[0] ?? null;\n}\n\nexport function StateResourceSelector({\n resources,\n selectedKey,\n onSelect,\n}: StateResourceSelectorProps): JSX.Element {\n return (\n <fieldset className=\"state-resource-selector\">\n <legend className=\"state-section-label\">Resources</legend>\n <div className=\"state-resource-list\">\n {resources.map((resource) => {\n const key = stateResourceKey(resource);\n const selectable = isSelectableResource(resource);\n const selected = selectable && key === selectedKey;\n const label = `${resource.kind} ${resource.uri} ${resource.confidence} confidence ${resource.diagnosticCount} diagnostics`;\n\n if (!selectable) {\n return (\n <div\n key={key}\n className=\"state-resource-option state-resource-option-disabled\"\n aria-disabled=\"true\"\n >\n <ResourceLabel resource={resource} />\n <span className=\"state-resource-unavailable\">Unavailable kind</span>\n </div>\n );\n }\n\n return (\n <button\n key={key}\n type=\"button\"\n className=\"state-resource-option\"\n aria-pressed={selected}\n aria-label={label}\n onClick={() => onSelect(resource)}\n >\n <ResourceLabel resource={resource} />\n </button>\n );\n })}\n </div>\n </fieldset>\n );\n}\n\nfunction ResourceLabel({ resource }: { readonly resource: StateAtResourceMetadata }): JSX.Element {\n return (\n <>\n <span className=\"state-resource-main\">\n <span className=\"state-resource-kind\">{resource.kind}</span>\n <span className=\"state-resource-uri\">{resource.uri}</span>\n </span>\n <span className=\"state-resource-meta\">\n <span data-confidence={resource.confidence}>{resource.confidence}</span>\n <span>{resource.diagnosticCount} diagnostics</span>\n </span>\n </>\n );\n}\n","import type { JSX } from \"react\";\nimport type { StateAtSelectedResource } from \"../../transport/state-client.js\";\n\ninterface StateSummaryViewProps {\n readonly resource: StateAtSelectedResource;\n}\n\nexport function StateSummaryView({ resource }: StateSummaryViewProps): JSX.Element {\n const shape = describeStateShape(resource.state);\n\n return (\n <div className=\"state-summary-view\" data-testid=\"state-summary-view\">\n <p className=\"state-summary-warning\">\n Reconstructed state is replay-derived. Confidence and diagnostics describe how complete this\n point-in-time view is.\n </p>\n <dl className=\"state-summary-grid\">\n <dt>Resource</dt>\n <dd>\n {resource.kind} <span className=\"state-resource-uri\">{resource.uri}</span>\n </dd>\n <dt>Confidence</dt>\n <dd data-confidence={resource.confidence}>{resource.confidence}</dd>\n <dt>Baseline event</dt>\n <dd>#{resource.baselineEventIdx}</dd>\n <dt>Last applied event</dt>\n <dd>#{resource.lastAppliedEventIdx}</dd>\n <dt>Baseline sequence</dt>\n <dd>{resource.baselineFromSeq ?? \"—\"}</dd>\n <dt>Last server sequence</dt>\n <dd>{resource.lastServerSeq ?? \"—\"}</dd>\n <dt>Diagnostics</dt>\n <dd>{resource.diagnostics.length}</dd>\n <dt>Top-level shape</dt>\n <dd>{shape.summary}</dd>\n </dl>\n {shape.details.length > 0 && (\n <ul className=\"state-shape-details\" aria-label=\"Top-level state keys\">\n {shape.details.map((detail) => (\n <li key={detail}>{detail}</li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nfunction describeStateShape(state: unknown): { summary: string; details: string[] } {\n if (Array.isArray(state)) {\n return { summary: `array with ${state.length} items`, details: [] };\n }\n if (state && typeof state === \"object\") {\n const keys = Object.keys(state as Record<string, unknown>);\n return {\n summary: `object with ${keys.length} top-level keys`,\n details: keys.slice(0, 12),\n };\n }\n if (state === null) {\n return { summary: \"null\", details: [] };\n }\n const type = typeof state;\n return { summary: `${type}: ${previewValue(state)}`, details: [] };\n}\n\nfunction previewValue(value: unknown): string {\n const text = (() => {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n })();\n return text.length > 80 ? `${text.slice(0, 77)}...` : text;\n}\n","import { Loader2 } from \"lucide-react\";\nimport { type JSX, useCallback, useEffect, useRef, useState } from \"react\";\nimport { fetchStateAt, type StateAtSuccessResponse } from \"../../transport/state-client.js\";\nimport { CopyToast } from \"./CopyToast.js\";\nimport { PinnedStatePanel } from \"./PinnedStatePanel.js\";\nimport { PrettyJsonView } from \"./PrettyJsonView.js\";\nimport { RawJsonView } from \"./RawJsonView.js\";\nimport { StateConfidenceBadge } from \"./StateConfidenceBadge.js\";\nimport { StateCopyMenu } from \"./StateCopyMenu.js\";\nimport { StateDiagnosticsPanel } from \"./StateDiagnosticsPanel.js\";\nimport {\n chooseDefaultResource,\n type SelectableStateResource,\n StateResourceSelector,\n stateResourceKey,\n} from \"./StateResourceSelector.js\";\nimport { StateSummaryView } from \"./StateSummaryView.js\";\nimport {\n clearPinnedStatePoints,\n createPinnedStatePoint,\n type PinnedStatePoint,\n removePinnedStatePoint,\n upsertPinnedStatePoint,\n} from \"./state-pins.js\";\n\ninterface StateInspectorPanelProps {\n readonly idx: number;\n readonly logKey: string | null;\n readonly eventLabel?: string;\n readonly eventTimestamp?: number;\n readonly pinnedPoints?: readonly PinnedStatePoint[];\n readonly onPinnedPointsChange?: (points: readonly PinnedStatePoint[]) => void;\n}\n\ntype LoadState =\n | { readonly status: \"idle\"; readonly data: null; readonly error: null }\n | { readonly status: \"loading\"; readonly data: null; readonly error: null }\n | { readonly status: \"error\"; readonly data: null; readonly error: string }\n | { readonly status: \"ok\"; readonly data: StateAtSuccessResponse; readonly error: null };\n\ntype StateTab = \"summary\" | \"pretty\" | \"raw\";\n\ntype SelectedLoadState =\n | { readonly status: \"idle\"; readonly data: null; readonly error: null }\n | { readonly status: \"loading\"; readonly data: null; readonly error: null }\n | { readonly status: \"error\"; readonly data: null; readonly error: string }\n | {\n readonly status: \"ok\";\n readonly data: NonNullable<StateAtSuccessResponse[\"selectedResource\"]>;\n readonly error: null;\n };\n\nconst IDLE_STATE: LoadState = { status: \"idle\", data: null, error: null };\nconst IDLE_SELECTED_STATE: SelectedLoadState = { status: \"idle\", data: null, error: null };\n\nexport function StateInspectorPanel({\n idx,\n logKey,\n eventLabel = \"unknown event\",\n eventTimestamp = Number.NaN,\n pinnedPoints: controlledPinnedPoints,\n onPinnedPointsChange,\n}: StateInspectorPanelProps): JSX.Element {\n const [open, setOpen] = useState(false);\n const [loadState, setLoadState] = useState<LoadState>(IDLE_STATE);\n const [selectedKey, setSelectedKey] = useState<string | null>(null);\n const [selectedLoadState, setSelectedLoadState] =\n useState<SelectedLoadState>(IDLE_SELECTED_STATE);\n const [localPinnedPoints, setLocalPinnedPoints] = useState<readonly PinnedStatePoint[]>([]);\n const pinnedPoints = controlledPinnedPoints ?? localPinnedPoints;\n const setPinnedPoints = onPinnedPointsChange ?? setLocalPinnedPoints;\n const [stateTab, setStateTab] = useState<StateTab>(\"summary\");\n const [toast, setToast] = useState<{ message: string; kind: \"success\" | \"error\" } | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const selectedAbortRef = useRef<AbortController | null>(null);\n const requestKey = `${idx}\\u0000${logKey ?? \"\"}`;\n const lastRequestKeyRef = useRef(requestKey);\n const lastLogKeyRef = useRef(logKey);\n\n const loadSelectedResource = useCallback(\n async (resource: SelectableStateResource) => {\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n const controller = new AbortController();\n selectedAbortRef.current = controller;\n setSelectedLoadState({ status: \"loading\", data: null, error: null });\n\n try {\n const data = await fetchStateAt(idx, {\n logKey,\n resourceKind: resource.kind,\n resourceUri: resource.uri,\n signal: controller.signal,\n });\n if (controller.signal.aborted) return;\n if (data?.selectedResource) {\n setLoadState((current) =>\n current.status === \"ok\"\n ? { status: \"ok\", data: { ...data, resources: current.data.resources }, error: null }\n : { status: \"ok\", data, error: null },\n );\n setSelectedLoadState({ status: \"ok\", data: data.selectedResource, error: null });\n } else {\n setSelectedLoadState({\n status: \"error\",\n data: null,\n error: `No reconstructed ${resource.kind} state was returned for ${resource.uri}.`,\n });\n }\n } catch (err) {\n if (controller.signal.aborted) return;\n const message = err instanceof Error ? err.message : String(err);\n setSelectedLoadState({ status: \"error\", data: null, error: message });\n }\n },\n [idx, logKey],\n );\n\n const loadMetadata = useCallback(async () => {\n if (abortRef.current) abortRef.current.abort();\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n setLoadState({ status: \"loading\", data: null, error: null });\n setSelectedKey(null);\n setSelectedLoadState(IDLE_SELECTED_STATE);\n\n try {\n const data = await fetchStateAt(idx, { logKey, signal: controller.signal });\n if (controller.signal.aborted) return;\n if (data === null) {\n setLoadState({\n status: \"error\",\n data: null,\n error: `Event #${idx} not found while loading reconstructed state.`,\n });\n } else {\n setLoadState({ status: \"ok\", data, error: null });\n const defaultResource = chooseDefaultResource(data.resources);\n setSelectedKey(defaultResource ? stateResourceKey(defaultResource) : null);\n setStateTab(\"summary\");\n if (defaultResource) {\n void loadSelectedResource(defaultResource);\n }\n }\n } catch (err) {\n if (controller.signal.aborted) return;\n const message = err instanceof Error ? err.message : String(err);\n setLoadState({ status: \"error\", data: null, error: message });\n }\n }, [idx, logKey, loadSelectedResource]);\n\n useEffect(() => {\n if (lastRequestKeyRef.current === requestKey) return;\n lastRequestKeyRef.current = requestKey;\n setOpen(false);\n setLoadState(IDLE_STATE);\n setSelectedKey(null);\n setSelectedLoadState(IDLE_SELECTED_STATE);\n setStateTab(\"summary\");\n if (abortRef.current) abortRef.current.abort();\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n }, [requestKey]);\n\n useEffect(() => {\n if (lastLogKeyRef.current === logKey) return;\n lastLogKeyRef.current = logKey;\n setPinnedPoints(clearPinnedStatePoints());\n }, [logKey, setPinnedPoints]);\n\n useEffect(() => {\n return () => {\n if (abortRef.current) abortRef.current.abort();\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n };\n }, []);\n\n function handleOpen(): void {\n setOpen((current) => {\n if (!current) void loadMetadata();\n return !current;\n });\n }\n\n function handleRetry(): void {\n void loadMetadata();\n }\n\n function handleSelectResource(resource: SelectableStateResource): void {\n setSelectedKey(stateResourceKey(resource));\n setStateTab(\"summary\");\n void loadSelectedResource(resource);\n }\n\n function handlePinStatePoint(resource: NonNullable<StateAtSuccessResponse[\"selectedResource\"]>) {\n if (!logKey) return;\n const point = createPinnedStatePoint({\n logKey,\n targetIndex: idx,\n eventLabel,\n eventTimestamp,\n resource,\n });\n setPinnedPoints(upsertPinnedStatePoint(pinnedPoints, point));\n }\n\n return (\n <section\n data-testid=\"state-inspector-panel\"\n aria-label=\"Reconstructed state inspector\"\n className=\"state-inspector\"\n >\n <div className=\"state-inspector-header\">\n <div>\n <h3>Reconstructed state</h3>\n <p>Replay reducer state at event #{idx}.</p>\n </div>\n <button\n type=\"button\"\n onClick={handleOpen}\n aria-expanded={open}\n className=\"state-action-button\"\n >\n State at this point\n </button>\n </div>\n\n {open && (\n <div className=\"state-inspector-body\">\n {loadState.status === \"loading\" && (\n <div data-testid=\"state-inspector-loading\" className=\"state-inline-status\">\n <Loader2 size={14} className=\"spin\" />\n Loading reconstructed state metadata…\n </div>\n )}\n\n {loadState.status === \"error\" && (\n <div data-testid=\"state-inspector-error\" className=\"state-error\">\n <p>{loadState.error}</p>\n <button type=\"button\" onClick={handleRetry} className=\"state-secondary-button\">\n Retry state lookup\n </button>\n </div>\n )}\n\n {loadState.status === \"ok\" && (\n <>\n <StateMetadataSummary data={loadState.data} />\n {loadState.data.resources.length === 0 ? (\n <div className=\"state-empty\" data-testid=\"state-inspector-empty\">\n No reconstructed resources at this point.\n </div>\n ) : (\n <StateResourceSelector\n resources={loadState.data.resources}\n selectedKey={selectedKey}\n onSelect={handleSelectResource}\n />\n )}\n <SelectedStateViews\n targetIndex={loadState.data.targetIndex}\n loadState={selectedLoadState}\n activeTab={stateTab}\n onTabChange={setStateTab}\n onCopy={(message, ok) => setToast({ message, kind: ok ? \"success\" : \"error\" })}\n onPin={handlePinStatePoint}\n />\n <StateDiagnosticsPanel\n aggregateDiagnostics={loadState.data.diagnostics}\n selectedDiagnostics={\n selectedLoadState.status === \"ok\" ? selectedLoadState.data.diagnostics : []\n }\n intents={loadState.data.intents}\n cache={loadState.data.cache}\n />\n <PinnedStatePanel\n points={pinnedPoints}\n onRemove={(id) => setPinnedPoints(removePinnedStatePoint(pinnedPoints, id))}\n onClear={() => setPinnedPoints(clearPinnedStatePoints())}\n />\n </>\n )}\n </div>\n )}\n {toast && (\n <CopyToast key={toast.message + Date.now()} message={toast.message} kind={toast.kind} />\n )}\n </section>\n );\n}\n\nfunction StateMetadataSummary({ data }: { readonly data: StateAtSuccessResponse }): JSX.Element {\n return (\n <div data-testid=\"state-inspector-metadata\" className=\"state-metadata-summary\">\n <StateConfidenceBadge confidence={data.confidence} label=\"Aggregate confidence\" />\n <dl>\n <dt>Target</dt>\n <dd>#{data.targetIndex}</dd>\n <dt>Confidence</dt>\n <dd data-confidence={data.confidence}>{data.confidence}</dd>\n <dt>Resources</dt>\n <dd>{data.resources.length}</dd>\n </dl>\n </div>\n );\n}\n\nfunction SelectedStateViews({\n targetIndex,\n loadState,\n activeTab,\n onTabChange,\n onCopy,\n onPin,\n}: {\n readonly targetIndex: number;\n readonly loadState: SelectedLoadState;\n readonly activeTab: StateTab;\n readonly onTabChange: (tab: StateTab) => void;\n readonly onCopy: (message: string, ok: boolean) => void;\n readonly onPin: (resource: NonNullable<StateAtSuccessResponse[\"selectedResource\"]>) => void;\n}): JSX.Element | null {\n if (loadState.status === \"idle\") return null;\n if (loadState.status === \"loading\") {\n return (\n <div data-testid=\"state-resource-loading\" className=\"state-inline-status\">\n <Loader2 size={14} className=\"spin\" />\n Loading selected resource state…\n </div>\n );\n }\n if (loadState.status === \"error\") {\n return (\n <div data-testid=\"state-resource-error\" className=\"state-error\">\n <p>{loadState.error}</p>\n </div>\n );\n }\n\n const resource = loadState.data;\n return (\n <div className=\"state-view-shell\" data-testid=\"state-view-shell\">\n <div className=\"state-view-header\">\n <StateConfidenceBadge confidence={resource.confidence} label=\"Selected resource\" />\n <div className=\"state-view-actions\">\n <button type=\"button\" className=\"state-copy-button\" onClick={() => onPin(resource)}>\n Pin state point\n </button>\n <StateCopyMenu targetIndex={targetIndex} resource={resource} onCopy={onCopy} />\n </div>\n </div>\n <div className=\"state-tabs\" role=\"tablist\" aria-label=\"Reconstructed state views\">\n {([\"summary\", \"pretty\", \"raw\"] as const).map((tab) => (\n <button\n key={tab}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === tab}\n className=\"state-tab\"\n onClick={() => onTabChange(tab)}\n >\n {tab === \"summary\" ? \"Summary\" : tab === \"pretty\" ? \"Pretty JSON\" : \"Raw JSON\"}\n </button>\n ))}\n </div>\n <div className=\"state-tabpanel\" role=\"tabpanel\">\n {activeTab === \"summary\" && <StateSummaryView resource={resource} />}\n {activeTab === \"pretty\" && (\n <PrettyJsonView data={resource.state} onOpenRaw={() => onTabChange(\"raw\")} />\n )}\n {activeTab === \"raw\" && <RawJsonView data={resource.state} />}\n </div>\n </div>\n );\n}\n","/**\n * DetailPanel — root orchestrator for the event detail view.\n *\n * Reads selectedIdx from the Zustand store. On selectedIdx change,\n * fetches via fetchEvent (with AbortController for T-03-04-04), and\n * updates selectedDetail with loading/error/data transitions.\n *\n * States:\n * - selectedIdx === null → empty state (§7.2 copy)\n * - loading → spinner (§7.3)\n * - error → retry button (§7.4)\n * - populated → AuthFailureBanner? + Summary + AhpFieldStrip + tabs + JSON + PrivacyCaption\n *\n * No raw #hex literals. No dangerouslySetInnerHTML.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport { Loader2 } from \"lucide-react\";\nimport { type JSX, useCallback, useEffect, useRef, useState } from \"react\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { type DetailResponse, fetchEvent } from \"../../transport/http-client.js\";\nimport { AhpFieldStrip } from \"./AhpFieldStrip.js\";\nimport { AuthFailureBanner } from \"./AuthFailureBanner.js\";\nimport { CopyMenu } from \"./CopyMenu.js\";\nimport { CopyToast } from \"./CopyToast.js\";\nimport { DetailCorrelation } from \"./DetailCorrelation.js\";\nimport { DetailResizeHandle } from \"./DetailResizeHandle.js\";\nimport { DetailSummary } from \"./DetailSummary.js\";\nimport { DetailTabs } from \"./DetailTabs.js\";\nimport { DETAIL_MAX_WIDTH, DETAIL_MIN_WIDTH } from \"./detail-layout.js\";\nimport { PrettyJsonView } from \"./PrettyJsonView.js\";\nimport { PrivacyCaption } from \"./PrivacyCaption.js\";\nimport { RawJsonView } from \"./RawJsonView.js\";\nimport { StateInspectorPanel } from \"./StateInspectorPanel.js\";\nimport { clearPinnedStatePoints, type PinnedStatePoint } from \"./state-pins.js\";\n\ninterface LoadState {\n status: \"idle\" | \"loading\" | \"error\" | \"ok\";\n detail: DetailResponse | null;\n error: string | null;\n}\n\ninterface DetailPanelProps {\n showResizeHandle?: boolean;\n}\n\nexport function DetailPanel({\n showResizeHandle = true,\n}: DetailPanelProps = {}): JSX.Element | null {\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const logKey = useAppStore((s) => s.logKey);\n const rows = useAppStore((s) => s.rows);\n const detailWidth = useAppStore((s) => s.detailWidth);\n const setDetailWidth = useAppStore((s) => s.setDetailWidth);\n\n const [loadState, setLoadState] = useState<LoadState>({\n status: \"idle\",\n detail: null,\n error: null,\n });\n const [activeTab, setActiveTab] = useState<\"pretty\" | \"raw\">(\"pretty\");\n const [pinnedPoints, setPinnedPoints] = useState<readonly PinnedStatePoint[]>([]);\n const [toast, setToast] = useState<{ message: string; kind: \"success\" | \"error\" } | null>(null);\n const retryKey = useRef(0);\n const abortRef = useRef<AbortController | null>(null);\n const pinnedLogKeyRef = useRef(logKey);\n\n const load = useCallback(async (idx: number, activeLogKey: string | null) => {\n // Abort any prior in-flight request (T-03-04-04)\n if (abortRef.current) {\n abortRef.current.abort();\n }\n const controller = new AbortController();\n abortRef.current = controller;\n\n setLoadState({ status: \"loading\", detail: null, error: null });\n\n try {\n const detail = await fetchEvent(idx, controller.signal, activeLogKey);\n if (controller.signal.aborted) return;\n if (detail === null) {\n setLoadState({ status: \"error\", detail: null, error: `Event #${idx} not found (404)` });\n } else {\n setLoadState({ status: \"ok\", detail, error: null });\n }\n } catch (err) {\n if (controller.signal.aborted) return;\n const msg = err instanceof Error ? err.message : String(err);\n setLoadState({ status: \"error\", detail: null, error: msg });\n }\n }, []);\n\n useEffect(() => {\n if (selectedIdx === null) {\n setLoadState({ status: \"idle\", detail: null, error: null });\n if (abortRef.current) abortRef.current.abort();\n return;\n }\n void load(selectedIdx, logKey);\n return () => {\n if (abortRef.current) abortRef.current.abort();\n };\n }, [selectedIdx, logKey, load]);\n\n useEffect(() => {\n if (pinnedLogKeyRef.current === logKey) return;\n pinnedLogKeyRef.current = logKey;\n setPinnedPoints(clearPinnedStatePoints());\n }, [logKey]);\n\n function handleRetry() {\n if (selectedIdx !== null) {\n retryKey.current += 1;\n void load(selectedIdx, logKey);\n }\n }\n\n // ── Empty state ─────────────────────────────────────────────────────────────\n if (selectedIdx === null) {\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n flex: `0 0 ${detailWidth}px`,\n width: `${detailWidth}px`,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-5)\",\n color: \"var(--color-text-muted)\",\n textAlign: \"center\",\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: \"var(--text-heading-size)\",\n fontFamily: \"var(--font-sans)\",\n fontWeight: \"var(--weight-semibold)\",\n color: \"var(--color-text)\",\n }}\n >\n No event selected\n </h2>\n <p\n style={{\n margin: 0,\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n Select a row in the timeline to inspect its details.\n </p>\n </div>\n </aside>\n );\n }\n\n // ── Loading state ────────────────────────────────────────────────────────────\n if (loadState.status === \"loading\") {\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n flex: `0 0 ${detailWidth}px`,\n width: `${detailWidth}px`,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n <div\n data-testid=\"detail-loading\"\n style={{\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n }}\n >\n <Loader2 size={16} style={{ animation: \"spin 1s linear infinite\" }} />\n Loading event #{selectedIdx}…\n </div>\n </aside>\n );\n }\n\n // ── Error state ──────────────────────────────────────────────────────────────\n if (loadState.status === \"error\") {\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n flex: `0 0 ${detailWidth}px`,\n width: `${detailWidth}px`,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n <div\n data-testid=\"detail-error\"\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"var(--space-3)\",\n padding: \"var(--space-5)\",\n color: \"var(--color-text-muted)\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n color: \"var(--color-destructive)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n }}\n >\n {loadState.error ?? \"Failed to load event.\"}\n </p>\n <button\n type=\"button\"\n onClick={handleRetry}\n style={{\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: \"4px\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n padding: \"var(--space-2) var(--space-3)\",\n }}\n >\n Retry event details\n </button>\n </div>\n </aside>\n );\n }\n\n // ── Populated state ──────────────────────────────────────────────────────────\n const detail = loadState.detail;\n if (!detail) return null;\n\n const event = detail.event as AhpEvent;\n const pairEvent = detail.pair as AhpEvent | null;\n const row = selectedIdx !== null ? (rows[selectedIdx] ?? null) : null;\n const isAuthFailure = row?.isAuthFailure ?? false;\n\n // WR-03: Prefer live row values for status/latencyMs so that SSE patch updates\n // (pending → ok) are reflected immediately, even on a cache hit.\n const liveStatus = (row?.status ?? detail.status) as Status;\n const liveLatencyMs = row?.latencyMs ?? detail.latencyMs;\n\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n flex: `0 0 ${detailWidth}px`,\n width: `${detailWidth}px`,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n\n {/* Auth failure banner */}\n {isAuthFailure && (\n <AuthFailureBanner\n {...(row?.errorCode !== null && row?.errorCode !== undefined\n ? { code: row.errorCode }\n : {})}\n />\n )}\n\n {/* Summary */}\n <DetailSummary event={event} latencyMs={liveLatencyMs} status={liveStatus} />\n\n {/* Correlation metadata */}\n <DetailCorrelation\n currentIdx={selectedIdx}\n event={event}\n pairEvent={pairEvent}\n pairIdx={detail.pairIdx}\n latencyMs={liveLatencyMs}\n status={liveStatus}\n />\n\n {/* AHP field strip */}\n {row && <AhpFieldStrip row={row} rawEvent={event} />}\n\n {/* Scrollable lower region: state inspector + tabs + JSON + privacy share one scroll */}\n <div\n data-testid=\"detail-scroll-region\"\n style={{\n flex: 1,\n minHeight: 0,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <StateInspectorPanel\n idx={selectedIdx}\n logKey={logKey}\n eventLabel={event.method ?? event.actionType ?? event.kind}\n eventTimestamp={event.ts}\n pinnedPoints={pinnedPoints}\n onPinnedPointsChange={setPinnedPoints}\n />\n\n {/* Tab strip + copy menu header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingRight: \"var(--space-3)\",\n borderBottom: \"1px solid var(--color-border)\",\n position: \"sticky\",\n top: 0,\n background: \"var(--color-surface)\",\n zIndex: 1,\n }}\n >\n <DetailTabs active={activeTab} onChange={setActiveTab} />\n <CopyMenu\n event={event}\n pairEvent={pairEvent}\n pairIdx={detail.pairIdx}\n latencyMs={liveLatencyMs}\n status={liveStatus}\n onCopy={(msg, ok) => setToast({ message: msg, kind: ok ? \"success\" : \"error\" })}\n />\n </div>\n\n {/* JSON view — natural height inside the shared scroller */}\n <div role=\"tabpanel\" style={{ display: \"flex\", flexDirection: \"column\" }}>\n {activeTab === \"pretty\" ? (\n <PrettyJsonView data={event.raw} onOpenRaw={() => setActiveTab(\"raw\")} />\n ) : (\n <RawJsonView data={event.raw} />\n )}\n </div>\n\n {/* Privacy caption */}\n <PrivacyCaption />\n </div>\n\n {/* Copy toast */}\n {toast && (\n <CopyToast key={toast.message + Date.now()} message={toast.message} kind={toast.kind} />\n )}\n </aside>\n );\n}\n","import { X } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface ActiveChipProps {\n label: string;\n onDismiss(): void;\n ariaLabel: string;\n}\n\nexport function ActiveChip({ label, onDismiss, ariaLabel }: ActiveChipProps): JSX.Element {\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 22,\n paddingLeft: \"var(--space-2)\",\n paddingRight: \"var(--space-1)\",\n background: \"var(--color-chip-bg-active)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 4,\n color: \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n whiteSpace: \"nowrap\",\n }}\n >\n <span>{label}</span>\n <button\n type=\"button\"\n aria-label={ariaLabel}\n onClick={onDismiss}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-chip-dismiss)\",\n padding: \"1px\",\n borderRadius: 2,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLButtonElement).style.color = \"var(--color-destructive)\";\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.color = \"var(--color-chip-dismiss)\";\n }}\n >\n <X size={12} />\n </button>\n </span>\n );\n}\n","import type { JSX } from \"react\";\nimport { isFiltersEmpty } from \"../../state/filters.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { ActiveChip } from \"./ActiveChip.js\";\n\nexport function ActiveFilterChips(): JSX.Element | null {\n const filters = useAppStore((s) => s.filters);\n const patchFilter = useAppStore((s) => s.patchFilter);\n const clearFilters = useAppStore((s) => s.clearFilters);\n\n const hasFilters = !isFiltersEmpty(filters);\n\n if (!hasFilters) return null;\n\n const chips: JSX.Element[] = [];\n\n // Facet chips\n const arrayFacets: Array<{\n key: keyof typeof filters;\n prefix: string;\n }> = [\n { key: \"direction\", prefix: \"Dir\" },\n { key: \"kind\", prefix: \"Kind\" },\n { key: \"method\", prefix: \"Method\" },\n { key: \"actionType\", prefix: \"Action\" },\n { key: \"session\", prefix: \"Session\" },\n { key: \"turn\", prefix: \"Turn\" },\n { key: \"status\", prefix: \"Status\" },\n ];\n\n for (const { key, prefix } of arrayFacets) {\n const vals = filters[key] as string[];\n if (!vals || vals.length === 0) continue;\n for (const val of vals) {\n chips.push(\n <ActiveChip\n key={`${key}-${val}`}\n label={`${prefix}: ${val}`}\n ariaLabel={`Remove filter ${prefix}: ${val}`}\n onDismiss={() => {\n patchFilter(\n key as Parameters<typeof patchFilter>[0],\n vals.filter((v) => v !== val) as never,\n );\n }}\n />,\n );\n }\n }\n\n // Time chips\n if (filters.timeFrom !== null) {\n chips.push(\n <ActiveChip\n key=\"timeFrom\"\n label={`Time: from ${new Date(filters.timeFrom).toLocaleString()}`}\n ariaLabel=\"Remove time from filter\"\n onDismiss={() => patchFilter(\"timeFrom\", null)}\n />,\n );\n }\n if (filters.timeTo !== null) {\n chips.push(\n <ActiveChip\n key=\"timeTo\"\n label={`Time: to ${new Date(filters.timeTo).toLocaleString()}`}\n ariaLabel=\"Remove time to filter\"\n onDismiss={() => patchFilter(\"timeTo\", null)}\n />,\n );\n }\n\n return (\n <div\n data-testid=\"active-filter-chips\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n height: \"var(--filter-chips-height)\",\n paddingLeft: \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: \"var(--space-2)\",\n flex: 1,\n overflow: \"hidden\",\n alignItems: \"center\",\n }}\n >\n {chips}\n </div>\n <button\n type=\"button\"\n aria-label=\"Clear all filters\"\n onClick={clearFilters}\n style={{\n marginLeft: \"auto\",\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n flexShrink: 0,\n outline: \"none\",\n borderRadius: 3,\n padding: \"1px var(--space-1)\",\n textDecoration: \"underline\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Clear all\n </button>\n </div>\n );\n}\n","import { ChevronDown } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface FacetChipProps {\n label: string;\n activeCount: number;\n isOpen: boolean;\n isDisabled: boolean;\n onClick(): void;\n}\n\nexport function FacetChip({\n label,\n activeCount,\n isOpen,\n isDisabled,\n onClick,\n}: FacetChipProps): JSX.Element {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n onMouseDown={(event) => event.stopPropagation()}\n disabled={isDisabled}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 28,\n paddingLeft: \"var(--space-2)\",\n paddingRight: \"var(--space-2)\",\n background: isOpen ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 6,\n color: isDisabled ? \"var(--color-text-disabled)\" : \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n outline: \"none\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <span style={{ color: \"var(--color-chip-fg)\" }}>{label}</span>\n {activeCount > 0 && (\n <span style={{ color: \"var(--color-chip-fg-muted)\" }}>· {activeCount}</span>\n )}\n <ChevronDown size={12} style={{ color: \"var(--color-chip-fg-muted)\" }} />\n </button>\n );\n}\n","import type { JSX } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\n\nconst MAX_VISIBLE = 100;\n\ninterface FacetOption {\n value: string;\n label: string;\n count: number;\n}\n\ninterface FacetPopoverProps {\n options: FacetOption[];\n selected: string[];\n onChange(values: string[]): void;\n onClose(): void;\n searchable?: boolean;\n}\n\nexport function FacetPopover({\n options,\n selected,\n onChange,\n onClose,\n searchable,\n}: FacetPopoverProps): JSX.Element {\n const ref = useRef<HTMLDivElement>(null);\n const [query, setQuery] = useState(\"\");\n\n // Close on click-outside\n useEffect(() => {\n function handleMouseDown(e: MouseEvent) {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClose();\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [onClose]);\n\n const filtered = query\n ? options.filter((o) => {\n const q = query.toLowerCase();\n return o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q);\n })\n : options;\n const visible = filtered.slice(0, MAX_VISIBLE);\n const overflow = filtered.length - visible.length;\n\n function toggle(value: string) {\n if (selected.includes(value)) {\n onChange(selected.filter((v) => v !== value));\n } else {\n onChange([...selected, value]);\n }\n }\n\n return (\n <div\n ref={ref}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n left: 0,\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n minWidth: 180,\n maxWidth: 320,\n maxHeight: 320,\n overflowY: \"auto\",\n boxShadow: \"var(--shadow-menu)\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {searchable && (\n <div style={{ padding: \"var(--space-2)\", borderBottom: \"1px solid var(--color-border)\" }}>\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Filter…\"\n style={{\n width: \"100%\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n </div>\n )}\n {visible.length === 0 && (\n <div\n style={{\n padding: \"var(--space-3)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n No options\n </div>\n )}\n {visible.map((opt) => (\n <label\n key={opt.value}\n title={opt.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-1) var(--space-3)\",\n cursor: \"pointer\",\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n <input\n type=\"checkbox\"\n checked={selected.includes(opt.value)}\n onChange={() => toggle(opt.value)}\n style={{ accentColor: \"var(--color-accent)\" }}\n />\n <span style={{ flex: 1 }}>{opt.label}</span>\n <span style={{ color: \"var(--color-text-muted)\", fontSize: \"var(--text-ui-muted-size)\" }}>\n {opt.count}\n </span>\n </label>\n ))}\n {overflow > 0 && (\n <div\n style={{\n padding: \"var(--space-1) var(--space-3)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n borderTop: \"1px solid var(--color-border)\",\n }}\n >\n …and {overflow} more\n </div>\n )}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"var(--space-1) var(--space-2)\",\n borderTop: \"1px solid var(--color-border)\",\n }}\n >\n <button\n type=\"button\"\n onClick={() => onChange([])}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1)\",\n borderRadius: 3,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Clear selection\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1)\",\n borderRadius: 3,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Close\n </button>\n </div>\n </div>\n );\n}\n","// Webview ↔ extension-host message envelopes (Phase 11 Plan 11-03).\n//\n// Types live in @ahp-inspector/shared so both the extension package and the\n// browser-only UI can import them without violating package-boundary\n// rules (boundary.test.ts forbids the UI from importing the extension).\n// `packages/extension/src/messageProtocol.ts` re-exports these for the\n// extension host's convenience.\n\nimport type { AhpEvent } from \"./event.js\";\n\n// Mirror of @ahp-inspector/core Status — duplicated here so this protocol\n// file can stay in @ahp-inspector/shared without taking a runtime dep on\n// @ahp-inspector/core. Plan 11-03 contract tests pin it to core's shape.\ntype WebviewStatus = \"ok\" | \"error\" | \"pending\" | \"unmatched\" | \"orphan\" | \"n/a\";\n\n// Server-route response shapes are not exported from any portable\n// package today, so we redeclare the message-shaped subset here. These\n// MUST stay in lock-step with the equivalents in\n// packages/server/src/{detail,search,state}-routes.ts and\n// packages/server/src/app-state.ts. Plan 11-03 contract tests guard the\n// alignment.\n\nexport interface WebviewLogMeta {\n readonly filename: string;\n readonly sizeBytes: number;\n readonly startedAt: number;\n readonly logKey: string;\n}\n\nexport interface WebviewSafeCandidate {\n readonly id: string;\n readonly label: string;\n readonly origin: \"vscode\" | \"vscode-insiders\" | \"vscode-oss-dev\" | \"manual\";\n readonly confidence: \"high\" | \"medium\" | \"low\";\n readonly mtimeMs: number;\n readonly sizeBytes: number;\n readonly contextLabel?: string;\n}\n\nexport interface WebviewOpenSessionResult {\n readonly active: {\n readonly logKey: string;\n readonly meta: WebviewLogMeta;\n };\n}\n\nexport interface WebviewDetailResponse {\n readonly event: AhpEvent;\n readonly pair: AhpEvent | null;\n readonly latencyMs: number | null;\n readonly status: WebviewStatus;\n readonly pairIdx: number | null;\n}\n\nexport interface WebviewSearchResult {\n readonly matches: readonly number[];\n readonly total: number;\n readonly truncated: boolean;\n}\n\nexport type WebviewStateResourceKind = \"root\" | \"session\" | \"terminal\" | \"unknown\";\n\n// state-at projection — the webview client needs to deserialize the same\n// shape as the HTTP /api/state-at success response. We import-by-shape\n// rather than re-export from the server module so this file stays\n// portable.\nexport interface WebviewStateAtSuccessResponse {\n readonly logKey: string;\n readonly targetIndex: number;\n readonly totalEvents: number;\n readonly confidence: \"complete\" | \"partial\" | \"unknown\";\n readonly diagnostics: ReadonlyArray<unknown>;\n readonly resources: ReadonlyArray<unknown>;\n readonly selectedResource: unknown;\n readonly intents: ReadonlyArray<unknown>;\n readonly cache: unknown;\n}\n\n// Frame envelope re-emitted by the bridge from AppState.SsePayload. Keeping\n// the kinds aligned with the SSE contract lets the UI use the same store\n// mutations regardless of transport.\nexport type WebviewSsePayload =\n | { readonly kind: \"snapshot-begin\"; readonly meta: WebviewLogMeta; readonly total: number }\n | {\n readonly kind: \"snapshot-chunk\";\n readonly rows: ReadonlyArray<unknown>;\n readonly from: number;\n }\n | { readonly kind: \"snapshot-end\" }\n | { readonly kind: \"append\"; readonly rows: ReadonlyArray<unknown>; readonly from: number }\n | { readonly kind: \"patch\"; readonly updates: ReadonlyArray<unknown> }\n | { readonly kind: \"ping\" }\n | { readonly kind: \"bye\" }\n | { readonly kind: \"error\"; readonly code: string; readonly message: string }\n | { readonly kind: \"rotation\"; readonly newSize: number; readonly reason: \"shrink\" | \"rename\" }\n | {\n readonly kind: \"watch-error\";\n readonly code: \"read-error\" | \"watch-fatal\";\n readonly message: string;\n }\n | { readonly kind: \"log-reset\" };\n\nexport type WebviewRequest =\n | { readonly kind: \"session/discover\"; readonly requestId: string }\n | { readonly kind: \"session/openPath\"; readonly requestId: string; readonly path: string }\n | { readonly kind: \"session/openCandidate\"; readonly requestId: string; readonly id: string }\n | { readonly kind: \"log/meta\"; readonly requestId: string }\n | {\n readonly kind: \"log/event\";\n readonly requestId: string;\n readonly idx: number;\n readonly logKey?: string | null;\n }\n | { readonly kind: \"log/search\"; readonly requestId: string; readonly q: string }\n | {\n readonly kind: \"state/at\";\n readonly requestId: string;\n readonly idx: number;\n readonly logKey?: string | null;\n readonly resourceKind?: \"root\" | \"session\" | \"terminal\";\n readonly resourceUri?: string;\n }\n | { readonly kind: \"stream/start\"; readonly requestId: string }\n | { readonly kind: \"stream/stop\"; readonly requestId: string };\n\nexport type WebviewResponseSuccess<T = unknown> = {\n readonly kind: \"response\";\n readonly requestId: string;\n readonly ok: true;\n readonly value: T;\n};\n\nexport interface WebviewResponseError {\n readonly kind: \"response\";\n readonly requestId: string;\n readonly ok: false;\n readonly code: string;\n readonly message: string;\n}\n\nexport type WebviewResponse = WebviewResponseSuccess | WebviewResponseError;\n\nexport type ExtensionNotification =\n | WebviewResponse\n | { readonly kind: \"stream\"; readonly payload: WebviewSsePayload }\n | { readonly kind: \"initialLog\"; readonly path: string | null };\n\n// Type guards used on the webview side (untrusted JSON arrives as `unknown`).\nexport function isExtensionNotification(value: unknown): value is ExtensionNotification {\n if (!value || typeof value !== \"object\") return false;\n const v = value as { kind?: unknown };\n if (typeof v.kind !== \"string\") return false;\n return v.kind === \"response\" || v.kind === \"stream\" || v.kind === \"initialLog\";\n}\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n/**\n * Action Types — Source of truth for all AHP action type definitions.\n *\n * @module actions\n * @description Complete reference for all action types in the Agent Host Protocol.\n * Actions are the sole mutation mechanism for subscribable state.\n */\n\nimport type {\n URI,\n StringOrMarkdown,\n AgentInfo,\n ErrorInfo,\n ModelSelection,\n UserMessage,\n ResponsePart,\n ToolCallResult,\n ToolResultContent,\n ToolDefinition,\n SessionActiveClient,\n UsageInfo,\n SessionCustomization,\n FileEdit,\n SessionInputAnswer,\n SessionInputRequest,\n TerminalInfo,\n TerminalClaim,\n SessionInputResponseKind,\n ConfirmationOption,\n} from \"./state.js\";\n\nimport {\n ToolCallConfirmationReason,\n ToolCallCancellationReason,\n PendingMessageKind,\n} from \"./state.js\";\n\n// ─── Action Type Enum ────────────────────────────────────────────────────────\n\n/**\n * Discriminant values for all state actions.\n *\n * @category Actions\n */\nexport const enum ActionType {\n RootAgentsChanged = \"root/agentsChanged\",\n RootActiveSessionsChanged = \"root/activeSessionsChanged\",\n SessionReady = \"session/ready\",\n SessionCreationFailed = \"session/creationFailed\",\n SessionTurnStarted = \"session/turnStarted\",\n SessionDelta = \"session/delta\",\n SessionResponsePart = \"session/responsePart\",\n SessionToolCallStart = \"session/toolCallStart\",\n SessionToolCallDelta = \"session/toolCallDelta\",\n SessionToolCallReady = \"session/toolCallReady\",\n SessionToolCallConfirmed = \"session/toolCallConfirmed\",\n SessionToolCallComplete = \"session/toolCallComplete\",\n SessionToolCallResultConfirmed = \"session/toolCallResultConfirmed\",\n SessionToolCallContentChanged = \"session/toolCallContentChanged\",\n SessionTurnComplete = \"session/turnComplete\",\n SessionTurnCancelled = \"session/turnCancelled\",\n SessionError = \"session/error\",\n SessionTitleChanged = \"session/titleChanged\",\n SessionUsage = \"session/usage\",\n SessionReasoning = \"session/reasoning\",\n SessionModelChanged = \"session/modelChanged\",\n SessionServerToolsChanged = \"session/serverToolsChanged\",\n SessionActiveClientChanged = \"session/activeClientChanged\",\n SessionActiveClientToolsChanged = \"session/activeClientToolsChanged\",\n SessionPendingMessageSet = \"session/pendingMessageSet\",\n SessionPendingMessageRemoved = \"session/pendingMessageRemoved\",\n SessionQueuedMessagesReordered = \"session/queuedMessagesReordered\",\n SessionInputRequested = \"session/inputRequested\",\n SessionInputAnswerChanged = \"session/inputAnswerChanged\",\n SessionInputCompleted = \"session/inputCompleted\",\n SessionCustomizationsChanged = \"session/customizationsChanged\",\n SessionCustomizationToggled = \"session/customizationToggled\",\n SessionTruncated = \"session/truncated\",\n SessionIsReadChanged = \"session/isReadChanged\",\n SessionIsArchivedChanged = \"session/isArchivedChanged\",\n SessionActivityChanged = \"session/activityChanged\",\n SessionDiffsChanged = \"session/diffsChanged\",\n SessionConfigChanged = \"session/configChanged\",\n SessionMetaChanged = \"session/metaChanged\",\n RootTerminalsChanged = \"root/terminalsChanged\",\n RootConfigChanged = \"root/configChanged\",\n TerminalData = \"terminal/data\",\n TerminalInput = \"terminal/input\",\n TerminalResized = \"terminal/resized\",\n TerminalClaimed = \"terminal/claimed\",\n TerminalTitleChanged = \"terminal/titleChanged\",\n TerminalCwdChanged = \"terminal/cwdChanged\",\n TerminalExited = \"terminal/exited\",\n TerminalCleared = \"terminal/cleared\",\n TerminalCommandDetectionAvailable = \"terminal/commandDetectionAvailable\",\n TerminalCommandExecuted = \"terminal/commandExecuted\",\n TerminalCommandFinished = \"terminal/commandFinished\",\n}\n\n// ─── Action Envelope ─────────────────────────────────────────────────────────\n\n/**\n * Identifies the client that originally dispatched an action.\n */\nexport interface ActionOrigin {\n clientId: string;\n clientSeq: number;\n}\n\n/**\n * Every action is wrapped in an `ActionEnvelope`.\n */\nexport interface ActionEnvelope {\n readonly action: StateAction;\n readonly serverSeq: number;\n readonly origin: ActionOrigin | undefined;\n readonly rejectionReason?: string;\n}\n\n// ─── Root Actions ────────────────────────────────────────────────────────────\n\n/**\n * Base interface for all tool-call-scoped actions, carrying the common\n * session, turn, and tool call identifiers.\n *\n * @category Session Actions\n */\ninterface ToolCallActionBase {\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** Tool call identifier */\n toolCallId: string;\n /**\n * Additional provider-specific metadata for this tool call.\n *\n * Clients MAY look for well-known keys here to provide enhanced UI.\n * For example, a `ptyTerminal` key with `{ input: string; output: string }`\n * indicates the tool operated on a terminal (both `input` and `output` may\n * contain escape sequences).\n */\n _meta?: Record<string, unknown>;\n}\n\n/**\n * Fired when available agent backends or their models change.\n *\n * @category Root Actions\n * @version 1\n */\nexport interface RootAgentsChangedAction {\n type: ActionType.RootAgentsChanged;\n /** Updated agent list */\n agents: AgentInfo[];\n}\n\n/**\n * Fired when the number of active sessions changes.\n *\n * @category Root Actions\n * @version 1\n */\nexport interface RootActiveSessionsChangedAction {\n type: ActionType.RootActiveSessionsChanged;\n /** Current count of active sessions */\n activeSessions: number;\n}\n\n/**\n * Fired when the list of known terminals changes.\n *\n * Full-replacement semantics: the `terminals` array replaces the previous\n * `terminals` entirely.\n *\n * @category Root Actions\n * @version 1\n */\nexport interface RootTerminalsChangedAction {\n type: ActionType.RootTerminalsChanged;\n /** Updated terminal list (full replacement) */\n terminals: TerminalInfo[];\n}\n\n/**\n * Fired when agent-host configuration values change.\n *\n * By default, the reducer merges the new values into `state.config.values`.\n * Set `replace` to `true` to replace all values instead of merging.\n *\n * @category Root Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface RootConfigChangedAction {\n type: ActionType.RootConfigChanged;\n /** Updated config values */\n config: Record<string, unknown>;\n /** When `true`, replaces all config values instead of merging */\n replace?: boolean;\n}\n\n// ─── Session Actions ─────────────────────────────────────────────────────────\n\n/**\n * Session backend initialized successfully.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionReadyAction {\n type: ActionType.SessionReady;\n /** Session URI */\n session: URI;\n}\n\n/**\n * Session backend failed to initialize.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionCreationFailedAction {\n type: ActionType.SessionCreationFailed;\n /** Session URI */\n session: URI;\n /** Error details */\n error: ErrorInfo;\n}\n\n/**\n * User sent a message; server starts agent processing.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionTurnStartedAction {\n type: ActionType.SessionTurnStarted;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** User's message */\n userMessage: UserMessage;\n /** If this turn was auto-started from a queued message, the ID of that message */\n queuedMessageId?: string;\n}\n\n/**\n * Streaming text chunk from the assistant, appended to a specific response part.\n *\n * The server MUST first emit a `session/responsePart` to create the target\n * part (markdown or reasoning), then use this action to append text to it.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionDeltaAction {\n type: ActionType.SessionDelta;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** Identifier of the response part to append to */\n partId: string;\n /** Text chunk */\n content: string;\n}\n\n/**\n * Structured content appended to the response.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionResponsePartAction {\n type: ActionType.SessionResponsePart;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** Response part (markdown or content ref) */\n part: ResponsePart;\n}\n\n/**\n * A tool call begins — parameters are streaming from the LM.\n *\n * For client-provided tools, the server sets `toolClientId` to identify the\n * owning client. That client is responsible for executing the tool once it\n * reaches the `running` state and dispatching `session/toolCallComplete`.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionToolCallStartAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallStart;\n /** Internal tool name (for debugging/logging) */\n toolName: string;\n /** Human-readable tool name */\n displayName: string;\n /**\n * If this tool is provided by a client, the `clientId` of the owning client.\n * Absent for server-side tools.\n */\n toolClientId?: string;\n}\n\n/**\n * Streaming partial parameters for a tool call.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionToolCallDeltaAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallDelta;\n /** Partial parameter content to append */\n content: string;\n /** Updated progress message */\n invocationMessage?: StringOrMarkdown;\n}\n\n/**\n * Tool call parameters are complete, or a running tool requires re-confirmation.\n *\n * When dispatched for a `streaming` tool call, transitions to `pending-confirmation`\n * or directly to `running` if `confirmed` is set.\n *\n * When dispatched for a `running` tool call (e.g. mid-execution permission needed),\n * transitions back to `pending-confirmation`. The `invocationMessage` and `_meta`\n * SHOULD be updated to describe the specific confirmation needed. Clients use the\n * standard `session/toolCallConfirmed` flow to approve or deny.\n *\n * For client-provided tools, the server typically sets `confirmed` to\n * `'not-needed'` so the tool transitions directly to `running`, where the\n * owning client can begin execution immediately.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionToolCallReadyAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallReady;\n /** Message describing what the tool will do or what confirmation is needed */\n invocationMessage: StringOrMarkdown;\n /** Raw tool input */\n toolInput?: string;\n /** Short title for the confirmation prompt (e.g. `\"Run in terminal\"`, `\"Write file\"`) */\n confirmationTitle?: StringOrMarkdown;\n /** File edits that this tool call will perform, for preview before confirmation */\n edits?: { items: FileEdit[] };\n /** Whether the agent host allows the client to edit the tool's input parameters before confirming */\n editable?: boolean;\n /** If set, the tool was auto-confirmed and transitions directly to `running` */\n confirmed?: ToolCallConfirmationReason;\n /**\n * Options the server offers for this confirmation. When present, the client\n * SHOULD render these instead of a plain approve/deny UI. Each option\n * belongs to a {@link ConfirmationOptionGroup} so the client can still\n * categorise the choices.\n */\n options?: ConfirmationOption[];\n}\n\n/**\n * Client approves a pending tool call. The tool transitions to `running`.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionToolCallApprovedAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallConfirmed;\n /** The tool call was approved */\n approved: true;\n /** How the tool was confirmed */\n confirmed: ToolCallConfirmationReason;\n /** Edited tool input parameters, if the client modified them before confirming */\n editedToolInput?: string;\n /** ID of the selected confirmation option, if the server provided options */\n selectedOptionId?: string;\n}\n\n/**\n * Client denies a pending tool call. The tool transitions to `cancelled`.\n *\n * For client-provided tools, the owning client MUST dispatch this if it does\n * not recognize the tool or cannot execute it.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionToolCallDeniedAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallConfirmed;\n /** The tool call was denied */\n approved: false;\n /** Why the tool was cancelled */\n reason: ToolCallCancellationReason.Denied | ToolCallCancellationReason.Skipped;\n /** What the user suggested doing instead */\n userSuggestion?: UserMessage;\n /** Optional explanation for the denial */\n reasonMessage?: StringOrMarkdown;\n /** ID of the selected confirmation option, if the server provided options */\n selectedOptionId?: string;\n}\n\n/**\n * Client confirms or denies a pending tool call.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport type SessionToolCallConfirmedAction =\n | SessionToolCallApprovedAction\n | SessionToolCallDeniedAction;\n\n/**\n * Tool execution finished. Transitions to `completed` or `pending-result-confirmation`\n * if `requiresResultConfirmation` is `true`.\n *\n * For client-provided tools (where `toolClientId` is set on the tool call state),\n * the owning client dispatches this action with the execution result. The server\n * SHOULD reject this action if the dispatching client does not match `toolClientId`.\n *\n * Servers waiting on a client tool call MAY time out after a reasonable duration\n * if the implementing client disconnects or becomes unresponsive, and dispatch\n * this action with `result.success = false` and an appropriate error.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionToolCallCompleteAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallComplete;\n /** Execution result */\n result: ToolCallResult;\n /** If true, the result requires client approval before finalizing */\n requiresResultConfirmation?: boolean;\n}\n\n/**\n * Client approves or denies a tool's result.\n *\n * If `approved` is `false`, the tool transitions to `cancelled` with reason `result-denied`.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionToolCallResultConfirmedAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallResultConfirmed;\n /** Whether the result was approved */\n approved: boolean;\n}\n\n/**\n * Partial content produced while a tool is still executing.\n *\n * Replaces the `content` array on the running tool call state. Clients can\n * use this to display live feedback (e.g. a terminal reference) before the\n * tool completes.\n *\n * For client-provided tools (where `toolClientId` is set on the tool call state),\n * the owning client dispatches this action to stream intermediate content while\n * executing. The server SHOULD reject this action if the dispatching client does\n * not match `toolClientId`.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionToolCallContentChangedAction extends ToolCallActionBase {\n type: ActionType.SessionToolCallContentChanged;\n /** The current partial content for the running tool call */\n content: ToolResultContent[];\n}\n\n/**\n * Turn finished — the assistant is idle.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionTurnCompleteAction {\n type: ActionType.SessionTurnComplete;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n}\n\n/**\n * Turn was aborted; server stops processing.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionTurnCancelledAction {\n type: ActionType.SessionTurnCancelled;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n}\n\n/**\n * Error during turn processing.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionErrorAction {\n type: ActionType.SessionError;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** Error details */\n error: ErrorInfo;\n}\n\n/**\n * Session title updated. Fired by the server when the title is auto-generated\n * from conversation, or dispatched by a client to rename a session.\n *\n * @category Session Actions\n * @clientDispatchable\n * @version 1\n */\nexport interface SessionTitleChangedAction {\n type: ActionType.SessionTitleChanged;\n /** Session URI */\n session: URI;\n /** New title */\n title: string;\n}\n\n/**\n * Token usage report for a turn.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionUsageAction {\n type: ActionType.SessionUsage;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** Token usage data */\n usage: UsageInfo;\n}\n\n/**\n * Reasoning/thinking text from the model, appended to a specific reasoning response part.\n *\n * The server MUST first emit a `session/responsePart` to create the target\n * reasoning part, then use this action to append text to it.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionReasoningAction {\n type: ActionType.SessionReasoning;\n /** Session URI */\n session: URI;\n /** Turn identifier */\n turnId: string;\n /** Identifier of the reasoning response part to append to */\n partId: string;\n /** Reasoning text chunk */\n content: string;\n}\n\n/**\n * Model changed for this session.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionModelChangedAction {\n type: ActionType.SessionModelChanged;\n /** Session URI */\n session: URI;\n /** New model selection */\n model: ModelSelection;\n}\n\n/**\n * The read state of the session changed.\n *\n * Dispatched by a client to mark a session as read (e.g. after viewing it)\n * or unread (e.g. after new activity since the client last looked at it).\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionIsReadChangedAction {\n type: ActionType.SessionIsReadChanged;\n /** Session URI */\n session: URI;\n /** Whether the session has been read */\n isRead: boolean;\n}\n\n/**\n * The archived state of the session changed.\n *\n * Dispatched by a client to archive a session (e.g. the task is\n * complete) or to unarchive it.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionIsArchivedChangedAction {\n type: ActionType.SessionIsArchivedChanged;\n /** Session URI */\n session: URI;\n /** Whether the session is archived */\n isArchived: boolean;\n}\n\n/**\n * The activity description of the session changed.\n *\n * Dispatched by the server to indicate what the session is currently doing\n * (e.g. running a tool, thinking). Clear activity by setting it to `undefined`.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionActivityChangedAction {\n type: ActionType.SessionActivityChanged;\n /** Session URI */\n session: URI;\n /** Human-readable description of current activity, or `undefined` to clear */\n activity: string | undefined;\n}\n\n/**\n * The file diffs for the session changed.\n *\n * Full-replacement semantics: the `diffs` array replaces the previous\n * `summary.diffs` entirely.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionDiffsChangedAction {\n type: ActionType.SessionDiffsChanged;\n /** Session URI */\n session: URI;\n /** Updated file diffs for the session */\n diffs: FileEdit[];\n}\n\n/**\n * Server tools for this session have changed.\n *\n * Full-replacement semantics: the `tools` array replaces the previous `serverTools` entirely.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionServerToolsChangedAction {\n type: ActionType.SessionServerToolsChanged;\n /** Session URI */\n session: URI;\n /** Updated server tools list (full replacement) */\n tools: ToolDefinition[];\n}\n\n/**\n * The active client for this session has changed.\n *\n * A client dispatches this action with its own `SessionActiveClient` to claim\n * the active role, or with `null` to release it. The server SHOULD reject if\n * another client is already active. The server SHOULD automatically dispatch\n * this action with `activeClient: null` when the active client disconnects.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionActiveClientChangedAction {\n type: ActionType.SessionActiveClientChanged;\n /** Session URI */\n session: URI;\n /** The new active client, or `null` to unset */\n activeClient: SessionActiveClient | null;\n}\n\n/**\n * The active client's tool list has changed.\n *\n * Full-replacement semantics: the `tools` array replaces the active client's\n * previous tools entirely. The server SHOULD reject if the dispatching client\n * is not the current active client.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionActiveClientToolsChangedAction {\n type: ActionType.SessionActiveClientToolsChanged;\n /** Session URI */\n session: URI;\n /** Updated client tools list (full replacement) */\n tools: ToolDefinition[];\n}\n\n// ─── Customization Actions ───────────────────────────────────────────────────\n\n/**\n * The session's customizations have changed.\n *\n * Full-replacement semantics: the `customizations` array replaces the\n * previous `customizations` entirely.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionCustomizationsChangedAction {\n type: ActionType.SessionCustomizationsChanged;\n /** Session URI */\n session: URI;\n /** Updated customization list (full replacement) */\n customizations: SessionCustomization[];\n}\n\n/**\n * A client toggled a customization on or off.\n *\n * The server locates the customization by `uri` in the session's\n * customization list and sets its `enabled` flag.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionCustomizationToggledAction {\n type: ActionType.SessionCustomizationToggled;\n /** Session URI */\n session: URI;\n /** The URI of the customization to toggle */\n uri: URI;\n /** Whether to enable or disable the customization */\n enabled: boolean;\n}\n\n// ─── Config Actions ──────────────────────────────────────────────────────────\n\n/**\n * Client changed a mutable config value mid-session.\n *\n * Only properties with `sessionMutable: true` in the config schema may be\n * changed. The server validates and broadcasts the action; the reducer merges\n * the new values into `state.config.values`.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionConfigChangedAction {\n type: ActionType.SessionConfigChanged;\n /** Session URI */\n session: URI;\n /** Updated config values */\n config: Record<string, unknown>;\n /** When `true`, replaces all config values instead of merging */\n replace?: boolean;\n}\n\n/**\n * The session's `_meta` side-channel changed. Replaces `state._meta`\n * entirely (full-replacement semantics). Producers SHOULD merge any\n * keys they wish to preserve into the new value before dispatching.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionMetaChangedAction {\n type: ActionType.SessionMetaChanged;\n /** Session URI */\n session: URI;\n /** New `_meta` payload, or `undefined` to clear it */\n _meta: Record<string, unknown> | undefined;\n}\n\n// ─── Truncation ──────────────────────────────────────────────────────────────\n\n/**\n * Truncates a session's history. If `turnId` is provided, all turns after that\n * turn are removed and the specified turn is kept. If `turnId` is omitted, all\n * turns are removed.\n *\n * If there is an active turn it is silently dropped and the session status\n * returns to `idle`.\n *\n * Common use-case: truncate old data then dispatch a new\n * `session/turnStarted` with an edited message.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionTruncatedAction {\n type: ActionType.SessionTruncated;\n /** Session URI */\n session: URI;\n /** Keep turns up to and including this turn. Omit to clear all turns. */\n turnId?: string;\n}\n\n// ─── Pending Message Actions ─────────────────────────────────────────────────\n\n/**\n * A pending message was set (upsert semantics: creates or replaces).\n *\n * For steering messages, this always replaces the single steering message.\n * For queued messages, if a message with the given `id` already exists it is\n * updated in place; otherwise it is appended to the queue. If the session is\n * idle when a queued message is set, the server SHOULD immediately consume it\n * and start a new turn.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionPendingMessageSetAction {\n type: ActionType.SessionPendingMessageSet;\n /** Session URI */\n session: URI;\n /** Whether this is a steering or queued message */\n kind: PendingMessageKind;\n /** Unique identifier for this pending message */\n id: string;\n /** The message content */\n userMessage: UserMessage;\n}\n\n/**\n * A pending message was removed (steering or queued).\n *\n * Dispatched by clients to cancel a pending message, or by the server when\n * it consumes a message (e.g. starting a turn from a queued message or\n * injecting a steering message into the current turn).\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionPendingMessageRemovedAction {\n type: ActionType.SessionPendingMessageRemoved;\n /** Session URI */\n session: URI;\n /** Whether this is a steering or queued message */\n kind: PendingMessageKind;\n /** Identifier of the pending message to remove */\n id: string;\n}\n\n/**\n * Reorder the queued messages.\n *\n * The `order` array contains the IDs of queued messages in their new\n * desired order. IDs not present in the current queue are ignored.\n * Queued messages whose IDs are absent from `order` are appended at\n * the end in their original relative order (so a client with a stale\n * view of the queue never silently drops messages).\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionQueuedMessagesReorderedAction {\n type: ActionType.SessionQueuedMessagesReordered;\n /** Session URI */\n session: URI;\n /** Queued message IDs in the desired order */\n order: string[];\n}\n\n// ─── Session Input Actions ──────────────────────────────────────────────────\n\n/**\n * A session requested input from the user.\n *\n * Full-request upsert semantics: the `request` replaces any existing request\n * with the same `id`, or is appended if it is new. Answer drafts are preserved\n * unless `request.answers` is provided.\n *\n * @category Session Actions\n * @version 1\n */\nexport interface SessionInputRequestedAction {\n type: ActionType.SessionInputRequested;\n /** Session URI */\n session: URI;\n /** Input request to create or replace */\n request: SessionInputRequest;\n}\n\n/**\n * A client updated, submitted, skipped, or removed a single in-progress answer.\n *\n * Dispatching with `answer: undefined` removes that question's answer draft.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionInputAnswerChangedAction {\n type: ActionType.SessionInputAnswerChanged;\n /** Session URI */\n session: URI;\n /** Input request identifier */\n requestId: string;\n /** Question identifier within the input request */\n questionId: string;\n /** Updated answer, or `undefined` to clear an answer draft */\n answer?: SessionInputAnswer;\n}\n\n/**\n * A client accepted, declined, or cancelled a session input request.\n *\n * If accepted, the server uses `answers` (when provided) plus the request's\n * synced answer state to resume the blocked operation.\n *\n * @category Session Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface SessionInputCompletedAction {\n type: ActionType.SessionInputCompleted;\n /** Session URI */\n session: URI;\n /** Input request identifier */\n requestId: string;\n /** Completion outcome */\n response: SessionInputResponseKind;\n /** Optional final answer replacement, keyed by question ID */\n answers?: Record<string, SessionInputAnswer>;\n}\n\n// ─── Terminal Actions ────────────────────────────────────────────────────────\n\n/**\n * Terminal output data (pty → client direction).\n *\n * Appends `data` to the terminal's `content` in the reducer.\n *\n * `terminal/data` and `terminal/input` are intentionally separate actions\n * because standard write-ahead reconciliation is not safe for terminal I/O.\n * A pty is a stateful, mutable process — optimistically applying input or\n * predicting output would produce incorrect state. Instead, `terminal/input`\n * is a side-effect-only action (client → server → pty), and `terminal/data`\n * is server-authoritative output (pty → server → client).\n *\n * @category Terminal Actions\n * @version 1\n */\nexport interface TerminalDataAction {\n type: ActionType.TerminalData;\n /** Terminal URI */\n terminal: URI;\n /** Output data (may contain ANSI escape sequences) */\n data: string;\n}\n\n/**\n * Keyboard input sent to the terminal process (client → pty direction).\n *\n * This is a side-effect-only action: the server forwards the data to the\n * terminal's pty. The reducer treats this as a no-op since `terminal/data`\n * actions will reflect any resulting output.\n *\n * See `terminal/data` for why these two actions are kept separate.\n *\n * @category Terminal Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface TerminalInputAction {\n type: ActionType.TerminalInput;\n /** Terminal URI */\n terminal: URI;\n /** Input data to send to the pty */\n data: string;\n}\n\n/**\n * Terminal dimensions changed.\n *\n * Dispatchable by clients to request a resize, or by the server to inform\n * clients of the actual terminal dimensions.\n *\n * @category Terminal Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface TerminalResizedAction {\n type: ActionType.TerminalResized;\n /** Terminal URI */\n terminal: URI;\n /** Terminal width in columns */\n cols: number;\n /** Terminal height in rows */\n rows: number;\n}\n\n/**\n * Terminal claim changed. A client or session transfers ownership of the terminal.\n *\n * The server SHOULD reject if the dispatching client does not currently hold\n * the claim.\n *\n * @category Terminal Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface TerminalClaimedAction {\n type: ActionType.TerminalClaimed;\n /** Terminal URI */\n terminal: URI;\n /** The new claim */\n claim: TerminalClaim;\n}\n\n/**\n * Terminal title changed.\n *\n * Fired by the server when the terminal process updates its title (e.g. via\n * escape sequences), or dispatched by a client to rename a terminal.\n *\n * @category Terminal Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface TerminalTitleChangedAction {\n type: ActionType.TerminalTitleChanged;\n /** Terminal URI */\n terminal: URI;\n /** New terminal title */\n title: string;\n}\n\n/**\n * Terminal working directory changed.\n *\n * @category Terminal Actions\n * @version 1\n */\nexport interface TerminalCwdChangedAction {\n type: ActionType.TerminalCwdChanged;\n /** Terminal URI */\n terminal: URI;\n /** New working directory */\n cwd: URI;\n}\n\n/**\n * Terminal process exited.\n *\n * @category Terminal Actions\n * @version 1\n */\nexport interface TerminalExitedAction {\n type: ActionType.TerminalExited;\n /** Terminal URI */\n terminal: URI;\n /** Process exit code. `undefined` if the process was killed without an exit code. */\n exitCode?: number;\n}\n\n/**\n * Terminal scrollback buffer cleared.\n *\n * @category Terminal Actions\n * @version 1\n * @clientDispatchable\n */\nexport interface TerminalClearedAction {\n type: ActionType.TerminalCleared;\n /** Terminal URI */\n terminal: URI;\n}\n\n/**\n * Shell integration has loaded and the terminal now supports command\n * detection. The server dispatches this when shell integration becomes\n * available (which may happen asynchronously after the terminal is created).\n *\n * Clients MUST NOT assume command detection is available until this action\n * (or `terminal/commandExecuted`) has been received.\n *\n * @category Terminal Actions\n * @version 1\n */\nexport interface TerminalCommandDetectionAvailableAction {\n type: ActionType.TerminalCommandDetectionAvailable;\n /** Terminal URI */\n terminal: URI;\n}\n\n/**\n * A command has been submitted to the shell and is now executing.\n * All subsequent `terminal/data` actions (until the matching\n * `terminal/commandFinished`) constitute this command's output.\n *\n * @category Terminal Actions\n * @version 1\n */\nexport interface TerminalCommandExecutedAction {\n type: ActionType.TerminalCommandExecuted;\n /** Terminal URI */\n terminal: URI;\n /**\n * Stable identifier for this command, scoped to the terminal URI.\n * Allows correlating `commandExecuted` → `commandFinished` pairs.\n */\n commandId: string;\n /** The command line text that was submitted */\n commandLine: string;\n /**\n * Unix timestamp (ms) of when the command started executing, as measured\n * on the server.\n */\n timestamp: number;\n}\n\n/**\n * A command has finished executing.\n *\n * The sequence of `terminal/data` actions between the preceding\n * `terminal/commandExecuted` (same `commandId`) and this action constitutes\n * the complete output of the command.\n *\n * @category Terminal Actions\n * @version 1\n */\nexport interface TerminalCommandFinishedAction {\n type: ActionType.TerminalCommandFinished;\n /** Terminal URI */\n terminal: URI;\n /** Matches the `commandId` from the corresponding `commandExecuted` */\n commandId: string;\n /** Shell exit code. `undefined` if the shell did not report one. */\n exitCode?: number;\n /**\n * Wall-clock duration of the command in milliseconds, as measured by the\n * shell integration script on the server side.\n */\n durationMs?: number;\n}\n\n// ─── Discriminated Union ─────────────────────────────────────────────────────\n\n/**\n * Discriminated union of all state actions.\n */\nexport type StateAction =\n | RootAgentsChangedAction\n | RootActiveSessionsChangedAction\n | RootTerminalsChangedAction\n | RootConfigChangedAction\n | SessionReadyAction\n | SessionCreationFailedAction\n | SessionTurnStartedAction\n | SessionDeltaAction\n | SessionResponsePartAction\n | SessionToolCallStartAction\n | SessionToolCallDeltaAction\n | SessionToolCallReadyAction\n | SessionToolCallConfirmedAction\n | SessionToolCallCompleteAction\n | SessionToolCallResultConfirmedAction\n | SessionToolCallContentChangedAction\n | SessionTurnCompleteAction\n | SessionTurnCancelledAction\n | SessionErrorAction\n | SessionTitleChangedAction\n | SessionUsageAction\n | SessionReasoningAction\n | SessionModelChangedAction\n | SessionServerToolsChangedAction\n | SessionActiveClientChangedAction\n | SessionActiveClientToolsChangedAction\n | SessionPendingMessageSetAction\n | SessionPendingMessageRemovedAction\n | SessionQueuedMessagesReorderedAction\n | SessionInputRequestedAction\n | SessionInputAnswerChangedAction\n | SessionInputCompletedAction\n | SessionCustomizationsChangedAction\n | SessionCustomizationToggledAction\n | SessionTruncatedAction\n | SessionIsReadChangedAction\n | SessionIsArchivedChangedAction\n | SessionActivityChangedAction\n | SessionDiffsChangedAction\n | SessionConfigChangedAction\n | SessionMetaChangedAction\n | TerminalDataAction\n | TerminalInputAction\n | TerminalResizedAction\n | TerminalClaimedAction\n | TerminalTitleChangedAction\n | TerminalCwdChangedAction\n | TerminalExitedAction\n | TerminalClearedAction\n | TerminalCommandDetectionAvailableAction\n | TerminalCommandExecutedAction\n | TerminalCommandFinishedAction;\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n// Generated from types/actions.ts — do not edit\n// Run `npm run generate` to regenerate.\n\nimport type {\n StateAction,\n RootAgentsChangedAction,\n RootActiveSessionsChangedAction,\n RootTerminalsChangedAction,\n RootConfigChangedAction,\n SessionReadyAction,\n SessionCreationFailedAction,\n SessionTurnStartedAction,\n SessionDeltaAction,\n SessionResponsePartAction,\n SessionToolCallStartAction,\n SessionToolCallDeltaAction,\n SessionToolCallReadyAction,\n SessionToolCallConfirmedAction,\n SessionToolCallCompleteAction,\n SessionToolCallResultConfirmedAction,\n SessionToolCallContentChangedAction,\n SessionTurnCompleteAction,\n SessionTurnCancelledAction,\n SessionErrorAction,\n SessionTitleChangedAction,\n SessionUsageAction,\n SessionReasoningAction,\n SessionModelChangedAction,\n SessionServerToolsChangedAction,\n SessionActiveClientChangedAction,\n SessionActiveClientToolsChangedAction,\n SessionPendingMessageSetAction,\n SessionPendingMessageRemovedAction,\n SessionQueuedMessagesReorderedAction,\n SessionInputRequestedAction,\n SessionInputAnswerChangedAction,\n SessionInputCompletedAction,\n SessionCustomizationsChangedAction,\n SessionCustomizationToggledAction,\n SessionTruncatedAction,\n SessionIsReadChangedAction,\n SessionIsArchivedChangedAction,\n SessionActivityChangedAction,\n SessionDiffsChangedAction,\n SessionConfigChangedAction,\n SessionMetaChangedAction,\n TerminalDataAction,\n TerminalInputAction,\n TerminalResizedAction,\n TerminalClaimedAction,\n TerminalTitleChangedAction,\n TerminalCwdChangedAction,\n TerminalExitedAction,\n TerminalClearedAction,\n TerminalCommandDetectionAvailableAction,\n TerminalCommandExecutedAction,\n TerminalCommandFinishedAction,\n} from \"./actions.js\";\n\nimport { ActionType } from \"./actions.js\";\n\n// ─── Root vs Session vs Terminal Action Unions ───────────────────────────────\n\n/** Union of all root-scoped actions. */\nexport type RootAction =\n | RootAgentsChangedAction\n | RootActiveSessionsChangedAction\n | RootTerminalsChangedAction\n | RootConfigChangedAction;\n\n/** Union of root actions that clients may dispatch. */\nexport type ClientRootAction = RootConfigChangedAction;\n\n/** Union of root actions that only the server may produce. */\nexport type ServerRootAction =\n | RootAgentsChangedAction\n | RootActiveSessionsChangedAction\n | RootTerminalsChangedAction;\n\n/** Union of all session-scoped actions. */\nexport type SessionAction =\n | SessionReadyAction\n | SessionCreationFailedAction\n | SessionTurnStartedAction\n | SessionDeltaAction\n | SessionResponsePartAction\n | SessionToolCallStartAction\n | SessionToolCallDeltaAction\n | SessionToolCallReadyAction\n | SessionToolCallConfirmedAction\n | SessionToolCallCompleteAction\n | SessionToolCallResultConfirmedAction\n | SessionToolCallContentChangedAction\n | SessionTurnCompleteAction\n | SessionTurnCancelledAction\n | SessionErrorAction\n | SessionTitleChangedAction\n | SessionUsageAction\n | SessionReasoningAction\n | SessionModelChangedAction\n | SessionServerToolsChangedAction\n | SessionActiveClientChangedAction\n | SessionActiveClientToolsChangedAction\n | SessionPendingMessageSetAction\n | SessionPendingMessageRemovedAction\n | SessionQueuedMessagesReorderedAction\n | SessionInputRequestedAction\n | SessionInputAnswerChangedAction\n | SessionInputCompletedAction\n | SessionCustomizationsChangedAction\n | SessionCustomizationToggledAction\n | SessionTruncatedAction\n | SessionIsReadChangedAction\n | SessionIsArchivedChangedAction\n | SessionActivityChangedAction\n | SessionDiffsChangedAction\n | SessionConfigChangedAction\n | SessionMetaChangedAction;\n\n/** Union of session actions that clients may dispatch. */\nexport type ClientSessionAction =\n | SessionTurnStartedAction\n | SessionToolCallConfirmedAction\n | SessionToolCallCompleteAction\n | SessionToolCallResultConfirmedAction\n | SessionToolCallContentChangedAction\n | SessionTurnCancelledAction\n | SessionTitleChangedAction\n | SessionModelChangedAction\n | SessionActiveClientChangedAction\n | SessionActiveClientToolsChangedAction\n | SessionPendingMessageSetAction\n | SessionPendingMessageRemovedAction\n | SessionQueuedMessagesReorderedAction\n | SessionInputAnswerChangedAction\n | SessionInputCompletedAction\n | SessionCustomizationToggledAction\n | SessionTruncatedAction\n | SessionIsReadChangedAction\n | SessionIsArchivedChangedAction\n | SessionConfigChangedAction;\n\n/** Union of session actions that only the server may produce. */\nexport type ServerSessionAction =\n | SessionReadyAction\n | SessionCreationFailedAction\n | SessionDeltaAction\n | SessionResponsePartAction\n | SessionToolCallStartAction\n | SessionToolCallDeltaAction\n | SessionToolCallReadyAction\n | SessionTurnCompleteAction\n | SessionErrorAction\n | SessionUsageAction\n | SessionReasoningAction\n | SessionServerToolsChangedAction\n | SessionInputRequestedAction\n | SessionCustomizationsChangedAction\n | SessionActivityChangedAction\n | SessionDiffsChangedAction\n | SessionMetaChangedAction;\n\n/** Union of all terminal-scoped actions. */\nexport type TerminalAction =\n | TerminalDataAction\n | TerminalInputAction\n | TerminalResizedAction\n | TerminalClaimedAction\n | TerminalTitleChangedAction\n | TerminalCwdChangedAction\n | TerminalExitedAction\n | TerminalClearedAction\n | TerminalCommandDetectionAvailableAction\n | TerminalCommandExecutedAction\n | TerminalCommandFinishedAction;\n\n/** Union of terminal actions that clients may dispatch. */\nexport type ClientTerminalAction =\n | TerminalInputAction\n | TerminalResizedAction\n | TerminalClaimedAction\n | TerminalTitleChangedAction\n | TerminalClearedAction;\n\n/** Union of terminal actions that only the server may produce. */\nexport type ServerTerminalAction =\n | TerminalDataAction\n | TerminalCwdChangedAction\n | TerminalExitedAction\n | TerminalCommandDetectionAvailableAction\n | TerminalCommandExecutedAction\n | TerminalCommandFinishedAction;\n\n// ─── Client-Dispatchable Map ─────────────────────────────────────────────────\n\n/**\n * Exhaustive map indicating which action types may be dispatched by clients.\n * Adding a new action to StateAction without adding it here is a compile error.\n */\nexport const IS_CLIENT_DISPATCHABLE: { readonly [K in StateAction[\"type\"]]: boolean } = {\n [ActionType.RootAgentsChanged]: false,\n [ActionType.RootActiveSessionsChanged]: false,\n [ActionType.RootTerminalsChanged]: false,\n [ActionType.RootConfigChanged]: true,\n [ActionType.SessionReady]: false,\n [ActionType.SessionCreationFailed]: false,\n [ActionType.SessionTurnStarted]: true,\n [ActionType.SessionDelta]: false,\n [ActionType.SessionResponsePart]: false,\n [ActionType.SessionToolCallStart]: false,\n [ActionType.SessionToolCallDelta]: false,\n [ActionType.SessionToolCallReady]: false,\n [ActionType.SessionToolCallConfirmed]: true,\n [ActionType.SessionToolCallComplete]: true,\n [ActionType.SessionToolCallResultConfirmed]: true,\n [ActionType.SessionToolCallContentChanged]: true,\n [ActionType.SessionTurnComplete]: false,\n [ActionType.SessionTurnCancelled]: true,\n [ActionType.SessionError]: false,\n [ActionType.SessionTitleChanged]: true,\n [ActionType.SessionUsage]: false,\n [ActionType.SessionReasoning]: false,\n [ActionType.SessionModelChanged]: true,\n [ActionType.SessionServerToolsChanged]: false,\n [ActionType.SessionActiveClientChanged]: true,\n [ActionType.SessionActiveClientToolsChanged]: true,\n [ActionType.SessionPendingMessageSet]: true,\n [ActionType.SessionPendingMessageRemoved]: true,\n [ActionType.SessionQueuedMessagesReordered]: true,\n [ActionType.SessionInputRequested]: false,\n [ActionType.SessionInputAnswerChanged]: true,\n [ActionType.SessionInputCompleted]: true,\n [ActionType.SessionCustomizationsChanged]: false,\n [ActionType.SessionCustomizationToggled]: true,\n [ActionType.SessionTruncated]: true,\n [ActionType.SessionIsReadChanged]: true,\n [ActionType.SessionIsArchivedChanged]: true,\n [ActionType.SessionActivityChanged]: false,\n [ActionType.SessionDiffsChanged]: false,\n [ActionType.SessionConfigChanged]: true,\n [ActionType.SessionMetaChanged]: false,\n [ActionType.TerminalData]: false,\n [ActionType.TerminalInput]: true,\n [ActionType.TerminalResized]: true,\n [ActionType.TerminalClaimed]: true,\n [ActionType.TerminalTitleChanged]: true,\n [ActionType.TerminalCwdChanged]: false,\n [ActionType.TerminalExited]: false,\n [ActionType.TerminalCleared]: true,\n [ActionType.TerminalCommandDetectionAvailable]: false,\n [ActionType.TerminalCommandExecuted]: false,\n [ActionType.TerminalCommandFinished]: false,\n};\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n/**\n * Notification Types — Source of truth for all AHP notification definitions.\n *\n * @module notifications\n * @description Notifications are ephemeral broadcasts that are **not** part of the\n * state tree. They are not processed by reducers and are not replayed on reconnection.\n */\n\nimport type { URI, SessionSummary } from \"./state.js\";\n\n/**\n * Reason why authentication is required.\n *\n * @category Protocol Notifications\n */\nexport const enum AuthRequiredReason {\n /** The client has not yet authenticated for the resource */\n Required = \"required\",\n /** A previously valid token has expired or been revoked */\n Expired = \"expired\",\n}\n\n// ─── Protocol Notifications ──────────────────────────────────────────────────\n\n/**\n * Discriminant values for all protocol notifications.\n *\n * @category Protocol Notifications\n */\nexport const enum NotificationType {\n SessionAdded = \"notify/sessionAdded\",\n SessionRemoved = \"notify/sessionRemoved\",\n SessionSummaryChanged = \"notify/sessionSummaryChanged\",\n AuthRequired = \"notify/authRequired\",\n}\n\n/**\n * Broadcast to all connected clients when a new session is created.\n *\n * @category Protocol Notifications\n * @version 1\n * @example\n * ```json\n * {\n * \"jsonrpc\": \"2.0\",\n * \"method\": \"notification\",\n * \"params\": {\n * \"notification\": {\n * \"type\": \"notify/sessionAdded\",\n * \"summary\": {\n * \"resource\": \"copilot:/<uuid>\",\n * \"provider\": \"copilot\",\n * \"title\": \"New Session\",\n * \"status\": 1,\n * \"createdAt\": 1710000000000,\n * \"modifiedAt\": 1710000000000\n * }\n * }\n * }\n * }\n * ```\n */\nexport interface SessionAddedNotification {\n type: NotificationType.SessionAdded;\n /** Summary of the new session */\n summary: SessionSummary;\n}\n\n/**\n * Broadcast to all connected clients when a session is disposed.\n *\n * @category Protocol Notifications\n * @version 1\n * @example\n * ```json\n * {\n * \"jsonrpc\": \"2.0\",\n * \"method\": \"notification\",\n * \"params\": {\n * \"notification\": {\n * \"type\": \"notify/sessionRemoved\",\n * \"session\": \"copilot:/<uuid>\"\n * }\n * }\n * }\n * ```\n */\nexport interface SessionRemovedNotification {\n type: NotificationType.SessionRemoved;\n /** URI of the removed session */\n session: URI;\n}\n\n/**\n * Broadcast to all connected clients when an existing session's summary\n * changes (title, status, `modifiedAt`, model, working directory, read/done\n * state, or diff statistics).\n *\n * This notification lets clients that maintain a cached session list — for\n * example, the result of a previous `listSessions()` call — stay in sync with\n * in-flight sessions without having to subscribe to every session URI\n * individually. It is complementary to, not a replacement for,\n * `notify/sessionAdded` and `notify/sessionRemoved`: those signal lifecycle\n * (creation/disposal), while this signals summary-level mutations on an\n * already-known session.\n *\n * Semantics:\n *\n * - Only fields present in `changes` have new values; omitted fields are\n * unchanged on the client's cached summary.\n * - Identity fields (`resource`, `provider`, `createdAt`) never change and\n * are not carried.\n * - Like all protocol notifications, this is ephemeral: it is **not**\n * replayed on reconnect. On reconnect, clients should re-fetch the full\n * catalog via `listSessions()` as usual.\n * - The server SHOULD emit this notification whenever any mutable field on\n * {@link SessionSummary | `SessionSummary`} changes for a session the\n * server has surfaced via `listSessions()` or `notify/sessionAdded`.\n * Servers MAY coalesce or debounce updates for noisy fields (for example,\n * `modifiedAt` bumps while a turn is streaming, or rapidly changing\n * `diffs`) at their discretion.\n * - Clients that have no cached entry for `session` MAY ignore the\n * notification; it is not a substitute for `notify/sessionAdded`.\n *\n * @category Protocol Notifications\n * @version 1\n * @example\n * ```json\n * {\n * \"jsonrpc\": \"2.0\",\n * \"method\": \"notification\",\n * \"params\": {\n * \"notification\": {\n * \"type\": \"notify/sessionSummaryChanged\",\n * \"session\": \"copilot:/<uuid>\",\n * \"changes\": {\n * \"title\": \"Refactor auth middleware\",\n * \"status\": 8,\n * \"modifiedAt\": 1710000123456\n * }\n * }\n * }\n * }\n * ```\n */\nexport interface SessionSummaryChangedNotification {\n type: NotificationType.SessionSummaryChanged;\n /** URI of the session whose summary changed */\n session: URI;\n /**\n * Mutable summary fields that changed; omitted fields are unchanged.\n *\n * Identity fields (`resource`, `provider`, `createdAt`) never change and\n * MUST be omitted by senders; receivers SHOULD ignore them if present.\n */\n changes: Partial<SessionSummary>;\n}\n\n/**\n * Sent by the server when a protected resource requires (re-)authentication.\n *\n * This notification is sent when a previously valid token expires or is\n * revoked, or when the server discovers a new authentication requirement.\n * Clients should obtain a fresh token and push it via the `authenticate`\n * command.\n *\n * @category Protocol Notifications\n * @version 1\n * @see {@link /specification/authentication | Authentication}\n * @example\n * ```json\n * {\n * \"jsonrpc\": \"2.0\",\n * \"method\": \"notification\",\n * \"params\": {\n * \"notification\": {\n * \"type\": \"notify/authRequired\",\n * \"resource\": \"https://api.github.com\",\n * \"reason\": \"expired\"\n * }\n * }\n * }\n * ```\n */\nexport interface AuthRequiredNotification {\n type: NotificationType.AuthRequired;\n /** The protected resource identifier that requires authentication */\n resource: string;\n /** Why authentication is required */\n reason?: AuthRequiredReason;\n}\n\n/**\n * Discriminated union of all protocol notifications.\n */\nexport type ProtocolNotification =\n | SessionAddedNotification\n | SessionRemovedNotification\n | SessionSummaryChangedNotification\n | AuthRequiredNotification;\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n\nexport const AHP_SOURCE_COMMIT = \"5f79fe4\" as const;\nexport const AHP_SOURCE_REPOSITORY = \"agent-host-protocol\" as const;\nconst AHP_SOURCE_TYPES_ROOT = \"../agent-host-protocol\" as const;\nconst AHP_SOURCE_TYPES_SUFFIX = \"types\" as const;\nexport const AHP_SOURCE_TYPES_PATH: string = `${AHP_SOURCE_TYPES_ROOT}/${AHP_SOURCE_TYPES_SUFFIX}`;\nexport const AHP_GENERATED_FILES = [\n \"state.ts\",\n \"actions.ts\",\n \"action-origin.generated.ts\",\n \"reducers.ts\",\n \"commands.ts\",\n \"notifications.ts\",\n \"messages.ts\",\n \"errors.ts\",\n \"version/registry.ts\",\n] as const;\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n/**\n * Version Registry — Maps action types and features to protocol versions.\n *\n * @module version/registry\n */\n\nimport type { StateAction } from \"../actions.js\";\nimport { ActionType } from \"../actions.js\";\nimport type { ProtocolNotification } from \"../notifications.js\";\nimport { NotificationType } from \"../notifications.js\";\n\n// ─── Protocol Version Constants ──────────────────────────────────────────────\n\n/**\n * The current protocol version that new code speaks.\n *\n * Formatted as a [SemVer](https://semver.org) `MAJOR.MINOR.PATCH` string.\n */\nexport const PROTOCOL_VERSION = \"0.1.0\";\n\n// ─── SemVer Comparison ───────────────────────────────────────────────────────\n\n/**\n * Parses a `MAJOR.MINOR.PATCH` SemVer string into its three numeric\n * components. Pre-release and build metadata are not supported and MUST NOT\n * be present in protocol version strings.\n *\n * Throws if `version` is not a well-formed `MAJOR.MINOR.PATCH` string.\n */\nfunction parseSemver(version: string): readonly [number, number, number] {\n const match = /^(\\d+)\\.(\\d+)\\.(\\d+)$/.exec(version);\n if (!match) {\n throw new Error(`Invalid protocol version: ${version}`);\n }\n return [Number(match[1]), Number(match[2]), Number(match[3])] as const;\n}\n\n/**\n * Compares two `MAJOR.MINOR.PATCH` SemVer strings.\n *\n * Returns a negative number if `a < b`, zero if `a === b`, and a positive\n * number if `a > b`.\n */\nexport function compareProtocolVersions(a: string, b: string): number {\n const [aMajor, aMinor, aPatch] = parseSemver(a);\n const [bMajor, bMinor, bPatch] = parseSemver(b);\n return aMajor - bMajor || aMinor - bMinor || aPatch - bPatch;\n}\n\n// ─── Exhaustive Action → Version Map ─────────────────────────────────────────\n\n/**\n * Maps every action type to the protocol version that introduced it.\n * Adding a new action to `StateAction` without adding it here is a compile error.\n *\n * Versions are SemVer `MAJOR.MINOR.PATCH` strings (see `PROTOCOL_VERSION`).\n */\nexport const ACTION_INTRODUCED_IN: { readonly [K in StateAction[\"type\"]]: string } = {\n [ActionType.RootAgentsChanged]: \"0.1.0\",\n [ActionType.RootActiveSessionsChanged]: \"0.1.0\",\n [ActionType.SessionReady]: \"0.1.0\",\n [ActionType.SessionCreationFailed]: \"0.1.0\",\n [ActionType.SessionTurnStarted]: \"0.1.0\",\n [ActionType.SessionDelta]: \"0.1.0\",\n [ActionType.SessionResponsePart]: \"0.1.0\",\n [ActionType.SessionToolCallStart]: \"0.1.0\",\n [ActionType.SessionToolCallDelta]: \"0.1.0\",\n [ActionType.SessionToolCallReady]: \"0.1.0\",\n [ActionType.SessionToolCallConfirmed]: \"0.1.0\",\n [ActionType.SessionToolCallComplete]: \"0.1.0\",\n [ActionType.SessionToolCallResultConfirmed]: \"0.1.0\",\n [ActionType.SessionToolCallContentChanged]: \"0.1.0\",\n [ActionType.SessionTurnComplete]: \"0.1.0\",\n [ActionType.SessionTurnCancelled]: \"0.1.0\",\n [ActionType.SessionError]: \"0.1.0\",\n [ActionType.SessionTitleChanged]: \"0.1.0\",\n [ActionType.SessionUsage]: \"0.1.0\",\n [ActionType.SessionReasoning]: \"0.1.0\",\n [ActionType.SessionModelChanged]: \"0.1.0\",\n [ActionType.SessionServerToolsChanged]: \"0.1.0\",\n [ActionType.SessionActiveClientChanged]: \"0.1.0\",\n [ActionType.SessionActiveClientToolsChanged]: \"0.1.0\",\n [ActionType.SessionPendingMessageSet]: \"0.1.0\",\n [ActionType.SessionPendingMessageRemoved]: \"0.1.0\",\n [ActionType.SessionQueuedMessagesReordered]: \"0.1.0\",\n [ActionType.SessionInputRequested]: \"0.1.0\",\n [ActionType.SessionInputAnswerChanged]: \"0.1.0\",\n [ActionType.SessionInputCompleted]: \"0.1.0\",\n [ActionType.SessionCustomizationsChanged]: \"0.1.0\",\n [ActionType.SessionCustomizationToggled]: \"0.1.0\",\n [ActionType.SessionTruncated]: \"0.1.0\",\n [ActionType.SessionIsReadChanged]: \"0.1.0\",\n [ActionType.SessionIsArchivedChanged]: \"0.1.0\",\n [ActionType.SessionActivityChanged]: \"0.1.0\",\n [ActionType.SessionDiffsChanged]: \"0.1.0\",\n [ActionType.SessionConfigChanged]: \"0.1.0\",\n [ActionType.SessionMetaChanged]: \"0.1.0\",\n [ActionType.RootTerminalsChanged]: \"0.1.0\",\n [ActionType.RootConfigChanged]: \"0.1.0\",\n [ActionType.TerminalData]: \"0.1.0\",\n [ActionType.TerminalInput]: \"0.1.0\",\n [ActionType.TerminalResized]: \"0.1.0\",\n [ActionType.TerminalClaimed]: \"0.1.0\",\n [ActionType.TerminalTitleChanged]: \"0.1.0\",\n [ActionType.TerminalCwdChanged]: \"0.1.0\",\n [ActionType.TerminalExited]: \"0.1.0\",\n [ActionType.TerminalCleared]: \"0.1.0\",\n [ActionType.TerminalCommandDetectionAvailable]: \"0.1.0\",\n [ActionType.TerminalCommandExecuted]: \"0.1.0\",\n [ActionType.TerminalCommandFinished]: \"0.1.0\",\n};\n\n/**\n * Returns whether the given action type is known to the specified protocol version.\n */\nexport function isActionKnownToVersion(action: StateAction, clientVersion: string): boolean {\n return compareProtocolVersions(ACTION_INTRODUCED_IN[action.type], clientVersion) <= 0;\n}\n\n// ─── Exhaustive Notification → Version Map ─────────────────────────────────\n\n/**\n * Maps every notification type to the protocol version that introduced it.\n * Adding a new notification to `ProtocolNotification` without adding it here\n * is a compile error.\n *\n * Versions are SemVer `MAJOR.MINOR.PATCH` strings (see `PROTOCOL_VERSION`).\n */\nexport const NOTIFICATION_INTRODUCED_IN: { readonly [K in ProtocolNotification[\"type\"]]: string } =\n {\n [NotificationType.SessionAdded]: \"0.1.0\",\n [NotificationType.SessionRemoved]: \"0.1.0\",\n [NotificationType.SessionSummaryChanged]: \"0.1.0\",\n [NotificationType.AuthRequired]: \"0.1.0\",\n };\n\n/**\n * Returns whether the given notification type is known to the specified protocol version.\n */\nexport function isNotificationKnownToVersion(\n notification: ProtocolNotification,\n clientVersion: string,\n): boolean {\n return compareProtocolVersions(NOTIFICATION_INTRODUCED_IN[notification.type], clientVersion) <= 0;\n}\n","import type { AhpEvent, Direction, EventKind } from \"@ahp-inspector/shared\";\nimport { summarizeEvent } from \"./summary.js\";\nimport type { Status } from \"./types.js\";\n\nexport type LatencyBand = \"fast\" | \"normal\" | \"slow\" | \"critical\";\nexport type ActionFamily = \"text\" | \"tool-call\" | \"tool-result\" | \"status\" | \"unknown\";\nexport type KindTag = \"REQ\" | \"RES\" | \"NTF\" | \"ACT\" | \"BAD\" | \"LOG\";\nexport type DirGlyph = \"→\" | \"←\" | \"·\";\n\n/** EventRow — locked Phase-2 row projection contract.\n * Consumed by: server projector (snapshot/append SSE frames),\n * UI <EventRow> component, UI virtualization tests.\n * Adding fields is non-breaking; renaming/removing is breaking. */\nexport interface EventRow {\n readonly idx: number; // EventStore index; stable selection key\n readonly seq: number;\n readonly ts: number; // epoch ms\n readonly tsFmt: string; // 'HH:mm:ss.SSS' UTC\n readonly dir: Direction;\n readonly dirGlyph: DirGlyph;\n readonly kind: EventKind;\n readonly kindTag: KindTag;\n readonly method: string | null;\n readonly actionType: string | null;\n readonly actionFamily: ActionFamily | null;\n readonly sessionId: string | null;\n readonly sessionShort: string | null;\n readonly turnId: string | null;\n readonly turnShort: string | null;\n readonly keyId: string | null;\n readonly status: Status;\n readonly latencyMs: number | null;\n readonly latencyBand: LatencyBand | null;\n readonly payloadPreview: string;\n readonly summary?: string;\n readonly pairIdx?: number | null;\n // Parse-error specifics; null/empty for ok events.\n readonly parseErrorReason: string | null;\n readonly lineIndex: number | null; // 1-based source line; from seq+1\n // Phase 3 additions — additive, non-breaking (row-projection.ts:9-13)\n readonly errorCode: number | null;\n readonly serverSeq: number | null;\n readonly previousServerSeq: number | null;\n readonly gapBefore: boolean;\n readonly isAuthFailure: boolean;\n}\n\n/** Phase 3 additive extras — computed in AppState before projectRow call. */\nexport interface EventRowExtras {\n readonly errorCode: number | null;\n readonly serverSeq: number | null;\n readonly previousServerSeq: number | null;\n readonly gapBefore: boolean;\n readonly isAuthFailure: boolean;\n readonly pairIdx?: number | null;\n}\n\nconst DEFAULT_EXTRAS: EventRowExtras = {\n errorCode: null,\n serverSeq: null,\n previousServerSeq: null,\n gapBefore: false,\n isAuthFailure: false,\n pairIdx: null,\n};\n\nexport function bandFor(latencyMs: number | null): LatencyBand | null {\n if (latencyMs === null || latencyMs < 0) return null;\n if (latencyMs < 50) return \"fast\";\n if (latencyMs < 200) return \"normal\";\n if (latencyMs < 1000) return \"slow\";\n return \"critical\";\n}\n\nexport function dirGlyphFor(dir: Direction): DirGlyph {\n return dir === \"c2s\" ? \"→\" : dir === \"s2c\" ? \"←\" : \"·\";\n}\n\nconst KIND_TAG: Record<EventKind, KindTag> = {\n request: \"REQ\",\n response: \"RES\",\n \"client-notification\": \"NTF\",\n \"server-notification\": \"NTF\",\n \"protocol-notification\": \"NTF\",\n action: \"ACT\",\n \"parse-error\": \"BAD\",\n log: \"LOG\",\n};\n\nexport function kindTagFor(kind: EventKind): KindTag {\n return KIND_TAG[kind];\n}\n\nexport function actionFamilyFor(kind: EventKind, actionType: string | null): ActionFamily | null {\n if (kind !== \"action\") return null;\n if (!actionType) return \"unknown\";\n if (/^text$/i.test(actionType)) return \"text\";\n if (/^tool[._-]?call/i.test(actionType)) return \"tool-call\";\n if (/^tool[._-]?result/i.test(actionType)) return \"tool-result\";\n if (/^status/i.test(actionType)) return \"status\";\n return \"unknown\";\n}\n\nexport function formatTs(ms: number): string {\n const d = new Date(ms);\n const pad = (n: number, w = 2): string => String(n).padStart(w, \"0\");\n return `${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}:${pad(d.getUTCSeconds())}.${pad(\n d.getUTCMilliseconds(),\n 3,\n )}`;\n}\n\nexport function formatSessionShort(sessionId: string): string {\n const parts = sessionId.split(/[/:]+/).filter(Boolean);\n let label = parts.at(-1) ?? sessionId;\n label = label.replace(/^session[-_:]?/i, \"\");\n label = label.replace(/[-_]\\d{4}[-_]\\d{2}[-_]\\d{2}$/u, \"\");\n\n if (/^[0-9a-f]{16,}$/iu.test(label)) return label.slice(-8);\n const uuidFirstSegment = label.match(/^[0-9a-f]{8}(?=-[0-9a-f]{4}-)/iu)?.[0];\n if (uuidFirstSegment) return uuidFirstSegment;\n if (label.length <= 18) return label;\n return `${label.slice(0, 17)}…`;\n}\n\nexport function payloadPreviewOf(raw: unknown): string {\n if (raw === undefined || raw === null) return \"\";\n let src: unknown = raw;\n if (typeof raw === \"object\" && raw !== null) {\n const r = raw as Record<string, unknown>;\n src = r.params ?? r.result ?? raw;\n }\n let s: string;\n try {\n s = JSON.stringify(src) ?? \"\";\n } catch {\n s = \"\";\n }\n s = s.replace(/\\s+/g, \" \");\n return s.length > 120 ? s.slice(0, 120) : s;\n}\n\nfunction capSummary(summary: string): string {\n return summary.length > 160 ? `${summary.slice(0, 159)}…` : summary;\n}\n\n/**\n * Compute the label shown in the timeline's Event column. Mirrors the UI's\n * `primaryLabel` so projection-side post-processing can avoid emitting a\n * summary that just repeats it.\n */\nfunction primaryLabelFor(\n kind: AhpEvent[\"kind\"],\n method: string | null,\n actionType: string | null,\n): string | null {\n if (kind === \"action\" || kind === \"protocol-notification\") return actionType ?? method;\n return method ?? actionType;\n}\n\n/** Strip the Event-column label from the start of summary so it adds info. */\nfunction dropLabelPrefix(summary: string, label: string | null): string {\n if (!label) return summary;\n const lc = summary.toLowerCase();\n const lcLabel = label.toLowerCase();\n if (lc === lcLabel) return summary;\n if (!lc.startsWith(`${lcLabel} `)) return summary;\n const stripped = summary.slice(label.length).trim();\n return stripped.length > 0 ? stripped : summary;\n}\n\nexport function projectRow(\n event: AhpEvent,\n idx: number,\n status: Status,\n latencyMs: number | null,\n extras: EventRowExtras = DEFAULT_EXTRAS,\n pairMethod: string | null = null,\n): EventRow {\n if (event.kind === \"parse-error\") {\n return {\n idx,\n seq: event.seq,\n ts: event.ts,\n tsFmt: formatTs(event.ts),\n dir: event.dir,\n dirGlyph: dirGlyphFor(event.dir),\n kind: event.kind,\n kindTag: \"BAD\",\n method: null,\n actionType: null,\n actionFamily: null,\n sessionId: null,\n sessionShort: null,\n turnId: null,\n turnShort: null,\n keyId: null,\n status: \"n/a\",\n latencyMs: null,\n latencyBand: null,\n payloadPreview: \"\",\n summary: capSummary(summarizeEvent(event, null)),\n pairIdx: null,\n parseErrorReason: event.parseError?.reason ?? \"unknown parse error\",\n lineIndex: event.seq + 1,\n ...DEFAULT_EXTRAS,\n };\n }\n const session = event.sessionId;\n const turn = event.turnId;\n const idStr = event.id === null ? null : String(event.id);\n return {\n idx,\n seq: event.seq,\n ts: event.ts,\n tsFmt: formatTs(event.ts),\n dir: event.dir,\n dirGlyph: dirGlyphFor(event.dir),\n kind: event.kind,\n kindTag: kindTagFor(event.kind),\n method: event.method,\n actionType: event.actionType,\n actionFamily: actionFamilyFor(event.kind, event.actionType),\n sessionId: session,\n sessionShort: session ? formatSessionShort(session) : null,\n turnId: turn,\n turnShort: turn ? turn.slice(-6) : null,\n keyId: idStr ? (idStr.length > 12 ? idStr.slice(0, 12) : idStr) : null,\n status,\n latencyMs,\n latencyBand: bandFor(latencyMs),\n payloadPreview: payloadPreviewOf(event.raw),\n summary: capSummary(\n dropLabelPrefix(\n summarizeEvent(event, pairMethod),\n primaryLabelFor(event.kind, event.method, event.actionType),\n ),\n ),\n pairIdx: extras.pairIdx ?? null,\n parseErrorReason: null,\n lineIndex: null,\n ...extras,\n };\n}\n","import { ChevronDown } from \"lucide-react\";\nimport type { JSX } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { GroupingMode } from \"../../state/store.js\";\n\ninterface GroupToggleChipProps {\n value: GroupingMode;\n onChange(mode: GroupingMode): void;\n}\n\nconst MODES: { mode: GroupingMode; label: string }[] = [\n { mode: \"none\", label: \"None\" },\n { mode: \"session\", label: \"Session\" },\n { mode: \"session+turn\", label: \"Session + Turn\" },\n];\n\nconst modeLabel: Record<GroupingMode, string> = {\n none: \"None\",\n session: \"Session\",\n \"session+turn\": \"Session + Turn\",\n};\n\ninterface GroupTogglePopoverProps {\n value: GroupingMode;\n onChange(mode: GroupingMode): void;\n onClose(): void;\n}\n\nfunction GroupTogglePopover({ value, onChange, onClose }: GroupTogglePopoverProps): JSX.Element {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleMouseDown(e: MouseEvent) {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClose();\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [onClose]);\n\n function handleSelect(mode: GroupingMode) {\n onChange(mode);\n onClose();\n }\n\n return (\n <div\n ref={ref}\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n right: 0,\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n minWidth: 160,\n boxShadow: \"var(--shadow-menu)\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"var(--space-1) 0\",\n }}\n >\n {MODES.map(({ mode, label }) => (\n <label\n key={mode}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-1) var(--space-3)\",\n background: value === mode ? \"var(--color-chip-bg-active)\" : \"none\",\n cursor: \"pointer\",\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n width: \"100%\",\n }}\n >\n <input\n type=\"radio\"\n name=\"group-mode\"\n value={mode}\n checked={value === mode}\n onChange={() => handleSelect(mode)}\n style={{\n accentColor: \"var(--color-accent)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLInputElement).style.outline = \"none\";\n }}\n />\n {label}\n </label>\n ))}\n </div>\n );\n}\n\nexport function GroupToggleChip({ value, onChange }: GroupToggleChipProps): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n\n function handleChange(mode: GroupingMode) {\n onChange(mode);\n if (mode !== \"none\") {\n window.scrollTo(0, 0);\n }\n }\n\n return (\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <button\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n onClick={() => setIsOpen((o) => !o)}\n onMouseDown={(event) => event.stopPropagation()}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 28,\n paddingLeft: \"var(--space-2)\",\n paddingRight: \"var(--space-2)\",\n background: isOpen ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 6,\n color: \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n cursor: \"pointer\",\n outline: \"none\",\n whiteSpace: \"nowrap\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <span>Group: {modeLabel[value]}</span>\n <ChevronDown size={12} style={{ color: \"var(--color-chip-fg-muted)\" }} />\n </button>\n {isOpen && (\n <GroupTogglePopover\n value={value}\n onChange={handleChange}\n onClose={() => setIsOpen(false)}\n />\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\ninterface ResultCounterProps {\n visible: number;\n total: number;\n}\n\nexport function ResultCounter({ visible, total }: ResultCounterProps): JSX.Element {\n const isFiltered = visible !== total;\n const isZero = visible === 0 && isFiltered;\n\n return (\n <span\n style={{\n color: isZero ? \"var(--color-warning)\" : \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontVariantNumeric: \"tabular-nums\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {isFiltered ? `${visible}/${total} events` : `${total} events`}\n </span>\n );\n}\n","import { Search, X } from \"lucide-react\";\nimport type { JSX, RefObject } from \"react\";\n\ninterface SearchInputProps {\n value: string;\n onChange(q: string): void;\n onClear(): void;\n ref?: RefObject<HTMLInputElement | null>;\n}\n\nexport function SearchInput({ value, onChange, onClear, ref }: SearchInputProps): JSX.Element {\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n flex: \"1 1 520px\",\n minWidth: 360,\n maxWidth: 720,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: \"var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n pointerEvents: \"none\",\n }}\n >\n <Search size={16} />\n <span>Search</span>\n </span>\n <input\n type=\"text\"\n ref={ref}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && value.length > 0) {\n e.preventDefault();\n window.dispatchEvent(\n new CustomEvent(\"ahp-search-nav\", {\n detail: e.shiftKey ? \"previous\" : \"next\",\n }),\n );\n }\n }}\n placeholder=\"all JSON payloads, methods, ids, sessions...\"\n aria-label=\"Search all events\"\n style={{\n width: \"100%\",\n height: \"var(--filter-bar-height)\",\n paddingLeft: \"92px\",\n paddingRight: value.length > 0 ? \"var(--space-6)\" : \"var(--space-8)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-row-size)\",\n lineHeight: \"var(--text-row-line)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n {value.length === 0 && (\n <span\n aria-hidden=\"true\"\n title=\"Press / to focus search\"\n style={{\n position: \"absolute\",\n right: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n padding: \"0 var(--space-1)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n lineHeight: \"16px\",\n pointerEvents: \"none\",\n }}\n >\n /\n </span>\n )}\n {value.length > 0 && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={onClear}\n style={{\n position: \"absolute\",\n right: \"var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-text-muted)\",\n padding: 0,\n borderRadius: 3,\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <X size={14} />\n </button>\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\n\ninterface TimeRangePopoverProps {\n from: number | null;\n to: number | null;\n onApply(from: number | null, to: number | null): void;\n onClose(): void;\n}\n\nfunction tsToDatetimeLocal(ts: number | null): string {\n if (ts === null) return \"\";\n const d = new Date(ts);\n // format: YYYY-MM-DDTHH:mm\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`;\n}\n\nfunction datetimeLocalToTs(s: string): number | null {\n if (!s) return null;\n const ms = new Date(s).getTime();\n return Number.isNaN(ms) ? null : ms;\n}\n\nexport function TimeRangePopover({\n from,\n to,\n onApply,\n onClose,\n}: TimeRangePopoverProps): JSX.Element {\n const ref = useRef<HTMLDivElement>(null);\n const [fromVal, setFromVal] = useState(tsToDatetimeLocal(from));\n const [toVal, setToVal] = useState(tsToDatetimeLocal(to));\n\n useEffect(() => {\n function handleMouseDown(e: MouseEvent) {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClose();\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [onClose]);\n\n function handleApply() {\n onApply(datetimeLocalToTs(fromVal), datetimeLocalToTs(toVal));\n onClose();\n }\n\n function handleClear() {\n setFromVal(\"\");\n setToVal(\"\");\n onApply(null, null);\n }\n\n const inputStyle: React.CSSProperties = {\n width: \"100%\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n colorScheme: \"var(--color-scheme)\",\n };\n\n return (\n <div\n ref={ref}\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n left: 0,\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n minWidth: 240,\n boxShadow: \"var(--shadow-menu)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-3)\",\n }}\n >\n <label\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n From\n <input\n type=\"datetime-local\"\n value={fromVal}\n onChange={(e) => setFromVal(e.target.value)}\n style={inputStyle}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n </label>\n <label\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n To\n <input\n type=\"datetime-local\"\n value={toVal}\n onChange={(e) => setToVal(e.target.value)}\n style={inputStyle}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n </label>\n <div style={{ display: \"flex\", gap: \"var(--space-2)\", justifyContent: \"flex-end\" }}>\n <button\n type=\"button\"\n onClick={handleClear}\n style={{\n background: \"none\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Clear selection\n </button>\n <button\n type=\"button\"\n onClick={handleApply}\n style={{\n background: \"var(--color-accent)\",\n border: \"none\",\n borderRadius: 4,\n color: \"var(--color-accent-foreground)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Apply range\n </button>\n </div>\n </div>\n );\n}\n","import { formatSessionShort } from \"@ahp-inspector/core\";\nimport type { JSX, RefObject } from \"react\";\nimport { useState } from \"react\";\nimport { useFacetCounts, useFilteredRows } from \"../../state/selectors.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { FacetChip } from \"./FacetChip.js\";\nimport { FacetPopover } from \"./FacetPopover.js\";\nimport { GroupToggleChip } from \"./GroupToggleChip.js\";\nimport { ResultCounter } from \"./ResultCounter.js\";\nimport { SearchInput } from \"./SearchInput.js\";\nimport { TimeRangePopover } from \"./TimeRangePopover.js\";\n\ntype OpenPopover =\n | \"direction\"\n | \"kind\"\n | \"method\"\n | \"action\"\n | \"session\"\n | \"turn\"\n | \"status\"\n | \"time\"\n | null;\n\nfunction mapToOptions(\n m: Map<string, number>,\n labelFor: (value: string) => string = (value) => value,\n): { value: string; label: string; count: number }[] {\n return Array.from(m.entries()).map(([value, count]) => ({\n value,\n label: labelFor(value),\n count,\n }));\n}\n\nexport function FilterBar({\n searchInputRef,\n}: {\n searchInputRef?: RefObject<HTMLInputElement | null>;\n}): JSX.Element {\n const searchQuery = useAppStore((s) => s.searchQuery);\n const setSearchQuery = useAppStore((s) => s.setSearchQuery);\n const searchTotal = useAppStore((s) => s.searchTotal);\n const searchStatus = useAppStore((s) => s.searchStatus);\n const searchTruncated = useAppStore((s) => s.searchTruncated);\n const searchError = useAppStore((s) => s.searchError);\n const filters = useAppStore((s) => s.filters);\n const patchFilter = useAppStore((s) => s.patchFilter);\n const grouping = useAppStore((s) => s.grouping);\n const setGrouping = useAppStore((s) => s.setGrouping);\n const facetCounts = useFacetCounts();\n const filteredRows = useFilteredRows();\n const totalRows = useAppStore((s) => s.rows.length);\n\n const [openPopover, setOpenPopover] = useState<OpenPopover>(null);\n\n function togglePopover(name: OpenPopover) {\n setOpenPopover((prev) => (prev === name ? null : name));\n }\n\n function close() {\n setOpenPopover(null);\n }\n\n function navigateSearch(direction: \"previous\" | \"next\"): void {\n window.dispatchEvent(new CustomEvent(\"ahp-search-nav\", { detail: direction }));\n }\n\n const hasSearch = searchQuery.trim() !== \"\";\n const hasSearchMatches = hasSearch && searchTotal > 0;\n const searchStatusText = !hasSearch\n ? null\n : searchStatus === \"searching\"\n ? \"Searching...\"\n : searchStatus === \"error\"\n ? `Search failed${searchError ? `: ${searchError}` : \"\"}`\n : `${searchTotal.toLocaleString()} ${searchTotal === 1 ? \"match\" : \"matches\"}${searchTruncated ? \"+\" : \"\"}`;\n\n return (\n <div\n data-testid=\"filter-bar\"\n className=\"filter-bar\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n minHeight: \"var(--filter-bar-height)\",\n paddingLeft: \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n position: \"relative\",\n zIndex: 1000,\n }}\n >\n {/* Search input */}\n <SearchInput\n value={searchQuery}\n onChange={setSearchQuery}\n onClear={() => setSearchQuery(\"\")}\n {...(searchInputRef !== undefined ? { ref: searchInputRef } : {})}\n />\n {searchStatusText !== null && (\n <div\n data-testid=\"search-status\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n color: searchStatus === \"error\" ? \"var(--color-danger)\" : \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n >\n <span>{searchStatusText}</span>\n <button\n type=\"button\"\n aria-label=\"Previous search match\"\n disabled={!hasSearchMatches}\n onClick={() => navigateSearch(\"previous\")}\n >\n Prev\n </button>\n <button\n type=\"button\"\n aria-label=\"Next search match\"\n disabled={!hasSearchMatches}\n onClick={() => navigateSearch(\"next\")}\n >\n Next\n </button>\n </div>\n )}\n\n {/* Direction facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Dir\"\n activeCount={filters.direction.length}\n isOpen={openPopover === \"direction\"}\n isDisabled={false}\n onClick={() => togglePopover(\"direction\")}\n />\n {openPopover === \"direction\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.direction)}\n selected={filters.direction}\n onChange={(vals) => patchFilter(\"direction\", vals as (\"c2s\" | \"s2c\")[])}\n onClose={close}\n />\n )}\n </div>\n\n {/* Kind facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Kind\"\n activeCount={filters.kind.length}\n isOpen={openPopover === \"kind\"}\n isDisabled={false}\n onClick={() => togglePopover(\"kind\")}\n />\n {openPopover === \"kind\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.kind)}\n selected={filters.kind}\n onChange={(vals) =>\n patchFilter(\"kind\", vals as import(\"@ahp-inspector/shared\").EventKind[])\n }\n onClose={close}\n />\n )}\n </div>\n\n {/* Method facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Method\"\n activeCount={filters.method.length}\n isOpen={openPopover === \"method\"}\n isDisabled={false}\n onClick={() => togglePopover(\"method\")}\n />\n {openPopover === \"method\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.method)}\n selected={filters.method}\n onChange={(vals) => patchFilter(\"method\", vals)}\n onClose={close}\n searchable\n />\n )}\n </div>\n\n {/* Action facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Action\"\n activeCount={filters.actionType.length}\n isOpen={openPopover === \"action\"}\n isDisabled={false}\n onClick={() => togglePopover(\"action\")}\n />\n {openPopover === \"action\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.actionType)}\n selected={filters.actionType}\n onChange={(vals) => patchFilter(\"actionType\", vals)}\n onClose={close}\n />\n )}\n </div>\n\n {/* Session facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Session\"\n activeCount={filters.session.length}\n isOpen={openPopover === \"session\"}\n isDisabled={false}\n onClick={() => togglePopover(\"session\")}\n />\n {openPopover === \"session\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.session, formatSessionShort)}\n selected={filters.session}\n onChange={(vals) => patchFilter(\"session\", vals)}\n onClose={close}\n searchable\n />\n )}\n </div>\n\n {/* Turn facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Turn\"\n activeCount={filters.turn.length}\n isOpen={openPopover === \"turn\"}\n isDisabled={filters.session.length === 0}\n onClick={() => filters.session.length > 0 && togglePopover(\"turn\")}\n />\n {openPopover === \"turn\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.turn)}\n selected={filters.turn}\n onChange={(vals) => patchFilter(\"turn\", vals)}\n onClose={close}\n searchable\n />\n )}\n </div>\n\n {/* Status facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Status\"\n activeCount={filters.status.length}\n isOpen={openPopover === \"status\"}\n isDisabled={false}\n onClick={() => togglePopover(\"status\")}\n />\n {openPopover === \"status\" && (\n <FacetPopover\n options={mapToOptions(facetCounts.status)}\n selected={filters.status}\n onChange={(vals) =>\n patchFilter(\"status\", vals as import(\"@ahp-inspector/core\").Status[])\n }\n onClose={close}\n />\n )}\n </div>\n\n {/* Time facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Time\"\n activeCount={(filters.timeFrom !== null ? 1 : 0) + (filters.timeTo !== null ? 1 : 0)}\n isOpen={openPopover === \"time\"}\n isDisabled={false}\n onClick={() => togglePopover(\"time\")}\n />\n {openPopover === \"time\" && (\n <TimeRangePopover\n from={filters.timeFrom}\n to={filters.timeTo}\n onApply={(from, to) => {\n patchFilter(\"timeFrom\", from);\n patchFilter(\"timeTo\", to);\n }}\n onClose={close}\n />\n )}\n </div>\n\n {/* Group toggle — right-aligned */}\n <div style={{ marginLeft: \"auto\", flexShrink: 0 }}>\n <GroupToggleChip value={grouping} onChange={setGrouping} />\n </div>\n\n {/* Result counter */}\n <ResultCounter visible={filteredRows.length} total={totalRows} />\n </div>\n );\n}\n","export interface SearchResult {\n matches: number[];\n total: number;\n truncated: boolean;\n}\n\n/**\n * Fetch search results from the server.\n * Respects AbortSignal; throws DOMException AbortError on cancel (caller handles).\n * No Node.js imports — browser-only fetch API only.\n */\nexport async function searchEvents(q: string, signal?: AbortSignal): Promise<SearchResult> {\n const params = new URLSearchParams({ q, limit: \"5000\" });\n // exactOptionalPropertyTypes: only include signal property when it's defined,\n // because RequestInit.signal is AbortSignal | null (not | undefined).\n const init: RequestInit = {\n ...(signal !== undefined ? { signal } : {}),\n };\n const resp = await fetch(`/api/log/search?${params.toString()}`, init);\n if (!resp.ok) throw new Error(`Search failed: ${resp.status}`);\n return resp.json() as Promise<SearchResult>;\n}\n","import { useEffect, useRef } from \"react\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { searchEvents } from \"../../transport/search-client.js\";\n\nconst DEBOUNCE_MS = 150;\n\n/**\n * Call inside FilterBar or a top-level component.\n * Watches searchQuery from store; debounces 150ms;\n * on each new query, aborts the previous request and fetches new results.\n * On empty query, clears volatile search results (match-all = no server call).\n *\n * T-03-05-01: Each query change creates a new AbortController; previous one is\n * aborted; useEffect cleanup also aborts on unmount (listener-leak mitigation).\n */\nexport function useSearch(): void {\n const query = useAppStore((s) => s.searchQuery);\n const clearSearchResults = useAppStore((s) => s.clearSearchResults);\n const setSearchPending = useAppStore((s) => s.setSearchPending);\n const setSearchResult = useAppStore((s) => s.setSearchResult);\n const setSearchError = useAppStore((s) => s.setSearchError);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (timerRef.current) clearTimeout(timerRef.current);\n if (!query) {\n // Empty query — clear matches immediately; cancel any in-flight request.\n abortRef.current?.abort();\n abortRef.current = null;\n clearSearchResults();\n return;\n }\n timerRef.current = setTimeout(() => {\n abortRef.current?.abort();\n const ctrl = new AbortController();\n abortRef.current = ctrl;\n setSearchPending();\n searchEvents(query, ctrl.signal)\n .then((r) => setSearchResult(r.matches, r.total, r.truncated))\n .catch((err: unknown) => {\n if ((err as { name?: string })?.name === \"AbortError\") return;\n console.error(\"[useSearch]\", err);\n setSearchError(err instanceof Error ? err.message : String(err));\n });\n }, DEBOUNCE_MS);\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n abortRef.current?.abort(); // cancel any in-flight request immediately\n abortRef.current = null;\n };\n }, [query, clearSearchResults, setSearchError, setSearchPending, setSearchResult]);\n}\n","import type { JSX } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\n\nconst ORIGIN_LABEL: Record<SafeCandidate[\"origin\"], string> = {\n vscode: \"VS Code\",\n \"vscode-insiders\": \"VS Code Insiders\",\n \"vscode-oss-dev\": \"VS Code OSS (dev)\",\n manual: \"Manual\",\n};\n\nfunction relTime(ms: number): string {\n const diff = Date.now() - ms;\n const min = Math.floor(diff / 60_000);\n if (min < 1) return \"just now\";\n if (min < 60) return `${min}m ago`;\n const hr = Math.floor(min / 60);\n if (hr < 24) return `${hr}h ago`;\n return `${Math.floor(hr / 24)}d ago`;\n}\nfunction formatBytes(n: number): string {\n if (n < 1024) return `${n} B`;\n if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KB`;\n if (n < 1024 * 1024 * 1024) return `${(n / 1024 / 1024).toFixed(1)} MB`;\n return `${(n / 1024 / 1024 / 1024).toFixed(1)} GB`;\n}\n\nfunction stripJsonlExt(label: string): string {\n return label.endsWith(\".jsonl\") ? label.slice(0, -\".jsonl\".length) : label;\n}\n\nexport function CandidateRow({\n candidate,\n onSelect,\n}: {\n candidate: SafeCandidate;\n onSelect(): void;\n}): JSX.Element {\n const dotColor =\n candidate.confidence === \"high\"\n ? \"var(--color-confidence-high)\"\n : candidate.confidence === \"medium\"\n ? \"var(--color-confidence-medium)\"\n : \"var(--color-confidence-low)\";\n return (\n <li style={{ listStyle: \"none\" }}>\n <button\n type=\"button\"\n onClick={onSelect}\n title={candidate.contextLabel ?? \"\"}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-3)\",\n width: \"100%\",\n height: \"var(--candidate-row-height)\",\n padding: \"0 var(--space-4)\",\n background: \"transparent\",\n border: \"none\",\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-row-size)\",\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: dotColor,\n flex: \"0 0 8px\",\n }}\n />\n <span\n style={{\n width: 80,\n flex: \"0 0 80px\",\n textAlign: \"left\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n }}\n >\n {relTime(candidate.mtimeMs)}\n </span>\n <span\n style={{\n flex: 1,\n minWidth: 0,\n fontFamily: \"var(--font-mono)\",\n fontWeight: 600,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {stripJsonlExt(candidate.label)}\n </span>\n <span\n style={{\n minWidth: 80,\n textAlign: \"right\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {ORIGIN_LABEL[candidate.origin]}\n </span>\n <span\n style={{\n width: 56,\n textAlign: \"right\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n }}\n >\n {formatBytes(candidate.sizeBytes)}\n </span>\n <span aria-hidden=\"true\" style={{ color: \"var(--color-text-muted)\", fontSize: 16 }}>\n ›\n </span>\n </button>\n </li>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function NoCandidatesHint(): JSX.Element {\n return (\n <div\n role=\"status\"\n style={{\n padding: \"var(--space-5)\",\n background: \"var(--color-surface)\",\n border: \"1px dashed var(--color-border)\",\n borderRadius: 6,\n color: \"var(--color-text-muted)\",\n fontSize: \"var(--text-body-size)\",\n }}\n >\n <div\n style={{\n fontWeight: 600,\n color: \"var(--color-text)\",\n marginBottom: \"var(--space-2)\",\n }}\n >\n No logs discovered\n </div>\n <p style={{ margin: 0 }}>\n AHP logs are created when VS Code and the Copilot extension generate protocol traffic. Check\n that VS Code is installed and has been used recently.\n </p>\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { CandidateRow } from \"./CandidateRow.js\";\nimport { NoCandidatesHint } from \"./NoCandidatesHint.js\";\n\nexport function CandidateList({\n candidates,\n onSelect,\n}: {\n candidates: readonly SafeCandidate[];\n onSelect(id: string): void;\n}): JSX.Element {\n if (candidates.length === 0) return <NoCandidatesHint />;\n return (\n <ul aria-label=\"Discovered logs\" style={{ margin: 0, padding: 0 }}>\n {candidates.map((c) => (\n <CandidateRow key={c.id} candidate={c} onSelect={() => onSelect(c.id)} />\n ))}\n </ul>\n );\n}\n","import { type FormEvent, type JSX, useId, useState } from \"react\";\n\nconst MAX_PATH_LEN = 4096;\n\nconst ERROR_COPY: Record<string, string> = {\n \"path-too-long\": \"Path is too long.\",\n \"not-found\": \"File not found. Check the path and try again.\",\n \"not-a-file\": \"That path is not a readable file.\",\n \"not-readable\": \"That path is not a readable file.\",\n \"bad-request\": \"Could not open that file. Check that it exists and is readable.\",\n};\nconst FALLBACK_ERROR = \"Could not open that file. Check that it exists and is readable.\";\n\nexport function ManualOpenInput({\n onOpen,\n disabled,\n}: {\n onOpen(path: string): Promise<void>;\n disabled?: boolean;\n}): JSX.Element {\n const [path, setPath] = useState(\"\");\n const [error, setError] = useState<string | null>(null);\n const [busy, setBusy] = useState(false);\n const errorId = useId();\n\n async function submit(e: FormEvent): Promise<void> {\n e.preventDefault();\n if (busy || disabled) return;\n setError(null);\n if (path.length === 0) return;\n if (path.length > MAX_PATH_LEN) {\n setError(ERROR_COPY[\"path-too-long\"] ?? FALLBACK_ERROR);\n return;\n }\n setBusy(true);\n try {\n await onOpen(path);\n } catch (err) {\n const code = (err as { code?: string }).code;\n const copy = (code && ERROR_COPY[code]) || FALLBACK_ERROR;\n setError(copy);\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <form\n onSubmit={submit}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-2)\" }}\n aria-label=\"Open log by path\"\n >\n <div style={{ display: \"flex\", gap: \"var(--space-3)\" }}>\n <input\n type=\"text\"\n value={path}\n onChange={(e) => setPath(e.target.value)}\n maxLength={MAX_PATH_LEN}\n placeholder=\"Paste a log file path\"\n disabled={disabled || busy}\n aria-invalid={error !== null}\n aria-describedby={error ? errorId : undefined}\n style={{\n flex: 1,\n height: 32,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-row-size)\",\n }}\n />\n <button\n type=\"submit\"\n disabled={disabled || busy || path.length === 0}\n style={{\n height: 32,\n padding: \"0 var(--space-4)\",\n background: \"var(--color-accent)\",\n border: \"none\",\n borderRadius: 4,\n color: \"var(--color-bg)\",\n fontWeight: 600,\n cursor: \"pointer\",\n }}\n >\n {busy ? \"Opening…\" : \"Open Log\"}\n </button>\n </div>\n {error !== null && (\n <div\n id={errorId}\n role=\"alert\"\n style={{\n color: \"var(--color-destructive)\",\n fontSize: \"var(--text-body-size)\",\n }}\n >\n {error}\n </div>\n )}\n </form>\n );\n}\n","import { type JSX, useEffect, useRef } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { CandidateList } from \"./CandidateList.js\";\nimport { ManualOpenInput } from \"./ManualOpenInput.js\";\n\nexport function LogPickerPanel({\n open,\n candidates,\n isLoading,\n onSelect,\n onOpenPath,\n onRefresh,\n onClose,\n}: {\n open: boolean;\n candidates: readonly SafeCandidate[];\n isLoading: boolean;\n onSelect(id: string): void;\n onOpenPath(path: string): Promise<void>;\n onRefresh(): void;\n onClose(): void;\n}): JSX.Element | null {\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!open) return;\n function onKey(e: KeyboardEvent): void {\n if (e.key === \"Escape\") onClose();\n }\n document.addEventListener(\"keydown\", onKey);\n // Move focus into the panel.\n const first = panelRef.current?.querySelector<HTMLElement>(\n 'ul[aria-label=\"Discovered logs\"] button',\n );\n if (first) first.focus();\n else panelRef.current?.querySelector<HTMLInputElement>(\"input\")?.focus();\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"Switch log\"\n style={{\n position: \"fixed\",\n // Drop below the 40px HeaderBar; FilterBar (z-index 1000) sits below it\n // in the document, so the picker must use a higher z-index than the\n // FilterBar to fully cover the search row underneath. Otherwise the\n // FilterBar's search input paints on top of this header.\n top: 40,\n left: 0,\n right: 0,\n maxHeight: \"calc(100vh - 40px)\",\n overflowY: \"auto\",\n zIndex: 1200,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border-strong)\",\n boxShadow: \"var(--shadow-menu)\",\n padding: \"var(--space-4)\",\n }}\n >\n <header\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"var(--space-4)\",\n paddingBottom: \"var(--space-3)\",\n borderBottom: \"1px solid var(--color-border)\",\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: \"var(--text-heading-size)\",\n fontWeight: 600,\n color: \"var(--color-text)\",\n }}\n >\n Switch log\n </h2>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-2)\" }}>\n <button\n type=\"button\"\n onClick={onRefresh}\n disabled={isLoading}\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n {isLoading ? \"Refreshing…\" : \"Refresh\"}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n }}\n >\n ✕\n </button>\n </div>\n </header>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-4)\" }}>\n <CandidateList candidates={candidates} onSelect={onSelect} />\n <div\n style={{\n borderTop: \"1px solid var(--color-border)\",\n paddingTop: \"var(--space-3)\",\n }}\n >\n <ManualOpenInput onOpen={onOpenPath} />\n </div>\n </div>\n </div>\n );\n}\n","import type { CSSProperties, JSX } from \"react\";\n\nexport interface StickyGroupBarProps {\n topGroup: { level: \"session\" | \"turn\"; label: string } | null;\n}\n\n/**\n * Renders a 24px bar above the timeline showing the current topmost visible\n * group label. Hidden (returns null) when topGroup is null (no grouping or\n * no visible headers).\n */\nexport function StickyGroupBar({ topGroup }: StickyGroupBarProps): JSX.Element | null {\n if (topGroup === null) return null;\n\n return (\n <div\n data-testid=\"sticky-group-bar\"\n style={{\n height: \"var(--row-group-header-height)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: topGroup.level === \"turn\" ? \"var(--space-5)\" : \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-group-header-bg)\",\n color: \"var(--color-group-header-fg)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n fontWeight: \"var(--weight-semibold)\" as CSSProperties[\"fontWeight\"],\n borderBottom: \"1px solid var(--color-border)\",\n flexShrink: 0,\n zIndex: 1,\n }}\n >\n {topGroup.label}\n </div>\n );\n}\n","// RotationBanner (Plan 04-05 Task 2 / UI-SPEC §6).\n// Auto-dismissing alert shown when SSE `rotation` event fires.\n// Mounted by TimelineRegion (04-06 Task 2) above the virtual list — NOT by AppShell.\n\nimport { type JSX, useEffect } from \"react\";\n\nexport function RotationBanner({ onAutoDismiss }: { onAutoDismiss(): void }): JSX.Element {\n useEffect(() => {\n const t = setTimeout(onAutoDismiss, 5000);\n return () => clearTimeout(t);\n }, [onAutoDismiss]);\n return (\n <div\n role=\"alert\"\n data-testid=\"rotation-banner\"\n style={{\n height: 32,\n background: \"var(--color-banner-rotation-bg)\",\n color: \"var(--color-banner-rotation-fg)\",\n borderLeft: \"3px solid var(--color-banner-rotation-fg)\",\n padding: \"0 var(--space-4)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <span aria-hidden=\"true\">⚠</span>\n <span>Log rotated — reloading from new file.</span>\n </div>\n );\n}\n","// NewEventsPill — Phase 4 Plan 06 Task 1 / UI-SPEC §5.\n// Floating pill rendered by TimelineRegion (absolute, bottom-center) when\n// livePaused === true && pendingNewCount > 0. Click flushes the buffered rows\n// and resumes live-follow.\n\nimport type { JSX } from \"react\";\n\nexport function NewEventsPill({ count, onClick }: { count: number; onClick(): void }): JSX.Element {\n const display = count >= 100 ? \"99+\" : count.toLocaleString();\n const noun = count === 1 ? \"new event\" : \"new events\";\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-live=\"polite\"\n data-testid=\"new-events-pill\"\n style={{\n position: \"absolute\",\n bottom: 16,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n height: 28,\n padding: \"0 var(--space-4)\",\n background: \"var(--color-surface-raised)\",\n color: \"var(--color-text)\",\n border: \"1px solid var(--color-pill-border)\",\n borderRadius: 14,\n boxShadow: \"var(--shadow-menu)\",\n cursor: \"pointer\",\n fontWeight: 600,\n fontSize: \"var(--text-row-size)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <span>\n {display} {noun}\n </span>\n <span aria-hidden=\"true\">·</span>\n <span style={{ color: \"var(--color-accent)\" }}>Resume Following</span>\n </button>\n );\n}\n","import { WifiOff } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\nexport function DisconnectedBanner({ onReconnect }: { onReconnect: () => void }): JSX.Element {\n return (\n <div\n data-testid=\"banner-disconnected\"\n style={{\n height: 40,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface)\",\n borderLeft: \"2px solid var(--color-destructive)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <WifiOff size={16} color=\"var(--color-destructive)\" />\n <span style={{ flex: 1 }}>Disconnected from log stream. Showing last received events.</span>\n <button\n type=\"button\"\n onClick={onReconnect}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: \"var(--color-accent)\",\n cursor: \"pointer\",\n padding: 0,\n }}\n >\n Retry connection\n </button>\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function EmptyState(): JSX.Element {\n return (\n <div\n data-testid=\"state-empty\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n }}\n >\n <div style={{ fontWeight: 600, color: \"var(--color-text)\" }}>No events yet</div>\n <div>This log file is empty. Events will appear as they are written.</div>\n </div>\n );\n}\n","import { Loader2 } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\nexport function LoadingState({ filename }: { filename: string }): JSX.Element {\n return (\n <div\n data-testid=\"state-loading\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: \"var(--space-2)\",\n }}\n >\n <Loader2 className=\"spin\" color=\"var(--color-text-muted)\" size={24} />\n <div style={{ fontWeight: 600 }}>Loading log…</div>\n <div>\n Reading <span className=\"mono\">{filename}</span>\n </div>\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function NoResultsBanner({ heading, body }: { heading: string; body: string }): JSX.Element {\n return (\n <div\n data-testid=\"banner-no-results\"\n style={{\n minHeight: 64,\n padding: \"var(--space-3)\",\n background: \"var(--color-surface)\",\n borderLeft: \"4px solid var(--color-warning)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-1)\",\n }}\n >\n <div style={{ fontWeight: 600 }}>{heading}</div>\n <div>{body}</div>\n </div>\n );\n}\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a, _b, _c;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n return;\n }\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this)\n );\n }\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n }\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1 && shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!this.scrollState || this.scrollState.behavior !== \"smooth\") {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a;\n const item = this.measurementsCache[index];\n if (!item) return;\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== \"smooth\" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0;\n if (\"scrollHeight\" in this.scrollElement) {\n return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;\n } else {\n const doc = this.scrollElement.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;\n }\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.measurementsCache[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(toOffset, align);\n const now = this.now();\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) {\n return;\n }\n const [offset, align] = offsetInfo;\n const now = this.now();\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getScrollOffset() + delta;\n const now = this.now();\n this.scrollState = {\n index: null,\n align: \"start\",\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;\n const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;\n const STABLE_FRAMES = 1;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset;\n this.scrollState.behavior = \"auto\";\n this._scrollToOffset(targetOffset, {\n adjustments: void 0,\n behavior: \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase({\n useFlushSync = true,\n ...options\n}) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (useFlushSync && sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import type { Direction } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\n\n// Plan 02-03 deviation (Rule 3): the canonical `Direction` from\n// @ahp-inspector/shared is \"c2s\" | \"s2c\". The plan called for an \"unknown\"\n// fallback glyph (UI-SPEC §5.1). We widen the cell prop locally to keep\n// the renderer total without changing the shared type.\nexport type DirectionInput = Direction | \"unknown\";\n\nconst GLYPH: Record<DirectionInput, string> = {\n c2s: \"→\",\n s2c: \"←\",\n unknown: \"·\",\n};\nconst COLOR: Record<DirectionInput, string> = {\n c2s: \"var(--dir-c2s)\",\n s2c: \"var(--dir-s2c)\",\n unknown: \"var(--color-text-muted)\",\n};\n\nexport function DirectionGlyph({ direction }: { direction: DirectionInput }): JSX.Element {\n return (\n <span\n data-testid=\"dir-glyph\"\n data-direction={direction}\n style={{\n display: \"inline-block\",\n width: 16,\n textAlign: \"center\",\n color: COLOR[direction],\n }}\n >\n {GLYPH[direction]}\n </span>\n );\n}\n","import type { KindTag as KindTagValue } from \"@ahp-inspector/core\";\nimport type { JSX } from \"react\";\n\nconst VAR: Record<KindTagValue, string> = {\n REQ: \"--kind-request\",\n RES: \"--kind-response\",\n NTF: \"--kind-notification\",\n ACT: \"--kind-action\",\n BAD: \"--kind-parse-error\",\n LOG: \"--kind-action\",\n};\n\nconst TITLE: Record<KindTagValue, string> = {\n REQ: \"Request\",\n RES: \"Response\",\n NTF: \"Notification\",\n ACT: \"Action\",\n BAD: \"Parse error\",\n LOG: \"Log\",\n};\n\nexport function KindTag({ kind }: { kind: KindTagValue }): JSX.Element {\n const v = VAR[kind];\n return (\n <span\n data-testid=\"kind-tag\"\n data-kind={kind}\n title={TITLE[kind]}\n style={{\n display: \"inline-block\",\n width: 44,\n textAlign: \"center\",\n padding: \"0 4px\",\n fontSize: \"var(--text-ui-muted-size)\",\n textTransform: \"uppercase\",\n background: `color-mix(in srgb, var(${v}) 20%, transparent)`,\n color: `var(${v})`,\n borderRadius: 2,\n }}\n >\n {kind}\n </span>\n );\n}\n","import type { LatencyBand } from \"@ahp-inspector/core\";\nimport type { JSX } from \"react\";\n\nfunction fmt(ms: number | null): string {\n if (ms == null) return \"—\";\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(1)}s`;\n}\n\nexport function LatencyCell({\n ms,\n band,\n}: {\n ms: number | null;\n band: LatencyBand | null;\n}): JSX.Element {\n return (\n <div\n data-testid=\"latency-cell\"\n data-band={band ?? \"\"}\n className=\"latency\"\n style={{\n position: \"relative\",\n width: 72,\n height: \"var(--row-height)\",\n display: \"flex\",\n alignItems: \"center\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n <span>{fmt(ms)}</span>\n {band && (\n <span\n data-testid=\"latency-bar\"\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: 4,\n background: `var(--latency-${band})`,\n }}\n />\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function SummaryCell({ text }: { text: string }): JSX.Element {\n return (\n <span\n data-testid=\"row-summary\"\n className=\"summary\"\n style={{\n color: \"var(--color-text-muted)\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n display: \"inline-block\",\n maxWidth: \"100%\",\n }}\n >\n {text}\n </span>\n );\n}\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid rows/cells use divs per ARIA grid pattern and absolute positioning.\n// biome-ignore-all lint/a11y/useFocusableInteractive: grid keyboard focus is managed at the row level; individual cells are not tab stops.\n\nimport type { EventRow as EventRowData } from \"@ahp-inspector/core\";\nimport { ShieldAlert } from \"lucide-react\";\nimport type { CSSProperties, JSX } from \"react\";\nimport { memo } from \"react\";\nimport { DirectionGlyph } from \"./cells/DirectionGlyph.js\";\nimport { KindTag } from \"./cells/KindTag.js\";\nimport { LatencyCell } from \"./cells/LatencyCell.js\";\nimport { SummaryCell } from \"./cells/SummaryCell.js\";\n\nexport interface EventRowProps {\n row: EventRowData;\n isSelected: boolean;\n onClick: () => void;\n style?: CSSProperties;\n searchQuery?: string;\n isSearchMatch?: boolean;\n pairHighlight?: \"request\" | \"response\" | null;\n pairHidden?: \"request\" | \"response\" | null;\n}\n\nexport const TIMELINE_GRID_COLUMNS =\n \"4px 96px 96px 16px 44px 220px 132px 72px 72px minmax(240px, 1fr)\";\n\nconst cellStyle: CSSProperties = {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n};\n\nfunction railColor(row: EventRowData, isSelected: boolean): string {\n if (isSelected) return \"var(--color-accent)\";\n if (row.status === \"error\" || row.isAuthFailure) return \"var(--color-destructive)\";\n if (row.status === \"orphan\" || row.status === \"unmatched\") return \"var(--color-warning)\";\n return \"transparent\";\n}\n\nfunction primaryLabel(row: EventRowData): string | null {\n if (row.kind === \"action\" || row.kind === \"protocol-notification\") {\n return row.actionType ?? row.method;\n }\n return row.method ?? row.actionType;\n}\n\nfunction primaryLabelTitle(row: EventRowData): string {\n const label = primaryLabel(row);\n if (\n (row.kind === \"action\" || row.kind === \"protocol-notification\") &&\n row.method &&\n row.actionType\n ) {\n return `${row.actionType} (${row.method})`;\n }\n return label ?? \"\";\n}\n\nfunction statusBadge(\n row: EventRowData,\n): { text: string; title: string; tone: \"error\" | \"warning\" } | null {\n if (row.isAuthFailure) {\n return { text: \"AUTH\", title: \"Authentication failure\", tone: \"error\" };\n }\n if (row.status === \"error\") {\n return { text: \"ERR\", title: \"Error response\", tone: \"error\" };\n }\n if (row.status === \"unmatched\") {\n return {\n text: \"TIMEOUT\",\n title: \"Request timed out before a response was observed\",\n tone: \"warning\",\n };\n }\n if (row.status === \"orphan\") {\n return {\n text: \"ORPHAN\",\n title: \"Response could not be paired with a visible request\",\n tone: \"warning\",\n };\n }\n return null;\n}\n\n/**\n * Highlight occurrences of `query` (case-insensitive) within `text`.\n * Returns a JSX element with <mark> wrapping each match.\n * Only applies when query is ≥ 2 characters (T-03-05-03: uses React elements — auto-escaped, no XSS).\n */\nfunction highlightMatches(text: string, query: string): JSX.Element {\n if (query.length < 2) return <>{text}</>;\n const lower = text.toLowerCase();\n const lowerQ = query.toLowerCase();\n const parts: JSX.Element[] = [];\n let last = 0;\n let idx = lower.indexOf(lowerQ, last);\n while (idx !== -1) {\n if (idx > last) {\n parts.push(<span key={`t-${last}`}>{text.slice(last, idx)}</span>);\n }\n parts.push(\n <mark\n key={`m-${idx}`}\n style={{\n background: \"var(--color-search-match-bg)\",\n color: \"var(--color-search-match-fg)\",\n }}\n >\n {text.slice(idx, idx + query.length)}\n </mark>,\n );\n last = idx + query.length;\n idx = lower.indexOf(lowerQ, last);\n }\n if (last < text.length) {\n parts.push(<span key={`t-${last}`}>{text.slice(last)}</span>);\n }\n return <>{parts}</>;\n}\n\nexport const EventRow = memo(function EventRow({\n row,\n isSelected,\n onClick,\n style,\n searchQuery = \"\",\n isSearchMatch = false,\n pairHighlight = null,\n pairHidden = null,\n}: EventRowProps): JSX.Element {\n const label = primaryLabel(row);\n const labelTitle = primaryLabelTitle(row);\n const badge = statusBadge(row);\n const hiddenPairCopy =\n pairHidden === \"response\"\n ? \"Correlated response is hidden by current filters\"\n : pairHidden === \"request\"\n ? \"Correlated request is hidden by current filters\"\n : null;\n\n return (\n <div\n role=\"row\"\n aria-rowindex={row.idx + 1}\n aria-selected={isSelected}\n aria-label={`${row.keyId ?? \"no id\"} ${row.tsFmt} ${row.dir} ${row.kindTag} ${label ?? \"no event\"}${\n badge ? ` ${badge.text}` : \"\"\n }${hiddenPairCopy ? ` ${hiddenPairCopy}` : \"\"}`}\n title={hiddenPairCopy ?? undefined}\n onClick={onClick}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onClick();\n }\n }}\n tabIndex={isSelected ? 0 : -1}\n data-testid={`row-${row.idx}`}\n data-selected={isSelected ? \"true\" : undefined}\n data-search-match={isSearchMatch ? \"true\" : undefined}\n data-pair-highlight={pairHighlight ?? undefined}\n data-pair-hidden={pairHidden ?? undefined}\n style={{\n display: \"grid\",\n gridTemplateColumns: TIMELINE_GRID_COLUMNS,\n alignItems: \"center\",\n height: \"var(--row-height)\",\n boxSizing: \"border-box\",\n padding: \"4px 8px\",\n cursor: \"pointer\",\n minWidth: \"max-content\",\n background: isSelected\n ? \"var(--row-selected-bg)\"\n : pairHighlight\n ? \"color-mix(in srgb, var(--color-info) 14%, transparent)\"\n : isSearchMatch\n ? \"color-mix(in srgb, var(--color-search-match-bg) 28%, transparent)\"\n : \"transparent\",\n ...style,\n }}\n >\n <div\n role=\"gridcell\"\n data-testid=\"row-rail\"\n style={{\n ...cellStyle,\n width: 4,\n height: \"100%\",\n background:\n isSearchMatch && !isSelected\n ? \"var(--color-search-match-bg)\"\n : railColor(row, isSelected),\n }}\n />\n <div role=\"gridcell\" className=\"id\" style={cellStyle}>\n {row.keyId ?? \"—\"}\n </div>\n <div role=\"gridcell\" className=\"ts\" style={cellStyle}>\n {row.tsFmt}\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n {row.isAuthFailure ? (\n <ShieldAlert\n size={14}\n data-testid=\"auth-fail-glyph\"\n aria-label=\"Authentication failure\"\n style={{ color: \"var(--color-auth-fail-rail)\", display: \"block\" }}\n />\n ) : (\n <DirectionGlyph direction={row.dir} />\n )}\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n <KindTag kind={row.kindTag} />\n </div>\n <div\n role=\"gridcell\"\n className=\"method\"\n title={labelTitle}\n style={{\n ...cellStyle,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n }}\n >\n {badge ? (\n <span\n data-testid=\"row-status-badge\"\n title={badge.title}\n style={{\n color: badge.tone === \"error\" ? \"var(--color-destructive)\" : \"var(--color-warning)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: 600,\n flexShrink: 0,\n }}\n >\n {badge.text}\n </span>\n ) : null}\n <span\n style={{\n fontWeight: label ? 600 : 400,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"block\",\n }}\n >\n {label ? highlightMatches(label, searchQuery) : \"—\"}\n </span>\n </div>\n <div role=\"gridcell\" className=\"id\" title={row.sessionId ?? \"\"} style={cellStyle}>\n {row.sessionShort ?? \"—\"}\n </div>\n <div role=\"gridcell\" className=\"id\" title={row.turnId ?? \"\"} style={cellStyle}>\n {row.turnShort ?? \"—\"}\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n <LatencyCell ms={row.latencyMs} band={row.latencyBand} />\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n <SummaryCell text={row.summary ?? row.payloadPreview} />\n </div>\n </div>\n );\n});\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid uses divs for absolute positioning.\n\nimport { formatSessionShort } from \"@ahp-inspector/core\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport type { CSSProperties, JSX } from \"react\";\n\nexport interface GroupHeaderRowProps {\n level: \"session\" | \"turn\";\n sessionId: string;\n turnId?: string;\n count: number;\n durationMs: number;\n isCollapsed: boolean;\n onToggle(): void;\n virtualStyle: CSSProperties;\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 50) return `${ms}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n const m = Math.floor(ms / 60_000);\n const s = Math.floor((ms % 60_000) / 1000);\n return `${m}m ${s}s`;\n}\n\nexport function GroupHeaderRow({\n level,\n sessionId,\n turnId,\n count,\n durationMs,\n isCollapsed,\n onToggle,\n virtualStyle,\n}: GroupHeaderRowProps): JSX.Element {\n const label =\n level === \"session\"\n ? `Session ${formatSessionShort(sessionId)}`\n : `↳ Turn ${(turnId ?? \"\").slice(-6)}`;\n\n const ariaLabel = isCollapsed ? `Expand ${label}` : `Collapse ${label}`;\n\n return (\n <div\n role=\"row\"\n data-testid={`group-header-${level}`}\n tabIndex={-1}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: \"var(--row-group-header-height)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n paddingLeft: level === \"turn\" ? \"var(--space-5)\" : \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-group-header-bg)\",\n color: \"var(--color-group-header-fg)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n userSelect: \"none\",\n ...virtualStyle,\n }}\n >\n <button\n type=\"button\"\n aria-label={ariaLabel}\n onClick={onToggle}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-group-header-fg)\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 0,\n flexShrink: 0,\n }}\n >\n {isCollapsed ? <ChevronRight size={12} /> : <ChevronDown size={12} />}\n </button>\n <span\n style={{ flex: 1, fontWeight: \"var(--weight-semibold)\" as CSSProperties[\"fontWeight\"] }}\n >\n {label}\n </span>\n <span style={{ color: \"var(--color-group-header-meta)\", flexShrink: 0 }}>\n {count} {count === 1 ? \"event\" : \"events\"} · {formatDuration(durationMs)}\n </span>\n </div>\n );\n}\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid rows/cells use divs per ARIA grid pattern and absolute positioning.\n// biome-ignore-all lint/a11y/useFocusableInteractive: grid keyboard focus is managed at the row level; individual cells are not tab stops.\n\nimport type { EventRow as EventRowData } from \"@ahp-inspector/core\";\nimport type { CSSProperties, JSX } from \"react\";\n\nexport function ParseErrorRow({\n row,\n isSelected,\n onClick,\n style,\n}: {\n row: EventRowData;\n isSelected: boolean;\n onClick: () => void;\n style?: CSSProperties;\n}): JSX.Element {\n const cellStyle: CSSProperties = {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n };\n\n return (\n <div\n role=\"row\"\n aria-rowindex={row.idx + 1}\n aria-selected={isSelected}\n onClick={onClick}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onClick();\n }\n }}\n tabIndex={isSelected ? 0 : -1}\n data-testid={`parse-error-${row.idx}`}\n style={{\n display: \"grid\",\n gridTemplateColumns: \"2px 1fr\",\n alignItems: \"center\",\n height: \"var(--row-height)\",\n boxSizing: \"border-box\",\n padding: \"4px 8px\",\n cursor: \"pointer\",\n background: isSelected ? \"var(--color-surface-raised)\" : \"transparent\",\n ...style,\n }}\n >\n <div\n role=\"gridcell\"\n data-testid=\"parse-error-rail\"\n style={{\n width: 2,\n height: \"100%\",\n overflow: \"hidden\",\n background:\n \"repeating-linear-gradient(45deg, var(--color-destructive) 0 2px, transparent 2px 6px)\",\n }}\n />\n <div\n role=\"gridcell\"\n className=\"mono\"\n style={{ ...cellStyle, color: \"var(--color-destructive)\" }}\n >\n {`BAD · line ${row.lineIndex ?? \"?\"} · ${row.parseErrorReason ?? \"unknown\"}`}\n </div>\n </div>\n );\n}\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid uses divs so rows can be absolutely positioned.\n\nimport { type EventRow as EventRowData, formatSessionShort } from \"@ahp-inspector/core\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport type { CSSProperties, JSX } from \"react\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport type { VirtualItem } from \"../../state/selectors.js\";\nimport { EventRow, TIMELINE_GRID_COLUMNS } from \"./EventRow.js\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow.js\";\nimport { ParseErrorRow } from \"./ParseErrorRow.js\";\n\nconst ITEM_HEIGHT = {\n row: 28,\n \"parse-error\": 28,\n header: 24,\n} as const;\n\nconst COLUMN_LABELS = [\n { key: \"rail\", label: \"\", ariaLabel: \"row state\" },\n { key: \"id\", label: \"ID\", ariaLabel: \"Request or event ID\" },\n { key: \"time\", label: \"Time\", ariaLabel: \"Time\" },\n { key: \"direction\", label: \"Dir\", ariaLabel: \"Direction\" },\n { key: \"kind\", label: \"Kind\", ariaLabel: \"Kind\" },\n { key: \"event\", label: \"Event\", ariaLabel: \"Event\" },\n { key: \"session\", label: \"Session\", ariaLabel: \"Session\" },\n { key: \"turn\", label: \"Turn\", ariaLabel: \"Turn\" },\n { key: \"latency\", label: \"Latency\", ariaLabel: \"Latency\" },\n { key: \"summary\", label: \"Summary\", ariaLabel: \"Parsed event summary\" },\n] as const;\n\nfunction getItemKindKey(item: VirtualItem): keyof typeof ITEM_HEIGHT {\n if (item.kind === \"header\") return \"header\";\n return \"row\";\n}\n\nexport interface TimelineListProps {\n items: VirtualItem[];\n rows: EventRowData[];\n selectedIdx: number | null;\n onSelect: (idx: number) => void;\n searchQuery?: string;\n searchMatches?: Set<number> | null;\n onTopGroupChange?: (group: { level: \"session\" | \"turn\"; label: string } | null) => void;\n groupCollapsed?: Set<string>;\n onToggleGroup?: (key: string) => void;\n}\n\nexport function TimelineList({\n items,\n rows,\n selectedIdx,\n onSelect,\n searchQuery = \"\",\n searchMatches = null,\n onTopGroupChange,\n groupCollapsed,\n onToggleGroup,\n}: TimelineListProps): JSX.Element {\n const parentRef = useRef<HTMLDivElement>(null);\n const visibleRowIdxs = useMemo(() => {\n const visible = new Set<number>();\n for (const item of items) {\n if (item.kind === \"row\") {\n const row = rows[item.rowIdx];\n if (row) visible.add(row.idx);\n }\n }\n return visible;\n }, [items, rows]);\n const selectedRow = selectedIdx !== null ? rows[selectedIdx] : undefined;\n const selectedPairIdx = selectedRow?.pairIdx ?? null;\n const selectedPairVisible = selectedPairIdx !== null && visibleRowIdxs.has(selectedPairIdx);\n const hiddenPairKind =\n selectedPairIdx !== null && !selectedPairVisible\n ? selectedRow?.kind === \"response\"\n ? \"request\"\n : \"response\"\n : null;\n const v = useVirtualizer({\n count: items.length,\n getScrollElement: () => parentRef.current,\n estimateSize: (i) => {\n const item = items[i];\n if (!item) return 28;\n return ITEM_HEIGHT[getItemKindKey(item)] ?? 28;\n },\n overscan: 12,\n });\n\n // Auto tail-follow: scroll to bottom on first load and on append while the\n // user is parked at the bottom. User scroll-up disables follow; scrolling\n // back to bottom re-enables it. Threshold is generous (4px) to absorb\n // virtualizer rounding.\n const followTailRef = useRef(true);\n const SCROLL_BOTTOM_THRESHOLD_PX = 4;\n\n const scrollToBottom = useCallback((): void => {\n const el = parentRef.current;\n if (!el) return;\n el.scrollTop = el.scrollHeight;\n }, []);\n\n // Scroll to end whenever item count changes while following. Runs once on\n // initial non-empty mount (followTailRef defaults to true) and on every\n // append after that. Uses rAF so the virtualizer has measured the new total.\n useEffect(() => {\n if (!followTailRef.current) return;\n if (items.length === 0) return;\n const raf = requestAnimationFrame(scrollToBottom);\n return () => cancelAnimationFrame(raf);\n }, [items.length, scrollToBottom]);\n\n // Scroll the selected row into view only when it's currently off-screen\n // (e.g., keyboard navigation or search-match jump). Clicking a visible row\n // must not scroll the timeline.\n useEffect(() => {\n if (selectedIdx === null) return;\n const targetVi = items.findIndex(\n (it) => it.kind === \"row\" && rows[it.rowIdx]?.idx === selectedIdx,\n );\n if (targetVi < 0) return;\n const visible = v.getVirtualItems();\n if (visible.length > 0) {\n const first = visible[0]?.index ?? 0;\n const last = visible[visible.length - 1]?.index ?? 0;\n // Treat overscan rows as off-screen too: only skip when comfortably\n // inside the visible window.\n const margin = 2;\n if (targetVi >= first + margin && targetVi <= last - margin) {\n return;\n }\n }\n followTailRef.current = false;\n v.scrollToIndex(targetVi, { align: \"center\" });\n }, [selectedIdx, items, rows, v]);\n\n const onScroll = useCallback((): void => {\n const el = parentRef.current;\n if (!el) return;\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n followTailRef.current = distanceFromBottom <= SCROLL_BOTTOM_THRESHOLD_PX;\n }, []);\n\n // Compute topmost visible group for StickyGroupBar.\n const virtualItems = v.getVirtualItems();\n const topGroup = useMemo(() => {\n if (virtualItems.length === 0) return null;\n const firstVi = virtualItems[0];\n if (firstVi === undefined) return null;\n // Scan backward from firstVi.index to find the most recent header.\n for (let i = firstVi.index; i >= 0; i--) {\n const item = items[i];\n if (item === undefined) continue;\n if (item.kind === \"header\") {\n const label =\n item.level === \"session\"\n ? `Session ${formatSessionShort(item.sessionId)}`\n : `↳ Turn ${(item.turnId ?? \"\").slice(-6)}`;\n return { level: item.level, label };\n }\n }\n return null;\n }, [virtualItems, items]);\n\n // Notify parent of topmost group change (for StickyGroupBar).\n const prevTopGroupRef = useRef<typeof topGroup>(null);\n useEffect(() => {\n const prev = prevTopGroupRef.current;\n const changed = prev?.label !== topGroup?.label || prev?.level !== topGroup?.level;\n if (changed && onTopGroupChange) {\n onTopGroupChange(topGroup);\n }\n prevTopGroupRef.current = topGroup;\n }, [topGroup, onTopGroupChange]);\n\n const headerCellStyle: CSSProperties = {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n };\n\n return (\n <div\n data-testid=\"timeline-list-shell\"\n className=\"timeline-list-shell\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n minHeight: 0,\n minWidth: 0,\n }}\n >\n <div\n ref={parentRef}\n onScroll={onScroll}\n role=\"grid\"\n aria-label=\"AHP event timeline\"\n aria-rowcount={items.length}\n data-testid=\"timeline-list\"\n style={{\n flex: 1,\n minHeight: 0,\n overflow: \"auto\",\n background: \"var(--color-bg)\",\n minWidth: 0,\n }}\n >\n <div style={{ minWidth: \"max-content\" }}>\n <div\n role=\"row\"\n tabIndex={-1}\n data-testid=\"timeline-column-header\"\n style={{\n display: \"grid\",\n gridTemplateColumns: TIMELINE_GRID_COLUMNS,\n minWidth: \"max-content\",\n alignItems: \"center\",\n height: 24,\n boxSizing: \"border-box\",\n padding: \"3px 8px\",\n position: \"sticky\",\n top: 0,\n zIndex: 1,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {COLUMN_LABELS.map(({ key, label, ariaLabel }) => (\n <div\n key={key}\n role=\"columnheader\"\n aria-label={ariaLabel}\n tabIndex={-1}\n style={headerCellStyle}\n >\n {label}\n </div>\n ))}\n </div>\n <div style={{ height: v.getTotalSize(), position: \"relative\" }}>\n {v.getVirtualItems().map((vi) => {\n const item = items[vi.index];\n if (!item) return null;\n\n if (item.kind === \"header\") {\n const style: CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: 24,\n transform: `translateY(${vi.start}px)`,\n };\n return (\n <GroupHeaderRow\n key={`header-${item.groupKey}`}\n level={item.level}\n sessionId={item.sessionId}\n {...(item.turnId !== undefined ? { turnId: item.turnId } : {})}\n count={item.count}\n durationMs={item.durationMs}\n isCollapsed={groupCollapsed?.has(item.groupKey) ?? false}\n onToggle={() => onToggleGroup?.(item.groupKey)}\n virtualStyle={style}\n />\n );\n }\n\n // kind === \"row\"\n const row = rows[item.rowIdx];\n if (!row) return null;\n const isSelected = row.idx === selectedIdx;\n const pairHighlight =\n selectedPairIdx !== null && row.idx === selectedPairIdx && selectedPairVisible\n ? row.kind === \"response\"\n ? \"response\"\n : \"request\"\n : null;\n const pairHidden = isSelected ? hiddenPairKind : null;\n const style: CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: 28,\n transform: `translateY(${vi.start}px)`,\n };\n\n return row.kind === \"parse-error\" ? (\n <ParseErrorRow\n key={row.idx}\n row={row}\n isSelected={isSelected}\n onClick={() => onSelect(row.idx)}\n style={style}\n />\n ) : (\n <EventRow\n key={row.idx}\n row={row}\n isSelected={isSelected}\n onClick={() => onSelect(row.idx)}\n searchQuery={searchQuery}\n isSearchMatch={searchMatches?.has(row.idx) ?? false}\n pairHighlight={pairHighlight}\n pairHidden={pairHidden}\n style={style}\n />\n );\n })}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","// biome-ignore-all lint/a11y/noStaticElementInteractions: TimelineRegion is a focusable scroll viewport — Space-key toggles live-pause (UI-SPEC §Keyboard) with editable-target guards inside.\n// biome-ignore-all lint/a11y/noNoninteractiveTabindex: region must be focusable to receive the Space-key shortcut without stealing focus from inputs inside it.\n\nimport type { JSX, KeyboardEvent as ReactKeyboardEvent, RefObject } from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { isFiltersEmpty } from \"../../state/filters.js\";\nimport {\n useFilteredRows,\n useGroupedItems,\n useVisibleSearchMatches,\n} from \"../../state/selectors.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { connectLogStream } from \"../../transport/sse-client.js\";\nimport { RotationBanner } from \"../banners/RotationBanner.js\";\nimport { NewEventsPill } from \"../shell/NewEventsPill.js\";\nimport { DisconnectedBanner } from \"../states/DisconnectedBanner.js\";\nimport { EmptyState } from \"../states/EmptyState.js\";\nimport { LoadingState } from \"../states/LoadingState.js\";\nimport { NoResultsBanner } from \"../states/NoResultsBanner.js\";\nimport { TimelineList } from \"./TimelineList.js\";\n\nexport interface TimelineRegionProps {\n onReconnect?: () => void;\n searchInputRef?: RefObject<HTMLInputElement | null>;\n onTopGroupChange?: (group: { level: \"session\" | \"turn\"; label: string } | null) => void;\n}\n\nfunction defaultReconnect(): void {\n // Tear down any prior handle, then open a fresh one.\n if (typeof window !== \"undefined\" && window.__ahpStream) {\n try {\n window.__ahpStream.close();\n } catch {\n /* ignore */\n }\n }\n const handle = connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n}\n\n// Chord state for \"g s\" grouping shortcut\ninterface ChordState {\n key: string;\n at: number;\n}\n\nexport function TimelineRegion({\n onReconnect,\n searchInputRef,\n onTopGroupChange,\n}: TimelineRegionProps = {}): JSX.Element {\n const rows = useAppStore((s) => s.rows);\n const connection = useAppStore((s) => s.connection);\n const meta = useAppStore((s) => s.meta);\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const select = useAppStore((s) => s.selectIdx);\n const clear = useAppStore((s) => s.clearSelection);\n const searchQuery = useAppStore((s) => s.searchQuery);\n const searchMatches = useAppStore((s) => s.searchMatches);\n const setSearchQuery = useAppStore((s) => s.setSearchQuery);\n const clearSearchResults = useAppStore((s) => s.clearSearchResults);\n const filters = useAppStore((s) => s.filters);\n const clearFilters = useAppStore((s) => s.clearFilters);\n const grouping = useAppStore((s) => s.grouping);\n const setGrouping = useAppStore((s) => s.setGrouping);\n const groupCollapsed = useAppStore((s) => s.groupCollapsed);\n const toggleGroupCollapsed = useAppStore((s) => s.toggleGroupCollapsed);\n\n // Phase 4 Plan 06: live-pause + pending pill + rotation banner.\n const livePaused = useAppStore((s) => s.livePaused);\n const pendingNewCount = useAppStore((s) => s.pendingNewCount);\n const rotationNotice = useAppStore((s) => s.rotationNotice);\n const setRotationNotice = useAppStore((s) => s.setRotationNotice);\n\n const onRotationDismiss = useCallback(() => {\n setRotationNotice(false);\n }, [setRotationNotice]);\n\n const onResumeFollowing = useCallback(() => {\n const s = useAppStore.getState();\n s.flushPendingBuffer();\n s.setLivePaused(false);\n }, []);\n\n // UI-SPEC §Keyboard: Space toggles pause/resume when focus is inside the\n // timeline region but NOT inside a form control / contenteditable.\n function isEditableTarget(el: EventTarget | null): boolean {\n if (!(el instanceof HTMLElement)) return false;\n const tag = el.tagName;\n if (tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\") return true;\n if (el.isContentEditable) return true;\n // jsdom doesn't always reflect isContentEditable from the attribute, so\n // also check the attribute directly.\n const ce = el.getAttribute(\"contenteditable\");\n if (ce !== null && ce !== \"false\") return true;\n return false;\n }\n\n function onRegionKeyDown(ev: ReactKeyboardEvent<HTMLElement>): void {\n if (ev.key !== \" \" && ev.code !== \"Space\") return;\n if (isEditableTarget(ev.target)) return;\n ev.preventDefault();\n const s = useAppStore.getState();\n s.setLivePaused(!s.livePaused);\n }\n\n // Selectors — compute filtered/grouped items.\n const filteredRowIdxs = useFilteredRows();\n const visibleSearchMatches = useVisibleSearchMatches();\n const groupedItems = useGroupedItems(filteredRowIdxs);\n\n const selectSearchMatch = useCallback(\n (direction: \"previous\" | \"next\") => {\n if (visibleSearchMatches.length === 0) return;\n const currentSelectedIdx = useAppStore.getState().selectedIdx;\n const current =\n currentSelectedIdx !== null ? visibleSearchMatches.indexOf(currentSelectedIdx) : -1;\n const nextPos =\n direction === \"next\"\n ? (current + 1) % visibleSearchMatches.length\n : current <= 0\n ? visibleSearchMatches.length - 1\n : current - 1;\n const next = visibleSearchMatches[nextPos];\n if (next !== undefined) select(next);\n },\n [select, visibleSearchMatches],\n );\n\n const chordRef = useRef<ChordState | null>(null);\n\n useEffect(() => {\n function onKey(e: KeyboardEvent): void {\n // \"/\" — focus search input\n if (e.key === \"/\" && !(e.target instanceof HTMLInputElement)) {\n e.preventDefault();\n searchInputRef?.current?.focus();\n return;\n }\n\n // \"g s\" chord — cycle grouping\n const now = Date.now();\n const prev = chordRef.current;\n if (e.key === \"g\") {\n chordRef.current = { key: \"g\", at: now };\n return;\n }\n if (e.key === \"s\" && prev?.key === \"g\" && now - prev.at < 500) {\n chordRef.current = null;\n const next =\n grouping === \"none\" ? \"session\" : grouping === \"session\" ? \"session+turn\" : \"none\";\n setGrouping(next);\n return;\n }\n chordRef.current = null;\n\n // Esc priority: search → (popovers handled in FilterBar) → filters → selection\n if (e.key === \"Escape\") {\n if (searchQuery) {\n setSearchQuery(\"\");\n clearSearchResults();\n } else if (!isFiltersEmpty(filters)) {\n clearFilters();\n } else {\n clear();\n }\n return;\n }\n\n if (e.key === \"F3\" && searchQuery && visibleSearchMatches.length > 0) {\n e.preventDefault();\n selectSearchMatch(e.shiftKey ? \"previous\" : \"next\");\n return;\n }\n\n // Navigation over filteredRowIdxs\n if (filteredRowIdxs.length === 0) return;\n const curPos = selectedIdx !== null ? filteredRowIdxs.indexOf(selectedIdx) : -1;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.min(filteredRowIdxs.length - 1, curPos + 1)];\n if (next !== undefined) select(next);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.max(0, curPos - 1)];\n if (next !== undefined) select(next);\n } else if (e.key === \"PageDown\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.min(filteredRowIdxs.length - 1, curPos + 20)];\n if (next !== undefined) select(next);\n } else if (e.key === \"PageUp\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.max(0, curPos - 20)];\n if (next !== undefined) select(next);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n const next = filteredRowIdxs[0];\n if (next !== undefined) select(next);\n } else if (e.key === \"End\") {\n e.preventDefault();\n const next = filteredRowIdxs[filteredRowIdxs.length - 1];\n if (next !== undefined) select(next);\n }\n }\n window.addEventListener(\"keydown\", onKey);\n function onSearchNav(e: Event): void {\n const direction = (e as CustomEvent<\"previous\" | \"next\">).detail;\n if (direction === \"previous\" || direction === \"next\") selectSearchMatch(direction);\n }\n window.addEventListener(\"ahp-search-nav\", onSearchNav);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"ahp-search-nav\", onSearchNav);\n };\n }, [\n filteredRowIdxs,\n visibleSearchMatches,\n selectedIdx,\n select,\n clear,\n searchQuery,\n setSearchQuery,\n clearSearchResults,\n filters,\n clearFilters,\n grouping,\n setGrouping,\n searchInputRef,\n selectSearchMatch,\n ]);\n\n if (connection === \"connecting\" && rows.length === 0) {\n return <LoadingState filename={meta?.filename ?? \"\"} />;\n }\n if (connection === \"connected\" && rows.length === 0) {\n return <EmptyState />;\n }\n\n const allParseErrors = rows.length > 0 && rows.every((r) => r.kind === \"parse-error\");\n return (\n <div\n data-testid=\"timeline-region\"\n tabIndex={0}\n onKeyDown={onRegionKeyDown}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n minHeight: 0,\n position: \"relative\",\n outline: \"none\",\n }}\n >\n {rotationNotice && <RotationBanner onAutoDismiss={onRotationDismiss} />}\n {allParseErrors && (\n <NoResultsBanner\n heading=\"No valid events\"\n body={`All ${rows.length} lines in this file failed to parse. Showing parse errors below.`}\n />\n )}\n {connection === \"disconnected\" && (\n <DisconnectedBanner onReconnect={onReconnect ?? defaultReconnect} />\n )}\n <TimelineList\n items={groupedItems}\n rows={rows}\n selectedIdx={selectedIdx}\n onSelect={(idx) => select(idx)}\n searchQuery={searchQuery}\n searchMatches={searchMatches}\n groupCollapsed={groupCollapsed}\n onToggleGroup={toggleGroupCollapsed}\n {...(onTopGroupChange !== undefined ? { onTopGroupChange } : {})}\n />\n {livePaused && pendingNewCount > 0 && (\n <NewEventsPill count={pendingNewCount} onClick={onResumeFollowing} />\n )}\n </div>\n );\n}\n","export const THEMES = [\n { id: \"dark\", label: \"Dark\" },\n { id: \"light\", label: \"Light\" },\n { id: \"hacker\", label: \"Hacker\" },\n] as const;\n\nexport type ThemeId = (typeof THEMES)[number][\"id\"];\n\nexport const THEME_STORAGE_KEY = \"ahp-theme\";\n\nexport function isThemeId(value: unknown): value is ThemeId {\n return value === \"dark\" || value === \"light\" || value === \"hacker\";\n}\n\nexport function readStoredTheme(storage: Pick<Storage, \"getItem\"> = localStorage): ThemeId {\n try {\n const stored = storage.getItem(THEME_STORAGE_KEY);\n return isThemeId(stored) ? stored : \"dark\";\n } catch {\n return \"dark\";\n }\n}\n\nexport function applyTheme(theme: ThemeId, root: Element = document.documentElement): void {\n root.setAttribute(\"data-theme\", theme);\n}\n\nexport function persistTheme(\n theme: ThemeId,\n storage: Pick<Storage, \"setItem\"> = localStorage,\n): void {\n try {\n storage.setItem(THEME_STORAGE_KEY, theme);\n } catch {\n // Storage may be unavailable; the in-page theme still applies.\n }\n}\n\nexport function labelForTheme(theme: ThemeId): string {\n return THEMES.find((option) => option.id === theme)?.label ?? \"Dark\";\n}\n","// LivePauseButton — Phase 4 Plan 06 Task 1 / UI-SPEC §3 / D-13.\n// Toggles `store.livePaused`. Pause is UI-only (D-15): SSE keeps streaming,\n// the server is unaware. While paused, scroll is anchored and incoming rows\n// accumulate in the store's pendingBuffer + pendingNewCount counter.\n\nimport { Pause, Play } from \"lucide-react\";\nimport type { JSX } from \"react\";\nimport { useAppStore } from \"../../state/store.js\";\n\nexport function LivePauseButton(): JSX.Element {\n const livePaused = useAppStore((s) => s.livePaused);\n const setLivePaused = useAppStore((s) => s.setLivePaused);\n const Icon = livePaused ? Play : Pause;\n return (\n <button\n type=\"button\"\n onClick={() => setLivePaused(!livePaused)}\n aria-pressed={livePaused}\n aria-label={livePaused ? \"Resume live follow\" : \"Pause live follow\"}\n data-testid=\"live-pause-button\"\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: livePaused\n ? \"color-mix(in srgb, var(--color-accent) 15%, var(--color-surface))\"\n : \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: livePaused ? \"var(--color-accent)\" : \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <Icon size={14} aria-hidden=\"true\" />\n {livePaused ? \"Resume\" : \"Pause\"}\n </button>\n );\n}\n","import { Check, ChevronDown, Palette } from \"lucide-react\";\nimport type { JSX, KeyboardEvent } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n applyTheme,\n labelForTheme,\n persistTheme,\n THEMES,\n type ThemeId,\n} from \"../../theme/theme.js\";\nimport { __APP_VERSION__ } from \"../../version.js\";\nimport { LivePauseButton } from \"./LivePauseButton.js\";\n\ninterface HeaderBarProps {\n version: string;\n}\n\nfunction readTheme(): ThemeId {\n const attr = document.documentElement.getAttribute(\"data-theme\");\n return attr === \"light\" || attr === \"hacker\" ? attr : \"dark\";\n}\n\nexport function HeaderBar({ version }: HeaderBarProps): JSX.Element {\n const [theme, setThemeState] = useState<ThemeId>(readTheme);\n const [isThemeMenuOpen, setIsThemeMenuOpen] = useState(false);\n const themeMenuRef = useRef<HTMLDivElement>(null);\n const themeButtonRef = useRef<HTMLButtonElement>(null);\n const optionRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\n useEffect(() => {\n function handleMouseDown(event: MouseEvent): void {\n if (themeMenuRef.current && !themeMenuRef.current.contains(event.target as Node)) {\n setIsThemeMenuOpen(false);\n }\n }\n\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, []);\n\n function closeThemeMenu(): void {\n setIsThemeMenuOpen(false);\n themeButtonRef.current?.focus();\n }\n\n function setTheme(next: ThemeId): void {\n applyTheme(next);\n persistTheme(next);\n setThemeState(next);\n closeThemeMenu();\n }\n\n function focusOption(index: number): void {\n optionRefs.current[index]?.focus();\n }\n\n function handleOptionKeyDown(event: KeyboardEvent<HTMLButtonElement>, index: number): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeThemeMenu();\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n focusOption((index + 1) % THEMES.length);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n focusOption((index - 1 + THEMES.length) % THEMES.length);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n focusOption(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n focusOption(THEMES.length - 1);\n }\n }\n\n return (\n <header\n style={{\n height: 40,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border-strong)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0 var(--space-3)\",\n flex: \"0 0 auto\",\n }}\n data-testid=\"header-bar\"\n >\n <span style={{ fontWeight: 600 }}>AHP Inspector</span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-3)\" }}>\n <LivePauseButton />\n <div ref={themeMenuRef} style={{ position: \"relative\" }}>\n <button\n type=\"button\"\n aria-label={`Theme picker (${labelForTheme(theme)})`}\n aria-haspopup=\"menu\"\n aria-expanded={isThemeMenuOpen}\n title={`Theme: ${labelForTheme(theme)}`}\n ref={themeButtonRef}\n onClick={() => setIsThemeMenuOpen((open) => !open)}\n onMouseDown={(event) => event.stopPropagation()}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 28,\n padding: \"0 var(--space-2)\",\n background: isThemeMenuOpen ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 6,\n color: \"var(--color-chip-fg)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n outline: \"none\",\n }}\n >\n <Palette size={14} aria-hidden=\"true\" />\n <span\n aria-hidden=\"true\"\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: \"var(--color-accent)\",\n boxShadow: \"0 0 0 1px var(--color-border-strong)\",\n }}\n />\n <ChevronDown\n size={12}\n aria-hidden=\"true\"\n style={{ color: \"var(--color-chip-fg-muted)\" }}\n />\n </button>\n {isThemeMenuOpen && (\n <div\n role=\"menu\"\n aria-label=\"Theme\"\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n right: 0,\n zIndex: 1200,\n minWidth: 148,\n padding: \"var(--space-1) 0\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n boxShadow: \"var(--shadow-menu)\",\n }}\n >\n {THEMES.map((option, index) => {\n const active = theme === option.id;\n return (\n <button\n key={option.id}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n ref={(node) => {\n optionRefs.current[index] = node;\n }}\n onClick={() => setTheme(option.id)}\n onKeyDown={(event) => handleOptionKeyDown(event, index)}\n style={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"var(--space-3)\",\n padding: \"var(--space-1) var(--space-3)\",\n background: active ? \"var(--color-chip-bg-active)\" : \"transparent\",\n border: \"none\",\n color: active ? \"var(--color-text)\" : \"var(--color-text-muted)\",\n boxShadow: active ? \"inset 3px 0 0 var(--color-accent)\" : \"none\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n textAlign: \"left\",\n }}\n >\n <span>{option.label}</span>\n {active && <Check size={12} aria-hidden=\"true\" />}\n </button>\n );\n })}\n </div>\n )}\n </div>\n <span className=\"mono\" style={{ color: \"var(--color-text-muted)\" }}>\n v{version}\n </span>\n </div>\n </header>\n );\n}\n\nHeaderBar.defaultVersion = __APP_VERSION__;\n","// NOTE: lucide-react@1.14.0 does not export `FileJson`; using `FileBraces`\n// (JSON-style braces icon) is the closest semantic match. Tracked in SUMMARY\n// as a Rule 3 deviation.\nimport { FileBraces } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface SourceStripProps {\n filename: string | null;\n eventCount: number;\n sessionCount: number;\n onSwitchLog?: () => void;\n}\n\nexport function SourceStrip({\n filename,\n eventCount,\n sessionCount,\n onSwitchLog,\n}: SourceStripProps): JSX.Element {\n return (\n <div\n style={{\n height: 32,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n padding: \"0 var(--space-3)\",\n fontSize: \"var(--text-ui-size)\",\n flex: \"0 0 auto\",\n }}\n data-testid=\"source-strip\"\n >\n {filename === null ? (\n <span style={{ color: \"var(--color-text-muted)\" }}>No file open</span>\n ) : (\n <>\n <FileBraces size={14} aria-hidden />\n {onSwitchLog ? (\n <button\n type=\"button\"\n onClick={onSwitchLog}\n aria-label=\"Switch log\"\n title=\"Switch log\"\n className=\"mono\"\n style={{\n background: \"transparent\",\n border: \"none\",\n padding: 0,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n font: \"inherit\",\n textDecoration: \"underline\",\n textDecorationColor: \"var(--color-border)\",\n textUnderlineOffset: 3,\n }}\n >\n {filename}\n </button>\n ) : (\n <span className=\"mono\">{filename}</span>\n )}\n <span style={{ color: \"var(--color-text-muted)\" }}>\n {\" · \"}\n {eventCount} events\n {eventCount > 0 && sessionCount > 0 ? ` · ${sessionCount} sessions` : \"\"}\n </span>\n </>\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport type { Connection } from \"../../state/store.js\";\n\ninterface StatusBarProps {\n connection: Connection;\n eventCount: number;\n selectedRowIndex?: number | null;\n visibleCount?: number;\n totalCount?: number;\n groupCount?: number;\n}\n\ninterface StatusVisual {\n glyph: string;\n dotColor: string;\n label: string;\n}\n\nfunction visualFor(\n connection: Connection,\n eventCount: number,\n selectedRowIndex: number | null | undefined,\n visibleCount: number | undefined,\n totalCount: number | undefined,\n groupCount: number | undefined,\n): StatusVisual {\n switch (connection) {\n case \"connected\": {\n const base = `Connected · ${eventCount} events`;\n let label =\n selectedRowIndex != null && selectedRowIndex >= 0\n ? `${base} · selected #${selectedRowIndex}`\n : base;\n // Show visible/total when filtered\n if (visibleCount !== undefined && totalCount !== undefined && visibleCount !== totalCount) {\n label = `${label} · ${visibleCount}/${totalCount} visible`;\n }\n // Show group count when grouped\n if (groupCount !== undefined && groupCount > 0) {\n label = `${label} · ${groupCount} groups`;\n }\n return { glyph: \"●\", dotColor: \"var(--color-success)\", label };\n }\n case \"connecting\":\n return { glyph: \"◐\", dotColor: \"var(--color-warning)\", label: \"Connecting…\" };\n case \"disconnected\":\n return { glyph: \"●\", dotColor: \"var(--color-destructive)\", label: \"Disconnected\" };\n case \"no-server\":\n return { glyph: \"●\", dotColor: \"var(--color-destructive)\", label: \"No server\" };\n case \"no-log\":\n return { glyph: \"○\", dotColor: \"var(--color-text-subtle)\", label: \"No log selected\" };\n }\n}\n\nexport function StatusBar({\n connection,\n eventCount,\n selectedRowIndex = null,\n visibleCount,\n totalCount,\n groupCount,\n}: StatusBarProps): JSX.Element {\n const { glyph, dotColor, label } = visualFor(\n connection,\n eventCount,\n selectedRowIndex,\n visibleCount,\n totalCount,\n groupCount,\n );\n return (\n <div\n style={{\n height: 24,\n background: \"var(--color-surface)\",\n borderTop: \"1px solid var(--color-border)\",\n padding: \"0 var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n fontSize: \"var(--text-ui-muted-size)\",\n flex: \"0 0 auto\",\n }}\n data-testid=\"status-bar\"\n >\n <span data-testid=\"status-dot\" style={{ color: dotColor, width: 8 }}>\n {glyph}\n </span>\n <span data-testid=\"status-label\">{label}</span>\n </div>\n );\n}\n","import { type JSX, useCallback, useEffect, useRef, useState } from \"react\";\nimport { usePersistEffect } from \"../../persistence/persist-effect.js\";\nimport { isFiltersEmpty } from \"../../state/filters.js\";\nimport { useFilteredRows, useGroupedItems } from \"../../state/selectors.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport {\n fetchCandidates,\n openSessionByCandidate,\n openSessionByPath,\n} from \"../../transport/sessions-client.js\";\nimport { type ConnectionHandle, connectLogStream } from \"../../transport/sse-client.js\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { __APP_VERSION__ } from \"../../version.js\";\nimport { WatchErrorBanner } from \"../banners/WatchErrorBanner.js\";\nimport { DETAIL_DESKTOP_BREAKPOINT } from \"../detail/detail-layout.js\";\nimport { DetailPanel } from \"../detail/index.js\";\nimport { ActiveFilterChips, FilterBar } from \"../filters/index.js\";\nimport { useSearch } from \"../filters/useSearch.js\";\nimport { LogPickerPanel } from \"../picker/LogPickerPanel.js\";\nimport { StickyGroupBar } from \"../timeline/StickyGroupBar.js\";\nimport { TimelineRegion } from \"../timeline/TimelineRegion.js\";\nimport { HeaderBar } from \"./HeaderBar.js\";\nimport { SourceStrip } from \"./SourceStrip.js\";\nimport { StatusBar } from \"./StatusBar.js\";\n\nfunction getIsDetailDesktop(): boolean {\n if (typeof window === \"undefined\") return true;\n if (typeof window.matchMedia === \"function\") {\n return window.matchMedia(`(min-width: ${DETAIL_DESKTOP_BREAKPOINT}px)`).matches;\n }\n return window.innerWidth >= DETAIL_DESKTOP_BREAKPOINT;\n}\n\nfunction useIsDetailDesktop(): boolean {\n const [isDesktop, setIsDesktop] = useState(getIsDetailDesktop);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const update = (): void => setIsDesktop(getIsDetailDesktop());\n const query =\n typeof window.matchMedia === \"function\"\n ? window.matchMedia(`(min-width: ${DETAIL_DESKTOP_BREAKPOINT}px)`)\n : null;\n query?.addEventListener?.(\"change\", update);\n window.addEventListener(\"resize\", update);\n update();\n return () => {\n query?.removeEventListener?.(\"change\", update);\n window.removeEventListener(\"resize\", update);\n };\n }, []);\n\n return isDesktop;\n}\n\nfunction replaceLogStream(): ConnectionHandle {\n const previous = typeof window !== \"undefined\" ? window.__ahpStream : undefined;\n previous?.close();\n const handle = connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n return handle;\n}\n\nexport function AppShell(): JSX.Element {\n // Phase 4 Plan 06: per-log persistence (single mount).\n usePersistEffect();\n\n const meta = useAppStore((s) => s.meta);\n const connection = useAppStore((s) => s.connection);\n const rows = useAppStore((s) => s.rows);\n const filters = useAppStore((s) => s.filters);\n const grouping = useAppStore((s) => s.grouping);\n const detailWidth = useAppStore((s) => s.detailWidth);\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const clearSelection = useAppStore((s) => s.clearSelection);\n const lastWatchError = useAppStore((s) => s.lastWatchError);\n const lastOpenRef = useAppStore((s) => s.lastOpenRef);\n const isDetailDesktop = useIsDetailDesktop();\n const closeDetailDrawer = useCallback((): void => clearSelection(), [clearSelection]);\n\n // Register debounced search effect\n useSearch();\n\n // Compute filtered/grouped items for StatusBar and StickyGroupBar\n const filteredRowIdxs = useFilteredRows();\n const groupedItems = useGroupedItems(filteredRowIdxs);\n\n // Active filters check\n const hasActiveFilters = !isFiltersEmpty(filters);\n\n // StickyGroupBar state — updated via onTopGroupChange callback from TimelineList\n const [stickyGroup, setStickyGroup] = useState<{\n level: \"session\" | \"turn\";\n label: string;\n } | null>(null);\n\n // Switch-log picker state\n const [pickerOpen, setPickerOpen] = useState(false);\n const [pickerCandidates, setPickerCandidates] = useState<readonly SafeCandidate[]>([]);\n const [pickerLoading, setPickerLoading] = useState(false);\n\n const refreshPickerCandidates = useCallback(async (): Promise<void> => {\n setPickerLoading(true);\n try {\n const list = await fetchCandidates();\n setPickerCandidates(list);\n } catch {\n setPickerCandidates([]);\n } finally {\n setPickerLoading(false);\n }\n }, []);\n\n const onToggleSwitchLog = useCallback((): void => {\n setPickerOpen((open) => {\n const next = !open;\n if (next) void refreshPickerCandidates();\n return next;\n });\n }, [refreshPickerCandidates]);\n\n const onPickerSelect = useCallback((id: string): void => {\n void (async () => {\n try {\n const result = await openSessionByCandidate(id);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"candidate\", id });\n replaceLogStream();\n } finally {\n setPickerOpen(false);\n }\n })();\n }, []);\n\n const onPickerOpenPath = useCallback(async (path: string): Promise<void> => {\n const result = await openSessionByPath(path);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"path\", path });\n replaceLogStream();\n setPickerOpen(false);\n }, []);\n\n const onWatchErrorRetry = useCallback((): void => {\n replaceLogStream();\n useAppStore.getState().setLastWatchError(null);\n }, []);\n\n const onWatchErrorReopen = useCallback((): void => {\n void (async () => {\n try {\n if (lastOpenRef?.kind === \"candidate\") {\n const result = await openSessionByCandidate(lastOpenRef.id);\n useAppStore.getState().setLogKey(result.active.logKey);\n } else if (lastOpenRef?.kind === \"path\") {\n const result = await openSessionByPath(lastOpenRef.path);\n useAppStore.getState().setLogKey(result.active.logKey);\n }\n useAppStore.getState().setLastWatchError(null);\n replaceLogStream();\n } catch {\n /* swallow — banner stays visible until retry/reopen succeeds */\n }\n })();\n }, [lastOpenRef]);\n\n // Ref to SearchInput's <input> element for \"/\" keyboard shortcut\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const drawerCloseRef = useRef<HTMLButtonElement | null>(null);\n\n // Count group headers in groupedItems for StatusBar\n const groupCount = groupedItems.filter((i) => i.kind === \"header\").length;\n\n useEffect(() => {\n if (!isDetailDesktop && selectedIdx !== null) {\n drawerCloseRef.current?.focus();\n }\n }, [isDetailDesktop, selectedIdx]);\n\n useEffect(() => {\n if (isDetailDesktop || selectedIdx === null) return;\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === \"Escape\") closeDetailDrawer();\n }\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [closeDetailDrawer, isDetailDesktop, selectedIdx]);\n\n return (\n <div\n data-testid=\"app-shell\"\n className=\"app-shell\"\n style={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}\n >\n <HeaderBar version={__APP_VERSION__} />\n {lastWatchError && (\n <WatchErrorBanner\n code={lastWatchError.code}\n onRetry={onWatchErrorRetry}\n onReopen={onWatchErrorReopen}\n />\n )}\n <SourceStrip\n filename={meta?.filename ?? null}\n eventCount={meta?.eventCount ?? 0}\n sessionCount={meta?.sessionCount ?? 0}\n onSwitchLog={onToggleSwitchLog}\n />\n <FilterBar searchInputRef={searchInputRef} />\n {hasActiveFilters && <ActiveFilterChips />}\n <div className=\"app-main\" style={{ display: \"flex\", flex: 1, minHeight: 0 }}>\n <div\n className=\"timeline-pane\"\n style={{ display: \"flex\", flexDirection: \"column\", flex: 1, minHeight: 0, minWidth: 0 }}\n >\n {grouping !== \"none\" && stickyGroup && <StickyGroupBar topGroup={stickyGroup} />}\n <TimelineRegion searchInputRef={searchInputRef} onTopGroupChange={setStickyGroup} />\n </div>\n {isDetailDesktop && (\n <div\n data-testid=\"detail-panel-wrapper\"\n className=\"detail-rail\"\n style={{\n display: \"flex\",\n flex: `0 0 ${detailWidth}px`,\n minHeight: 0,\n minWidth: 0,\n overflow: \"hidden\",\n }}\n >\n <DetailPanel />\n </div>\n )}\n </div>\n {!isDetailDesktop && selectedIdx !== null && (\n <div className=\"detail-drawer-backdrop\" data-testid=\"detail-drawer-backdrop\">\n <div\n className=\"detail-drawer\"\n role=\"dialog\"\n aria-label=\"Event detail\"\n data-testid=\"detail-drawer\"\n >\n <button\n type=\"button\"\n className=\"detail-drawer-close\"\n ref={drawerCloseRef}\n onClick={closeDetailDrawer}\n >\n Close details\n </button>\n <DetailPanel showResizeHandle={false} />\n </div>\n </div>\n )}\n <StatusBar\n connection={connection}\n eventCount={meta?.eventCount ?? 0}\n selectedRowIndex={selectedIdx}\n visibleCount={filteredRowIdxs.length}\n totalCount={rows.length}\n groupCount={grouping !== \"none\" ? groupCount : 0}\n />\n <LogPickerPanel\n open={pickerOpen}\n candidates={pickerCandidates}\n isLoading={pickerLoading}\n onSelect={onPickerSelect}\n onOpenPath={onPickerOpenPath}\n onRefresh={() => void refreshPickerCandidates()}\n onClose={() => setPickerOpen(false)}\n />\n </div>\n );\n}\n","import { type JSX, useEffect, useRef } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { CandidateList } from \"../picker/CandidateList.js\";\nimport { ManualOpenInput } from \"../picker/ManualOpenInput.js\";\n\nexport function NoActiveLogState({\n candidates,\n isLoading,\n onSelect,\n onOpenPath,\n onRefresh,\n}: {\n candidates: readonly SafeCandidate[];\n isLoading: boolean;\n onSelect(id: string): void;\n onOpenPath(path: string): Promise<void>;\n onRefresh(): void;\n}): JSX.Element {\n const focusTargetRef = useRef<HTMLElement | null>(null);\n useEffect(() => {\n // On mount: focus first candidate row's button if any, else the manual-open input.\n const first = document.querySelector<HTMLElement>('ul[aria-label=\"Discovered logs\"] button');\n if (first) {\n first.focus();\n return;\n }\n const input = document.querySelector<HTMLInputElement>(\n 'form[aria-label=\"Open log by path\"] input',\n );\n input?.focus();\n }, []);\n\n const heading = \"No log open\";\n const body =\n candidates.length === 0 && !isLoading\n ? \"No VS Code logs found automatically. Enter a file path below to open a log.\"\n : \"Select a discovered log below or open a file by path.\";\n\n return (\n <main\n ref={(el) => {\n focusTargetRef.current = el;\n }}\n style={{\n minHeight: \"100vh\",\n background: \"var(--color-bg)\",\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <section\n style={{\n width: \"100%\",\n maxWidth: 640,\n padding: \"var(--space-6) var(--space-4)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-6)\",\n }}\n >\n <header>\n <h1\n style={{\n fontSize: \"var(--text-heading-size)\",\n fontWeight: 600,\n color: \"var(--color-text)\",\n margin: 0,\n }}\n >\n {heading}\n </h1>\n <p\n style={{\n color: \"var(--color-text-muted)\",\n margin: \"var(--space-2) 0 0\",\n fontSize: \"var(--text-body-size)\",\n }}\n >\n {body}\n </p>\n </header>\n\n <section>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"var(--space-3)\",\n }}\n >\n <h2\n style={{\n fontSize: \"var(--text-heading-size)\",\n fontWeight: 600,\n color: \"var(--color-text)\",\n margin: 0,\n }}\n >\n Discovered logs\n </h2>\n <button\n type=\"button\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh List\"\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n {isLoading ? \"Refreshing…\" : \"Refresh List\"}\n </button>\n </div>\n <CandidateList candidates={candidates} onSelect={onSelect} />\n </section>\n\n <div\n aria-hidden=\"true\"\n style={{\n borderTop: \"1px solid var(--color-border)\",\n color: \"var(--color-text-muted)\",\n fontSize: \"var(--text-ui-muted-size)\",\n paddingTop: \"var(--space-3)\",\n textAlign: \"center\",\n }}\n >\n or open manually\n </div>\n\n <ManualOpenInput onOpen={onOpenPath} />\n </section>\n </main>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function ServerNotRunningState(): JSX.Element {\n return (\n <div\n data-testid=\"state-server-not-running\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-4)\",\n textAlign: \"center\",\n }}\n >\n <div style={{ fontWeight: 600 }}>Start the viewer from the CLI</div>\n <div>\n Run <code className=\"mono\">ahp-inspector path/to/log.jsonl</code> from your terminal, then\n refresh this page.\n </div>\n </div>\n );\n}\n","import { createContext, type JSX, type ReactNode, useContext } from \"react\";\nimport type { AhpViewerClient } from \"./client.js\";\n\nconst Ctx = createContext<AhpViewerClient | null>(null);\n\nexport interface AhpViewerClientProviderProps {\n readonly client: AhpViewerClient;\n readonly children: ReactNode;\n}\n\nexport function AhpViewerClientProvider(props: AhpViewerClientProviderProps): JSX.Element {\n return <Ctx.Provider value={props.client}>{props.children}</Ctx.Provider>;\n}\n\nexport function useAhpViewerClient(): AhpViewerClient {\n const value = useContext(Ctx);\n if (value === null) {\n throw new Error(\n \"useAhpViewerClient must be used inside <AhpViewerClientProvider>; \" +\n \"wrap the app in main.tsx or pass a fake client in tests.\",\n );\n }\n return value;\n}\n","import { type JSX, useCallback, useEffect, useState } from \"react\";\nimport { AppShell } from \"./components/shell/AppShell.js\";\nimport { NoActiveLogState } from \"./components/states/NoActiveLogState.js\";\nimport { ServerNotRunningState } from \"./components/states/ServerNotRunningState.js\";\nimport { useAppStore } from \"./state/store.js\";\nimport type { LogStreamHandle } from \"./transport/client.js\";\nimport { useAhpViewerClient } from \"./transport/transport-context.js\";\nimport type { SafeCandidate } from \"./types/safe-candidate.js\";\n\ndeclare global {\n interface Window {\n __ahpStream?: LogStreamHandle;\n }\n}\n\nexport function App(): JSX.Element {\n const client = useAhpViewerClient();\n const connection = useAppStore((s) => s.connection);\n const [candidates, setCandidates] = useState<readonly SafeCandidate[]>([]);\n const [loadingCandidates, setLoadingCandidates] = useState(false);\n\n const refreshCandidates = useCallback(async (): Promise<void> => {\n setLoadingCandidates(true);\n try {\n const list = await client.fetchCandidates();\n setCandidates(list);\n } catch {\n setCandidates([]);\n } finally {\n setLoadingCandidates(false);\n }\n }, [client]);\n\n const replaceLogStream = useCallback((): LogStreamHandle => {\n const previous = typeof window !== \"undefined\" ? window.__ahpStream : undefined;\n previous?.close();\n const handle = client.connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n return handle;\n }, [client]);\n\n // Probe transport first; map result to store connection state and (when\n // ready) open the live stream. Browser transport probes /api/log/meta;\n // Plan 11-03 webview transport probes via postMessage.\n useEffect(() => {\n let cancelled = false;\n let handle: LogStreamHandle | null = null;\n const run = async (): Promise<void> => {\n try {\n const result = await client.probeLogMeta();\n if (cancelled) return;\n if (result === \"no-log\") {\n useAppStore.getState().setConnection(\"no-log\");\n await refreshCandidates();\n return;\n }\n if (result === \"no-server\") {\n useAppStore.getState().setConnection(\"no-server\");\n return;\n }\n handle = client.connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n } catch {\n if (!cancelled) useAppStore.getState().setConnection(\"no-server\");\n }\n };\n void run();\n return () => {\n cancelled = true;\n handle?.close();\n if (typeof window !== \"undefined\") delete window.__ahpStream;\n };\n }, [client, refreshCandidates]);\n\n const onSelect = useCallback(\n async (id: string): Promise<void> => {\n const result = await client.openSessionByCandidate(id);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"candidate\", id });\n replaceLogStream();\n },\n [client, replaceLogStream],\n );\n\n const onOpenPath = useCallback(\n async (path: string): Promise<void> => {\n const result = await client.openSessionByPath(path);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"path\", path });\n replaceLogStream();\n },\n [client, replaceLogStream],\n );\n\n if (connection === \"no-server\") return <ServerNotRunningState />;\n if (connection === \"no-log\") {\n return (\n <NoActiveLogState\n candidates={candidates}\n isLoading={loadingCandidates}\n onSelect={(id) => void onSelect(id)}\n onOpenPath={onOpenPath}\n onRefresh={() => void refreshCandidates()}\n />\n );\n }\n return <AppShell />;\n}\n","/**\n * Browser HTTP/SSE implementation of `AhpViewerClient` (Plan 11-02 Task 2).\n *\n * Composes the existing transport modules without changing their public\n * shapes. The only behavior moved up to this layer is `probeLogMeta`,\n * which used to live inline in `App.tsx`. Lifting it here means the Plan\n * 11-03 webview client can implement the same probe over postMessage\n * without duplicating App startup logic.\n */\n\nimport type { AhpViewerClient, LogMetaProbeResult, LogStreamHandle } from \"./client.js\";\nimport { fetchEvent } from \"./http-client.js\";\nimport { searchEvents } from \"./search-client.js\";\nimport { fetchCandidates, openSessionByCandidate, openSessionByPath } from \"./sessions-client.js\";\nimport { connectLogStream } from \"./sse-client.js\";\nimport { fetchStateAt } from \"./state-client.js\";\n\nasync function probeLogMeta(): Promise<LogMetaProbeResult> {\n let resp: Response;\n try {\n resp = await fetch(\"/api/log/meta\");\n } catch {\n return \"no-server\";\n }\n if (resp.status === 204) return \"no-log\";\n const contentType = resp.headers.get(\"content-type\") ?? \"\";\n if (!resp.ok || !contentType.toLowerCase().includes(\"application/json\")) {\n return \"no-server\";\n }\n return \"ready\";\n}\n\nexport function createBrowserAhpViewerClient(): AhpViewerClient {\n return {\n probeLogMeta,\n fetchCandidates,\n openSessionByCandidate,\n openSessionByPath,\n connectLogStream(): LogStreamHandle {\n return connectLogStream();\n },\n fetchEvent,\n searchEvents,\n fetchStateAt,\n };\n}\n","/**\n * Webview transport (Plan 11-03 Task 3).\n *\n * Implements `AhpViewerClient` over `acquireVsCodeApi().postMessage` /\n * `window.addEventListener('message', ...)`. The extension-host\n * `ViewerSessionBridge` is the counterpart.\n *\n * Lifecycle invariants:\n * - Pending requests are stored in a map keyed by `requestId`.\n * - On `dispose()` the map is cleared so callers don't hang forever.\n * - The live stream subscription is reused — `connectLogStream` issues\n * a `stream/start` request and forwards every `stream` notification\n * into the same Zustand store the SSE client uses.\n */\n\nimport type { EventRow, LatencyBand, Status } from \"@ahp-inspector/core\";\nimport type { WebviewRequest, WebviewSsePayload } from \"@ahp-inspector/shared\";\nimport { isExtensionNotification } from \"@ahp-inspector/shared\";\nimport { useAppStore } from \"../state/store.js\";\nimport type { SafeCandidate } from \"../types/safe-candidate.js\";\nimport type {\n AhpViewerClient,\n DetailResponse,\n LogMetaProbeResult,\n LogStreamHandle,\n OpenSessionResult,\n SearchResult,\n StateAtSuccessResponse,\n} from \"./client.js\";\nimport type { FetchStateAtOptions } from \"./state-client.js\";\n\ninterface VsCodeApi {\n postMessage(message: unknown): void;\n}\n\ndeclare global {\n interface Window {\n acquireVsCodeApi?: () => VsCodeApi;\n }\n}\n\nlet cachedApi: VsCodeApi | null = null;\nfunction getVsCodeApi(): VsCodeApi {\n if (cachedApi) return cachedApi;\n const acquire = typeof window !== \"undefined\" ? window.acquireVsCodeApi : undefined;\n if (!acquire) {\n throw new Error(\n \"acquireVsCodeApi is not available; webview-client must run inside a VS Code webview\",\n );\n }\n cachedApi = acquire();\n return cachedApi;\n}\n\nexport function isVsCodeWebviewRuntime(): boolean {\n return typeof window !== \"undefined\" && typeof window.acquireVsCodeApi === \"function\";\n}\n\ninterface PendingRequest {\n resolve(value: unknown): void;\n reject(error: Error): void;\n}\n\nconst REQUEST_TIMEOUT_MS = 30_000;\n\nexport interface WebviewClientOptions {\n /** Override for tests; defaults to the global VS Code API. */\n readonly api?: VsCodeApi;\n /** Override for tests; defaults to `window`. */\n readonly target?: EventTarget;\n}\n\nexport function createWebviewAhpViewerClient(opts: WebviewClientOptions = {}): AhpViewerClient {\n const api = opts.api ?? getVsCodeApi();\n const target = opts.target ?? window;\n const pending = new Map<string, PendingRequest>();\n let nextId = 0;\n const newRequestId = (): string => `r-${(++nextId).toString(36)}-${Date.now().toString(36)}`;\n\n function send<T>(req: WebviewRequest): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n pending.delete(req.requestId);\n reject(new Error(`webview request timed out: ${req.kind}`));\n }, REQUEST_TIMEOUT_MS);\n pending.set(req.requestId, {\n resolve: (value) => {\n clearTimeout(timer);\n resolve(value as T);\n },\n reject: (err) => {\n clearTimeout(timer);\n reject(err);\n },\n });\n api.postMessage(req);\n });\n }\n\n const onMessage = (ev: Event): void => {\n const data = (ev as MessageEvent).data;\n if (!isExtensionNotification(data)) return;\n if (data.kind === \"response\") {\n const entry = pending.get(data.requestId);\n if (!entry) return;\n pending.delete(data.requestId);\n if (data.ok) {\n entry.resolve(data.value);\n } else {\n const err = new Error(data.message);\n (err as { code?: string }).code = data.code;\n entry.reject(err);\n }\n return;\n }\n if (data.kind === \"stream\") {\n applyStreamPayload(data.payload);\n return;\n }\n // initialLog: ignored for now — Plan 11-04 may surface it as an\n // open-by-path hint via the discovery state.\n };\n target.addEventListener(\"message\", onMessage);\n\n return {\n async probeLogMeta(): Promise<LogMetaProbeResult> {\n try {\n await send<unknown>({ kind: \"log/meta\", requestId: newRequestId() });\n return \"ready\";\n } catch (err) {\n const code = (err as { code?: string }).code;\n if (code === \"no-active-log\") return \"no-log\";\n return \"no-server\";\n }\n },\n async fetchCandidates(): Promise<readonly SafeCandidate[]> {\n const value = await send<{ candidates: SafeCandidate[] }>({\n kind: \"session/discover\",\n requestId: newRequestId(),\n });\n return value.candidates ?? [];\n },\n async openSessionByCandidate(id: string): Promise<OpenSessionResult> {\n return send<OpenSessionResult>({\n kind: \"session/openCandidate\",\n requestId: newRequestId(),\n id,\n });\n },\n async openSessionByPath(path: string): Promise<OpenSessionResult> {\n return send<OpenSessionResult>({\n kind: \"session/openPath\",\n requestId: newRequestId(),\n path,\n });\n },\n connectLogStream(): LogStreamHandle {\n useAppStore.getState().setConnection(\"connecting\");\n const requestId = newRequestId();\n void send<unknown>({ kind: \"stream/start\", requestId }).catch(() => {\n useAppStore.getState().setConnection(\"disconnected\");\n });\n let closed = false;\n return {\n close(): void {\n if (closed) return;\n closed = true;\n void send<unknown>({ kind: \"stream/stop\", requestId: newRequestId() }).catch(() => {});\n },\n };\n },\n async fetchEvent(\n idx: number,\n _signal?: AbortSignal,\n logKey?: string | null,\n ): Promise<DetailResponse | null> {\n const req: WebviewRequest =\n logKey === undefined\n ? { kind: \"log/event\", requestId: newRequestId(), idx }\n : { kind: \"log/event\", requestId: newRequestId(), idx, logKey };\n try {\n return await send<DetailResponse | null>(req);\n } catch (err) {\n const code = (err as { code?: string }).code;\n if (code === \"not-found\") return null;\n throw err;\n }\n },\n async searchEvents(q: string, _signal?: AbortSignal): Promise<SearchResult> {\n return send<SearchResult>({ kind: \"log/search\", requestId: newRequestId(), q });\n },\n async fetchStateAt(\n idx: number,\n options?: FetchStateAtOptions,\n ): Promise<StateAtSuccessResponse | null> {\n const requestId = newRequestId();\n const req: WebviewRequest = {\n kind: \"state/at\",\n requestId,\n idx,\n ...(options?.logKey !== undefined ? { logKey: options.logKey } : {}),\n ...(options?.resourceKind !== undefined ? { resourceKind: options.resourceKind } : {}),\n ...(options?.resourceUri !== undefined ? { resourceUri: options.resourceUri } : {}),\n };\n try {\n return await send<StateAtSuccessResponse>(req);\n } catch (err) {\n const code = (err as { code?: string }).code;\n if (code === \"not-found\") return null;\n throw err;\n }\n },\n };\n}\n\n// Stream payload → store. Mirrors the SSE client's mutations so both\n// transports converge on the same UI state shape.\n\ninterface SnapshotBeginPayload {\n meta: { filename: string; sizeBytes: number; startedAt: number; logKey?: string };\n total: number;\n}\n\nlet snapshotRows: EventRow[] = [];\n\nfunction applyStreamPayload(payload: WebviewSsePayload): void {\n const store = useAppStore.getState();\n switch (payload.kind) {\n case \"snapshot-begin\": {\n const meta = (payload as unknown as SnapshotBeginPayload).meta;\n snapshotRows = [];\n store.setMeta({\n filename: meta.filename,\n eventCount: 0,\n sessionCount: 0,\n });\n if (typeof meta.logKey === \"string\" && meta.logKey.length > 0) {\n store.setLogKey(meta.logKey);\n }\n return;\n }\n case \"snapshot-chunk\": {\n snapshotRows = snapshotRows.concat(payload.rows as EventRow[]);\n return;\n }\n case \"snapshot-end\": {\n store.setRows(snapshotRows);\n snapshotRows = [];\n store.setConnection(\"connected\");\n return;\n }\n case \"append\": {\n store.appendRows(payload.rows as EventRow[], payload.from);\n return;\n }\n case \"patch\": {\n store.applyPatch(\n payload.updates as Array<{\n idx: number;\n status: Status;\n latencyMs: number | null;\n latencyBand: LatencyBand | null;\n summary?: string;\n pairIdx?: number | null;\n }>,\n );\n return;\n }\n case \"ping\":\n return;\n case \"rotation\": {\n store.setRotationNotice(true);\n store.resetForRotation();\n snapshotRows = [];\n return;\n }\n case \"watch-error\": {\n store.setLastWatchError({ code: payload.code, message: payload.message });\n return;\n }\n case \"log-reset\": {\n store.resetForLogSwitch();\n snapshotRows = [];\n return;\n }\n case \"bye\":\n store.setConnection(\"disconnected\");\n return;\n case \"error\":\n // Surfaced via watch-error; nothing else to do here.\n return;\n }\n}\n","import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App.js\";\nimport \"./styles/global.css\";\nimport { applyTheme, readStoredTheme } from \"./theme/theme.js\";\nimport { createBrowserAhpViewerClient } from \"./transport/browser-client.js\";\nimport { AhpViewerClientProvider } from \"./transport/transport-context.js\";\nimport {\n createWebviewAhpViewerClient,\n isVsCodeWebviewRuntime,\n} from \"./transport/webview-client.js\";\n\napplyTheme(readStoredTheme());\n\nconst el = document.getElementById(\"root\");\nif (el) {\n const client = isVsCodeWebviewRuntime()\n ? createWebviewAhpViewerClient()\n : createBrowserAhpViewerClient();\n createRoot(el).render(\n <StrictMode>\n <AhpViewerClientProvider client={client}>\n <App />\n </AhpViewerClientProvider>\n </StrictMode>,\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,10,11,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,56,102,103,104],"mappings":"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wB,EAAc,EAAa,OAAQ,EAAM,OAGnE,GACE,EACA,EACA,EACA,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,MACF,IAAK,IACH,EAAyB,EAAa,UACtC,EAAK,EAAa,UACT,EAAa,gBAAtB,KASI,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,EACC,EAAuB,aAAe,EACxC,GACE,EACA,EACA,EACA,GACO,EAAa,aAAe,QAAnC,GAA6C,CAAC,EAC/C,EAtBH,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,CACD,GAAwC,EAAc,EAAa,CAgBzE,EAAQ,MAAQ,GAAmC,EAAI,EAAa,CACpE,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,EAAQ,MACN,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACD,EAGP,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CAIA,IAHA,KAEU,EAAY,aAAe,QAAlC,GAA4C,CAAC,EAC3C,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAiB,EACjB,EAAuB,EACvB,EAAQ,EAAa,MACvB,OAAQ,EAAa,IAArB,CACE,IAAK,GACL,IAAK,IACL,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GAA0B,EAAG,EAAa,CAC1C,MACF,IAAK,IACH,MACF,IAAK,IACH,IAAI,EAAW,EAAa,UACnB,EAAa,gBAAtB,MAaM,EAAS,aAAe,EAC1B,GACE,EACA,EACA,EACA,EACA,EACD,EAnBD,EAAS,YAAc,EACrB,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EACA,EACD,CASP,GACE,EAAQ,MACR,GACE,EAAa,UACb,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EAAQ,MACR,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QA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,EAAO,EACX,EAAa,GACb,IAAI,EAAoB,EAAK,QAAQ,cAAc,aAQnD,GAPA,IACG,GAAkB,EAAM,EAAyB,CAAC,OAAS,KAC9D,EAA2B,GACzB,EACA,EACA,CAAC,EACF,CACS,IAAN,EAAgC,CAClC,GACE,IACA,CAAC,EACD,CACA,EAAK,4BAA8B,EACnC,IACE,EACF,EAAa,EACb,MAAM,EAER,EAAsB,GACtB,GAAsC,EAC7B,IAAT,OACY,KAAT,KACI,GAAsC,EACvC,GAAoC,KAAK,MACvC,GACA,EACD,EAET,EAAa,EAGf,GADA,EAAsB,CAAC,EACb,IAAN,EAAkB,UAG1B,GAAU,IAAN,EAAkB,CACpB,GAAkB,EAAe,EAAE,CACnC,GAAkB,EAAe,EAAO,EAAG,CAAC,EAAE,CAC9C,MAEF,EAAG,CAGD,OAFA,EAAkB,EAClB,EAAsB,EACd,EAAR,CACE,IAAK,GACL,IAAK,GACH,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1C,IAAK,GACH,IAAK,EAAQ,WAAa,EAAO,MACnC,IAAK,GACH,GACE,EACA,EACA,GACA,CAAC,GACF,CACD,MAAM,EACR,IAAK,GACH,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAE5C,IACG,EAAQ,YAAc,IACrB,EAAa,GAA+B,IAAM,IAAK,CACzD,GAAK,GACL,CAOA,GANA,GACE,EACA,EACA,GACA,CAAC,GACF,CACS,GAAa,EAAiB,EAAG,CAAC,EAAE,GAA1C,EAA4C,MAAM,EACtD,GAAsB,EACtB,EAAgB,cAAgB,GAC9B,GAAoB,KAClB,KACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,YACA,GACA,EACD,CACD,EACD,CACD,MAAM,EAER,GACE,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,KACA,GACA,EACD,EAGL,YACO,GACT,GAAsB,EAAc,CAEtC,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAGA,GAFA,EAAK,cAAgB,GACrB,EAAwB,EAAa,aAEnC,EAAwB,OACV,EAAwB,WAAtC,SACA,CACA,EAAwB,CACtB,YAAa,KACb,MAAO,EACP,SAAU,EACV,SAAU,EACV,gBAAiB,EAAE,CACnB,iBAAkB,CAAC,EACnB,yBAA0B,CAAC,EAC3B,UAAW,GACZ,CACD,GACE,EACA,EACA,EACD,CACD,IAAI,GACD,EAAQ,YAAc,EACnB,GAA+B,IAAK,EACnC,EAAQ,WAAa,EACpB,GAAiC,IAAK,CACtC,EAKR,GAJA,EAAgB,GACd,EACA,EACD,CACY,IAAT,KAAwB,CAC1B,GAAsB,EACtB,EAAK,oBAAsB,EACzB,GAAW,KACT,KACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KACA,EACA,EACD,CACF,CACD,GAAkB,EAAM,EAAO,EAAa,CAAC,EAAyB,CACtE,QAGJ,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAEH,SAAS,GAAqC,EAAc,CAC1D,IAAK,IAAI,EAAO,IAAkB,CAChC,IAAI,EAAM,EAAK,IACf,IACS,IAAN,GAAoB,IAAP,IAAqB,IAAP,KAC5B,EAAK,MAAQ,QACX,EAAM,EAAK,YACJ,IAAT,OAAkB,EAAM,EAAI,OAAkB,IAAT,OAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,IAAI,EAAQ,EAAI,GACd,EAAc,EAAM,YACtB,EAAQ,EAAM,MACd,GAAI,CACF,GAAI,CAAC,GAAS,GAAa,CAAE,EAAM,CAAE,MAAO,CAAC,OAC/B,CACd,MAAO,CAAC,GAId,GADA,EAAM,EAAK,MACP,EAAK,aAAe,OAAkB,IAAT,KAC9B,EAAI,OAAS,EAAQ,EAAO,MAC1B,CACH,GAAI,IAAS,EAAc,MAC3B,KAAgB,EAAK,UAAd,MAAyB,CAC9B,GAAa,EAAK,SAAd,MAAwB,EAAK,SAAW,EAAc,MAAO,CAAC,EAClE,EAAO,EAAK,OAEd,EAAK,QAAQ,OAAS,EAAK,OAC3B,EAAO,EAAK,SAGhB,MAAO,CAAC,EAEV,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAkB,CAAC,GACnB,GAAkB,CAAC,GACnB,EAAK,gBAAkB,EACvB,EAAK,aAAe,CAAC,EACrB,IAAyB,EAAK,WAAa,GAC3C,EAAuB,EAAK,gBAC5B,IAAK,IAAI,EAAQ,EAAgB,EAAI,GAAS,CAC5C,IAAI,EAAU,GAAK,GAAM,EAAM,CAC7B,EAAO,GAAK,EACd,EAAqB,GAAW,GAChC,GAAS,CAAC,EAEN,IAAN,GACE,GAAwB,EAAM,EAAa,EAAe,CAE9D,SAAS,IAAkB,CACzB,OAAc,EAAmB,EAE7B,CAAC,GADA,GAA8B,EAAG,CAAC,EAAE,CAAE,CAAC,GAG9C,SAAS,IAA2B,CAClC,GAAa,IAAT,KAAyB,CAC3B,GAAU,IAAN,EACF,IAAI,EAAkB,EAAe,YAEpC,EAAkB,EAChB,GAAwB,GAA4B,KACrD,GAAmB,EAAgB,CAClC,GAAkB,KAClB,GAAyB,EACzB,EAAkB,EACvB,KAAgB,IAAT,MACL,GAAsB,EAAgB,UAAW,EAAgB,CAC9D,EAAkB,EAAgB,OACvC,EAAiB,MAGrB,SAAS,GAAkB,EAAM,EAAO,CACtC,IAAI,EAAgB,EAAK,cAClB,IAAP,KACI,EAAK,cAAgB,GAAK,GAAc,EAAc,EAC1D,EAAgB,EAAK,oBACZ,IAAT,OACI,EAAK,oBAAsB,KAAO,GAAe,EACrD,GAAsB,EACtB,IAA0B,CAC1B,EAAqB,EACrB,EAAiB,EAAgB,GAAqB,EAAK,QAAS,KAAK,CACzE,EAAgC,EAChC,EAAgC,EAChC,GAA4B,KAC5B,GAA6C,CAAC,EAC9C,GAAmC,GAA0B,EAAM,EAAM,CACzE,GAA0C,CAAC,EAC3C,GACE,GACA,GACA,GACA,GACA,EACE,EACJ,GAAsC,GACpC,KACF,GAAoD,CAAC,EAC9C,EAAQ,IAAO,GAAS,EAAQ,IACvC,IAAI,EAAoB,EAAK,eAC7B,GAAU,IAAN,EACF,IACE,EAAO,EAAK,cAAe,GAAqB,EAChD,EAAI,GAEJ,CACA,IAAI,EAAU,GAAK,GAAM,EAAkB,CACzC,EAAO,GAAK,EACd,GAAS,EAAK,GACd,GAAqB,CAAC,EAI1B,MAFA,IAAuB,EACvB,IAAiC,CAC1B,EAET,SAAS,GAAY,EAAM,EAAa,CACtC,EAA0B,KAC1B,EAAqB,EAAI,GACzB,IAAgB,IAAqB,IAAgB,IAC/C,EAAc,IAAsB,CACrC,EAAgC,GACjC,IAAgB,IACZ,EAAc,IAAsB,CACrC,EAAgC,GAChC,EACC,IAAgB,GACZ,EAEe,OAAO,GAApB,UADO,GAEQ,OAAO,EAAY,MAAlC,WACA,EACA,EACd,GAA4B,EACnB,IAAT,OACI,EAA+B,EACjC,GACE,EACA,GAA2B,EAAa,EAAK,QAAQ,CACtD,EAEL,SAAS,IAA+B,CACtC,IAAI,EAAU,GAA2B,QACzC,OAAgB,IAAT,KACH,CAAC,GACA,EAAgC,WAC/B,EACS,KAAT,MAGC,EAAgC,YAC7B,GACK,EAAgC,UACvC,IAAY,GACZ,CAAC,EAEX,SAAS,IAAiB,CACxB,IAAI,EAAiB,EAAqB,EAE1C,MADA,GAAqB,EAAI,GACT,IAAT,KAA0B,GAAwB,EAE3D,SAAS,IAAsB,CAC7B,IAAI,EAAsB,EAAqB,EAE/C,MADA,GAAqB,EAAI,GAClB,EAET,SAAS,IAAkC,CACzC,EAA+B,EAC/B,KACI,EAAgC,WAChC,GACS,GAA2B,UAApC,OACD,GAAmC,CAAC,GACtC,EAAO,GAAiC,YACvC,EAAO,GAA4C,YAC1C,IAAT,MACA,GACE,EACA,EACA,GACA,CAAC,EACF,CAEL,SAAS,GAAe,EAAM,EAAO,EAA4B,CAC/D,IAAI,EAAuB,EAC3B,GAAoB,EACpB,IAAI,EAAiB,IAAgB,CACnC,EAAsB,IAAqB,EACzC,IAAuB,GAAQ,IAAkC,KAClE,GAA4B,KAAO,GAAkB,EAAM,EAAM,EACpE,EAAQ,CAAC,EACT,IAAI,EAAa,EACjB,EAAG,EACD,IAAI,CACF,GAAU,IAAN,GAAgD,IAAT,KAAyB,CAClE,IAAI,EAAa,EACf,EAAc,GAChB,OAAQ,EAAR,CACE,IAAK,GACH,IAA0B,CAC1B,EAAa,EACb,MAAM,EACR,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACM,GAA2B,UAApC,OAAgD,EAAQ,CAAC,GACzD,IAAI,EAAS,EAIb,GAHA,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAY,EAAa,EAAO,CAE3D,GACA,GACA,CACA,EAAa,EACb,MAAM,EAER,MACF,QACG,EAAS,EACP,EAAgC,EAChC,GAA4B,KAC7B,GAAuB,EAAM,EAAY,EAAa,EAAO,EAGrE,IAAc,CACd,EAAa,EACb,YACO,EAAiB,CACxB,GAAY,EAAM,EAAgB,OAE/B,GAUP,OATA,GAAS,EAAK,sBACd,GAAwB,GAA4B,KACpD,EAAmB,EACnB,EAAqB,EAAI,EACzB,EAAqB,EAAI,EAChB,IAAT,OACI,EAAqB,KACtB,EAAgC,EACjC,IAAiC,EAC5B,EAET,SAAS,IAAe,CACtB,KAAgB,IAAT,MAA2B,GAAkB,EAAe,CAErE,SAAS,GAAqB,EAAM,EAAO,CACzC,IAAI,EAAuB,EAC3B,GAAoB,EACpB,IAAI,EAAiB,IAAgB,CACnC,EAAsB,IAAqB,CAC7C,IAAuB,GAAQ,IAAkC,GAC3D,GAA4B,KAC7B,GAAqC,IAAK,CAAG,IAC9C,GAAkB,EAAM,EAAM,EAC7B,GAAmC,GAClC,EACA,EACD,CACL,EAAG,EACD,IAAI,CACF,GAAU,IAAN,GAAgD,IAAT,KAAyB,CAClE,EAAQ,EACR,IAAI,EAAc,GAClB,EAAG,OAAQ,EAAR,CACD,IAAK,GACH,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAO,EAAa,EAAE,CACnD,MACF,IAAK,GACL,IAAK,GACH,GAAI,GAAmB,EAAY,CAAE,CACnC,EAAgC,EAChC,GAA4B,KAC5B,GAA0B,EAAM,CAChC,MAEF,EAAQ,UAAY,CACX,IAAN,GACO,IAAN,GACA,IAAuB,IACtB,EAAgC,GACnC,GAAsB,EAAK,EAE7B,EAAY,KAAK,EAAO,EAAM,CAC9B,MAAM,EACR,IAAK,GACH,EAAgC,EAChC,MAAM,EACR,IAAK,GACH,EAAgC,EAChC,MAAM,EACR,IAAK,GACH,GAAmB,EAAY,EACzB,EAAgC,EACjC,GAA4B,KAC7B,GAA0B,EAAM,GAC9B,EAAgC,EACjC,GAA4B,KAC7B,GAAuB,EAAM,EAAO,EAAa,EAAE,EACvD,MACF,IAAK,GACH,IAAI,EAAW,KACf,OAAQ,EAAe,IAAvB,CACE,IAAK,IACH,EAAW,EAAe,cAC5B,IAAK,GACL,IAAK,IACH,IAAI,EAAY,EAChB,GACE,EACI,GAAgB,EAAS,CACzB,EAAU,UAAU,SACxB,CACA,EAAgC,EAChC,GAA4B,KAC5B,IAAI,EAAU,EAAU,QACxB,GAAa,IAAT,KAAkB,EAAiB,MAClC,CACH,IAAI,EAAc,EAAU,OACnB,IAAT,KAGK,EAAiB,MAFhB,EAAiB,EACnB,GAAmB,EAAY,EAGrC,MAAM,GAGZ,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAO,EAAa,EAAE,CACnD,MACF,IAAK,GACH,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAO,EAAa,EAAE,CACnD,MACF,IAAK,GACH,IAA0B,CAC1B,EAA+B,EAC/B,MAAM,EACR,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,EAG9C,IAA+B,CAC/B,YACO,EAAiB,CACxB,GAAY,EAAM,EAAgB,OAE/B,GASP,MARA,IAAwB,GAA4B,KACpD,EAAqB,EAAI,EACzB,EAAqB,EAAI,EACzB,EAAmB,EACN,IAAT,MACJ,EAAqB,KACrB,EAAgC,EAChC,IAAiC,CAC1B,GAJ6B,EAMtC,SAAS,IAAgC,CACvC,KAAgB,IAAT,MAA2B,CAAC,IAAa,EAC9C,GAAkB,EAAe,CAErC,SAAS,GAAkB,EAAY,CACrC,IAAI,EAAO,GAAU,EAAW,UAAW,EAAY,GAAqB,CAC5E,EAAW,cAAgB,EAAW,aAC7B,IAAT,KAAgB,GAAmB,EAAW,CAAI,EAAiB,EAErE,SAAS,GAA0B,EAAY,CAC7C,IAAI,EAAO,EACP,EAAU,EAAK,UACnB,OAAQ,EAAK,IAAb,CACE,IAAK,IACL,IAAK,GACH,EAAO,GACL,EACA,EACA,EAAK,aACL,EAAK,KACL,IAAK,GACL,EACD,CACD,MACF,IAAK,IACH,EAAO,GACL,EACA,EACA,EAAK,aACL,EAAK,KAAK,OACV,EAAK,IACL,EACD,CACD,MACF,IAAK,GACH,GAAmB,EAAK,CAC1B,QACE,GAAsB,EAAS,EAAK,CACjC,EAAO,EACN,GAAoB,EAAM,GAAqB,CAChD,EAAO,GAAU,EAAS,EAAM,GAAqB,CAE5D,EAAW,cAAgB,EAAW,aAC7B,IAAT,KAAgB,GAAmB,EAAW,CAAI,EAAiB,EAErE,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAwB,GAA4B,KACpD,GAAmB,EAAW,CAC9B,GAAkB,KAClB,GAAyB,EACzB,IAAI,EAAc,EAAW,OAC7B,GAAI,CACF,GACE,GACE,EACA,EACA,EACA,EACA,EACD,CACD,CACA,EAA+B,EAC/B,GACE,EACA,GAA2B,EAAa,EAAK,QAAQ,CACtD,CACD,EAAiB,KACjB,cAEK,EAAO,CACd,GAAa,IAAT,KAAsB,KAAQ,GAAiB,EAAc,EACjE,EAA+B,EAC/B,GACE,EACA,GAA2B,EAAa,EAAK,QAAQ,CACtD,CACD,EAAiB,KACjB,OAEE,EAAW,MAAQ,OACjB,GAAqB,IAAN,EAAuB,EAAO,CAAC,EAEhD,IACO,EAAgC,UAEvC,EAAO,CAAC,GAEN,GAA6C,EAAO,CAAC,GACjD,IAAN,GACQ,IAAN,GACM,IAAN,GACM,IAAN,KAED,EAAkB,GAA2B,QACnC,IAAT,MACS,EAAgB,MAAvB,KACC,EAAgB,OAAS,SAChC,GAAiB,EAAY,EAAK,EAC7B,GAAmB,EAAW,CAEvC,SAAS,GAAmB,EAAY,CACtC,IAAI,EAAgB,EACpB,EAAG,CACD,GAAW,EAAc,MAAQ,MAAQ,CACvC,GACE,EACA,GACD,CACD,OAEF,EAAa,EAAc,OAC3B,IAAI,EAAO,GACT,EAAc,UACd,EACA,GACD,CACD,GAAa,IAAT,KAAe,CACjB,EAAiB,EACjB,OAGF,GADA,EAAgB,EAAc,QACjB,IAAT,KAAwB,CAC1B,EAAiB,EACjB,OAEF,EAAiB,EAAgB,QACjB,IAAT,MACH,IAAN,IAAuC,EAA+B,GAExE,SAAS,GAAiB,EAAY,EAAc,CAClD,EAAG,CACD,IAAI,EAAO,GAAW,EAAW,UAAW,EAAW,CACvD,GAAa,IAAT,KAAe,CACjB,EAAK,OAAS,MACd,EAAiB,EACjB,OAKF,GAHA,EAAO,EAAW,OACT,IAAT,OACI,EAAK,OAAS,MAAS,EAAK,aAAe,EAAK,EAAK,UAAY,MAEnE,CAAC,IACC,EAAa,EAAW,QAAmB,IAAT,MACpC,CACA,EAAiB,EACjB,OAEF,EAAiB,EAAa,QACd,IAAT,MACT,EAA+B,EAC/B,EAAiB,KAEnB,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,EAAK,oBAAsB,KAC3B,GAAG,IAAqB,OACX,KAAN,GACP,GAAW,EAAmB,EAAI,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1E,GAAa,IAAT,KAAuB,CACzB,GAAI,IAAiB,EAAK,QAAS,MAAM,MAAM,EAAuB,IAAI,CAAC,CA8B3E,GA7BA,EAA8B,EAAa,MAAQ,EAAa,WAChE,GAA+B,GAC/B,GACE,EACA,EACA,EACA,EACA,EACA,EACD,CACD,IAAS,IACL,EAAiB,EAAqB,KACvC,EAAgC,GACnC,GAAsB,EACtB,GAAqB,EACrB,GAAsB,EACtB,GAA+B,EAC/B,GAA4B,EAC5B,GAA2B,EACpB,EAAa,aAAe,OAC5B,EAAa,MAAQ,OACtB,EAAK,aAAe,KACrB,EAAK,iBAAmB,EACzB,GAAmB,GAAkB,UAAY,CAE/C,OADA,IAAqB,CACd,MACP,GACA,EAAK,aAAe,KAAQ,EAAK,iBAAmB,GAC1D,GAA2B,EAAa,MAAQ,QAA5B,EACT,EAAa,aAAe,OAAU,EAAmB,CAClE,EAAoB,EAAqB,EACzC,EAAqB,EAAI,KACzB,EAAc,EAAwB,EACtC,EAAwB,EAAI,EAC5B,EAAc,EACd,GAAoB,EACpB,GAAI,CACF,GAA4B,EAAM,EAAc,EAAM,QAC9C,CACP,EAAmB,EACjB,EAAwB,EAAI,EAC5B,EAAqB,EAAI,GAGhC,GAAuB,EACvB,IAAsB,CACtB,IAAoB,CACpB,IAAkB,EAGtB,SAAS,IAAuB,CAC9B,GAAU,KAAN,EAA4B,CAC9B,GAAuB,EACvB,IAAI,EAAO,GACT,EAAe,GACf,GAA+B,EAAa,MAAQ,QAA5B,EAC1B,GAAW,EAAa,aAAe,OAAU,EAAuB,CACtE,EAAwB,EAAqB,EAC7C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,EAAwB,EAAI,EAC5B,IAAI,EAAuB,EAC3B,GAAoB,EACpB,GAAI,CACF,GAA6B,EAAc,EAAK,CAChD,IAAI,EAA4B,GAC9B,EAAiB,GAAqB,EAAK,cAAc,CACzD,EAAmB,EAA0B,YAC7C,EAAsB,EAA0B,eAClD,GACE,IAAmB,GACnB,GACA,EAAiB,eACjB,GACE,EAAiB,cAAc,gBAC/B,EACD,CACD,CACA,GACW,IAAT,MACA,GAAyB,EAAiB,CAC1C,CACA,IAAI,EAAQ,EAAoB,MAC9B,EAAM,EAAoB,IAE5B,GADW,IAAX,IAAK,KAAc,EAAM,GACrB,mBAAoB,EACrB,EAAiB,eAAiB,EAChC,EAAiB,aAAe,KAAK,IACpC,EACA,EAAiB,MAAM,OACxB,KACA,CACH,IAAI,EAAM,EAAiB,eAAiB,SAC1C,EAAO,GAAO,EAAI,aAAgB,OACpC,GAAI,EAAI,aAAc,CACpB,IAAI,EAAY,EAAI,cAAc,CAChC,EAAS,EAAiB,YAAY,OACtC,EAAiB,KAAK,IAAI,EAAoB,MAAO,EAAO,CAC5D,EACa,EAAoB,MAA/B,IAAK,GACD,EACA,KAAK,IAAI,EAAoB,IAAK,EAAO,CACjD,CAAC,EAAU,QACT,EAAiB,IACf,EAAiB,EAClB,EAAe,EACf,EAAiB,GACpB,IAAI,EAAc,GACd,EACA,EACD,CACD,EAAY,GACV,EACA,EACD,CACH,GACE,GACA,IACO,EAAU,aAAhB,GACC,EAAU,aAAe,EAAY,MACrC,EAAU,eAAiB,EAAY,QACvC,EAAU,YAAc,EAAU,MAClC,EAAU,cAAgB,EAAU,QACtC,CACA,IAAI,EAAQ,EAAI,aAAa,CAC7B,EAAM,SAAS,EAAY,KAAM,EAAY,OAAO,CACpD,EAAU,iBAAiB,CAC3B,EAAiB,GACZ,EAAU,SAAS,EAAM,CAC1B,EAAU,OAAO,EAAU,KAAM,EAAU,OAAO,GACjD,EAAM,OAAO,EAAU,KAAM,EAAU,OAAO,CAC/C,EAAU,SAAS,EAAM,KAMrC,IADA,EAAM,EAAE,CAEN,EAAY,EACX,EAAY,EAAU,YAGjB,EAAU,WAAhB,GACE,EAAI,KAAK,CACP,QAAS,EACT,KAAM,EAAU,WAChB,IAAK,EAAU,UAChB,CAAC,CAGN,IAFe,OAAO,EAAiB,OAAvC,YACE,EAAiB,OAAO,CAExB,EAAmB,EACnB,EAAmB,EAAI,OACvB,IACA,CACA,IAAI,EAAO,EAAI,GACf,EAAK,QAAQ,WAAa,EAAK,KAC/B,EAAK,QAAQ,UAAY,EAAK,KAGlC,GAAW,CAAC,CAAC,GACb,GAAuB,GAAgB,YAC/B,CACP,EAAmB,EACjB,EAAwB,EAAI,EAC5B,EAAqB,EAAI,GAGhC,EAAK,QAAU,EACf,GAAuB,GAG3B,SAAS,IAAqB,CAC5B,GAAU,KAAN,EAA4B,CAC9B,GAAuB,EACvB,IAAI,EAAO,GACT,EAAe,GACf,GAA6B,EAAa,MAAQ,OAA5B,EACxB,GAAW,EAAa,aAAe,MAAS,EAAqB,CACnE,EAAsB,EAAqB,EAC3C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,EAAwB,EAAI,EAC5B,IAAI,EAAuB,EAC3B,GAAoB,EACpB,GAAI,CACF,GAA0B,EAAM,EAAa,UAAW,EAAa,QAC7D,CACP,EAAmB,EACjB,EAAwB,EAAI,EAC5B,EAAqB,EAAI,GAGhC,GAAuB,GAG3B,SAAS,IAAmB,CAC1B,GAAU,KAAN,GAAoC,KAAN,EAA4B,CAC5D,GAAuB,EACvB,IAAc,CACd,IAAI,EAAO,GACT,EAAe,GACf,EAAQ,GACR,EAAoB,GACf,EAAa,aAAe,OAC5B,EAAa,MAAQ,MACvB,GAAuB,GACtB,GAAuB,EACxB,GAAsB,GAAqB,KAC5C,GAAuB,EAAM,EAAK,aAAa,EACnD,IAAI,EAAiB,EAAK,aAI1B,GAHM,IAAN,IAAyB,GAAyC,MAClE,GAAqB,EAAM,CAC3B,EAAe,EAAa,UACxB,IAA+B,OAAO,GAAa,mBAAnC,WAClB,GAAI,CACF,GAAa,kBACX,GACA,EACA,IAAK,IACI,EAAa,QAAQ,MAAQ,MAAtC,IACD,MACW,EAChB,GAAa,IAAT,KAA4B,CAC9B,EAAe,EAAqB,EACpC,EAAiB,EAAwB,EACzC,EAAwB,EAAI,EAC5B,EAAqB,EAAI,KACzB,GAAI,CACF,IACE,IAAI,EAAqB,EAAK,mBAAoB,EAAI,EACtD,EAAI,EAAkB,OACtB,IACA,CACA,IAAI,EAAmB,EAAkB,GACzC,EAAmB,EAAiB,MAAO,CACzC,eAAgB,EAAiB,MAClC,CAAC,SAEI,CACP,EAAqB,EAAI,EACvB,EAAwB,EAAI,GAG5B,GAAsB,GAAM,IAAqB,CACxD,GAAsB,EAAK,CAC3B,EAAiB,EAAK,aACf,EAAQ,QAAkB,EAAiB,GAC9C,IAAS,GACP,MACE,GAAoB,EAAK,GAAwB,GACpD,GAAoB,EACzB,GAA8B,EAAG,CAAC,EAAE,EAGxC,SAAS,GAAuB,EAAM,EAAgB,EAC7C,EAAK,kBAAoB,KAAhC,IACI,EAAiB,EAAK,YAChB,GAAR,OACI,EAAK,YAAc,KAAO,GAAa,EAAe,GAE9D,SAAS,IAAsB,CAI7B,OAHA,IAAsB,CACtB,IAAoB,CACpB,IAAkB,CACX,IAAqB,CAE9B,SAAS,IAAsB,CAC7B,GAAU,KAAN,EAA4B,MAAO,CAAC,EACxC,IAAI,EAAO,GACT,EAAiB,GACnB,GAA+B,EAC/B,IAAI,EAAiB,GAAqB,GAAoB,CAC5D,EAAiB,EAAqB,EACtC,EAAmB,EAAwB,EAC7C,GAAI,CACF,EAAwB,EAAI,GAAK,EAAiB,GAAK,EACvD,EAAqB,EAAI,KACzB,EAAiB,GACjB,GAA4B,KAC5B,IAAI,EAAgB,GAClB,EAAQ,GAIV,GAHA,GAAuB,EACvB,GAAsB,GAAqB,KAC3C,GAAsB,EACX,EAAmB,EAAI,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1E,IAAI,EAAuB,EAW3B,GAVA,GAAoB,EACpB,GAA4B,EAAc,QAAQ,CAClD,GACE,EACA,EAAc,QACd,EACA,EACD,CACD,EAAmB,EACnB,GAA8B,EAAG,CAAC,EAAE,CAElC,IACe,OAAO,GAAa,uBAAnC,WAEA,GAAI,CACF,GAAa,sBAAsB,GAAY,EAAc,MACjD,EAChB,MAAO,CAAC,SACA,CACP,EAAwB,EAAI,EAC1B,EAAqB,EAAI,EAC1B,GAAuB,EAAM,EAAe,EAGlD,SAAS,GAA8B,EAAW,EAAa,EAAO,CACpE,EAAc,GAA2B,EAAO,EAAY,CAC5D,EAAc,GAAsB,EAAU,UAAW,EAAa,EAAE,CACxE,EAAY,GAAc,EAAW,EAAa,EAAE,CAC3C,IAAT,OACG,GAAkB,EAAW,EAAE,CAAE,GAAsB,EAAU,EAEtE,SAAS,EAAwB,EAAa,EAAwB,EAAO,CAC3E,GAAU,EAAY,MAAlB,EACF,GAA8B,EAAa,EAAa,EAAM,MAE9D,KAAgB,IAAT,MAAmC,CACxC,GAAU,EAAuB,MAA7B,EAAkC,CACpC,GACE,EACA,EACA,EACD,CACD,cACe,EAAuB,MAA7B,EAAkC,CAC3C,IAAI,EAAW,EAAuB,UACtC,GAEI,OAAO,EAAuB,KAAK,0BADrC,YAEgB,OAAO,EAAS,mBAA/B,aACW,KAAT,MACC,CAAC,GAAuC,IAAI,EAAS,EACzD,CACA,EAAc,GAA2B,EAAO,EAAY,CAC5D,EAAQ,GAAuB,EAAE,CACjC,EAAW,GAAc,EAAwB,EAAO,EAAE,CACjD,IAAT,OACG,GACC,EACA,EACA,EACA,EACD,CACD,GAAkB,EAAU,EAAE,CAC9B,GAAsB,EAAS,EACjC,OAGJ,EAAyB,EAAuB,QAGtD,SAAS,GAAmB,EAAM,EAAU,EAAO,CACjD,IAAI,EAAY,EAAK,UACrB,GAAa,IAAT,KAAoB,CACtB,EAAY,EAAK,UAAY,IAAI,GACjC,IAAI,EAAY,IAAI,IACpB,EAAU,IAAI,EAAU,EAAU,MAEjC,EAAY,EAAU,IAAI,EAAS,CACvB,IAAX,IAAK,KACD,EAAY,IAAI,IAAQ,EAAU,IAAI,EAAU,EAAU,EAClE,EAAU,IAAI,EAAM,GAChB,GAA0C,CAAC,EAC7C,EAAU,IAAI,EAAM,CACnB,EAAO,GAAkB,KAAK,KAAM,EAAM,EAAU,EAAM,CAC3D,EAAS,KAAK,EAAM,EAAK,EAE7B,SAAS,GAAkB,EAAM,EAAU,EAAa,CACtD,IAAI,EAAY,EAAK,UACZ,IAAT,MAAsB,EAAU,OAAO,EAAS,CAChD,EAAK,aAAe,EAAK,eAAiB,EAC1C,EAAK,WAAa,CAAC,EACnB,IAAuB,IACpB,EAAgC,KAAiB,IAC3C,IAAN,GACM,IAAN,IACE,EAAgC,YAC/B,GACF,IAAM,IAAK,CAAG,GACZ,EAAO,EAAmB,IAAM,GAAkB,EAAM,EAAE,CACzD,IAAiC,EACtC,KAAsC,IACnC,GAAoC,IACzC,GAAsB,EAAK,CAE7B,SAAS,GAAsB,EAAe,EAAW,CACjD,IAAN,IAAoB,EAAY,IAAoB,EACpD,EAAgB,GAA+B,EAAe,EAAU,CAC/D,IAAT,OACG,GAAkB,EAAe,EAAU,CAC5C,GAAsB,EAAc,EAExC,SAAS,GAAgC,EAAe,CACtD,IAAI,EAAgB,EAAc,cAChC,EAAY,EACL,IAAT,OAA2B,EAAY,EAAc,WACrD,GAAsB,EAAe,EAAU,CAEjD,SAAS,GAAqB,EAAe,EAAU,CACrD,IAAI,EAAY,EAChB,OAAQ,EAAc,IAAtB,CACE,IAAK,IACL,IAAK,IACH,IAAI,EAAa,EAAc,UAC3B,EAAgB,EAAc,cACzB,IAAT,OAA2B,EAAY,EAAc,WACrD,MACF,IAAK,IACH,EAAa,EAAc,UAC3B,MACF,IAAK,IACH,EAAa,EAAc,UAAU,YACrC,MACF,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAEnC,IAAT,MAAuB,EAAW,OAAO,EAAS,CAClD,GAAsB,EAAe,EAAU,CAEjD,SAAS,GAAmB,EAAe,EAAU,CACnD,OAAO,EAAmB,EAAe,EAAS,CAEpD,IAAI,GAAqB,KACvB,GAAoB,KACpB,GAAuB,CAAC,EACxB,GAA2B,CAAC,EAC5B,GAAiB,CAAC,EAClB,GAA6B,EAC/B,SAAS,GAAsB,EAAM,CACnC,IAAS,IACE,EAAK,OAAd,OACU,KAAT,KACI,GAAqB,GAAoB,EACzC,GAAoB,GAAkB,KAAO,GACpD,GAA2B,CAAC,EAC5B,KACI,GAAuB,CAAC,EAAI,IAAmC,EAErE,SAAS,GAA8B,EAAqB,EAAY,CACtE,GAAI,CAAC,IAAkB,GAA0B,CAC/C,GAAiB,CAAC,EAClB,EAEE,KAAK,IADD,EAAqB,CAAC,EACjB,EAAW,GAA6B,IAAT,MAAqB,CAC3D,GAAI,CAAC,EACH,GAAU,IAAN,EAA2B,CAC7B,IAAI,EAAe,EAAS,aAC5B,GAAU,IAAN,EAAoB,IAAI,EAA2B,MAClD,CACH,IAAI,EAAiB,EAAS,eAC5B,EAAc,EAAS,YACzB,GACG,GAAM,GAAK,GAAM,GAAK,EAAoB,CAAG,GAAM,EACtD,GACE,EAAe,EAAE,EAAiB,CAAC,GACrC,EACE,EAA2B,UACtB,EAA2B,UAAa,EACzC,EACE,EAA2B,EAC3B,EAEJ,IAAN,IACI,EAAqB,CAAC,EACxB,GAAsB,EAAU,EAAyB,OAE1D,EAA2B,EACzB,EAA2B,GAC1B,EACA,IAAa,EAAqB,EAA2B,EACpD,EAAS,sBAAlB,MACS,EAAS,gBAAhB,GACH,CACD,EAAO,EAA2B,IAChC,GAA0B,EAAU,EAAyB,GAC3D,EAAqB,CAAC,EACxB,GAAsB,EAAU,EAAyB,EACjE,EAAW,EAAS,WAEf,GACT,GAAiB,CAAC,GAGtB,SAAS,IAAqC,CAC5C,IAAgC,CAElC,SAAS,IAAiC,CACxC,GAA2B,GAAuB,CAAC,EACnD,IAAI,EAAsB,EACpB,KAAN,GACE,IAA8B,GAC7B,EAAsB,IACzB,IACE,IAAI,EAAc,IAAK,CAAE,EAAO,KAAM,EAAO,GACpC,IAAT,MAEA,CACA,IAAI,EAAO,EAAK,KACd,EAAY,GAAmC,EAAM,EAAY,CACzD,IAAN,GACD,EAAK,KAAO,KACF,IAAT,KAAiB,GAAqB,EAAS,EAAK,KAAO,EAClD,IAAT,OAAkB,GAAoB,KAEtC,EAAO,GAAa,IAAN,GAAoC,EAAY,KAEhE,GAA2B,CAAC,IAC9B,EAAO,EAEF,KAAN,GAAoC,KAAN,GAC7B,GAA8B,EAAqB,CAAC,EAAE,CAClD,KAAN,IAAqC,GAA6B,GAEpE,SAAS,GAAmC,EAAM,EAAa,CAC7D,IACE,IAAI,EAAiB,EAAK,eACxB,EAAc,EAAK,YACnB,EAAkB,EAAK,gBACvB,EAAQ,EAAK,aAAe,UAC9B,EAAI,GAEJ,CACA,IAAI,EAAU,GAAK,GAAM,EAAM,CAC7B,EAAO,GAAK,EACZ,EAAiB,EAAgB,GACxB,IAAP,KACS,EAAO,KAAd,IAAwC,EAAO,KAAd,KACnC,EAAgB,GAAW,GAAsB,EAAM,EAAY,EAChE,GAAkB,IAAgB,EAAK,cAAgB,GAC9D,GAAS,CAAC,EAUZ,GARA,EAAc,EACd,EAAiB,EACjB,EAAiB,GACf,EACA,IAAS,EAAc,EAAiB,EAC/B,EAAK,sBAAd,MAA4C,EAAK,gBAAZ,GACtC,CACD,EAAc,EAAK,aAEX,IAAN,GACC,IAAS,IACD,IAAN,GACO,IAAN,IACK,EAAK,sBAAd,KAEA,OACW,IAAT,MACW,IAAT,MACA,GAAiB,EAAY,CAC9B,EAAK,aAAe,KACpB,EAAK,iBAAmB,EAE7B,GACE,EAAO,EAAiB,IACxB,GAA0B,EAAM,EAAe,CAC/C,CAEA,GADA,EAAc,EAAiB,CAAC,EAC5B,IAAgB,EAAK,iBAAkB,OAAO,EAElD,OADS,IAAT,MAAwB,GAAiB,EAAY,CAC7C,GAAqB,EAAe,CAA5C,CACE,IAAK,GACL,IAAK,GACH,EAAiB,GACjB,MACF,IAAK,IACH,EAAiB,GACjB,MACF,IAAK,WACH,EAAiB,GACjB,MACF,QACE,EAAiB,GAMrB,MAJA,GAAc,GAAkC,KAAK,KAAM,EAAK,CAChE,EAAiB,EAAmB,EAAgB,EAAY,CAChE,EAAK,iBAAmB,EACxB,EAAK,aAAe,EACb,EAKT,OAHS,IAAT,MAAiC,IAAT,MAAwB,GAAiB,EAAY,CAC7E,EAAK,iBAAmB,EACxB,EAAK,aAAe,KACb,EAET,SAAS,GAAkC,EAAM,EAAY,CAC3D,GAAU,KAAN,GAAoC,KAAN,EAChC,MAAQ,GAAK,aAAe,KAAQ,EAAK,iBAAmB,EAAI,KAClE,IAAI,EAAuB,EAAK,aAChC,GAAI,IAAqB,EAAI,EAAK,eAAiB,EACjD,OAAO,KACT,IAAI,EAAyC,EAS7C,MARA,GAAyC,GACvC,EACA,IAAS,EAAqB,EAAyC,EAC9D,EAAK,sBAAd,MAA4C,EAAK,gBAAZ,GACtC,CACS,IAAN,EAAqD,MACzD,GAAkB,EAAM,EAAwC,EAAW,CAC3E,GAAmC,EAAM,IAAK,CAAC,CAChC,EAAK,cAAb,MAA6B,EAAK,eAAiB,EACtD,GAAkC,KAAK,KAAM,EAAK,CAClD,MAEN,SAAS,GAAsB,EAAM,EAAO,CAC1C,GAAI,IAAqB,CAAE,OAAO,KAClC,GAAkB,EAAM,EAAO,CAAC,EAAE,CAEpC,SAAS,IAAoC,CAC3C,GAAkB,UAAY,CACrB,EAAmB,EACtB,EACE,GACA,GACD,CACD,IAAgC,EACpC,CAEJ,SAAS,IAAwB,CAC/B,GAAU,KAAN,EAAkC,CACpC,IAAI,EAAkB,GAChB,IAAN,IACI,EAAkB,GACnB,KAA6B,EAC9B,EAAO,GAA2B,UAC/B,GAA2B,MAChC,GAA6B,EAE/B,OAAO,GAET,SAAS,GAAqB,EAAY,CACxC,OAAe,GAAR,MACQ,OAAO,GAApB,UACc,OAAO,GAArB,UACE,KACe,OAAO,GAAtB,WACE,EACA,GAAY,GAAK,EAAW,CAEpC,SAAS,GAA4B,EAAM,EAAW,CACpD,IAAI,EAAO,EAAU,cAAc,cAAc,QAAQ,CAOzD,MANA,GAAK,KAAO,EAAU,KACtB,EAAK,MAAQ,EAAU,MACvB,EAAK,IAAM,EAAK,aAAa,OAAQ,EAAK,GAAG,CAC7C,EAAU,WAAW,aAAa,EAAM,EAAU,CAClD,EAAO,IAAI,SAAS,EAAK,CACzB,EAAK,WAAW,YAAY,EAAK,CAC1B,EAET,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,GACe,IAAb,UACA,GACA,EAAgB,YAAc,EAC9B,CACA,IAAI,EAAS,IACR,EAAkB,KAAqB,MAAM,OAC/C,CACD,EAAY,EAAY,UAC1B,IACI,GAAgB,EAAe,EAAU,KAAqB,MAC5D,GAAqB,EAAa,WAAW,CAC7C,EAAU,aAAa,aAAa,CAC/B,IAAT,OAA2B,EAAS,EAAgB,EAAY,OAClE,IAAI,EAAQ,IAAI,GACd,SACA,SACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CACV,QACP,UAAW,CACT,CACE,SAAU,KACV,SAAU,UAAY,CACpB,GAAI,EAAY,qBACJ,KAAN,EAAkC,CACpC,IAAI,EAAW,EACX,GAA4B,EAAmB,EAAU,CACzD,IAAI,SAAS,EAAkB,CACnC,GACE,EACA,CACE,QAAS,CAAC,EACV,KAAM,EACN,OAAQ,EAAkB,OAClB,SACT,CACD,KACA,EACD,OAGY,OAAO,GAAtB,aACG,EAAM,gBAAgB,CACtB,EAAW,EACR,GAA4B,EAAmB,EAAU,CACzD,IAAI,SAAS,EAAkB,CACnC,GACE,EACA,CACE,QAAS,CAAC,EACV,KAAM,EACN,OAAQ,EAAkB,OAClB,SACT,CACD,EACA,EACD,GAEP,cAAe,EAChB,CACF,CACF,CAAC,EAGN,IACE,IAAI,GAAuB,EAC3B,GAAuB,GAAwB,OAC/C,KACA,CACA,IAAI,GACA,GAAwB,IAM5B,GAJI,GAA6B,aAKA,CAC/B,MAJE,GAA6B,GAAG,aAAa,CAC7C,GAA6B,MAAM,EAAE,EAIxC,CAEH,GAAoB,GAAe,iBAAiB,CACpD,GAAoB,GAAqB,uBAAuB,CAChE,GAAoB,GAAiB,mBAAmB,CACxD,GAAoB,WAAY,gBAAgB,CAChD,GAAoB,UAAW,UAAU,CACzC,GAAoB,WAAY,SAAS,CACzC,GAAoB,GAAgB,kBAAkB,CACtD,GAAoB,GAAkB,oBAAoB,CAC1D,GAAoB,GAAmB,qBAAqB,CAC5D,GAAoB,GAAgB,kBAAkB,CACtD,GAAoB,eAAgB,CAAC,WAAY,YAAY,CAAC,CAC9D,GAAoB,eAAgB,CAAC,WAAY,YAAY,CAAC,CAC9D,GAAoB,iBAAkB,CAAC,aAAc,cAAc,CAAC,CACpE,GAAoB,iBAAkB,CAAC,aAAc,cAAc,CAAC,CACpE,GACE,WACA,oEAAoE,MAAM,IAAI,CAC/E,CACD,GACE,WACA,uFAAuF,MACrF,IACD,CACF,CACD,GAAsB,gBAAiB,CACrC,iBACA,WACA,YACA,QACD,CAAC,CACF,GACE,mBACA,2DAA2D,MAAM,IAAI,CACtE,CACD,GACE,qBACA,6DAA6D,MAAM,IAAI,CACxE,CACD,GACE,sBACA,8DAA8D,MAAM,IAAI,CACzE,CACD,IAAI,GACA,6NAA6N,MAC3N,IACD,CACH,GAAqB,IAAI,IACvB,iEACG,MAAM,IAAI,CACV,OAAO,GAAgB,CAC3B,CACH,SAAS,GAAqB,EAAe,EAAkB,CAC7D,GAA0B,EAAmB,IAA1B,EACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC7C,IAAI,EAAmB,EAAc,GACnC,EAAQ,EAAiB,MAC3B,EAAmB,EAAiB,UACpC,EAAG,CACD,IAAI,EAAmB,IAAK,GAC5B,GAAI,EACF,IACE,IAAI,EAAa,EAAiB,OAAS,EAC3C,GAAK,EACL,IACA,CACA,IAAI,EAAuB,EAAiB,GAC1C,EAAW,EAAqB,SAChC,EAAgB,EAAqB,cAEvC,GADA,EAAuB,EAAqB,SACxC,IAAa,GAAoB,EAAM,sBAAsB,CAC/D,MAAM,EACR,EAAmB,EACnB,EAAM,cAAgB,EACtB,GAAI,CACF,EAAiB,EAAM,OAChB,EAAO,CACd,GAAkB,EAAM,CAE1B,EAAM,cAAgB,KACtB,EAAmB,OAGrB,IACE,EAAa,EACb,EAAa,EAAiB,OAC9B,IACA,CAKA,GAJA,EAAuB,EAAiB,GACxC,EAAW,EAAqB,SAChC,EAAgB,EAAqB,cACrC,EAAuB,EAAqB,SACxC,IAAa,GAAoB,EAAM,sBAAsB,CAC/D,MAAM,EACR,EAAmB,EACnB,EAAM,cAAgB,EACtB,GAAI,CACF,EAAiB,EAAM,OAChB,EAAO,CACd,GAAkB,EAAM,CAE1B,EAAM,cAAgB,KACtB,EAAmB,KAK7B,SAAS,EAA0B,EAAc,EAAe,CAC9D,IAAI,EAA2B,EAAc,IAClC,IAAX,IAAK,KACF,EAA2B,EAAc,IACxC,IAAI,KACR,IAAI,EAAiB,EAAe,WACpC,EAAyB,IAAI,EAAe,GACzC,GAAwB,EAAe,EAAc,EAAG,CAAC,EAAE,CAC5D,EAAyB,IAAI,EAAe,EAEhD,SAAS,GAAoB,EAAc,EAAwB,EAAQ,CACzE,IAAI,EAAmB,EACvB,IAA2B,GAAoB,GAC/C,GACE,EACA,EACA,EACA,EACD,CAEH,IAAI,GAAkB,kBAAoB,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAC7E,SAAS,GAA2B,EAAsB,CACxD,GAAI,CAAC,EAAqB,IAAkB,CAC1C,EAAqB,IAAmB,CAAC,EACzC,GAAgB,QAAQ,SAAU,EAAc,CACxB,IAAtB,oBACG,GAAmB,IAAI,EAAa,EACnC,GAAoB,EAAc,CAAC,EAAG,EAAqB,CAC7D,GAAoB,EAAc,CAAC,EAAG,EAAqB,GAC7D,CACF,IAAI,EACI,EAAqB,WAA3B,EACI,EACA,EAAqB,cAClB,IAAT,MACE,EAAc,MACZ,EAAc,IAAmB,CAAC,EACpC,GAAoB,kBAAmB,CAAC,EAAG,EAAc,GAG/D,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,OAAQ,GAAiB,EAAa,CAAtC,CACE,IAAK,GACH,IAAI,EAAkB,GACtB,MACF,IAAK,GACH,EAAkB,GAClB,MACF,QACE,EAAkB,GAEtB,EAAmB,EAAgB,KACjC,KACA,EACA,EACA,EACD,CACD,EAAkB,IAAK,GACvB,CAAC,IACmB,IAAjB,cACiB,IAAhB,aACY,IAAZ,UACD,EAAkB,CAAC,GACtB,EACe,IAAX,IAAK,GAKH,EAAgB,iBAAiB,EAAc,EAAkB,CAAC,EAAE,CAJpE,EAAgB,iBAAiB,EAAc,EAAkB,CAC/D,QAAS,CAAC,EACV,QAAS,EACV,CAAC,CAEO,IAAX,IAAK,GAIH,EAAgB,iBAAiB,EAAc,EAAkB,CAAC,EAAE,CAHpE,EAAgB,iBAAiB,EAAc,EAAkB,CAC/D,QAAS,EACV,CAAC,CAGV,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,IAAI,EAAe,EACnB,GACE,EAAO,EAAmB,IAC1B,EAAO,EAAmB,IACjB,IAAT,KAEA,EAAG,OAAS,CACV,GAAa,IAAT,KAA8B,OAClC,IAAI,EAAU,EAAoB,IAClC,GAAU,IAAN,GAAuB,IAAN,EAAe,CAClC,IAAI,EAAY,EAAoB,UAAU,cAC9C,GAAI,IAAc,EAAiB,MACnC,GAAU,IAAN,EACF,IAAK,EAAU,EAAoB,OAAiB,IAAT,MAAoB,CAC7D,IAAI,EAAW,EAAQ,IACvB,IACS,IAAN,GAAwB,IAAN,IACnB,EAAQ,UAAU,gBAAkB,EAEpC,OACF,EAAU,EAAQ,OAEtB,KAAgB,IAAT,MAAsB,CAE3B,GADA,EAAU,GAA2B,EAAU,CAClC,IAAT,KAAkB,OAEtB,GADA,EAAW,EAAQ,IAEX,IAAN,GACM,IAAN,GACO,IAAP,IACO,IAAP,GACA,CACA,EAAsB,EAAe,EACrC,SAAS,EAEX,EAAY,EAAU,YAG1B,EAAsB,EAAoB,OAE9C,GAAiB,UAAY,CAC3B,IAAI,EAAa,EACf,EAAoB,GAAe,EAAY,CAC/C,EAAgB,EAAE,CACpB,EAAG,CACD,IAAI,EAAY,GAA2B,IAAI,EAAa,CAC5D,GAAe,IAAX,IAAK,GAAiB,CACxB,IAAI,EAAqB,GACvB,EAAiB,EACnB,OAAQ,EAAR,CACE,IAAK,WACH,GAAU,GAAiB,EAAY,GAAnC,EAAqC,MAAM,EACjD,IAAK,UACL,IAAK,QACH,EAAqB,GACrB,MACF,IAAK,UACH,EAAiB,QACjB,EAAqB,GACrB,MACF,IAAK,WACH,EAAiB,OACjB,EAAqB,GACrB,MACF,IAAK,aACL,IAAK,YACH,EAAqB,GACrB,MACF,IAAK,QACH,GAAU,EAAY,SAAlB,EAA0B,MAAM,EACtC,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,cACH,EAAqB,GACrB,MACF,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,OACH,EAAqB,GACrB,MACF,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,aACH,EAAqB,GACrB,MACF,KAAK,GACL,KAAK,GACL,KAAK,GACH,EAAqB,GACrB,MACF,KAAK,GACH,EAAqB,GACrB,MACF,IAAK,SACL,IAAK,YACH,EAAqB,GACrB,MACF,IAAK,QACH,EAAqB,GACrB,MACF,IAAK,OACL,IAAK,MACL,IAAK,QACH,EAAqB,GACrB,MACF,IAAK,oBACL,IAAK,qBACL,IAAK,gBACL,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,YACH,EAAqB,GACrB,MACF,IAAK,SACL,IAAK,eACH,EAAqB,GAEzB,IAAI,GAAwB,EAAmB,IAA1B,EACnB,EACE,CAAC,IACa,IAAb,UAA6C,IAAhB,aAChC,EAAiB,EACJ,IAAT,KAEE,KADA,EAAY,UAEd,EACN,EAAiB,EAAE,CACnB,IACE,IAAI,EAAW,EAAY,EAClB,IAAT,MAEA,CACA,IAAI,EAAY,EAWhB,GAVA,EAAoB,EAAU,UAC9B,EAAY,EAAU,IACf,IAAN,GAA0B,IAAP,IAA2B,IAAP,IAC7B,IAAT,MACS,IAAT,OACE,EAAY,GAAY,EAAU,EAAe,CAC3C,GAAR,MACE,EAAe,KACb,GAAuB,EAAU,EAAW,EAAkB,CAC/D,EACD,EAAsB,MAC1B,EAAW,EAAS,OAEtB,EAAI,EAAe,SACf,EAAY,IAAI,EAChB,EACA,EACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CAAE,MAAO,EAAW,UAAW,EAAgB,CAAC,GAGzE,GAAI,EAAO,EAAmB,GAAI,CAChC,EAAG,CAKD,GAJA,EACkB,IAAhB,aAAkD,IAAlB,cAClC,EACiB,IAAf,YAAgD,IAAjB,aAE/B,GACA,IAAgB,KACf,EACC,EAAY,eAAiB,EAAY,eAC1C,GAA2B,EAAe,EACzC,EAAe,KAEjB,MAAM,EACR,IAAI,GAAsB,KACxB,EACE,EAAkB,SAAW,EACzB,GACC,EAAY,EAAkB,eAC7B,EAAU,aAAe,EAAU,aACnC,OACJ,GAEE,EACA,EAAY,eAAiB,EAAY,UAC1C,EAAqB,EACrB,EAAiB,EACd,GAA2B,EAAe,CAC1C,KACK,IAAT,OACI,EACA,EAAuB,EAAe,CACvC,EAAiB,EAAe,IACjC,IAAmB,GACV,IAAN,GACQ,IAAP,IACM,IAAN,KAEN,EAAiB,QACb,EAAqB,KAAQ,EAAiB,GAClD,IAAuB,GAAgB,CAwCzC,GAvCA,EAAiB,GACjB,EAAY,eACZ,EAAiB,eACjB,EAAW,SACU,IAAjB,cAAmD,IAAlB,iBAClC,EAAiB,GACf,EAAY,iBACZ,EAAiB,iBACjB,EAAW,WAChB,EACU,GAAR,KACI,EACA,GAAoB,EAAmB,CAC7C,EACU,GAAR,KACI,EACA,GAAoB,EAAe,CACzC,EAAY,IAAI,EACd,EACA,EAAW,QACX,EACA,EACA,EACD,CACD,EAAU,OAAS,EACnB,EAAU,cAAgB,EAC1B,EAAY,KACZ,GAA2B,EAAkB,GAAK,IAC9C,EAAiB,IAAI,EACrB,EACA,EAAW,QACX,EACA,EACA,EACD,CACA,EAAe,OAAS,EACxB,EAAe,cAAgB,EAC/B,EAAY,GACf,EAAuB,EACnB,GAAsB,EACxB,EAAG,CAKD,IAJA,EAAiB,GACjB,EAAiB,EACjB,EAAW,EACX,EAAoB,EAElB,EAAY,EACZ,EACA,EAAY,EAAe,EAAU,CAErC,IACF,EAAY,EACZ,IAAK,IAAI,EAAQ,EAAU,EAAO,EAAQ,EAAe,EAAM,CAC7D,IACF,KAAO,EAAI,EAAoB,GAC5B,EAAiB,EAAe,EAAe,CAC9C,IACJ,KAAO,EAAI,EAAY,GACpB,EAAW,EAAe,EAAS,CAAG,IACzC,KAAO,KAAuB,CAC5B,GACE,IAAmB,GACT,IAAT,MAAqB,IAAmB,EAAS,UAClD,CACA,EAAiB,EACjB,MAAM,EAER,EAAiB,EAAe,EAAe,CAC/C,EAAW,EAAe,EAAS,CAErC,EAAiB,UAEhB,EAAiB,KACb,IAAT,MACE,GACE,EACA,EACA,EACA,EACA,CAAC,EACF,CACM,IAAT,MACW,IAAT,MACA,GACE,EACA,EACA,EACA,EACA,CAAC,EACF,EAIT,EAAG,CAID,GAHA,EAAY,EAAa,GAAoB,EAAW,CAAG,OAC3D,EACE,EAAU,UAAY,EAAU,SAAS,aAAa,CAEzC,IAAb,UACa,IAAZ,SAA6C,EAAU,OAArB,OAEnC,IAAI,EAAoB,WACjB,GAAmB,EAAU,CACpC,GAAI,GACF,EAAoB,OACjB,CACH,EAAoB,GACpB,IAAI,EAAkB,QAGvB,EAAqB,EAAU,SAC9B,CAAC,GACW,EAAmB,aAAa,GAA5C,SACgB,EAAU,OAAzB,YAA6C,EAAU,OAAtB,QAC9B,GACA,GAAgB,EAAW,YAAY,GACtC,EAAoB,IACpB,EAAoB,GAC7B,GACE,AACC,IAAoB,EAAkB,EAAc,EAAW,CAChE,CACA,GACE,EACA,EACA,EACA,EACD,CACD,MAAM,EAER,GAAmB,EAAgB,EAAc,EAAW,EAAW,CACxD,IAAf,YACE,GACa,EAAU,OAAvB,UACQ,EAAW,cAAc,OAAjC,MACA,GAAgB,EAAW,SAAU,EAAU,MAAM,CAGzD,OADA,EAAkB,EAAa,GAAoB,EAAW,CAAG,OACzD,EAAR,CACE,IAAK,WAED,GAAmB,EAAgB,EACxB,EAAgB,kBAA3B,UAEC,GAAgB,EACd,GAAoB,EACpB,GAAgB,MACrB,MACF,IAAK,WACH,GAAgB,GAAoB,GAAgB,KACpD,MACF,IAAK,YACH,GAAY,CAAC,EACb,MACF,IAAK,cACL,IAAK,UACL,IAAK,UACH,GAAY,CAAC,EACb,GAAqB,EAAe,EAAa,EAAkB,CACnE,MACF,IAAK,kBACH,GAAI,GAA0B,MAChC,IAAK,UACL,IAAK,QACH,GAAqB,EAAe,EAAa,EAAkB,CAEvE,IAAI,EACJ,GAAI,GACF,EAAG,CACD,OAAQ,EAAR,CACE,IAAK,mBACH,IAAI,EAAY,qBAChB,MAAM,EACR,IAAK,iBACH,EAAY,mBACZ,MAAM,EACR,IAAK,oBACH,EAAY,sBACZ,MAAM,EAEV,EAAY,IAAK,QAGnB,GACI,GAAyB,EAAc,EAAY,GAClD,EAAY,oBACC,IAAd,WACQ,EAAY,UAApB,MACC,EAAY,sBACnB,IACG,IACU,EAAY,SAArB,OACC,IAAwC,IAAzB,qBACW,IAAvB,oBACA,KACC,EAAe,IAAS,GACvB,GAAO,EACR,GAAY,UAAW,GAAO,GAAK,MAAQ,GAAK,YAChD,GAAc,CAAC,IACrB,EAAkB,GAA4B,EAAY,EAAU,CACrE,EAAI,EAAgB,SAChB,EAAY,IAAI,GAChB,EACA,EACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CAAE,MAAO,EAAW,UAAW,EAAiB,CAAC,CACpE,EACK,EAAU,KAAO,GAChB,EAAe,GAAuB,EAAY,CAC3C,IAAT,OAA0B,EAAU,KAAO,OAEhD,EAAe,GACZ,GAA0B,EAAc,EAAY,CACpD,GAA4B,EAAc,EAAY,IAEzD,EAAY,GAA4B,EAAY,gBAAgB,CACnE,EAAI,EAAU,SACV,EAAkB,IAAI,GACtB,gBACA,cACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CACjB,MAAO,EACP,UAAW,EACZ,CAAC,CACD,EAAgB,KAAO,IAC9B,GACE,EACA,EACA,EACA,EACA,EACD,CAEH,GAAqB,EAAe,EAAiB,EACrD,CAEJ,SAAS,GAAuB,EAAU,EAAU,EAAe,CACjE,MAAO,CACK,WACA,WACK,gBAChB,CAEH,SAAS,GAA4B,EAAa,EAAW,CAC3D,IACE,IAAI,EAAc,EAAY,UAAW,EAAY,EAAE,CAC9C,IAAT,MAEA,CACA,IAAI,EAAa,EACf,EAAY,EAAW,UAczB,GAbA,EAAa,EAAW,IACjB,IAAN,GAA2B,IAAP,IAA4B,IAAP,IAC/B,IAAT,OACE,EAAa,GAAY,EAAa,EAAY,CAC5C,GAAR,MACE,EAAU,QACR,GAAuB,EAAa,EAAY,EAAU,CAC3D,CACF,EAAa,GAAY,EAAa,EAAU,CACzC,GAAR,MACE,EAAU,KACR,GAAuB,EAAa,EAAY,EAAU,CAC3D,EACK,EAAY,MAAlB,EAAuB,OAAO,EAClC,EAAc,EAAY,OAE5B,MAAO,EAAE,CAEX,SAAS,GAAU,EAAM,CACvB,GAAa,IAAT,KAAe,OAAO,KAC1B,EAAG,GAAO,EAAK,aACR,GAAc,EAAK,MAAX,GAAyB,EAAK,MAAZ,IACjC,OAAO,GAAc,KAEvB,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,IACE,IAAI,EAAmB,EAAM,WAAY,EAAY,EAAE,CAC9C,IAAT,MAAmB,IAAW,GAE9B,CACA,IAAI,EAAa,EACf,EAAY,EAAW,UACvB,EAAY,EAAW,UAEzB,GADA,EAAa,EAAW,IACX,IAAT,MAAsB,IAAc,EAAQ,MACzC,IAAN,GAA2B,IAAP,IAA4B,IAAP,IAC/B,IAAT,OACE,EAAY,EACd,GACM,EAAY,GAAY,EAAQ,EAAiB,CAC3C,GAAR,MACE,EAAU,QACR,GAAuB,EAAQ,EAAW,EAAU,CACrD,EACH,IACE,EAAY,GAAY,EAAQ,EAAiB,CAC3C,GAAR,MACE,EAAU,KACR,GAAuB,EAAQ,EAAW,EAAU,CACrD,GACT,EAAS,EAAO,OAEZ,EAAU,SAAhB,GACE,EAAc,KAAK,CAAS,QAAkB,YAAW,CAAC,CAE9D,IAAI,GAA2B,SAC7B,GAAuC,iBACzC,SAAS,GAAkC,EAAQ,CACjD,OAAqB,OAAO,GAApB,SAA6B,EAAS,GAAK,GAChD,QAAQ,GAA0B;EAAK,CACvC,QAAQ,GAAsC,GAAG,CAEtD,SAAS,GAAsB,EAAY,EAAY,CAErD,MADA,GAAa,GAAkC,EAAW,CACnD,GAAkC,EAAW,GAAK,EAE3D,SAAS,EAAQ,EAAY,EAAK,EAAK,EAAO,EAAO,EAAW,CAC9D,OAAQ,EAAR,CACE,IAAK,WACU,OAAO,GAApB,SACe,IAAX,QACgB,IAAf,YAA6B,IAAP,IACvB,EAAe,EAAY,EAAM,EACnB,OAAO,GAApB,UAA0C,OAAO,GAApB,WACnB,IAAX,QACA,EAAe,EAAY,GAAK,EAAM,CAC1C,MACF,IAAK,YACH,GAA0B,EAAY,QAAS,EAAM,CACrD,MACF,IAAK,WACH,GAA0B,EAAY,WAAY,EAAM,CACxD,MACF,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACH,GAA0B,EAAY,EAAK,EAAM,CACjD,MACF,IAAK,QACH,GAAkB,EAAY,EAAO,EAAU,CAC/C,MACF,IAAK,OACH,GAAiB,IAAb,SAAkB,CACpB,GAA0B,EAAY,OAAQ,EAAM,CACpD,MAEJ,IAAK,MACL,IAAK,OACH,GAAW,IAAP,KAAyB,IAAR,KAA0B,IAAX,QAAiB,CACnD,EAAW,gBAAgB,EAAI,CAC/B,MAEF,GACU,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACc,OAAO,GAArB,UACA,CACA,EAAW,gBAAgB,EAAI,CAC/B,MAEF,EAAQ,GAAY,GAAK,EAAM,CAC/B,EAAW,aAAa,EAAK,EAAM,CACnC,MACF,IAAK,SACL,IAAK,aACH,GAAmB,OAAO,GAAtB,WAA6B,CAC/B,EAAW,aACT,EACA,uRACD,CACD,WAEe,OAAO,GAAtB,aACoB,IAAjB,cACgB,IAAZ,SACC,EAAQ,EAAY,EAAK,OAAQ,EAAM,KAAM,EAAO,KAAK,CAC3D,EACE,EACA,EACA,cACA,EAAM,YACN,EACA,KACD,CACD,EACE,EACA,EACA,aACA,EAAM,WACN,EACA,KACD,CACD,EACE,EACA,EACA,aACA,EAAM,WACN,EACA,KACD,GACA,EAAQ,EAAY,EAAK,UAAW,EAAM,QAAS,EAAO,KAAK,CAChE,EAAQ,EAAY,EAAK,SAAU,EAAM,OAAQ,EAAO,KAAK,CAC7D,EAAQ,EAAY,EAAK,SAAU,EAAM,OAAQ,EAAO,KAAK,GACrE,GACU,GAAR,MACa,OAAO,GAApB,UACc,OAAO,GAArB,UACA,CACA,EAAW,gBAAgB,EAAI,CAC/B,MAEF,EAAQ,GAAY,GAAK,EAAM,CAC/B,EAAW,aAAa,EAAK,EAAM,CACnC,MACF,IAAK,UACK,GAAR,OAAkB,EAAW,QAAU,IACvC,MACF,IAAK,WACK,GAAR,MAAiB,EAA0B,SAAU,EAAW,CAChE,MACF,IAAK,cACK,GAAR,MAAiB,EAA0B,YAAa,EAAW,CACnE,MACF,IAAK,0BACH,GAAY,GAAR,KAAe,CACjB,GAAiB,OAAO,GAApB,UAA6B,EAAE,WAAY,GAC7C,MAAM,MAAM,EAAuB,GAAG,CAAC,CAEzC,GADA,EAAM,EAAM,OACA,GAAR,KAAa,CACf,GAAY,EAAM,UAAd,KAAwB,MAAM,MAAM,EAAuB,GAAG,CAAC,CACnE,EAAW,UAAY,GAG3B,MACF,IAAK,WACH,EAAW,SACT,GAAwB,OAAO,GAAtB,YAA4C,OAAO,GAApB,SAC1C,MACF,IAAK,QACH,EAAW,MACT,GAAwB,OAAO,GAAtB,YAA4C,OAAO,GAApB,SAC1C,MACF,IAAK,iCACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,YACL,IAAK,MACH,MACF,IAAK,YACH,MACF,IAAK,YACH,GACU,GAAR,MACe,OAAO,GAAtB,YACc,OAAO,GAArB,WACa,OAAO,GAApB,SACA,CACA,EAAW,gBAAgB,aAAa,CACxC,MAEF,EAAM,GAAY,GAAK,EAAM,CAC7B,EAAW,eACT,+BACA,aACA,EACD,CACD,MACF,IAAK,kBACL,IAAK,aACL,IAAK,YACL,IAAK,QACL,IAAK,cACL,IAAK,4BACL,IAAK,YACL,IAAK,gBACK,GAAR,MAAgC,OAAO,GAAtB,YAA4C,OAAO,GAApB,SAC5C,EAAW,aAAa,EAAK,GAAK,EAAM,CACxC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,QACL,IAAK,kBACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,0BACL,IAAK,wBACL,IAAK,iBACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,aACL,IAAK,OACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,YACH,GAAwB,OAAO,GAAtB,YAA4C,OAAO,GAApB,SACpC,EAAW,aAAa,EAAK,GAAG,CAChC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,UACL,IAAK,WACH,CAAC,IAAM,EACH,EAAW,aAAa,EAAK,GAAG,CAChC,CAAC,IAAM,GACG,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACA,EAAW,aAAa,EAAK,EAAM,CACnC,EAAW,gBAAgB,EAAI,CACrC,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACK,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACA,CAAC,MAAM,EAAM,EACb,GAAK,EACD,EAAW,aAAa,EAAK,EAAM,CACnC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,UACL,IAAK,QACK,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACA,MAAM,EAAM,CACR,EAAW,gBAAgB,EAAI,CAC/B,EAAW,aAAa,EAAK,EAAM,CACvC,MACF,IAAK,UACH,EAA0B,eAAgB,EAAW,CACrD,EAA0B,SAAU,EAAW,CAC/C,GAAqB,EAAY,UAAW,EAAM,CAClD,MACF,IAAK,eACH,GACE,EACA,+BACA,gBACA,EACD,CACD,MACF,IAAK,eACH,GACE,EACA,+BACA,gBACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,aACH,GACE,EACA,+BACA,cACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,UACH,GACE,EACA,uCACA,WACA,EACD,CACD,MACF,IAAK,UACH,GACE,EACA,uCACA,WACA,EACD,CACD,MACF,IAAK,WACH,GACE,EACA,uCACA,YACA,EACD,CACD,MACF,IAAK,KACH,GAAqB,EAAY,KAAM,EAAM,CAC7C,MACF,IAAK,YACL,IAAK,cACH,MACF,SAEI,EAAE,EAAI,EAAI,SACD,EAAI,KAAZ,KAA0B,EAAI,KAAZ,KACV,EAAI,KAAZ,KAA0B,EAAI,KAAZ,OAElB,EAAM,GAAQ,IAAI,EAAI,EAAI,EACzB,GAAqB,EAAY,EAAK,EAAM,GAGtD,SAAS,GAAuB,EAAY,EAAK,EAAK,EAAO,EAAO,EAAW,CAC7E,OAAQ,EAAR,CACE,IAAK,QACH,GAAkB,EAAY,EAAO,EAAU,CAC/C,MACF,IAAK,0BACH,GAAY,GAAR,KAAe,CACjB,GAAiB,OAAO,GAApB,UAA6B,EAAE,WAAY,GAC7C,MAAM,MAAM,EAAuB,GAAG,CAAC,CAEzC,GADA,EAAM,EAAM,OACA,GAAR,KAAa,CACf,GAAY,EAAM,UAAd,KAAwB,MAAM,MAAM,EAAuB,GAAG,CAAC,CACnE,EAAW,UAAY,GAG3B,MACF,IAAK,WACU,OAAO,GAApB,SACI,EAAe,EAAY,EAAM,EACnB,OAAO,GAApB,UAA0C,OAAO,GAApB,WAC9B,EAAe,EAAY,GAAK,EAAM,CAC1C,MACF,IAAK,WACK,GAAR,MAAiB,EAA0B,SAAU,EAAW,CAChE,MACF,IAAK,cACK,GAAR,MAAiB,EAA0B,YAAa,EAAW,CACnE,MACF,IAAK,UACK,GAAR,OAAkB,EAAW,QAAU,IACvC,MACF,IAAK,iCACL,IAAK,2BACL,IAAK,YACL,IAAK,MACH,MACF,IAAK,YACL,IAAK,cACH,MACF,QACE,GAAI,CAAC,GAA6B,eAAe,EAAI,CACnD,EAAG,CACD,GACU,EAAI,KAAZ,KACQ,EAAI,KAAZ,MACE,EAAQ,EAAI,SAAS,UAAU,CAChC,EAAM,EAAI,MAAM,EAAG,EAAQ,EAAI,OAAS,EAAI,IAAK,GAAE,CACnD,EAAY,EAAW,KAAqB,KAC5C,EAAoB,GAAR,KAAqC,KAAjB,EAAU,GAC5B,OAAO,GAAtB,YACE,EAAW,oBAAoB,EAAK,EAAW,EAAM,CACxC,OAAO,GAAtB,YACA,CACe,OAAO,GAAtB,YACW,IAAT,OACC,KAAO,EACH,EAAW,GAAO,KACnB,EAAW,aAAa,EAAI,EAC5B,EAAW,gBAAgB,EAAI,EACrC,EAAW,iBAAiB,EAAK,EAAO,EAAM,CAC9C,MAAM,EAER,KAAO,EACF,EAAW,GAAO,EACnB,CAAC,IAAM,EACL,EAAW,aAAa,EAAK,GAAG,CAChC,GAAqB,EAAY,EAAK,EAAM,GAI5D,SAAS,GAAqB,EAAY,EAAK,EAAO,CACpD,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACH,MACF,IAAK,MACH,EAA0B,QAAS,EAAW,CAC9C,EAA0B,OAAQ,EAAW,CAC7C,IAAI,EAAS,CAAC,EACZ,EAAY,CAAC,EACb,EACF,IAAK,KAAW,EACd,GAAI,EAAM,eAAe,EAAQ,CAAE,CACjC,IAAI,EAAY,EAAM,GACtB,GAAY,GAAR,KACF,OAAQ,EAAR,CACE,IAAK,MACH,EAAS,CAAC,EACV,MACF,IAAK,SACH,EAAY,CAAC,EACb,MACF,IAAK,WACL,IAAK,0BACH,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,QACE,EAAQ,EAAY,EAAK,EAAS,EAAW,EAAO,KAAK,EAGnE,GACE,EAAQ,EAAY,EAAK,SAAU,EAAM,OAAQ,EAAO,KAAK,CAC/D,GAAU,EAAQ,EAAY,EAAK,MAAO,EAAM,IAAK,EAAO,KAAK,CACjE,OACF,IAAK,QACH,EAA0B,UAAW,EAAW,CAChD,IAAI,EAAgB,EAAU,EAAY,EAAY,KACpD,EAAU,KACV,EAAiB,KACnB,IAAK,KAAU,EACb,GAAI,EAAM,eAAe,EAAO,CAAE,CAChC,IAAI,EAAgB,EAAM,GAC1B,GAAY,GAAR,KACF,OAAQ,EAAR,CACE,IAAK,OACH,EAAY,EACZ,MACF,IAAK,OACH,EAAY,EACZ,MACF,IAAK,UACH,EAAU,EACV,MACF,IAAK,iBACH,EAAiB,EACjB,MACF,IAAK,QACH,EAAU,EACV,MACF,IAAK,eACH,EAAe,EACf,MACF,IAAK,WACL,IAAK,0BACH,GAAY,GAAR,KACF,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,MACF,QACE,EAAQ,EAAY,EAAK,EAAQ,EAAe,EAAO,KAAK,EAGtE,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAAC,EACF,CACD,OACF,IAAK,SAGH,IAAK,KAFL,EAA0B,UAAW,EAAW,CAChD,EAAS,EAAY,EAAU,KACb,EAChB,GACE,EAAM,eAAe,EAAU,GAC7B,EAAe,EAAM,GAAqB,GAAR,MAEpC,OAAQ,EAAR,CACE,IAAK,QACH,EAAU,EACV,MACF,IAAK,eACH,EAAY,EACZ,MACF,IAAK,WACH,EAAS,EACX,QACE,EAAQ,EAAY,EAAK,EAAW,EAAc,EAAO,KAAK,CAEtE,EAAM,EACN,EAAQ,EACR,EAAW,SAAW,CAAC,CAAC,EAChB,GAAR,KAEY,GAAR,MAAiB,GAAc,EAAY,CAAC,CAAC,EAAQ,EAAO,CAAC,EAAE,CAD/D,GAAc,EAAY,CAAC,CAAC,EAAQ,EAAK,CAAC,EAAE,CAEhD,OACF,IAAK,WAGH,IAAK,KAFL,EAA0B,UAAW,EAAW,CAChD,EAAU,EAAY,EAAS,KACb,EAChB,GACE,EAAM,eAAe,EAAU,GAC7B,EAAe,EAAM,GAAqB,GAAR,MAEpC,OAAQ,EAAR,CACE,IAAK,QACH,EAAS,EACT,MACF,IAAK,eACH,EAAY,EACZ,MACF,IAAK,WACH,EAAU,EACV,MACF,IAAK,0BACH,GAAY,GAAR,KAAsB,MAAM,MAAM,EAAuB,GAAG,CAAC,CACjE,MACF,QACE,EAAQ,EAAY,EAAK,EAAW,EAAc,EAAO,KAAK,CAEtE,GAAa,EAAY,EAAQ,EAAW,EAAQ,CACpD,OACF,IAAK,SACH,IAAK,KAAW,EACd,GACE,EAAM,eAAe,EAAQ,GAC3B,EAAS,EAAM,GAAmB,GAAR,MAE5B,OAAQ,EAAR,CACE,IAAK,WACH,EAAW,SACT,GACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACF,MACF,QACE,EAAQ,EAAY,EAAK,EAAS,EAAQ,EAAO,KAAK,CAE9D,OACF,IAAK,SACH,EAA0B,eAAgB,EAAW,CACrD,EAA0B,SAAU,EAAW,CAC/C,EAA0B,SAAU,EAAW,CAC/C,EAA0B,QAAS,EAAW,CAC9C,MACF,IAAK,SACL,IAAK,SACH,EAA0B,OAAQ,EAAW,CAC7C,MACF,IAAK,QACL,IAAK,QACH,IAAK,EAAS,EAAG,EAAS,GAAgB,OAAQ,IAChD,EAA0B,GAAgB,GAAS,EAAW,CAChE,MACF,IAAK,QACH,EAA0B,QAAS,EAAW,CAC9C,EAA0B,OAAQ,EAAW,CAC7C,MACF,IAAK,UACH,EAA0B,SAAU,EAAW,CAC/C,MACF,IAAK,QACL,IAAK,SACL,IAAK,OACH,EAA0B,QAAS,EAAW,CAC5C,EAA0B,OAAQ,EAAW,CACjD,IAAK,OACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,MACL,IAAK,WACH,IAAK,KAAkB,EACrB,GACE,EAAM,eAAe,EAAe,GAClC,EAAS,EAAM,GAA0B,GAAR,MAEnC,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,0BACH,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,QACE,EAAQ,EAAY,EAAK,EAAgB,EAAQ,EAAO,KAAK,CAErE,OACF,QACE,GAAI,GAAgB,EAAI,CAAE,CACxB,IAAK,KAAiB,EACpB,EAAM,eAAe,EAAc,GAC/B,EAAS,EAAM,GACN,IAAX,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACA,IAAK,GACN,EACP,QAGN,IAAK,KAAgB,EACnB,EAAM,eAAe,EAAa,GAC9B,EAAS,EAAM,GACT,GAAR,MACE,EAAQ,EAAY,EAAK,EAAc,EAAQ,EAAO,KAAK,EAEnE,SAAS,GAAiB,EAAY,EAAK,EAAW,EAAW,CAC/D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACH,MACF,IAAK,QACH,IAAI,EAAO,KACT,EAAO,KACP,EAAQ,KACR,EAAe,KACf,EAAmB,KACnB,EAAU,KACV,EAAiB,KACnB,IAAK,KAAW,EAAW,CACzB,IAAI,EAAW,EAAU,GACzB,GAAI,EAAU,eAAe,EAAQ,EAAY,GAAR,KACvC,OAAQ,EAAR,CACE,IAAK,UACH,MACF,IAAK,QACH,MACF,IAAK,eACH,EAAmB,EACrB,QACE,EAAU,eAAe,EAAQ,EAC/B,EAAQ,EAAY,EAAK,EAAS,KAAM,EAAW,EAAS,EAGtE,IAAK,IAAI,KAAe,EAAW,CACjC,IAAI,EAAU,EAAU,GAExB,GADA,EAAW,EAAU,GAEnB,EAAU,eAAe,EAAY,GAC5B,GAAR,MAA2B,GAAR,MAEpB,OAAQ,EAAR,CACE,IAAK,OACH,EAAO,EACP,MACF,IAAK,OACH,EAAO,EACP,MACF,IAAK,UACH,EAAU,EACV,MACF,IAAK,iBACH,EAAiB,EACjB,MACF,IAAK,QACH,EAAQ,EACR,MACF,IAAK,eACH,EAAe,EACf,MACF,IAAK,WACL,IAAK,0BACH,GAAY,GAAR,KACF,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,MACF,QACE,IAAY,GACV,EACE,EACA,EACA,EACA,EACA,EACA,EACD,EAGX,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACD,OACF,IAAK,SAEH,IAAK,IADL,GAAU,EAAQ,EAAe,EAAc,KAClC,EACX,GACI,EAAmB,EAAU,GAC/B,EAAU,eAAe,EAAK,EAAY,GAAR,KAElC,OAAQ,EAAR,CACE,IAAK,QACH,MACF,IAAK,WACH,EAAU,EACZ,QACE,EAAU,eAAe,EAAK,EAC5B,EACE,EACA,EACA,EACA,KACA,EACA,EACD,CAEX,IAAK,KAAQ,EACX,GACI,EAAO,EAAU,GAClB,EAAmB,EAAU,GAC9B,EAAU,eAAe,EAAK,GACnB,GAAR,MAAwB,GAAR,MAEnB,OAAQ,EAAR,CACE,IAAK,QACH,EAAc,EACd,MACF,IAAK,eACH,EAAe,EACf,MACF,IAAK,WACH,EAAQ,EACV,QACE,IAAS,GACP,EACE,EACA,EACA,EACA,EACA,EACA,EACD,CAEX,EAAM,EACN,EAAY,EACZ,EAAY,EACJ,GAAR,KAEI,CAAC,CAAC,GAAc,CAAC,CAAC,IACT,GAAR,KAEG,GAAc,EAAY,CAAC,CAAC,EAAW,EAAY,EAAE,CAAG,GAAI,CAAC,EAAE,CAD/D,GAAc,EAAY,CAAC,CAAC,EAAW,EAAK,CAAC,EAAE,EAHnD,GAAc,EAAY,CAAC,CAAC,EAAW,EAAa,CAAC,EAAE,CAK3D,OACF,IAAK,WAEH,IAAK,IADL,GAAU,EAAc,KACH,EACnB,GACI,EAAO,EAAU,GACnB,EAAU,eAAe,EAAa,EAC5B,GAAR,MACA,CAAC,EAAU,eAAe,EAAa,CAEzC,OAAQ,EAAR,CACE,IAAK,QACH,MACF,IAAK,WACH,MACF,QACE,EAAQ,EAAY,EAAK,EAAc,KAAM,EAAW,EAAK,CAErE,IAAK,KAAS,EACZ,GACI,EAAO,EAAU,GAClB,EAAO,EAAU,GAClB,EAAU,eAAe,EAAM,GAAa,GAAR,MAAwB,GAAR,MAEpD,OAAQ,EAAR,CACE,IAAK,QACH,EAAc,EACd,MACF,IAAK,eACH,EAAU,EACV,MACF,IAAK,WACH,MACF,IAAK,0BACH,GAAY,GAAR,KAAc,MAAM,MAAM,EAAuB,GAAG,CAAC,CACzD,MACF,QACE,IAAS,GACP,EAAQ,EAAY,EAAK,EAAO,EAAM,EAAW,EAAK,CAEhE,GAAe,EAAY,EAAa,EAAQ,CAChD,OACF,IAAK,SACH,IAAK,IAAI,KAAe,EACtB,GACI,EAAc,EAAU,GAC1B,EAAU,eAAe,EAAY,EAC3B,GAAR,MACA,CAAC,EAAU,eAAe,EAAY,CAExC,OAAQ,EAAR,CACE,IAAK,WACH,EAAW,SAAW,CAAC,EACvB,MACF,QACE,EACE,EACA,EACA,EACA,KACA,EACA,EACD,CAET,IAAK,KAAoB,EACvB,GACI,EAAc,EAAU,GACzB,EAAU,EAAU,GACrB,EAAU,eAAe,EAAiB,EACxC,IAAgB,IACP,GAAR,MAA+B,GAAR,MAE1B,OAAQ,EAAR,CACE,IAAK,WACH,EAAW,SACT,GACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACF,MACF,QACE,EACE,EACA,EACA,EACA,EACA,EACA,EACD,CAET,OACF,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,QACL,IAAK,KACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,MACL,IAAK,WACH,IAAK,IAAI,KAAe,EACrB,EAAc,EAAU,GACvB,EAAU,eAAe,EAAY,EAC3B,GAAR,MACA,CAAC,EAAU,eAAe,EAAY,EACtC,EAAQ,EAAY,EAAK,EAAa,KAAM,EAAW,EAAY,CACzE,IAAK,KAAW,EACd,GACI,EAAc,EAAU,GACzB,EAAU,EAAU,GACrB,EAAU,eAAe,EAAQ,EAC/B,IAAgB,IACP,GAAR,MAA+B,GAAR,MAE1B,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,0BACH,GAAY,GAAR,KACF,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,MACF,QACE,EACE,EACA,EACA,EACA,EACA,EACA,EACD,CAET,OACF,QACE,GAAI,GAAgB,EAAI,CAAE,CACxB,IAAK,IAAI,KAAe,EACrB,EAAc,EAAU,GACvB,EAAU,eAAe,EAAY,EACxB,IAAX,IAAK,IACL,CAAC,EAAU,eAAe,EAAY,EACtC,GACE,EACA,EACA,EACA,IAAK,GACL,EACA,EACD,CACP,IAAK,KAAkB,EACpB,EAAc,EAAU,GACtB,EAAU,EAAU,GACrB,CAAC,EAAU,eAAe,EAAe,EACvC,IAAgB,GACJ,IAAX,IAAK,IAAgC,IAAX,IAAK,IAChC,GACE,EACA,EACA,EACA,EACA,EACA,EACD,CACP,QAGN,IAAK,IAAI,KAAe,EACrB,EAAc,EAAU,GACvB,EAAU,eAAe,EAAY,EAC3B,GAAR,MACA,CAAC,EAAU,eAAe,EAAY,EACtC,EAAQ,EAAY,EAAK,EAAa,KAAM,EAAW,EAAY,CACzE,IAAK,KAAY,EACd,EAAc,EAAU,GACtB,EAAU,EAAU,GACrB,CAAC,EAAU,eAAe,EAAS,EACjC,IAAgB,GACP,GAAR,MAA+B,GAAR,MACxB,EAAQ,EAAY,EAAK,EAAU,EAAa,EAAW,EAAQ,CAE3E,SAAS,GAAuB,EAAe,CAC7C,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACH,MAAO,CAAC,EACV,QACE,MAAO,CAAC,GAGd,SAAS,IAAoB,CAC3B,GAAmB,OAAO,YAAY,kBAAlC,WAAoD,CACtD,IACE,IAAI,EAAQ,EACV,EAAO,EACP,EAAkB,YAAY,iBAAiB,WAAW,CAC1D,EAAI,EACN,EAAI,EAAgB,OACpB,IACA,CACA,IAAI,EAAQ,EAAgB,GAC1B,EAAe,EAAM,aACrB,EAAgB,EAAM,cACtB,EAAW,EAAM,SACnB,GAAI,GAAgB,GAAY,GAAuB,EAAc,CAAE,CAGrE,IAFA,EAAgB,EAChB,EAAW,EAAM,YACZ,GAAK,EAAG,EAAI,EAAgB,OAAQ,IAAK,CAC5C,IAAI,EAAe,EAAgB,GACjC,EAAmB,EAAa,UAClC,GAAI,EAAmB,EAAU,MACjC,IAAI,EAAsB,EAAa,aACrC,EAAuB,EAAa,cACtC,GACE,GAAuB,EAAqB,GAC1C,EAAe,EAAa,YAC7B,GACC,GACC,EAAe,EACZ,GACC,EAAW,IACX,EAAe,KAK1B,GAHA,EAAE,EACF,GAAS,GAAK,EAAe,IAAmB,EAAM,SAAW,KACjE,IACI,GAAK,EAAO,OAGpB,GAAI,EAAI,EAAO,OAAO,EAAO,EAAQ,IAEvC,OAAO,UAAU,aACb,EAAQ,UAAU,WAAW,SAAwB,OAAO,GAApB,UACxC,EACA,EAEN,IAAI,GAAgB,KAClB,GAAuB,KACzB,SAAS,GAAkC,EAAsB,CAC/D,OAAa,EAAqB,WAA3B,EACH,EACA,EAAqB,cAE3B,SAAS,GAAkB,EAAc,CACvC,OAAQ,EAAR,CACE,IAAK,6BACH,MAAO,GACT,IAAK,qCACH,MAAO,GACT,QACE,MAAO,IAGb,SAAS,GAAwB,EAAiB,EAAM,CACtD,GAAU,IAAN,EACF,OAAQ,EAAR,CACE,IAAK,MACH,MAAO,GACT,IAAK,OACH,MAAO,GACT,QACE,MAAO,GAEb,OAAa,IAAN,GAA6C,IAApB,gBAC5B,EACA,EAEN,SAAS,GAAqB,EAAM,EAAO,CACzC,OACiB,IAAf,YACe,IAAf,YACa,OAAO,EAAM,UAA1B,UACa,OAAO,EAAM,UAA1B,UACa,OAAO,EAAM,UAA1B,UACc,OAAO,EAAM,yBAA1B,UACU,EAAM,0BAAf,MACQ,EAAM,wBAAwB,QAAtC,KAGN,IAAI,GAAiC,KACrC,SAAS,IAA+B,CACtC,IAAI,EAAQ,OAAO,MAOnB,OANI,GAAwB,EAAM,OAArB,WACP,IAAU,GAAuC,CAAC,GACtD,GAAiC,EAC1B,CAAC,IAEV,GAAiC,KAC1B,CAAC,GAEV,IAAI,GAAiC,OAAO,YAAtB,WAAmC,WAAa,IAAK,GACzE,GAA+B,OAAO,cAAtB,WAAqC,aAAe,IAAK,GACzE,GAA8B,OAAO,SAAtB,WAAgC,QAAU,IAAK,GAC9D,GACiB,OAAO,gBAAtB,WACI,eACuB,KAAvB,OAOE,GANA,SAAU,EAAU,CAClB,OAAO,GACJ,QAAQ,KAAK,CACb,KAAK,EAAS,CACd,MAAM,GAAsB,EAG3C,SAAS,GAAsB,EAAO,CACpC,WAAW,UAAY,CACrB,MAAM,GACN,CAEJ,SAAS,GAAiB,EAAM,CAC9B,OAAkB,IAAX,OAET,SAAS,GAAuB,EAAgB,EAAmB,CACjE,IAAI,EAAO,EACT,EAAQ,EACV,EAAG,CACD,IAAI,EAAW,EAAK,YAEpB,GADA,EAAe,YAAY,EAAK,CAC5B,GAAkB,EAAS,WAAf,EACd,GAAM,EAAO,EAAS,KAAgB,IAAT,MAA0B,IAAT,KAAgB,CAC5D,GAAU,IAAN,EAAa,CACf,EAAe,YAAY,EAAS,CACpC,GAAiB,EAAkB,CACnC,OAEF,YAEQ,IAAR,KACS,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,IAEA,YACkB,IAAX,OACP,GAAyB,EAAe,cAAc,gBAAgB,SACpD,IAAX,OAAiB,CACxB,EAAO,EAAe,cAAc,KACpC,GAAyB,EAAK,CAC9B,IAAK,IAAI,EAAgB,EAAK,WAAY,GAAiB,CACzD,IAAI,EAAoB,EAAc,YACpC,EAAW,EAAc,SAC3B,EAAc,KACC,IAAb,UACY,IAAZ,SACY,IAAX,QACkB,EAAc,IAAI,aAAa,GAAhD,cACF,EAAK,YAAY,EAAc,CACjC,EAAgB,QAGP,IAAX,QACE,GAAyB,EAAe,cAAc,KAAK,CACjE,EAAO,QACA,GACT,GAAiB,EAAkB,CAErC,SAAS,GAA+B,EAAkB,EAAU,CAClE,IAAI,EAAO,EACX,EAAmB,EACnB,EAAG,CACD,IAAI,EAAW,EAAK,YAWpB,GAVM,EAAK,WAAX,EACI,GACI,EAAK,gBAAkB,EAAK,MAAM,QACnC,EAAK,MAAM,QAAU,SACpB,EAAK,MAAM,QAAU,EAAK,iBAAmB,GACxC,EAAK,aAAa,QAAQ,GAAjC,IAAqC,EAAK,gBAAgB,QAAQ,EAC9D,EAAK,WAAX,IACC,GACK,EAAK,aAAe,EAAK,UAAa,EAAK,UAAY,IACxD,EAAK,UAAY,EAAK,cAAgB,IAC3C,GAAkB,EAAS,WAAf,EACd,GAAM,EAAO,EAAS,KAAgB,IAAT,KAC3B,IAAU,IAAN,EAAwB,MACvB,SAEI,IAAR,KAAyB,IAAT,MAA0B,IAAT,MAA0B,IAAT,MACjD,IACN,EAAO,QACA,GAEX,SAAS,GAAwB,EAAW,CAC1C,IAAI,EAAW,EAAU,WAEzB,IADA,GAAmB,EAAS,WAAhB,KAA6B,EAAW,EAAS,aACtD,GAAY,CACjB,IAAI,EAAO,EAEX,OADA,EAAW,EAAS,YACZ,EAAK,SAAb,CACE,IAAK,OACL,IAAK,OACL,IAAK,OACH,GAAwB,EAAK,CAC7B,GAAsB,EAAK,CAC3B,SACF,IAAK,SACL,IAAK,QACH,SACF,IAAK,OACH,GAAqB,EAAK,IAAI,aAAa,GAAvC,aAAyC,SAEjD,EAAU,YAAY,EAAK,EAG/B,SAAS,GAAmB,EAAU,EAAM,EAAO,EAAmB,CACpE,KAAa,EAAS,WAAf,GAA2B,CAChC,IAAI,EAAW,EACf,GAAI,EAAS,SAAS,aAAa,GAAK,EAAK,aAAa,KAEtD,CAAC,IACY,EAAS,WAArB,SAA8C,EAAS,OAAtB,UAElC,cACO,CAAC,EACV,GAAgB,IAAZ,SAAiC,EAAS,OAAtB,SAA4B,CAClD,IAAI,EAAe,EAAS,MAAjB,KAAwB,KAAO,GAAK,EAAS,KACxD,GACe,EAAS,OAAtB,UACA,EAAS,aAAa,OAAO,GAAK,EAElC,OAAO,OACJ,OAAO,UACP,CAAC,EAAS,IACjB,OAAQ,EAAR,CACE,IAAK,OACH,GAAI,CAAC,EAAS,aAAa,WAAW,CAAE,MACxC,OAAO,EACT,IAAK,UACH,EAAO,EAAS,aAAa,MAAM,CACd,IAAjB,cAAyB,EAAS,aAAa,kBAAkB,EAGnE,IAAS,EAAS,KAClB,EAAS,aAAa,OAAO,IAClB,EAAS,MAAjB,MAAgC,EAAS,OAAhB,GACtB,KACA,EAAS,OACf,EAAS,aAAa,cAAc,IACzB,EAAS,aAAjB,KAA+B,KAAO,EAAS,cAClD,EAAS,aAAa,QAAQ,IACnB,EAAS,OAAjB,KAAyB,KAAO,EAAS,OAE5C,MACF,OAAO,EACT,IAAK,QACH,GAAI,EAAS,aAAa,kBAAkB,CAAE,MAC9C,OAAO,EACT,IAAK,SAEH,GADA,EAAO,EAAS,aAAa,MAAM,EAEhC,KAAkB,EAAS,KAAjB,KAAuB,KAAO,EAAS,MAChD,EAAS,aAAa,OAAO,IAClB,EAAS,MAAjB,KAAwB,KAAO,EAAS,OAC3C,EAAS,aAAa,cAAc,IACzB,EAAS,aAAjB,KAA+B,KAAO,EAAS,eACpD,GACA,EAAS,aAAa,QAAQ,EAC9B,CAAC,EAAS,aAAa,WAAW,CAElC,MACF,OAAO,EACT,QACE,OAAO,EAGb,GADA,EAAW,GAAkB,EAAS,YAAY,CACrC,IAAT,KAAmB,MAEzB,OAAO,KAET,SAAS,GAAuB,EAAU,EAAM,EAAmB,CACjE,GAAW,IAAP,GAAa,OAAO,KACxB,KAAa,EAAS,WAAf,GASL,IAPS,EAAS,WAAf,GACa,EAAS,WAArB,SACa,EAAS,OAAtB,WACF,CAAC,IAGH,EAAW,GAAkB,EAAS,YAAY,CACrC,IAAT,MAAmB,OAAO,KAEhC,OAAO,EAET,SAAS,GAA4B,EAAU,EAAmB,CAChE,KAAa,EAAS,WAAf,GASL,IAPS,EAAS,WAAf,GACa,EAAS,WAArB,SACa,EAAS,OAAtB,WACF,CAAC,IAGH,EAAW,GAAkB,EAAS,YAAY,CACrC,IAAT,MAAmB,OAAO,KAEhC,OAAO,EAET,SAAS,GAA0B,EAAU,CAC3C,OAAgB,EAAS,OAAlB,MAAmC,EAAS,OAAlB,KAEnC,SAAS,GAA2B,EAAU,CAC5C,OACW,EAAS,OAAlB,MACU,EAAS,OAAlB,MAAwC,EAAS,cAAc,aAArC,UAG/B,SAAS,GAA8B,EAAU,EAAU,CACzD,IAAI,EAAgB,EAAS,cAC7B,GAAa,EAAS,OAAlB,KAAwB,EAAS,YAAc,UACjC,EAAS,OAAlB,MAAwC,EAAc,aAA5B,UACjC,GAAU,KACP,CACH,IAAI,EAAW,UAAY,CACzB,GAAU,CACV,EAAc,oBAAoB,mBAAoB,EAAS,EAEjE,EAAc,iBAAiB,mBAAoB,EAAS,CAC5D,EAAS,YAAc,GAG3B,SAAS,GAAkB,EAAM,CAC/B,KAAe,GAAR,KAAc,EAAO,EAAK,YAAa,CAC5C,IAAI,EAAW,EAAK,SACpB,GAAU,IAAN,GAAwB,IAAN,EAAgB,MACtC,GAAU,IAAN,EAAgB,CAElB,GADA,EAAW,EAAK,KAEN,IAAR,KACS,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,KACS,IAAT,MACQ,IAAR,IAEA,MACF,GAAa,IAAT,MAA8B,IAAT,KAAmB,OAAO,MAGvD,OAAO,EAET,IAAI,GAA8C,KAClD,SAAS,GAAgD,EAAmB,CAC1E,EAAoB,EAAkB,YACtC,IAAK,IAAI,EAAQ,EAAG,GAAqB,CACvC,GAAU,EAAkB,WAAxB,EAAkC,CACpC,IAAI,EAAO,EAAkB,KAC7B,GAAa,IAAT,MAA0B,IAAT,KAAe,CAClC,GAAU,IAAN,EACF,OAAO,GAAkB,EAAkB,YAAY,CACzD,SAES,IAAR,KACU,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,KACA,IAEN,EAAoB,EAAkB,YAExC,OAAO,KAET,SAAS,GAA2B,EAAgB,CAClD,EAAiB,EAAe,gBAChC,IAAK,IAAI,EAAQ,EAAG,GAAkB,CACpC,GAAU,EAAe,WAArB,EAA+B,CACjC,IAAI,EAAO,EAAe,KAC1B,GACU,IAAR,KACS,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,IACA,CACA,GAAU,IAAN,EAAa,OAAO,EACxB,SACe,IAAT,MAA0B,IAAT,MAAkB,IAE7C,EAAiB,EAAe,gBAElC,OAAO,KAET,SAAS,GAAyB,EAAM,EAAO,EAAuB,CAEpE,OADA,EAAQ,GAAkC,EAAsB,CACxD,EAAR,CACE,IAAK,OAEH,GADA,EAAO,EAAM,gBACT,CAAC,EAAM,MAAM,MAAM,EAAuB,IAAI,CAAC,CACnD,OAAO,EACT,IAAK,OAEH,GADA,EAAO,EAAM,KACT,CAAC,EAAM,MAAM,MAAM,EAAuB,IAAI,CAAC,CACnD,OAAO,EACT,IAAK,OAEH,GADA,EAAO,EAAM,KACT,CAAC,EAAM,MAAM,MAAM,EAAuB,IAAI,CAAC,CACnD,OAAO,EACT,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,EAG9C,SAAS,GAAyB,EAAU,CAC1C,IAAK,IAAI,EAAa,EAAS,WAAY,EAAW,QACpD,EAAS,oBAAoB,EAAW,GAAG,CAC7C,GAAsB,EAAS,CAEjC,IAAI,GAAkB,IAAI,IACxB,GAAiB,IAAI,IACvB,SAAS,GAAiB,EAAW,CACnC,OAAsB,OAAO,EAAU,aAAhC,WACH,EAAU,aAAa,CACjB,EAAU,WAAhB,EACE,EACA,EAAU,cAElB,IAAI,GAAqB,EAAwB,EACjD,EAAwB,EAAI,CAC1B,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACJ,CACD,SAAS,IAAgB,CACvB,IAAI,EAAuB,GAAmB,GAAG,CAC/C,EAAe,IAAiB,CAClC,OAAO,GAAwB,EAEjC,SAAS,GAAiB,EAAM,CAC9B,IAAI,EAAW,GAAoB,EAAK,CAC/B,IAAT,MAA2B,EAAS,MAAf,GAAiC,EAAS,OAApB,OACvC,GAAmB,EAAS,CAC5B,GAAmB,EAAE,EAAK,CAEhC,IAAI,GAAiC,OAAO,SAAvB,IAAkC,KAAO,SAC9D,SAAS,GAAa,EAAK,EAAM,EAAa,CAC5C,IAAI,EAAgB,GACpB,GAAI,GAA8B,OAAO,GAApB,UAA4B,EAAM,CACrD,IAAI,EACF,GAA+C,EAAK,CACtD,EACE,aAAe,EAAM,YAAc,EAAqB,KAC7C,OAAO,GAApB,WACG,GAAsB,iBAAmB,EAAc,MAC1D,GAAe,IAAI,EAAmB,GACnC,GAAe,IAAI,EAAmB,CACtC,EAAM,CAAO,MAAkB,cAAmB,OAAM,CAChD,EAAc,cAAc,EAAmB,GAAxD,OACI,EAAO,EAAc,cAAc,OAAO,CAC5C,GAAqB,EAAM,OAAQ,EAAI,CACvC,GAAoB,EAAK,CACzB,EAAc,KAAK,YAAY,EAAK,IAG5C,SAAS,GAAY,EAAM,CACzB,GAAmB,EAAE,EAAK,CAC1B,GAAa,eAAgB,EAAM,KAAK,CAE1C,SAAS,GAAW,EAAM,EAAa,CACrC,GAAmB,EAAE,EAAM,EAAY,CACvC,GAAa,aAAc,EAAM,EAAY,CAE/C,SAAS,GAAQ,EAAM,EAAI,EAAS,CAClC,GAAmB,EAAE,EAAM,EAAI,EAAQ,CACvC,IAAI,EAAgB,GACpB,GAAI,GAAiB,GAAQ,EAAI,CAC/B,IAAI,EACF,2BACA,GAA+C,EAAG,CAClD,KACU,IAAZ,SACI,GAAW,EAAQ,aACf,GACA,iBACA,GACE,EAAQ,YACT,CACD,KACW,OAAO,EAAQ,YAA5B,WACG,GACC,gBACA,GACE,EAAQ,WACT,CACD,OACH,GACC,UACA,GAA+C,EAAK,CACpD,KAKR,IAAI,EAAM,EACV,OAAQ,EAAR,CACE,IAAK,QACH,EAAM,GAAY,EAAK,CACvB,MACF,IAAK,SACH,EAAM,GAAa,EAAK,CAE5B,GAAgB,IAAI,EAAI,GACpB,EAAO,EACP,CACE,IAAK,UACL,KACc,IAAZ,SAAkB,GAAW,EAAQ,YAAc,IAAK,GAAI,EAC1D,KACL,CACD,EACD,CACD,GAAgB,IAAI,EAAK,EAAK,CACrB,EAAc,cAAc,EAAgB,GAArD,MACe,IAAZ,SACC,EAAc,cAAc,GAA6B,EAAI,CAAC,EAClD,IAAb,UACC,EAAc,cAAc,GAAyB,EAAI,CAAC,GAC1D,EAAK,EAAc,cAAc,OAAO,CAC1C,GAAqB,EAAI,OAAQ,EAAK,CACtC,GAAoB,EAAG,CACvB,EAAc,KAAK,YAAY,EAAG,IAG1C,SAAS,GAAc,EAAM,EAAS,CACpC,GAAmB,EAAE,EAAM,EAAQ,CACnC,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAM,CACzB,IAAI,EAAK,GAAwB,OAAO,EAAQ,IAA5B,SAAiC,EAAQ,GAAK,SAChE,EACE,iCACA,GAA+C,EAAG,CAClD,YACA,GAA+C,EAAK,CACpD,KACF,EAAM,EACR,OAAQ,EAAR,CACE,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,SACH,EAAM,GAAa,EAAK,CAE5B,GACE,CAAC,GAAgB,IAAI,EAAI,GACvB,EAAO,EAAO,CAAE,IAAK,gBAAuB,OAAM,CAAE,EAAQ,CAC9D,GAAgB,IAAI,EAAK,EAAK,CACrB,EAAc,cAAc,EAAgB,GAArD,MACA,CACA,OAAQ,EAAR,CACE,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,SACH,GAAI,EAAc,cAAc,GAAyB,EAAI,CAAC,CAC5D,OAEN,EAAK,EAAc,cAAc,OAAO,CACxC,GAAqB,EAAI,OAAQ,EAAK,CACtC,GAAoB,EAAG,CACvB,EAAc,KAAK,YAAY,EAAG,GAIxC,SAAS,GAAa,EAAM,EAAY,EAAS,CAC/C,GAAmB,EAAE,EAAM,EAAY,EAAQ,CAC/C,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAM,CACzB,IAAI,EAAS,GAAqB,EAAc,CAAC,gBAC/C,EAAM,GAAY,EAAK,CACzB,IAA2B,UAC3B,IAAI,EAAW,EAAO,IAAI,EAAI,CAC9B,GAAI,CAAC,EAAU,CACb,IAAI,EAAQ,CAAE,QAAS,EAAG,QAAS,KAAM,CACzC,GACG,EAAW,EAAc,cACxB,GAA6B,EAAI,CAClC,CAED,EAAM,QAAU,MACb,CACH,EAAO,EACL,CAAE,IAAK,aAAoB,OAAM,kBAAmB,EAAY,CAChE,EACD,EACA,EAAU,GAAgB,IAAI,EAAI,GACjC,GAA+B,EAAM,EAAQ,CAC/C,IAAI,EAAQ,EAAW,EAAc,cAAc,OAAO,CAC1D,GAAoB,EAAK,CACzB,GAAqB,EAAM,OAAQ,EAAK,CACxC,EAAK,GAAK,IAAI,QAAQ,SAAU,EAAS,EAAQ,CAC/C,EAAK,OAAS,EACd,EAAK,QAAU,GACf,CACF,EAAK,iBAAiB,OAAQ,UAAY,CACxC,EAAM,SAAW,GACjB,CACF,EAAK,iBAAiB,QAAS,UAAY,CACzC,EAAM,SAAW,GACjB,CACF,EAAM,SAAW,EACjB,GAAiB,EAAU,EAAY,EAAc,CAEvD,EAAW,CACT,KAAM,aACN,SAAU,EACV,MAAO,EACA,QACR,CACD,EAAO,IAAI,EAAK,EAAS,GAI/B,SAAS,GAAc,EAAK,EAAS,CACnC,GAAmB,EAAE,EAAK,EAAQ,CAClC,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAK,CACxB,IAAI,EAAU,GAAqB,EAAc,CAAC,iBAChD,EAAM,GAAa,EAAI,CACvB,EAAW,EAAQ,IAAI,EAAI,CAC7B,IACI,EAAW,EAAc,cAAc,GAAyB,EAAI,CAAC,CACvE,IACI,EAAM,EAAO,CAAO,MAAK,MAAO,CAAC,EAAG,CAAE,EAAQ,EAC/C,EAAU,GAAgB,IAAI,EAAI,GACjC,GAA2B,EAAK,EAAQ,CACzC,EAAW,EAAc,cAAc,SAAS,CACjD,GAAoB,EAAS,CAC7B,GAAqB,EAAU,OAAQ,EAAI,CAC3C,EAAc,KAAK,YAAY,EAAS,EACzC,EAAW,CACV,KAAM,SACN,SAAU,EACV,MAAO,EACP,MAAO,KACR,CACD,EAAQ,IAAI,EAAK,EAAS,GAGhC,SAAS,GAAoB,EAAK,EAAS,CACzC,GAAmB,EAAE,EAAK,EAAQ,CAClC,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAK,CACxB,IAAI,EAAU,GAAqB,EAAc,CAAC,iBAChD,EAAM,GAAa,EAAI,CACvB,EAAW,EAAQ,IAAI,EAAI,CAC7B,IACI,EAAW,EAAc,cAAc,GAAyB,EAAI,CAAC,CACvE,IACI,EAAM,EAAO,CAAO,MAAK,MAAO,CAAC,EAAG,KAAM,SAAU,CAAE,EAAQ,EAC/D,EAAU,GAAgB,IAAI,EAAI,GACjC,GAA2B,EAAK,EAAQ,CACzC,EAAW,EAAc,cAAc,SAAS,CACjD,GAAoB,EAAS,CAC7B,GAAqB,EAAU,OAAQ,EAAI,CAC3C,EAAc,KAAK,YAAY,EAAS,EACzC,EAAW,CACV,KAAM,SACN,SAAU,EACV,MAAO,EACP,MAAO,KACR,CACD,EAAQ,IAAI,EAAK,EAAS,GAGhC,SAAS,GAAY,EAAM,EAAc,EAAc,EAAiB,CACtE,IAAI,GAA4B,EAC9B,GAAwB,SACtB,GAAiB,EAAyB,CAC1C,KACJ,GAAI,CAAC,EAA0B,MAAM,MAAM,EAAuB,IAAI,CAAC,CACvE,OAAQ,EAAR,CACE,IAAK,OACL,IAAK,QACH,OAAO,KACT,IAAK,QACH,OAAoB,OAAO,EAAa,YAAjC,UACQ,OAAO,EAAa,MAAjC,UACI,EAAe,GAAY,EAAa,KAAK,CAC9C,EAAe,GACd,EACD,CAAC,gBACD,EAAkB,EAAa,IAAI,EAAa,CACjD,IACI,EAAkB,CAClB,KAAM,QACN,SAAU,KACV,MAAO,EACP,MAAO,KACR,CACD,EAAa,IAAI,EAAc,EAAgB,EACjD,GACA,CAAE,KAAM,OAAQ,SAAU,KAAM,MAAO,EAAG,MAAO,KAAM,CAC7D,IAAK,OACH,GACmB,EAAa,MAA9B,cACa,OAAO,EAAa,MAAjC,UACa,OAAO,EAAa,YAAjC,SACA,CACA,EAAO,GAAY,EAAa,KAAK,CACrC,IAAI,EAAa,GACb,EACD,CAAC,gBACF,EAAe,EAAW,IAAI,EAAK,CAoCrC,GAnCA,IACI,EACA,EAAyB,eAAiB,EAC3C,EAAe,CACd,KAAM,aACN,SAAU,KACV,MAAO,EACP,MAAO,CAAE,QAAS,EAAG,QAAS,KAAM,CACrC,CACD,EAAW,IAAI,EAAM,EAAa,EACjC,EAAa,EAAyB,cACrC,GAA6B,EAAK,CACnC,GACC,CAAC,EAAW,KACV,EAAa,SAAW,EACzB,EAAa,MAAM,QAAU,GAChC,GAAgB,IAAI,EAAK,GACrB,EAAe,CACf,IAAK,UACL,GAAI,QACJ,KAAM,EAAa,KACnB,YAAa,EAAa,YAC1B,UAAW,EAAa,UACxB,MAAO,EAAa,MACpB,SAAU,EAAa,SACvB,eAAgB,EAAa,eAC9B,CACD,GAAgB,IAAI,EAAM,EAAa,CACvC,GACE,GACE,EACA,EACA,EACA,EAAa,MACd,GACH,GAAyB,IAAT,KAClB,MAAM,MAAM,EAAuB,IAAK,GAAG,CAAC,CAC9C,OAAO,EAET,GAAI,GAAyB,IAAT,KAClB,MAAM,MAAM,EAAuB,IAAK,GAAG,CAAC,CAC9C,OAAO,KACT,IAAK,SACH,MACG,GAAe,EAAa,MAC5B,EAAe,EAAa,IAChB,OAAO,GAApB,UACA,GACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACM,EAAe,GAAa,EAAa,CAC1C,EAAe,GACd,EACD,CAAC,iBACD,EAAkB,EAAa,IAAI,EAAa,CACjD,IACI,EAAkB,CAClB,KAAM,SACN,SAAU,KACV,MAAO,EACP,MAAO,KACR,CACD,EAAa,IAAI,EAAc,EAAgB,EACjD,GACA,CAAE,KAAM,OAAQ,SAAU,KAAM,MAAO,EAAG,MAAO,KAAM,CAE/D,QACE,MAAM,MAAM,EAAuB,IAAK,EAAK,CAAC,EAGpD,SAAS,GAAY,EAAM,CACzB,MAAO,SAAW,GAA+C,EAAK,CAAG,IAE3E,SAAS,GAA6B,EAAK,CACzC,MAAO,0BAA4B,EAAM,IAE3C,SAAS,GAA4B,EAAU,CAC7C,OAAO,EAAO,EAAE,CAAE,EAAU,CAC1B,kBAAmB,EAAS,WAC5B,WAAY,KACb,CAAC,CAEJ,SAAS,GAAkB,EAAe,EAAK,EAAc,EAAO,CAClE,EAAc,cAAc,mCAAqC,EAAM,IAAI,CACtE,EAAM,QAAU,GACf,EAAM,EAAc,cAAc,OAAO,CAC1C,EAAM,QAAU,EACjB,EAAI,iBAAiB,OAAQ,UAAY,CACvC,MAAQ,GAAM,SAAW,GACzB,CACF,EAAI,iBAAiB,QAAS,UAAY,CACxC,MAAQ,GAAM,SAAW,GACzB,CACF,GAAqB,EAAK,OAAQ,EAAa,CAC/C,GAAoB,EAAI,CACxB,EAAc,KAAK,YAAY,EAAI,EAEzC,SAAS,GAAa,EAAK,CACzB,MAAO,SAAW,GAA+C,EAAI,CAAG,KAE1E,SAAS,GAAyB,EAAK,CACrC,MAAO,gBAAkB,EAE3B,SAAS,GAAgB,EAAe,EAAU,EAAO,CAEvD,GADA,EAAS,QACI,EAAS,WAAlB,KACF,OAAQ,EAAS,KAAjB,CACE,IAAK,QACH,IAAI,EAAW,EAAc,cAC3B,qBACE,GAA+C,EAAM,KAAK,CAC1D,KACH,CACD,GAAI,EACF,MACG,GAAS,SAAW,EACrB,GAAoB,EAAS,CAC7B,EAEJ,IAAI,EAAa,EAAO,EAAE,CAAE,EAAO,CACjC,YAAa,EAAM,KACnB,kBAAmB,EAAM,WACzB,KAAM,KACN,WAAY,KACb,CAAC,CAOF,MANA,IAAY,EAAc,eAAiB,GAAe,cACxD,QACD,CACD,GAAoB,EAAS,CAC7B,GAAqB,EAAU,QAAS,EAAW,CACnD,GAAiB,EAAU,EAAM,WAAY,EAAc,CACnD,EAAS,SAAW,EAC9B,IAAK,aACH,EAAa,GAAY,EAAM,KAAK,CACpC,IAAI,EAAe,EAAc,cAC/B,GAA6B,EAAW,CACzC,CACD,GAAI,EACF,MACG,GAAS,MAAM,SAAW,EAC1B,EAAS,SAAW,EACrB,GAAoB,EAAa,CACjC,EAEJ,EAAW,GAA4B,EAAM,EAC5C,EAAa,GAAgB,IAAI,EAAW,GAC3C,GAA+B,EAAU,EAAW,CACtD,GACE,EAAc,eAAiB,GAC/B,cAAc,OAAO,CACvB,GAAoB,EAAa,CACjC,IAAI,EAAe,EAQnB,MAPA,GAAa,GAAK,IAAI,QAAQ,SAAU,EAAS,EAAQ,CACvD,EAAa,OAAS,EACtB,EAAa,QAAU,GACvB,CACF,GAAqB,EAAc,OAAQ,EAAS,CACpD,EAAS,MAAM,SAAW,EAC1B,GAAiB,EAAc,EAAM,WAAY,EAAc,CACvD,EAAS,SAAW,EAC9B,IAAK,SAqBH,MApBA,GAAe,GAAa,EAAM,IAAI,EAEnC,EAAa,EAAc,cAC1B,GAAyB,EAAa,CACvC,GAGE,EAAS,SAAW,EACrB,GAAoB,EAAW,CAC/B,IAEJ,EAAW,GACN,EAAa,GAAgB,IAAI,EAAa,IAChD,EAAW,EAAO,EAAE,CAAE,EAAM,CAC3B,GAA2B,EAAU,EAAW,EACpD,EAAgB,EAAc,eAAiB,EAC/C,EAAa,EAAc,cAAc,SAAS,CAClD,GAAoB,EAAW,CAC/B,GAAqB,EAAY,OAAQ,EAAS,CAClD,EAAc,KAAK,YAAY,EAAW,CAClC,EAAS,SAAW,GAC9B,IAAK,OACH,OAAO,KACT,QACE,MAAM,MAAM,EAAuB,IAAK,EAAS,KAAK,CAAC,MAG1C,EAAS,OAA1B,cACE,EAAO,EAAS,MAAM,QAAU,KAC9B,EAAW,EAAS,SACrB,EAAS,MAAM,SAAW,EAC3B,GAAiB,EAAU,EAAM,WAAY,EAAc,EAC/D,OAAO,EAAS,SAElB,SAAS,GAAiB,EAAU,EAAY,EAAM,CACpD,IACE,IAAI,EAAQ,EAAK,iBACb,iEACD,CACD,EAAO,EAAM,OAAS,EAAM,EAAM,OAAS,GAAK,KAChD,EAAQ,EACR,EAAI,EACN,EAAI,EAAM,OACV,IACA,CACA,IAAI,EAAO,EAAM,GACjB,GAAI,EAAK,QAAQ,aAAe,EAAY,EAAQ,UAC3C,IAAU,EAAM,MAE3B,EACI,EAAM,WAAW,aAAa,EAAU,EAAM,YAAY,EACxD,EAAmB,EAAK,WAAX,EAAsB,EAAK,KAAO,EACjD,EAAW,aAAa,EAAU,EAAW,WAAW,EAE9D,SAAS,GAA+B,EAAiB,EAAc,CAElE,EAAgB,cAAc,EAAa,YAE3C,EAAgB,iBAAiB,EAAa,eACf,EAAgB,QAAQ,EAAa,MAEzE,SAAS,GAA2B,EAAa,EAAc,CAE1D,EAAY,cAAc,EAAa,YAEvC,EAAY,iBAAiB,EAAa,eAE1C,EAAY,YAAY,EAAa,UAE1C,IAAI,GAAY,KAChB,SAAS,GAA4B,EAAM,EAAc,EAAe,CACtE,GAAa,KAAT,KAAoB,CACtB,IAAI,EAAQ,IAAI,IACZ,EAAU,GAAY,IAAI,IAC9B,EAAO,IAAI,EAAe,EAAM,MAE/B,EAAS,GACP,EAAQ,EAAO,IAAI,EAAc,CAClC,IAAW,EAAQ,IAAI,IAAQ,EAAO,IAAI,EAAe,EAAM,EACnE,GAAI,EAAM,IAAI,EAAK,CAAE,OAAO,EAG5B,IAFA,EAAM,IAAI,EAAM,KAAK,CACrB,EAAgB,EAAc,qBAAqB,EAAK,CACnD,EAAS,EAAG,EAAS,EAAc,OAAQ,IAAU,CACxD,IAAI,EAAO,EAAc,GACzB,GACE,EACE,EAAK,KACL,EAAK,KACO,IAAX,QAAoC,EAAK,aAAa,MAAM,GAAzC,eAEW,EAAK,eAAtC,6BACA,CACA,IAAI,EAAU,EAAK,aAAa,EAAa,EAAI,GACjD,EAAU,EAAO,EACjB,IAAI,EAAW,EAAM,IAAI,EAAQ,CACjC,EAAW,EAAS,KAAK,EAAK,CAAG,EAAM,IAAI,EAAS,CAAC,EAAK,CAAC,EAG/D,OAAO,EAET,SAAS,GAAe,EAAe,EAAM,EAAU,CACrD,EAAgB,EAAc,eAAiB,EAC/C,EAAc,KAAK,aACjB,EACY,IAAZ,QAAmB,EAAc,cAAc,eAAe,CAAG,KAClE,CAEH,SAAS,GAAoB,EAAM,EAAO,EAAa,CACrD,GAAU,IAAN,GAA6B,EAAM,UAAd,KAAwB,MAAO,CAAC,EACzD,OAAQ,EAAR,CACE,IAAK,OACL,IAAK,QACH,MAAO,CAAC,EACV,IAAK,QACH,GACe,OAAO,EAAM,YAA1B,UACa,OAAO,EAAM,MAA1B,UACO,EAAM,OAAb,GAEA,MACF,MAAO,CAAC,EACV,IAAK,OACH,GACe,OAAO,EAAM,KAA1B,UACa,OAAO,EAAM,MAA1B,UACO,EAAM,OAAb,IACA,EAAM,QACN,EAAM,QAEN,MACF,OAAQ,EAAM,IAAd,CACE,IAAK,aACH,MACG,GAAO,EAAM,SACD,OAAO,EAAM,YAA1B,UAAgD,GAAR,KAE5C,QACE,MAAO,CAAC,EAEd,IAAK,SACH,GACE,EAAM,OACS,OAAO,EAAM,OAA5B,YACa,OAAO,EAAM,OAA1B,UACA,CAAC,EAAM,QACP,CAAC,EAAM,SACP,EAAM,KACO,OAAO,EAAM,KAA1B,SAEA,MAAO,CAAC,EAEd,MAAO,CAAC,EAEV,SAAS,GAAgB,EAAU,CACjC,MAAO,EAAiB,EAAS,OAA1B,cAAkC,EAAO,EAAS,MAAM,QAAU,IAI3E,SAAS,GAAgB,EAAO,EAAe,EAAU,EAAO,CAC9D,GACmB,EAAS,OAA1B,eACc,OAAO,EAAM,OAA1B,UACC,CAAC,IAAM,WAAW,EAAM,MAAM,CAAC,UACjC,EAAO,EAAS,MAAM,QAAU,GAChC,CACA,GAAa,EAAS,WAAlB,KAA4B,CAC9B,IAAI,EAAM,GAAY,EAAM,KAAK,CAC/B,EAAW,EAAc,cACvB,GAA6B,EAAI,CAClC,CACH,GAAI,EAAU,CACZ,EAAgB,EAAS,GAEV,OAAO,GAApB,UADO,GAEQ,OAAO,EAAc,MAApC,aACC,EAAM,QACN,EAAQ,GAAY,KAAK,EAAM,CAChC,EAAc,KAAK,EAAO,EAAM,EAClC,EAAS,MAAM,SAAW,EAC1B,EAAS,SAAW,EACpB,GAAoB,EAAS,CAC7B,OAEF,EAAW,EAAc,eAAiB,EAC1C,EAAQ,GAA4B,EAAM,EACzC,EAAM,GAAgB,IAAI,EAAI,GAC7B,GAA+B,EAAO,EAAI,CAC5C,EAAW,EAAS,cAAc,OAAO,CACzC,GAAoB,EAAS,CAC7B,IAAI,EAAe,EACnB,EAAa,GAAK,IAAI,QAAQ,SAAU,EAAS,EAAQ,CACvD,EAAa,OAAS,EACtB,EAAa,QAAU,GACvB,CACF,GAAqB,EAAU,OAAQ,EAAM,CAC7C,EAAS,SAAW,EAEb,EAAM,cAAf,OAA+B,EAAM,YAAc,IAAI,KACvD,EAAM,YAAY,IAAI,EAAU,EAAc,EAC7C,EAAgB,EAAS,MAAM,UAC9B,EAAO,EAAS,MAAM,QAAU,KAC/B,EAAM,QACN,EAAW,GAAY,KAAK,EAAM,CACnC,EAAc,iBAAiB,OAAQ,EAAS,CAChD,EAAc,iBAAiB,QAAS,EAAS,GAGvD,IAAI,GAA4B,EAChC,SAAS,GAAuB,EAAO,EAAe,CAIpD,OAHA,EAAM,aACE,EAAM,QAAZ,GACA,GAA2B,EAAO,EAAM,YAAY,CAC/C,EAAI,EAAM,OAAS,EAAI,EAAM,SAChC,SAAU,EAAQ,CAChB,IAAI,EAAkB,WAAW,UAAY,CAG3C,GAFA,EAAM,aACJ,GAA2B,EAAO,EAAM,YAAY,CAClD,EAAM,UAAW,CACnB,IAAI,EAAY,EAAM,UACtB,EAAM,UAAY,KAClB,GAAW,GAEZ,IAAM,EAAc,CACvB,EAAI,EAAM,UACF,KAAN,IACC,GAA4B,MAAQ,IAAmB,EAC1D,IAAI,EAAW,WACb,UAAY,CAEV,GADA,EAAM,iBAAmB,CAAC,EAElB,EAAM,QAAZ,IACC,EAAM,aACL,GAA2B,EAAO,EAAM,YAAY,CACtD,EAAM,WACN,CACA,IAAI,EAAY,EAAM,UACtB,EAAM,UAAY,KAClB,GAAW,IAGd,EAAM,SAAW,GAA4B,GAAK,KACjD,EACH,CAED,MADA,GAAM,UAAY,EACX,UAAY,CACjB,EAAM,UAAY,KAClB,aAAa,EAAgB,CAC7B,aAAa,EAAS,GAG1B,KAEN,SAAS,IAAc,CAErB,GADA,KAAK,QACK,KAAK,QAAX,IAA2B,KAAK,WAAX,GAAuB,CAAC,KAAK,sBAChD,KAAK,YAAa,GAA2B,KAAM,KAAK,YAAY,SAC/D,KAAK,UAAW,CACvB,IAAI,EAAY,KAAK,UACrB,KAAK,UAAY,KACjB,GAAW,GAGjB,IAAI,GAAoB,KACxB,SAAS,GAA2B,EAAO,EAAW,CACpD,EAAM,YAAc,KACX,EAAM,YAAf,OACG,EAAM,QACN,GAAoB,IAAI,IACzB,EAAU,QAAQ,GAA0B,EAAM,CACjD,GAAoB,KACrB,GAAY,KAAK,EAAM,EAE3B,SAAS,GAAyB,EAAM,EAAU,CAChD,GAAI,EAAE,EAAS,MAAM,QAAU,GAAI,CACjC,IAAI,EAAc,GAAkB,IAAI,EAAK,CAC7C,GAAI,EAAa,IAAI,EAAO,EAAY,IAAI,KAAK,KAC5C,CACH,EAAc,IAAI,IAClB,GAAkB,IAAI,EAAM,EAAY,CACxC,IACE,IAAI,EAAQ,EAAK,iBACb,+CACD,CACD,EAAI,EACN,EAAI,EAAM,OACV,IACA,CACA,IAAI,EAAO,EAAM,IAEJ,EAAK,WAAhB,QACc,EAAK,aAAa,QAAQ,GAAxC,aAEA,EAAY,IAAI,EAAK,QAAQ,WAAY,EAAK,CAAG,EAAO,GAE5D,GAAQ,EAAY,IAAI,KAAM,EAAK,CAErC,EAAQ,EAAS,SACjB,EAAO,EAAM,aAAa,kBAAkB,CAC5C,EAAI,EAAY,IAAI,EAAK,EAAI,EAC7B,IAAM,GAAQ,EAAY,IAAI,KAAM,EAAM,CAC1C,EAAY,IAAI,EAAM,EAAM,CAC5B,KAAK,QACL,EAAO,GAAY,KAAK,KAAK,CAC7B,EAAM,iBAAiB,OAAQ,EAAK,CACpC,EAAM,iBAAiB,QAAS,EAAK,CACrC,EACI,EAAE,WAAW,aAAa,EAAO,EAAE,YAAY,EAC7C,EAAa,EAAK,WAAX,EAAsB,EAAK,KAAO,EAC3C,EAAK,aAAa,EAAO,EAAK,WAAW,EAC7C,EAAS,MAAM,SAAW,GAG9B,IAAI,GAAwB,CAC1B,SAAU,EACV,SAAU,KACV,SAAU,KACV,cAAe,GACf,eAAgB,GAChB,aAAc,EACf,CACD,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,KAAK,IAAM,EACX,KAAK,cAAgB,EACrB,KAAK,UAAY,KAAK,QAAU,KAAK,gBAAkB,KACvD,KAAK,cAAgB,GACrB,KAAK,aACH,KAAK,KACL,KAAK,eACL,KAAK,QACL,KAAK,oBACH,KACJ,KAAK,iBAAmB,EACxB,KAAK,gBAAkB,GAAc,GAAG,CACxC,KAAK,eACH,KAAK,oBACL,KAAK,2BACL,KAAK,aACL,KAAK,UACL,KAAK,YACL,KAAK,eACL,KAAK,aACH,EACJ,KAAK,cAAgB,GAAc,EAAE,CACrC,KAAK,cAAgB,GAAc,KAAK,CACxC,KAAK,iBAAmB,EACxB,KAAK,gBAAkB,EACvB,KAAK,cAAgB,EACrB,KAAK,mBAAqB,EAC1B,KAAK,YAAc,KACnB,KAAK,iBAAmB,EACxB,KAAK,UAAY,EACjB,KAAK,sBAAwB,IAAI,IAEnC,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CA2BA,MA1BA,GAAgB,IAAI,GAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACD,EAAM,EACN,CAAC,IAAM,IAAiB,GAAO,IAC/B,EAAe,GAAqB,EAAG,KAAM,KAAM,EAAI,CACvD,EAAc,QAAU,EACxB,EAAa,UAAY,EACzB,EAAM,IAAa,CACnB,EAAI,WACJ,EAAc,YAAc,EAC5B,EAAI,WACJ,EAAa,cAAgB,CAC3B,QAAS,EACT,aAAc,EACd,MAAO,EACR,CACD,GAAsB,EAAa,CAC5B,EAET,SAAS,GAAqB,EAAiB,CAG7C,OAFK,GACL,EAAkB,GACX,GAFsB,GAI/B,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,CACA,EAAkB,GAAqB,EAAgB,CAC9C,EAAU,UAAnB,KACK,EAAU,QAAU,EACpB,EAAU,eAAiB,EAChC,EAAY,GAAa,EAAK,CAC9B,EAAU,QAAU,CAAW,UAAS,CACxC,EAAsB,IAAX,IAAK,GAAiB,KAAO,EAC/B,IAAT,OAAsB,EAAU,SAAW,GAC3C,EAAU,GAAc,EAAW,EAAW,EAAK,CAC1C,IAAT,OACG,GAAsB,EAAS,EAAW,EAAK,CAChD,GAAoB,EAAS,EAAW,EAAK,EAEjD,SAAS,GAAkB,EAAO,EAAW,CAE3C,GADA,EAAQ,EAAM,cACD,IAAT,MAA2B,EAAM,aAAf,KAA2B,CAC/C,IAAI,EAAI,EAAM,UACd,EAAM,UAAkB,IAAN,GAAW,EAAI,EAAY,EAAI,GAGrD,SAAS,GAA2B,EAAO,EAAW,CACpD,GAAkB,EAAO,EAAU,EAClC,EAAQ,EAAM,YAAc,GAAkB,EAAO,EAAU,CAElE,SAAS,GAA2B,EAAO,CACzC,GAAW,EAAM,MAAb,IAA2B,EAAM,MAAb,GAAkB,CACxC,IAAI,EAAO,GAA+B,EAAO,SAAS,CACjD,IAAT,MAAiB,GAAsB,EAAM,EAAO,SAAS,CAC7D,GAA2B,EAAO,SAAS,EAG/C,SAAS,GAAkC,EAAO,CAChD,GAAW,EAAM,MAAb,IAA2B,EAAM,MAAb,GAAkB,CACxC,IAAI,EAAO,IAAmB,CAC9B,EAAO,GAAgC,EAAK,CAC5C,IAAI,EAAO,GAA+B,EAAO,EAAK,CAC7C,IAAT,MAAiB,GAAsB,EAAM,EAAO,EAAK,CACzD,GAA2B,EAAO,EAAK,EAG3C,IAAI,GAAW,CAAC,EAChB,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,IAAI,EAAiB,EAAqB,EAC1C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,GAAI,CACD,EAAwB,EAAI,EAC3B,GAAc,EAAc,EAAkB,EAAW,EAAY,QAC/D,CACP,EAAwB,EAAI,EAC1B,EAAqB,EAAI,GAGhC,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,IAAI,EAAiB,EAAqB,EAC1C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,GAAI,CACD,EAAwB,EAAI,EAC3B,GAAc,EAAc,EAAkB,EAAW,EAAY,QAC/D,CACP,EAAwB,EAAI,EAC1B,EAAqB,EAAI,GAGhC,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAI,GAAU,CACZ,IAAI,EAAY,GAA0B,EAAY,CACtD,GAAa,IAAT,KACF,GACE,EACA,EACA,EACA,GACA,EACD,CACC,GAAuB,EAAc,EAAY,SAEnD,GACE,EACA,EACA,EACA,EACA,EACD,CAED,EAAY,iBAAiB,SAE5B,GAAuB,EAAc,EAAY,CAClD,EAAmB,GACjB,GAAK,GAAyB,QAAQ,EAAa,CACrD,CACA,KAAgB,IAAT,MAAsB,CAC3B,IAAI,EAAQ,GAAoB,EAAU,CAC1C,GAAa,IAAT,KACF,OAAQ,EAAM,IAAd,CACE,IAAK,GAEH,GADA,EAAQ,EAAM,UACV,EAAM,QAAQ,cAAc,aAAc,CAC5C,IAAI,EAAQ,GAAwB,EAAM,aAAa,CACvD,GAAU,IAAN,EAAa,CACf,IAAI,EAAO,EAEX,IADA,EAAK,cAAgB,EAChB,EAAK,gBAAkB,EAAG,GAAS,CACtC,IAAI,EAAO,GAAM,GAAK,GAAM,EAAM,CAClC,EAAK,cAAc,IAAM,EACzB,GAAS,CAAC,EAEZ,GAAsB,EAAM,CAC5B,EAAO,EAAmB,KACtB,GAAqC,IAAK,CAAG,IAC/C,GAA8B,EAAG,CAAC,EAAE,GAG1C,MACF,IAAK,IACL,IAAK,IACF,EAAO,GAA+B,EAAO,EAAE,CACrC,IAAT,MAAiB,GAAsB,EAAM,EAAO,EAAE,CACtD,IAAiB,CACjB,GAA2B,EAAO,EAAE,CAW5C,GATA,EAAQ,GAA0B,EAAY,CACrC,IAAT,MACE,GACE,EACA,EACA,EACA,GACA,EACD,CACC,IAAU,EAAW,MACzB,EAAY,EAEL,IAAT,MAAsB,EAAY,iBAAiB,MAEnD,GACE,EACA,EACA,EACA,KACA,EACD,EAGP,SAAS,GAA0B,EAAa,CAE9C,MADA,GAAc,GAAe,EAAY,CAClC,GAA2B,EAAY,CAEhD,IAAI,GAAoB,KACxB,SAAS,GAA2B,EAAY,CAG9C,GAFA,GAAoB,KACpB,EAAa,GAA2B,EAAW,CACtC,IAAT,KAAqB,CACvB,IAAI,EAAiB,EAAuB,EAAW,CACvD,GAAa,IAAT,KAAyB,EAAa,SACrC,CACH,IAAI,EAAM,EAAe,IACzB,GAAW,IAAP,GAAY,CAEd,GADA,EAAa,EAA6B,EAAe,CAC5C,IAAT,KAAqB,OAAO,EAChC,EAAa,aACG,IAAP,GAAY,CAErB,GADA,EAAa,EAA6B,EAAe,CAC5C,IAAT,KAAqB,OAAO,EAChC,EAAa,aACE,IAAN,EAAW,CACpB,GAAI,EAAe,UAAU,QAAQ,cAAc,aACjD,OAAa,EAAe,MAArB,EACH,EAAe,UAAU,cACzB,KACN,EAAa,UACR,IAAmB,IAAe,EAAa,OAI1D,MADA,IAAoB,EACb,KAET,SAAS,GAAiB,EAAc,CACtC,OAAQ,EAAR,CACE,IAAK,eACL,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,OACL,IAAK,MACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,SACL,IAAK,kBACL,IAAK,YACL,IAAK,mBACL,IAAK,iBACL,IAAK,oBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,mBACL,IAAK,QACL,IAAK,aACL,IAAK,WACL,IAAK,SACL,IAAK,cACH,MAAO,GACT,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACH,MAAO,GACT,IAAK,UACH,OAAQ,IAAyB,CAAjC,CACE,KAAK,GACH,MAAO,GACT,KAAK,GACH,MAAO,GACT,KAAK,GACL,KAAK,GACH,MAAO,IACT,KAAK,GACH,MAAO,WACT,QACE,MAAO,IAEb,QACE,MAAO,KAGb,IAAI,GAA4B,CAAC,EAC/B,GAAc,KACd,GAAa,KACb,GAAc,KACd,GAAiB,IAAI,IACrB,GAAwB,IAAI,IAC5B,GAAiC,EAAE,CACnC,GACE,sPAAsP,MACpP,IACD,CACL,SAAS,GAAuB,EAAc,EAAa,CACzD,OAAQ,EAAR,CACE,IAAK,UACL,IAAK,WACH,GAAc,KACd,MACF,IAAK,YACL,IAAK,YACH,GAAa,KACb,MACF,IAAK,YACL,IAAK,WACH,GAAc,KACd,MACF,IAAK,cACL,IAAK,aACH,GAAe,OAAO,EAAY,UAAU,CAC5C,MACF,IAAK,oBACL,IAAK,qBACH,GAAsB,OAAO,EAAY,UAAU,EAGzD,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,CAuBA,OArBW,IAAT,MACA,EAAoB,cAAgB,GAGjC,EAAsB,CACV,YACG,eACI,mBACL,cACb,iBAAkB,CAAC,EAAgB,CACpC,CACQ,IAAT,OACI,EAAY,GAAoB,EAAU,CACnC,IAAT,MAAsB,GAA2B,EAAU,EAC7D,IAEJ,EAAoB,kBAAoB,EACxC,EAAY,EAAoB,iBACvB,IAAT,MACS,EAAU,QAAQ,EAAgB,GAAzC,IACA,EAAU,KAAK,EAAgB,CAC1B,GAET,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,OAAQ,EAAR,CACE,IAAK,UACH,MACG,IAAc,GACb,GACA,EACA,EACA,EACA,EACA,EACD,CACD,CAAC,EAEL,IAAK,YACH,MACG,IAAa,GACZ,GACA,EACA,EACA,EACA,EACA,EACD,CACD,CAAC,EAEL,IAAK,YACH,MACG,IAAc,GACb,GACA,EACA,EACA,EACA,EACA,EACD,CACD,CAAC,EAEL,IAAK,cACH,IAAI,EAAY,EAAY,UAY5B,OAXA,GAAe,IACb,EACA,GACE,GAAe,IAAI,EAAU,EAAI,KACjC,EACA,EACA,EACA,EACA,EACD,CACF,CACM,CAAC,EACV,IAAK,oBACH,MACG,GAAY,EAAY,UACzB,GAAsB,IACpB,EACA,GACE,GAAsB,IAAI,EAAU,EAAI,KACxC,EACA,EACA,EACA,EACA,EACD,CACF,CACD,CAAC,EAGP,MAAO,CAAC,EAEV,SAAS,GAA+B,EAAc,CACpD,IAAI,EAAa,GAA2B,EAAa,OAAO,CAChE,GAAa,IAAT,KAAqB,CACvB,IAAI,EAAiB,EAAuB,EAAW,CACvD,GAAa,IAAT,SACI,EAAa,EAAe,IAAa,IAAP,OAElC,EAAa,EAA6B,EAAe,CAClD,IAAT,KACA,CACA,EAAa,UAAY,EACzB,GAAgB,EAAa,SAAU,UAAY,CACjD,GAAkC,EAAe,EACjD,CACF,gBAEc,IAAP,OAEL,EAAa,EAA6B,EAAe,CAClD,IAAT,KACA,CACA,EAAa,UAAY,EACzB,GAAgB,EAAa,SAAU,UAAY,CACjD,GAAkC,EAAe,EACjD,CACF,gBAGI,IAAN,GACA,EAAe,UAAU,QAAQ,cAAc,aAC/C,CACA,EAAa,UACL,EAAe,MAArB,EACI,EAAe,UAAU,cACzB,KACN,SAGN,EAAa,UAAY,KAE3B,SAAS,GAAmC,EAAa,CACvD,GAAa,EAAY,YAArB,KAAgC,MAAO,CAAC,EAC5C,IACE,IAAI,EAAmB,EAAY,iBACnC,EAAI,EAAiB,QAErB,CACA,IAAI,EAAgB,GAA0B,EAAY,YAAY,CACtE,GAAa,IAAT,KAAwB,CAC1B,EAAgB,EAAY,YAC5B,IAAI,EAAmB,IAAI,EAAc,YACvC,EAAc,KACd,EACD,CACD,GAAwB,EACxB,EAAc,OAAO,cAAc,EAAiB,CACpD,GAAwB,UAExB,MACG,GAAmB,GAAoB,EAAc,CAC7C,IAAT,MACE,GAA2B,EAAiB,CAC7C,EAAY,UAAY,EACzB,CAAC,EAEL,EAAiB,OAAO,CAE1B,MAAO,CAAC,EAEV,SAAS,GAAwC,EAAa,EAAK,EAAK,CACtE,GAAmC,EAAY,EAAI,EAAI,OAAO,EAAI,CAEpE,SAAS,IAAwB,CAC/B,GAA4B,CAAC,EACpB,KAAT,MACE,GAAmC,GAAY,GAC9C,GAAc,MACR,KAAT,MACE,GAAmC,GAAW,GAC7C,GAAa,MACP,KAAT,MACE,GAAmC,GAAY,GAC9C,GAAc,MACjB,GAAe,QAAQ,GAAwC,CAC/D,GAAsB,QAAQ,GAAwC,CAExE,SAAS,GAA4B,EAAa,EAAW,CAC3D,EAAY,YAAc,IACtB,EAAY,UAAY,KAC1B,KACI,GAA4B,CAAC,EAC/B,EAAU,0BACR,EAAU,wBACV,GACD,GAEP,IAAI,GAA2B,KAC/B,SAAS,GAA4B,EAAoB,CACvD,KAA6B,IACzB,GAA2B,EAC7B,EAAU,0BACR,EAAU,wBACV,UAAY,CACV,KAA6B,IAC1B,GAA2B,MAC9B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAmB,OAAQ,GAAK,EAAG,CACrD,IAAI,EAAO,EAAmB,GAC5B,EAAoB,EAAmB,EAAI,GAC3C,EAAW,EAAmB,EAAI,GACpC,GAAmB,OAAO,GAAtB,WACF,IAAa,GAA2B,GAAqB,EAAK,GAA9D,KACF,SACG,MACP,IAAI,EAAW,GAAoB,EAAK,CAC/B,IAAT,OACG,EAAmB,OAAO,EAAG,EAAE,CAC/B,GAAK,EACN,GACE,EACA,CACE,QAAS,CAAC,EACV,KAAM,EACN,OAAQ,EAAK,OACb,OAAQ,EACT,CACD,EACA,EACD,IAGR,EAEL,SAAS,GAAiB,EAAW,CACnC,SAAS,EAAQ,EAAa,CAC5B,OAAO,GAA4B,EAAa,EAAU,CAEnD,KAAT,MAAwB,GAA4B,GAAa,EAAU,CAClE,KAAT,MAAuB,GAA4B,GAAY,EAAU,CAChE,KAAT,MAAwB,GAA4B,GAAa,EAAU,CAC3E,GAAe,QAAQ,EAAQ,CAC/B,GAAsB,QAAQ,EAAQ,CACtC,IAAK,IAAI,EAAI,EAAG,EAAI,GAA+B,OAAQ,IAAK,CAC9D,IAAI,EAAe,GAA+B,GAClD,EAAa,YAAc,IAAc,EAAa,UAAY,MAEpE,KAEE,EAAI,GAA+B,SACjC,EAAI,GAA+B,GAAc,EAAE,YAAX,OAG1C,GAA+B,EAAE,CACtB,EAAE,YAAX,MAAwB,GAA+B,OAAO,CAElE,GADA,GAAK,EAAU,eAAiB,GAAW,kBAC/B,GAAR,KACF,IAAK,EAAe,EAAG,EAAe,EAAE,OAAQ,GAAgB,EAAG,CACjE,IAAI,EAAO,EAAE,GACX,EAAoB,EAAE,EAAe,GACrC,EAAY,EAAK,KAAqB,KACxC,GAAmB,OAAO,GAAtB,WACF,GAAa,GAA4B,EAAE,SACpC,EAAW,CAClB,IAAI,EAAS,KACb,GAAI,GAAqB,EAAkB,aAAa,aAAa,KAE/D,EAAO,EACR,EAAY,EAAkB,KAAqB,KAEpD,EAAS,EAAU,mBAEN,GAA2B,EAAK,GAAzC,KAA2C,cAE9C,EAAS,EAAU,OACT,OAAO,GAAtB,WACK,EAAE,EAAe,GAAK,GACtB,EAAE,OAAO,EAAc,EAAE,CAAG,GAAgB,GACjD,GAA4B,EAAE,GAItC,SAAS,IAAsC,CAC7C,SAAS,EAAe,EAAO,CAC7B,EAAM,cACmB,EAAM,OAA7B,oBACA,EAAM,UAAU,CACd,QAAS,UAAY,CACnB,OAAO,IAAI,QAAQ,SAAU,EAAS,CACpC,MAAQ,GAAiB,GACzB,EAEJ,WAAY,SACZ,OAAQ,SACT,CAAC,CAEN,SAAS,GAAyB,CACvB,IAAT,OAA4B,GAAgB,CAAG,EAAiB,MAChE,GAAe,WAAW,EAAqB,GAAG,CAEpD,SAAS,GAAsB,CAC7B,GAAI,CAAC,GAAe,CAAC,WAAW,WAAY,CAC1C,IAAI,EAAe,WAAW,aAC9B,GACU,EAAa,KAArB,MACA,WAAW,SAAS,EAAa,IAAK,CACpC,MAAO,EAAa,UAAU,CAC9B,KAAM,mBACN,QAAS,UACV,CAAC,EAGR,GAAiB,OAAO,YAApB,SAAgC,CAClC,IAAI,EAAc,CAAC,EACjB,EAAiB,KAKnB,OAJA,WAAW,iBAAiB,WAAY,EAAe,CACvD,WAAW,iBAAiB,kBAAmB,EAAuB,CACtE,WAAW,iBAAiB,gBAAiB,EAAuB,CACpE,WAAW,EAAqB,IAAI,CAC7B,UAAY,CACjB,EAAc,CAAC,EACf,WAAW,oBAAoB,WAAY,EAAe,CAC1D,WAAW,oBAAoB,kBAAmB,EAAuB,CACzE,WAAW,oBAAoB,gBAAiB,EAAuB,CAC9D,IAAT,OAA4B,GAAgB,CAAG,EAAiB,QAItE,SAAS,GAAa,EAAc,CAClC,KAAK,cAAgB,EAEvB,GAAsB,UAAU,OAAS,GAAa,UAAU,OAC9D,SAAU,EAAU,CAClB,IAAI,EAAO,KAAK,cAChB,GAAa,IAAT,KAAe,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC3D,IAAI,EAAU,EAAK,QAEnB,GAAoB,EADX,IACwB,CAAE,EAAU,EAAM,KAAM,KAAK,EAElE,GAAsB,UAAU,QAAU,GAAa,UAAU,QAC/D,UAAY,CACV,IAAI,EAAO,KAAK,cAChB,GAAa,IAAT,KAAe,CACjB,KAAK,cAAgB,KACrB,IAAI,EAAY,EAAK,cACrB,GAAoB,EAAK,QAAS,EAAG,KAAM,EAAM,KAAM,KAAK,CAC5D,IAAiB,CACjB,EAAU,IAAgC,OAGhD,SAAS,GAAsB,EAAc,CAC3C,KAAK,cAAgB,EAEvB,GAAsB,UAAU,2BAA6B,SAAU,EAAQ,CAC7E,GAAI,EAAQ,CACV,IAAI,EAAiB,IAAuB,CAC5C,EAAS,CAAE,UAAW,KAAc,SAAQ,SAAU,EAAgB,CACtE,IACE,IAAI,EAAI,EACR,EAAI,GAA+B,QAC7B,IAAN,GACA,EAAiB,GAA+B,GAAG,SACnD,KAEF,GAA+B,OAAO,EAAG,EAAG,EAAO,CAC7C,IAAN,GAAW,GAA+B,EAAO,GAGrD,IAAI,GAAmD,EAAM,QAC7D,GAEE,KADA,SAGA,MAAM,MACJ,EACE,IACA,GACA,SACD,CACF,CACH,EAAwB,YAAc,SAAU,EAAoB,CAClE,IAAI,EAAQ,EAAmB,gBAC/B,GAAe,IAAX,IAAK,GAIP,MAHmB,OAAO,EAAmB,QAAzC,WACI,MAAM,EAAuB,IAAI,CAAC,EAC1C,EAAqB,OAAO,KAAK,EAAmB,CAAC,KAAK,IAAI,CACxD,MAAM,EAAuB,IAAK,EAAmB,CAAC,EAS9D,MAPA,GAAqB,EAA8B,EAAM,CACzD,EACW,IAAT,KAEI,KADA,EAAyB,EAAmB,CAElD,EACW,IAAT,KAA8B,KAAO,EAAmB,UACnD,GAET,IAAI,GAA+B,CACjC,WAAY,EACZ,QAAS,SACT,oBAAqB,YACrB,qBAAsB,EACtB,kBAAmB,SACpB,CACD,GAAoB,OAAO,+BAAvB,IAAuD,CACzD,IAAI,GAA0B,+BAC9B,GACE,CAAC,GAAwB,YACzB,GAAwB,cAExB,GAAI,CACD,GAAa,GAAwB,OACpC,GACD,CACE,GAAe,QACN,GAElB,EAAQ,WAAa,SAAU,EAAW,EAAS,CACjD,GAAI,CAAC,EAAiB,EAAU,CAAE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1E,IAAI,EAAe,CAAC,EAClB,EAAmB,GACnB,EAAkB,GAClB,EAAgB,GAChB,EAAqB,GA2BvB,OA1BS,GAAT,OAEG,CAAC,IAAM,EAAQ,sBAAwB,EAAe,CAAC,GAC7C,EAAQ,mBAAnB,IAAK,KACF,EAAmB,EAAQ,kBACnB,EAAQ,kBAAnB,IAAK,KACF,EAAkB,EAAQ,iBAClB,EAAQ,gBAAnB,IAAK,KAAgC,EAAgB,EAAQ,eAClD,EAAQ,qBAAnB,IAAK,KACF,EAAqB,EAAQ,qBAClC,EAAU,GACR,EACA,EACA,CAAC,EACD,KACA,KACA,EACA,EACA,KACA,EACA,EACA,EACA,GACD,CACD,EAAU,IAAgC,EAAQ,QAClD,GAA2B,EAAU,CAC9B,IAAI,GAAa,EAAQ,kBC5nflC,SAAS,GAAW,CAGhB,YAAO,+BAAmC,KAC1C,OAAO,+BAA+B,UAAa,YAcrD,GAAI,CAEF,+BAA+B,SAAS,EAAS,OAC1C,EAAK,CAGZ,QAAQ,MAAM,EAAI,EAOpB,GAAU,CACV,EAAO,QAAA,GAAA,qBCnBT,EAAA,sGAYA,SAAA,EAAA,EAAA,CACE,OAAA,EAAA,UAAA,SAAA,GAAA,EAAA,KAAA,SAAA,GAAA,EAAA,OAAA,SAAA,GAAA,EAAA,WAAA,SAAA,GAAA,EAAA,QAAA,SAAA,GAAA,EAAA,KAAA,SAAA,GAAA,EAAA,OAAA,SAAA,GAAA,EAAA,WAAA,MAAA,EAAA,SAAA,KAiBF,SAAA,EAAA,EAAA,EAAA,CAeE,MADA,EAbA,EAAA,UAAA,OAAA,GAAA,CAAA,EAAA,UAAA,SAAA,EAAA,IAAA,EACA,EAAA,KAAA,OAAA,GAAA,CAAA,EAAA,KAAA,SAAA,EAAA,KAAA,EACA,EAAA,OAAA,OAAA,IAAA,EAAA,SAAA,MAAA,CAAA,EAAA,OAAA,SAAA,EAAA,OAAA,GACA,EAAA,WAAA,OAAA,IAAA,EAAA,aAAA,MAAA,CAAA,EAAA,WAAA,SAAA,EAAA,WAAA,GAKA,EAAA,QAAA,OAAA,IAAA,EAAA,YAAA,MAAA,CAAA,EAAA,QAAA,SAAA,EAAA,UAAA,GAEA,EAAA,KAAA,OAAA,IAAA,EAAA,SAAA,MAAA,CAAA,EAAA,KAAA,SAAA,EAAA,OAAA,GACA,EAAA,OAAA,OAAA,GAAA,CAAA,EAAA,OAAA,SAAA,EAAA,OAAA,EACA,EAAA,WAAA,MAAA,EAAA,GAAA,EAAA,UACA,EAAA,SAAA,MAAA,EAAA,GAAA,EAAA,QCpDF,IAAM,EAAc,mBACd,EAAc,GACd,EAAsB,IAmB5B,SAAS,GAAmB,CAC1B,GAAI,CACF,IAAM,EAAM,aAAa,QAAQ,EAAY,CAC7C,GAAI,CAAC,EAAK,MAAO,EAAE,CACnB,IAAM,EAAS,KAAK,MAAM,EAAI,CAC9B,GAAI,GAAU,OAAO,GAAW,UAAY,CAAC,MAAM,QAAQ,EAAO,CAChE,OAAO,OAEH,EAGR,MAAO,EAAE,CAGX,SAAS,GAAS,EAAkB,CAClC,GAAI,CACF,aAAa,QAAQ,EAAa,KAAK,UAAU,EAAE,CAAC,MAC9C,GAKV,SAAS,GAAQ,EAA8B,CAC7C,GAAI,CAAC,GAAK,OAAO,GAAM,SAAU,MAAO,GACxC,IAAM,EAAI,EACV,OACE,EAAE,IAAM,GACR,OAAO,EAAE,aAAgB,UACzB,CAAC,CAAC,EAAE,SACJ,OAAO,EAAE,SAAY,WACpB,EAAE,WAAa,QAAU,EAAE,WAAa,WAAa,EAAE,WAAa,iBACrE,MAAM,QAAQ,EAAE,eAAe,GAC9B,EAAE,cAAgB,MAAQ,OAAO,EAAE,aAAgB,WACpD,OAAO,EAAE,aAAgB,UACzB,OAAO,EAAE,YAAe,UAI5B,SAAgB,EAAgB,EAAoC,CAElE,IAAM,EADM,GACF,CAAI,GAEd,MADI,CAAC,GAAK,CAAC,GAAQ,EAAE,CAAS,KACvB,CACL,EAAG,EACH,YAAa,EAAE,YACf,QAAS,EAAE,QACX,SAAU,EAAE,SACZ,eAAgB,EAAE,eAClB,YAAa,EAAE,YACf,YAAa,EAAE,YACf,WAAY,EAAE,WACf,CAGH,SAAgB,EAAmB,EAAgB,EAA0B,CAC3E,IAAM,EAAM,GAAS,CAKrB,EAAI,GAAU,CAHZ,GAAG,EACH,eAAgB,EAAM,eAAe,MAAM,EAAG,EAAoB,CAExC,WAAY,KAAK,KAAK,CAAE,CAEpD,IAAM,EAAO,OAAO,KAAK,EAAI,CAC7B,GAAI,EAAK,OAAS,EAAa,CAC7B,IAAM,EAAS,EACZ,IAAK,GAAM,CAAC,EAAG,EAAI,IAAI,YAAc,EAAE,CAAqB,CAC5D,MAAM,EAAG,IAAM,EAAE,GAAK,EAAE,GAAG,CACxB,EAAW,EAAO,OAAS,EACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,IAAK,CACjC,IAAM,EAAI,EAAO,KAAK,GAClB,GAAG,OAAO,EAAI,IAGtB,GAAS,EAAI,CCrGf,IAAM,GAAmB,GAAgB,CACvC,IAAI,EACE,EAA4B,IAAI,IAChC,GAAY,EAAS,IAAY,CACrC,IAAM,EAAY,OAAO,GAAY,WAAa,EAAQ,EAAM,CAAG,EACnE,GAAI,CAAC,OAAO,GAAG,EAAW,EAAM,CAAE,CAChC,IAAM,EAAgB,EACtB,EAAS,IAA4B,OAAO,GAAc,WAAY,GAAsB,EAAY,OAAO,OAAO,EAAE,CAAE,EAAO,EAAU,CAC3I,EAAU,QAAS,GAAa,EAAS,EAAO,EAAc,CAAC,GAG7D,MAAiB,EAMjB,EAAM,CAAE,WAAU,WAAU,oBALJ,EAKqB,UAJhC,IACjB,EAAU,IAAI,EAAS,KACV,EAAU,OAAO,EAAS,EAEqB,CACxD,EAAe,EAAQ,EAAY,EAAU,EAAU,EAAI,CACjE,OAAO,GAEH,IAAgB,GAAgB,EAAc,GAAgB,EAAY,CAAG,IClB7E,GAAY,GAAQ,EAC1B,SAAS,GAAS,EAAK,EAAW,GAAU,CAC1C,IAAM,EAAA,EAAc,qBAClB,EAAI,UAAA,EACE,gBAAkB,EAAS,EAAI,UAAU,CAAC,CAAE,CAAC,EAAK,EAAS,CAAC,CAAA,EAC5D,gBAAkB,EAAS,EAAI,iBAAiB,CAAC,CAAE,CAAC,EAAK,EAAS,CAAC,CAC1E,CAED,OADA,EAAM,cAAc,EAAM,CACnB,EAET,IAAM,GAAc,GAAgB,CAClC,IAAM,EAAM,GAAY,EAAY,CAC9B,EAAiB,GAAa,GAAS,EAAK,EAAS,CAE3D,OADA,OAAO,OAAO,EAAe,EAAI,CAC1B,GAEH,IAAW,GAAgB,EAAc,GAAW,EAAY,CAAG,IChB5D,EAA4B,KCqGzC,SAAS,EAAS,EAAe,EAA+B,CAC9D,MAAO,CACL,GAAG,EACH,OAAQ,EAAO,OACf,UAAW,EAAO,UAClB,YAAa,EAAO,YACpB,GAAI,EAAO,UAAY,IAAA,GAA0C,EAAE,CAAhC,CAAE,QAAS,EAAO,QAAS,CAC9D,GAAI,EAAO,UAAY,IAAA,GAA0C,EAAE,CAAhC,CAAE,QAAS,EAAO,QAAS,CAC/D,CAGH,SAAS,GAAmB,EAA0B,CACpD,IAAM,EAAI,IAAI,IACd,IAAK,IAAM,KAAK,EAAU,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,CACzD,OAAO,EAAE,KAGX,IAAa,EAAc,GAAuB,IAAS,CACzD,KAAM,EAAE,CACR,WAAY,aACZ,YAAa,KACb,KAAM,KACN,QAAU,GACR,EAAK,IAAO,CACV,OACA,KAAM,EAAE,KACJ,CAAE,GAAG,EAAE,KAAM,WAAY,EAAK,OAAQ,aAAc,GAAmB,EAAK,CAAE,CAC9E,EAAE,KACP,EAAE,CACL,YAAa,EAAS,IACpB,EAAK,GAAM,CAIT,GAAI,EAAE,WACJ,MAAO,CACL,cAAe,EAAE,cAAc,OAAO,EAAQ,CAC9C,gBAAiB,EAAE,gBAAkB,EAAQ,OAC9C,CAEH,IAAM,EAAO,EAAE,KAAK,OAAO,CAC3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,IAAM,EAAM,EAAQ,GAChB,IAAQ,IAAA,KAAW,EAAK,EAAO,GAAK,GAE1C,MAAO,CACL,KAAM,EACN,KAAM,EAAE,KACJ,CAAE,GAAG,EAAE,KAAM,WAAY,EAAK,OAAQ,aAAc,GAAmB,EAAK,CAAE,CAC9E,EAAE,KACP,EACD,CACJ,WAAa,GACX,EAAK,GAAM,CACT,IAAM,EAAO,EAAE,KAAK,OAAO,CACrB,EAAc,EAAE,cAAc,OAAO,CAC3C,IAAK,IAAM,KAAK,EAAS,CACvB,IAAM,EAAO,EAAK,EAAE,KAChB,IACF,EAAK,EAAE,KAAO,EAAS,EAAM,EAAE,EAEjC,IAAM,EAAe,EAAY,UAAW,GAAQ,EAAI,MAAQ,EAAE,IAAI,CACtE,GAAI,IAAiB,GAAI,CACvB,IAAM,EAAc,EAAY,GAC5B,IAAa,EAAY,GAAgB,EAAS,EAAa,EAAE,GAGzE,MAAO,CAAE,KAAM,EAAM,cAAe,EAAa,EACjD,CACJ,cAAgB,GAAe,EAAI,CAAE,aAAY,CAAC,CAClD,QAAU,GAAS,EAAI,CAAE,OAAM,CAAC,CAChC,UAAY,GAAgB,EAAI,CAAE,cAAa,CAAC,CAChD,mBAAsB,EAAI,CAAE,YAAa,KAAM,CAAC,CAEhD,YAAa,GACb,cAAe,KACf,YAAa,EACb,gBAAiB,GACjB,aAAc,OACd,YAAa,KACb,QAAS,EACT,SAAU,OACV,eAAgB,IAAI,IACpB,eAAgB,KAChB,YAAA,IAEA,eAAiB,GAAM,EAAI,CAAE,YAAa,EAAG,CAAC,CAC9C,iBAAmB,GAAY,EAAI,CAAE,cAAe,IAAY,KAA0B,KAAnB,IAAI,IAAI,EAAQ,CAAS,CAAC,CACjG,qBAAwB,EAAI,CAAE,aAAc,YAAa,YAAa,KAAM,CAAC,CAC7E,iBAAkB,EAAS,EAAO,IAChC,EAAI,CACF,cAAe,IAAI,IAAI,EAAQ,CAC/B,YAAa,EACb,gBAAiB,EACjB,aAAc,QACd,YAAa,KACd,CAAC,CACJ,eAAiB,GACf,EAAI,CACF,cAAe,KACf,YAAa,EACb,gBAAiB,GACjB,aAAc,QACd,YAAa,EACd,CAAC,CACJ,uBACE,EAAI,CACF,cAAe,KACf,YAAa,EACb,gBAAiB,GACjB,aAAc,OACd,YAAa,KACd,CAAC,CACJ,WAAa,GAAM,EAAI,CAAE,QAAS,EAAG,CAAC,CACtC,aAAc,EAAK,IAAU,EAAK,IAAO,CAAE,QAAS,CAAE,GAAG,EAAE,SAAU,GAAM,EAAO,CAAE,EAAE,CACtF,iBAAoB,EAAI,CAAE,QAAS,EAAe,CAAC,CACnD,YAAc,GAAS,EAAI,CAAE,SAAU,EAAM,CAAC,CAC9C,qBAAuB,GACrB,EAAK,GAAM,CACT,IAAM,EAAO,IAAI,IAAI,EAAE,eAAe,CAGtC,OAFI,EAAK,IAAI,EAAI,CAAE,EAAK,OAAO,EAAI,CAC9B,EAAK,IAAI,EAAI,CACX,CAAE,eAAgB,EAAM,EAC/B,CACJ,kBAAoB,GAAM,EAAI,CAAE,eAAgB,EAAG,CAAC,CACpD,eAAiB,GACf,EAAI,CAAE,YAAa,KAAK,IAAA,IAAsB,KAAK,IAAA,IAAsB,EAAG,CAAC,CAAE,CAAC,CAElF,WAAY,GACZ,cAAe,EAAE,CACjB,gBAAiB,EACjB,aAAc,GACd,eAAgB,KAChB,OAAQ,KACR,eAAgB,GAChB,YAAa,KAEb,cAAgB,GAAM,EAAI,CAAE,WAAY,EAAG,CAAC,CAC5C,yBAA4B,EAAI,CAAE,gBAAiB,EAAG,CAAC,CACvD,uBACE,EAAK,GAAM,CACT,GAAI,EAAE,cAAc,SAAW,EAC7B,MAAO,CAAE,gBAAiB,EAAG,CAE/B,IAAM,EAAO,EAAE,KAAK,OAAO,EAAE,cAAc,CAC3C,MAAO,CACL,KAAM,EACN,cAAe,EAAE,CACjB,gBAAiB,EACjB,KAAM,EAAE,KACJ,CAAE,GAAG,EAAE,KAAM,WAAY,EAAK,OAAQ,aAAc,GAAmB,EAAK,CAAE,CAC9E,EAAE,KACP,EACD,CACJ,kBAAoB,GAAM,EAAI,CAAE,eAAgB,EAAG,CAAC,CACpD,UAAY,GAAM,EAAI,CAAE,OAAQ,EAAG,CAAC,CACpC,kBAAoB,GAAM,EAAI,CAAE,eAAgB,EAAG,CAAC,CACpD,eAAiB,GAAQ,EAAI,CAAE,YAAa,EAAK,CAAC,CAClD,qBACE,EAAI,CACF,KAAM,EAAE,CACR,YAAa,KACb,eAAgB,KAChB,cAAe,KACf,YAAa,EACb,gBAAiB,GACjB,aAAc,OACd,YAAa,KACb,cAAe,EAAE,CACjB,gBAAiB,EAClB,CAAC,CACJ,sBACE,EAAI,CACF,KAAM,EAAE,CACR,YAAa,KACb,eAAgB,KAChB,cAAe,KACf,YAAa,EACb,gBAAiB,GACjB,aAAc,OACd,YAAa,KACb,cAAe,EAAE,CACjB,gBAAiB,EACjB,KAAM,KACN,OAAQ,KACR,eAAgB,KAChB,eAAgB,GACjB,CAAC,CACL,EAAE,CClRG,GAAc,IACd,GAAsB,IAE5B,SAAS,IAA0B,CACjC,IAAM,EAAI,EAAY,UAAU,CAE1B,EAAW,MAAM,KAAK,EAAE,eAAe,CACvC,EACJ,EAAS,OAAS,GACd,EAAS,MAAM,EAAS,OAAS,GAAoB,CACrD,EACN,MAAO,CACL,EAAG,EACH,YAAa,EAAE,YACf,QAAS,EAAE,QACX,SAAU,EAAE,SACZ,eAAgB,EAChB,YAAa,EAAE,YACf,YAAa,EAAE,YACf,WAAY,EAAE,WACf,CAGH,SAAgB,GAAyB,CAGvC,IAAM,GAAA,EAAA,EAAA,QAOH,CACD,YAAa,KACb,SAAU,GACV,cAAe,KACf,kBAAmB,KACnB,WAAY,KACZ,YAAa,EACd,CAAC,EAEF,EAAA,EAAA,eAAgB,CACd,IAAM,EAAM,EAAS,QAErB,SAAS,EAAU,EAAsB,CACnC,MAAI,SACR,GAAI,CACF,EAAc,EAAQ,IAAY,CAAC,MAC7B,CACN,EAAI,SAAW,UACP,CACR,AAEE,EAAI,iBADJ,aAAa,EAAI,cAAc,CACX,MAEtB,EAAI,kBAAoB,MAI5B,SAAS,EAAa,EAAsB,CACtC,EAAI,WACJ,EAAI,eAAe,aAAa,EAAI,cAAc,CACtD,EAAI,kBAAoB,EACxB,EAAI,cAAgB,eAAiB,CACnC,EAAI,cAAgB,KACpB,EAAU,EAAO,EAChB,GAAY,EAGjB,SAAS,EAAQ,EAAgB,EAAuB,CACtD,IAAM,EAAS,EAAc,EAAO,CACpC,GAAI,EAAQ,CACV,IAAM,EAAI,EAAY,UAAU,CAChC,EAAE,WAAW,EAAO,QAAQ,CAC5B,EAAE,YAAY,EAAO,SAAS,CAC9B,EAAE,eAAe,EAAO,YAAY,CACpC,EAAE,oBAAoB,CACtB,EAAE,eAAe,EAAO,YAAY,CACpC,EAAE,cAAc,EAAO,WAAW,CAClC,EAAY,SAAS,CAAE,eAAgB,IAAI,IAAI,EAAO,eAAe,CAAE,CAAC,CAEtE,EAAO,cAAgB,MACvB,EAAO,aAAe,GACtB,EAAO,YAAc,GAErB,EAAE,UAAU,EAAO,YAAY,CAGnC,EAAI,YAAc,EAKpB,CACE,IAAM,EAAO,EAAY,UAAU,CACnC,EAAI,WAAa,EAAK,OACtB,EAAI,YAAc,EAAK,KAAK,OACxB,EAAK,QAAU,EAAK,KAAK,OAAS,GAAK,EAAI,cAAgB,EAAK,QAClE,EAAQ,EAAK,OAAQ,EAAK,KAAK,OAAO,CAI1C,IAAM,EAAQ,EAAY,WAAW,EAAM,IAAS,CAClD,IAAM,EAAU,EAAI,WACd,EAAU,EAAK,OAMrB,GAAI,GAAW,IAAY,EAAS,CAC9B,EAAI,eAAiB,EAAI,oBAAsB,GACjD,EAAU,EAAQ,CAEpB,EAAI,YAAc,KAGlB,EAAI,WAAa,EACjB,IAAM,EAAI,EAAY,UAAU,CAChC,EAAE,WAAW,EAAc,CAC3B,EAAE,eAAe,GAAG,CACpB,EAAE,oBAAoB,CACtB,EAAE,YAAY,OAAO,CACrB,EAAY,SAAS,CAAE,eAAgB,IAAI,IAAe,CAAC,CAE7D,EAAI,WAAa,EAEjB,IAAM,EAAU,EAAK,KAAK,OACpB,EAAU,EAAI,YAKpB,GAJA,EAAI,YAAc,EAId,GAAW,EAAU,GAAK,IAAY,GAAK,EAAI,cAAgB,EAAS,CAC1E,EAAQ,EAAS,EAAQ,CACzB,OAIE,GAAW,EAAI,cAAgB,IAE/B,EAAK,UAAY,EAAK,SACtB,EAAK,WAAa,EAAK,UACvB,EAAK,cAAgB,EAAK,aAC1B,EAAK,cAAgB,EAAK,aAC1B,EAAK,aAAe,EAAK,YACzB,EAAK,cAAgB,EAAK,aAC1B,EAAK,iBAAmB,EAAK,iBACV,EAAa,EAAQ,EAE5C,CAEF,UAAa,CACP,EAAI,eAAe,aAAa,EAAI,cAAc,CACtD,GAAO,GAER,EAAE,CAAC,CC7JR,SAAgB,IAA4B,CAC1C,IAAM,EAAO,EAAa,GAAM,EAAE,KAAK,CAEjC,GAAA,EAAA,EAAA,kBADU,EAAa,GAAM,EAAE,QACI,CAAQ,CACjD,OAAA,EAAA,EAAA,aAAqB,CACnB,IAAM,EAAW,EAAe,EAAgB,CAChD,GAAI,EAAU,OAAO,EAAK,KAAK,EAAG,IAAM,EAAE,CAC1C,IAAM,EAAmB,EAAE,CAC3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,IAAM,EAAM,EAAK,GACZ,IACD,CAAC,GAAY,CAAC,EAAY,EAAK,EAAgB,EACnD,EAAO,KAAK,EAAE,EAEhB,OAAO,GACN,CAAC,EAAM,EAAgB,CAAC,CAG7B,SAAgB,IAAoC,CAClD,IAAM,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAU,EAAa,GAAM,EAAE,QAAQ,CACvC,EAAgB,EAAa,GAAM,EAAE,cAAc,CACnD,GAAA,EAAA,EAAA,kBAAmC,EAAQ,CAC3C,GAAA,EAAA,EAAA,kBAAmC,EAAc,CACvD,OAAA,EAAA,EAAA,aAAqB,CACnB,GAAI,IAAoB,KAAM,MAAO,EAAE,CACvC,IAAM,EAAW,EAAe,EAAgB,CAC1C,EAAmB,EAAE,CAC3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,IAAM,EAAM,EAAK,GACb,CAAC,GAAO,CAAC,EAAgB,IAAI,EAAE,EAC/B,CAAC,GAAY,CAAC,EAAY,EAAK,EAAgB,EACnD,EAAO,KAAK,EAAE,CAEhB,OAAO,GACN,CAAC,EAAM,EAAiB,EAAgB,CAAC,CAc9C,SAAgB,IAA8B,CAC5C,IAAM,EAAO,EAAa,GAAM,EAAE,KAAK,CACvC,OAAA,EAAA,EAAA,aAAqB,CACnB,IAAM,EAAiB,CACrB,UAAW,IAAI,IACf,KAAM,IAAI,IACV,OAAQ,IAAI,IACZ,WAAY,IAAI,IAChB,QAAS,IAAI,IACb,KAAM,IAAI,IACV,OAAQ,IAAI,IACb,CACD,IAAK,IAAM,KAAO,EACX,IACL,GAAI,EAAE,UAAW,EAAI,IAAI,CACzB,GAAI,EAAE,KAAM,EAAI,KAAK,CACjB,EAAI,QAAQ,GAAI,EAAE,OAAQ,EAAI,OAAO,CACrC,EAAI,YAAY,GAAI,EAAE,WAAY,EAAI,WAAW,CACjD,EAAI,WAAW,GAAI,EAAE,QAAS,EAAI,UAAU,CAC5C,EAAI,QAAQ,GAAI,EAAE,KAAM,EAAI,OAAO,CACvC,GAAI,EAAE,OAAQ,EAAI,OAAO,EAE3B,OAAO,GACN,CAAC,EAAK,CAAC,CAGZ,SAAS,GAAI,EAAwB,EAAiB,CACpD,EAAE,IAAI,GAAI,EAAE,IAAI,EAAE,EAAI,GAAK,EAAE,CAI/B,SAAgB,GAAgB,EAA0C,CACxE,IAAM,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAW,EAAa,GAAM,EAAE,SAAS,CAC/C,OAAA,EAAA,EAAA,aACQ,GAAkB,EAAM,EAAiB,EAAS,CACxD,CAAC,EAAM,EAAiB,EAAS,CAClC,CAGH,SAAS,GACP,EACA,EACA,EACe,CACf,GAAI,IAAa,OAAQ,CACvB,IAAM,EAAuB,EAAE,CAC/B,IAAK,IAAM,KAAU,EACP,EAAK,IAEjB,EAAM,KAAK,CAAE,KAAM,MAAO,SAAQ,CAAC,CAErC,OAAO,EAGT,IAAM,EAAuB,EAAE,CAC3B,EAA6B,KAC7B,EAA0B,KACxB,EAAe,IAAI,IACnB,EAAa,IAAI,IACjB,EAAa,IAAI,IAGvB,IAAK,IAAM,KAAU,EAAM,CACzB,IAAM,EAAM,EAAK,GACjB,GAAI,CAAC,EAAK,SACV,IAAM,EAAO,EAAI,WAAa,WACxB,EAAO,IAAa,eAAiB,GAAG,EAAK,IAAI,EAAI,QAAU,aAAe,EAC9E,EAAM,IAAa,UAAY,EAAO,EACvC,EAAa,IAAI,EAAI,EAAE,EAAa,IAAI,EAAK,EAAI,GAAG,CACzD,EAAW,IAAI,EAAK,EAAI,GAAG,CAC3B,EAAW,IAAI,GAAM,EAAW,IAAI,EAAI,EAAI,GAAK,EAAE,CAGrD,IAAK,IAAM,KAAU,EAAM,CACzB,IAAM,EAAM,EAAK,GACjB,GAAI,CAAC,EAAK,SACV,IAAM,EAAY,EAAI,WAAa,WAC7B,EAAS,EAAI,QAAU,WAE7B,GAAI,IAAc,EAAa,CAC7B,EAAc,EACd,EAAW,KACX,IAAM,EAAM,EACN,EAAQ,EAAa,IAAI,EAAI,EAAI,EAAI,GACrC,EAAM,EAAW,IAAI,EAAI,EAAI,EAAI,GACvC,EAAM,KAAK,CACT,KAAM,SACN,MAAO,UACP,SAAU,EACV,UAAW,EAAI,WAAa,GAC5B,MAAO,EAAW,IAAI,EAAI,EAAI,EAC9B,WAAY,EAAM,EACnB,CAAC,CAEJ,GAAI,IAAa,gBAAkB,IAAW,EAAU,CACtD,EAAW,EACX,IAAM,EAAM,GAAG,EAAU,IAAI,IACvB,EAAQ,EAAa,IAAI,EAAI,EAAI,EAAI,GACrC,EAAM,EAAW,IAAI,EAAI,EAAI,EAAI,GACvC,EAAM,KAAK,CACT,KAAM,SACN,MAAO,OACP,SAAU,EACV,UAAW,EAAI,WAAa,GAC5B,GAAI,EAAI,SAAW,KAAgC,EAAE,CAA3B,CAAE,OAAQ,EAAI,OAAQ,CAChD,MAAO,EAAW,IAAI,EAAI,EAAI,EAC9B,WAAY,EAAM,EACnB,CAAC,CAEJ,EAAM,KAAK,CAAE,KAAM,MAAO,SAAQ,CAAC,CAErC,OAAO,ECvJT,IAAa,GAAb,cAAsC,KAAM,CAC1C,KACA,YAAY,EAAc,EAAiB,CACzC,MAAM,EAAQ,CACd,KAAK,KAAO,EACZ,KAAK,KAAO,qBAIhB,eAAsB,IAAqD,CACzE,IAAI,EACJ,GAAI,CACF,EAAM,MAAM,MAAM,yBAAyB,MACrC,CACN,MAAM,IAAI,GAAiB,UAAW,eAAe,CAEvD,GAAI,CAAC,EAAI,GACP,MAAM,IAAI,GAAiB,UAAW,YAAY,EAAI,SAAS,CAGjE,OAAO,MADa,EAAI,MAAM,EAClB,YAAc,EAAE,CAG9B,SAAS,GAAS,EAAkD,CAClE,OAAO,OAAO,GAAU,YAAY,EAGtC,SAAS,GAAgB,EAAmC,CAC1D,GAAI,CAAC,GAAS,EAAM,EAAI,CAAC,GAAS,EAAM,OAAO,CAC7C,MAAM,IAAI,GAAiB,eAAgB,uCAAuC,CAEpF,GAAM,CAAE,UAAW,EACnB,GAAI,OAAO,EAAO,QAAW,UAAY,CAAC,GAAS,EAAO,KAAK,CAC7D,MAAM,IAAI,GAAiB,eAAgB,gCAAgC,CAE7E,GAAM,CAAE,QAAS,EACjB,GACE,OAAO,EAAK,UAAa,UACzB,OAAO,EAAK,WAAc,UAC1B,OAAO,EAAK,WAAc,UAC1B,OAAO,EAAK,QAAW,SAEvB,MAAM,IAAI,GAAiB,eAAgB,iCAAiC,CAE9E,MAAO,CACL,OAAQ,CACN,OAAQ,EAAO,OACf,KAAM,CACJ,SAAU,EAAK,SACf,UAAW,EAAK,UAChB,UAAW,EAAK,UAChB,OAAQ,EAAK,OACd,CACF,CACF,CAGH,eAAe,GAAS,EAA2C,CACjE,IAAI,EACJ,GAAI,CACF,EAAM,MAAM,MAAM,qBAAsB,CACtC,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,CAC/C,KAAM,KAAK,UAAU,EAAK,CAC3B,CAAC,MACI,CACN,MAAM,IAAI,GAAiB,UAAW,eAAe,CAEvD,GAAI,EAAI,GACN,GAAI,CACF,OAAO,GAAgB,MAAM,EAAI,MAAM,CAAC,OACjC,EAAK,CAEZ,MADI,aAAe,GAAwB,EACrC,IAAI,GAAiB,eAAgB,6BAA6B,CAG5E,IAAI,EAAO,cACX,GAAI,CACF,IAAM,EAAQ,MAAM,EAAI,MAAM,CAC1B,GAAQ,OAAO,EAAK,MAAS,WAAU,EAAO,EAAK,WACjD,EAGR,MAAM,IAAI,GAAiB,EAAM,eAAe,EAAI,SAAS,CAG/D,IAAa,GAA0B,GACrC,GAAS,CAAE,GAAI,EAAa,CAAC,CAElB,GAAqB,GAA6C,GAAS,CAAE,OAAM,CAAC,CCpEjG,SAAgB,GAAiB,EAAoB,EAAE,CAAoB,CACzE,IAAM,EAAM,EAAK,KAAO,kBAClB,EAAO,EAAK,iBAAmB,WAAW,YAChD,GAAI,CAAC,EAGH,MAAO,CAAE,UAAa,GAAI,CAE5B,EAAY,UAAU,CAAC,cAAc,aAAa,CAElD,IAAM,EAAK,IAAI,EAAK,EAAI,CACpB,EAA2B,EAAE,CAC7B,EAAW,GACX,EAAiB,GACjB,EAAe,GA8GnB,OAZA,EAAG,iBAAiB,iBAhGK,GAAoB,CAC3C,GAAI,CACF,IAAM,EAAO,KAAK,MAAO,EAAoB,KAAK,CAClD,EAAe,EAAE,CACjB,IAAM,EAAQ,EAAY,UAAU,CACpC,EAAM,QAAQ,CACZ,SAAU,EAAK,KAAK,SACpB,WAAY,EACZ,aAAc,EACf,CAAC,CACE,OAAO,EAAK,KAAK,QAAW,UAAY,EAAK,KAAK,OAAO,OAAS,GACpE,EAAM,UAAU,EAAK,KAAK,OAAO,MAE7B,IAmF4C,CACtD,EAAG,iBAAiB,iBAhFK,GAAoB,CAC3C,GAAI,CACF,IAAM,EAAO,KAAK,MAAO,EAAoB,KAAK,CAClD,EAAe,EAAa,OAAO,EAAK,KAAK,MACvC,IA4E4C,CACtD,EAAG,iBAAiB,mBAzEc,CAChC,EAAY,UAAU,CAAC,QAAQ,EAAa,CAC5C,EAAe,EAAE,CACjB,EAAe,GACf,EAAY,UAAU,CAAC,cAAc,YAAY,EAqED,CAClD,EAAG,iBAAiB,SApEF,GAAoB,CACpC,GAAI,CACF,IAAM,EAAO,KAAK,MAAO,EAAoB,KAAK,CAClD,EAAY,UAAU,CAAC,WAAW,EAAK,KAAM,EAAK,KAAK,MACjD,IAgE6B,CACvC,EAAG,iBAAiB,QA7DH,GAAoB,CACnC,GAAI,CACF,IAAM,EAAO,KAAK,MAAO,EAAoB,KAAK,CAClD,EAAY,UAAU,CAAC,WAAW,EAAK,QAAQ,MACzC,IAyD2B,CACrC,EAAG,iBAAiB,WAtDO,GAsDQ,CACnC,EAAG,iBAAiB,eApDW,CAC7B,EAAY,UAAU,CAAC,kBAAkB,GAAK,CAC9C,EAAY,UAAU,CAAC,kBAAkB,CACzC,EAAe,EAAE,EAiDwB,CAC3C,EAAG,iBAAiB,cAhDE,GAAoB,CACxC,GAAI,CACF,IAAM,EAAO,KAAK,MAAO,EAAoB,KAAK,CAI5C,EAAO,EAAK,OAAS,cAAgB,cAAgB,aAC3D,EAAY,UAAU,CAAC,kBAAkB,CACvC,OACA,QAAS,OAAO,EAAK,SAAY,SAAW,EAAK,QAAU,GAC5D,CAAC,MACI,CACN,EAAY,UAAU,CAAC,kBAAkB,CAAE,KAAM,aAAc,QAAS,GAAI,CAAC,GAoCjC,CAChD,EAAG,iBAAiB,gBAlCW,CAC7B,EAAY,UAAU,CAAC,mBAAmB,CAC1C,EAAe,EAAE,EAgCyB,CAC5C,EAAG,iBAAiB,UA/BM,CACpB,MACJ,GAAW,GACX,GAAI,CACF,EAAG,OAAO,MACJ,EAGR,EAAY,UAAU,CAAC,cAAc,eAAe,GAuBrB,CACjC,EAAG,YAtByB,CACtB,GAAY,IAIZ,GAAgB,EAAG,aAAe,EACpC,EAAY,UAAU,CAAC,cAAc,eAAe,CAEpD,EAAY,UAAU,CAAC,cAAc,aAAa,GAgB/C,CACL,UAAa,CACX,EAAiB,GACjB,EAAW,GACX,GAAI,CACF,EAAG,OAAO,MACJ,IAIX,CCvLH,IAAa,GAAkB,kBCW/B,IAAI,EAAqB,OAAO,IAAI,6BAA6B,CAC/D,EAAsB,OAAO,IAAI,iBAAiB,CACpD,SAAS,EAAQ,EAAM,EAAQ,EAAU,CACvC,IAAI,EAAM,KAGV,GAFW,IAAX,IAAK,KAAmB,EAAM,GAAK,GACxB,EAAO,MAAlB,IAAK,KAAqB,EAAM,GAAK,EAAO,KACxC,QAAS,EAEX,IAAK,IAAI,IADT,GAAW,EAAE,CACQ,EACT,IAAV,QAAuB,EAAS,GAAY,EAAO,SAChD,EAAW,EAElB,MADA,GAAS,EAAS,IACX,CACL,SAAU,EACJ,OACD,MACL,IAAgB,IAAX,IAAK,GAAwB,KAAT,EACzB,MAAO,EACR,CAEH,EAAQ,SAAW,EACnB,EAAQ,IAAM,EACd,EAAQ,KAAO,kBC9Bb,EAAO,QAAA,IAAA,MCGH,GAAuC,CAC3C,aAAc,kBACd,cAAe,kBAChB,CAED,SAAgB,GAAiB,CAC/B,OACA,UACA,YAKc,CACd,IAAM,EAAU,GAAa,IAAS,gBACtC,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,QACL,cAAY,qBACZ,MAAO,CACL,OAAQ,GACR,WAAY,qCACZ,MAAO,qCACP,WAAY,qCACZ,QAAS,mBACT,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,KAAM,WACP,UAbH,EAeE,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,gBAAO,IAAQ,CAAA,EACjC,EAAA,EAAA,MAAC,OAAD,CAAM,MAAO,CAAE,KAAM,EAAG,UAAxB,CAA0B,gBAAc,EAAe,IACvD,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,cACZ,OAAQ,yBACR,aAAc,EACd,MAAO,UACP,OAAQ,UACR,WAAY,IACb,UACF,mBAEQ,CAAA,EACT,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,cACZ,OAAQ,yBACR,aAAc,EACd,MAAO,UACP,OAAQ,UACR,WAAY,IACb,UACF,aAEQ,CAAA,CACL,GChEV,IAAM,IAAgB,GAAG,IAAY,EAAQ,QAAQ,EAAW,EAAO,IAC9D,EAAQ,GAAc,EAAU,MAAM,GAAK,IAAM,EAAM,QAAQ,EAAU,GAAK,EACrF,CAAC,KAAK,IAAI,CAAC,MAAM,CCFb,GAAe,GAAW,EAAO,QAAQ,qBAAsB,QAAQ,CAAC,aAAa,CCArF,GAAe,GAAW,EAAO,QACrC,yBACC,EAAO,EAAI,IAAO,EAAK,EAAG,aAAa,CAAG,EAAG,aAAa,CAC5D,CCDK,GAAgB,GAAW,CAC/B,IAAM,EAAY,GAAY,EAAO,CACrC,OAAO,EAAU,OAAO,EAAE,CAAC,aAAa,CAAG,EAAU,MAAM,EAAE,ECJ3D,GAAoB,CACtB,MAAO,6BACP,MAAO,GACP,OAAQ,GACR,QAAS,YACT,KAAM,OACN,OAAQ,eACR,YAAa,EACb,cAAe,QACf,eAAgB,QACjB,CCVK,GAAe,GAAU,CAC7B,IAAK,IAAM,KAAQ,EACjB,GAAI,EAAK,WAAW,QAAQ,EAAI,IAAS,QAAU,IAAS,QAC1D,MAAO,GAGX,MAAO,ICFH,IAAA,EAAA,EAAA,eAA8B,EAAE,CAAC,CAqBjC,QAAA,EAAA,EAAA,YAAoC,GAAc,CCjBlD,IAAA,EAAA,EAAA,aACH,CAAE,QAAO,OAAM,cAAa,sBAAqB,YAAY,GAAI,WAAU,WAAU,GAAG,GAAQ,IAAQ,CACvG,GAAM,CACJ,KAAM,EAAc,GACpB,YAAa,EAAqB,EAClC,oBAAqB,EAA6B,GAClD,MAAO,EAAe,eACtB,UAAW,EAAe,IACxB,IAAkB,EAAI,EAAE,CACtB,EAAwB,GAAuB,EAA6B,OAAO,GAAe,EAAmB,CAAG,GAAK,OAAO,GAAQ,EAAY,CAAG,GAAe,EAChL,OAAA,EAAA,EAAA,eACE,MACA,CACE,MACA,GAAG,GACH,MAAO,GAAQ,GAAe,GAAkB,MAChD,OAAQ,GAAQ,GAAe,GAAkB,OACjD,OAAQ,GAAS,EACjB,YAAa,EACb,UAAW,GAAa,SAAU,EAAc,EAAU,CAC1D,GAAG,CAAC,GAAY,CAAC,GAAY,EAAK,EAAI,CAAE,cAAe,OAAQ,CAC/D,GAAG,EACJ,CACD,CACE,GAAG,EAAS,KAAK,CAAC,EAAK,MAAA,EAAA,EAAA,eAAyB,EAAK,EAAM,CAAC,CAC5D,GAAG,MAAM,QAAQ,EAAS,CAAG,EAAW,CAAC,EAAS,CACnD,CACF,EAEJ,CC/BK,IAAoB,EAAU,IAAa,CAC/C,IAAM,GAAA,EAAA,EAAA,aACH,CAAE,YAAW,GAAG,GAAS,KAAA,EAAA,EAAA,eAAsB,GAAM,CACpD,MACA,WACA,UAAW,GACT,UAAU,GAAY,GAAa,EAAS,CAAC,GAC7C,UAAU,IACV,EACD,CACD,GAAG,EACJ,CAAC,CACH,CAED,MADA,GAAU,YAAc,GAAa,EAAS,CACvC,GCjBH,GAAQ,GAAiB,QAASA,CADpB,CAAC,OAAQ,CAAE,EAAG,kBAAmB,IAAK,SAAU,CAAC,CAC7BA,CAAW,CCA7C,GAAc,GAAiB,eAAgBC,CADjC,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,SAAU,CAAC,CACbA,CAAW,CCA1D,GAAe,GAAiB,gBAAiBC,CADnC,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,SAAU,CAAC,CACZA,CAAW,CCiB5D,GAAa,GAAiB,cAAeC,CAjBjD,CACE,OACA,CACE,EAAG,iHACH,IAAK,SACN,CACF,CACD,CAAC,OAAQ,CAAE,EAAG,0BAA2B,IAAK,SAAU,CAAC,CACzD,CACE,OACA,CAAE,EAAG,qEAAsE,IAAK,SAAU,CAC3F,CACD,CACE,OACA,CAAE,EAAG,uEAAwE,IAAK,SAAU,CAC7F,CAEgDA,CAAW,CCbxD,GAAO,GAAiB,OAAQC,CAJpC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,CAAC,CAC1D,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,SAAU,CAAC,CAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,SAAU,CAAC,CAEPA,CAAW,CCJ3C,GAAe,GAAiB,gBAAiBC,CADnC,CAAC,OAAQ,CAAE,EAAG,8BAA+B,IAAK,SAAU,CAAC,CAC1BA,CAAW,CCY5D,GAAU,GAAiB,UAAWC,CAZ1C,CACE,OACA,CACE,EAAG,kHACH,IAAK,SACN,CACF,CACD,CAAC,SAAU,CAAE,GAAI,OAAQ,GAAI,MAAO,EAAG,KAAM,KAAM,eAAgB,IAAK,SAAU,CAAC,CACnF,CAAC,SAAU,CAAE,GAAI,OAAQ,GAAI,OAAQ,EAAG,KAAM,KAAM,eAAgB,IAAK,SAAU,CAAC,CACpF,CAAC,SAAU,CAAE,GAAI,MAAO,GAAI,OAAQ,EAAG,KAAM,KAAM,eAAgB,IAAK,SAAU,CAAC,CACnF,CAAC,SAAU,CAAE,GAAI,MAAO,GAAI,MAAO,EAAG,KAAM,KAAM,eAAgB,IAAK,SAAU,CAAC,CAExCA,CAAW,CCTjD,GAAQ,GAAiB,QAASC,CAHtC,CAAC,OAAQ,CAAE,EAAG,KAAM,EAAG,IAAK,MAAO,IAAK,OAAQ,KAAM,GAAI,IAAK,IAAK,SAAU,CAAC,CAC/E,CAAC,OAAQ,CAAE,EAAG,IAAK,EAAG,IAAK,MAAO,IAAK,OAAQ,KAAM,GAAI,IAAK,IAAK,SAAU,CAAC,CAExCA,CAAW,CCK7C,GAAO,GAAiB,OAAQC,CARpC,CACE,OACA,CACE,EAAG,qFACH,IAAK,SACN,CACF,CAEmCA,CAAW,CCL3C,GAAS,GAAiB,SAAUC,CAHxC,CAAC,OAAQ,CAAE,EAAG,mBAAoB,IAAK,SAAU,CAAC,CAClD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,SAAU,CAAC,CAEjBA,CAAW,CCO/C,GAAc,GAAiB,eAAgBC,CAVnD,CACE,OACA,CACE,EAAG,qKACH,IAAK,SACN,CACF,CACD,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,SAAU,CAAC,CACzC,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,SAAU,CAAC,CAEOA,CAAW,CCA1D,GAAgB,GAAiB,iBAAkBC,CAVvD,CACE,OACA,CACE,EAAG,2EACH,IAAK,SACN,CACF,CACD,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,SAAU,CAAC,CACzC,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,SAAU,CAAC,CAEWA,CAAW,CCF9D,GAAU,GAAiB,WAAYC,CAR3C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,SAAU,CAAC,CAC5C,CAAC,OAAQ,CAAE,EAAG,4BAA6B,IAAK,SAAU,CAAC,CAC3D,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,SAAU,CAAC,CACjE,CAAC,OAAQ,CAAE,EAAG,qCAAsC,IAAK,SAAU,CAAC,CACpE,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,SAAU,CAAC,CACjE,CAAC,OAAQ,CAAE,EAAG,oCAAqC,IAAK,SAAU,CAAC,CACnE,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,SAAU,CAAC,CAEDA,CAAW,CCLlD,GAAI,GAAiB,IAAK,CAH9B,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,SAAU,CAAC,CAC5C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,SAAU,CAAC,CAEd,CAAW,CCYrC,GAAY,GAEZ,GAAQ,IAAI,IACZ,GAA8B,EAAE,CAEtC,SAAS,GAAS,EAAmC,EAA4B,CAC/E,OAAO,KAAK,UAAU,CAAC,GAAU,KAAM,EAAI,CAAC,CAG9C,SAAS,GAAS,EAAgD,CAChE,IAAM,EAAS,GAAM,IAAI,EAAI,CAC7B,GAAI,IAAW,IAAA,GAAW,CACxB,IAAM,EAAW,GAAW,QAAQ,EAAI,CACpC,IAAa,KACf,GAAW,OAAO,EAAU,EAAE,CAC9B,GAAW,KAAK,EAAI,EAGxB,OAAO,EAGT,SAAS,GAAS,EAAoB,EAA4B,CAChE,GAAI,GAAM,IAAI,EAAI,CAAE,CAClB,GAAW,OAAO,GAAW,QAAQ,EAAI,CAAE,EAAE,CAC7C,GAAW,KAAK,EAAI,CACpB,GAAM,IAAI,EAAK,EAAK,CACpB,OAEF,GAAI,GAAW,QAAU,GAAW,CAClC,IAAM,EAAQ,GAAW,OAAO,CAC5B,IAAU,IAAA,IAAW,GAAM,OAAO,EAAM,CAE9C,GAAW,KAAK,EAAI,CACpB,GAAM,IAAI,EAAK,EAAK,CAQtB,eAAsB,GACpB,EACA,EACA,EACgC,CAChC,IAAM,EAAM,GAAS,EAAQ,EAAI,CAC3B,EAAS,GAAS,EAAI,CAC5B,GAAI,EAAQ,OAAO,EACnB,IAAM,EAAoB,IAAW,IAAA,GAAyB,EAAE,CAAf,CAAE,SAAQ,CACrD,EAAO,MAAM,MAAM,kBAAkB,IAAO,EAAK,CACvD,GAAI,EAAK,SAAW,IAAK,OAAO,KAChC,GAAI,CAAC,EAAK,GAAI,MAAU,MAAM,yBAAyB,EAAK,SAAS,CACrE,IAAM,EAAwB,MAAM,EAAK,MAAM,CAE/C,OADA,GAAS,EAAK,EAAK,CACZ,ECjET,SAAgB,GAAY,CAC1B,cACA,QACA,QACA,cACgC,CAChC,OACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,WAAY,SACZ,OAAQ,OACR,WAAY,aAAa,IACzB,YAAa,iBACb,IAAK,iBACL,SAAU,4BACV,WAAY,mBACZ,SAAU,SACX,UAXH,EAaE,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,WAAY,EACZ,MAAO,OACP,MAAO,0BACP,SAAU,SACV,aAAc,WACd,WAAY,SACb,UAEA,EACI,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,KAAM,EACN,MAAO,oBACP,SAAU,SACV,aAAc,WACd,WAAY,SACb,UAEA,EACI,CAAA,CACN,GACC,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,WAAY,EACZ,MAAO,uBACP,SAAU,OACV,WAAY,mBACb,UAEA,EACI,CAAA,CACL,KACA,GCpDV,IAAM,GAA2C,EAC9C,QAAS,eACT,QAAS,mBACT,QAAS,oBACT,QAAS,kBACT,QAAS,kBACT,QAAS,0BACX,CAcD,SAAS,GAAa,EAAoD,CACxE,GAAI,EAAS,KAAO,OAAO,EAAS,KAAQ,SAAU,CACpD,IAAM,EAAI,EAAS,IACnB,GAAI,EAAE,QAAU,OAAO,EAAE,QAAW,SAClC,OAAO,EAAE,OAGb,OAAO,KAGT,SAAgB,GAAc,CAAE,MAAK,YAA6C,CAChF,IAAM,EAAqB,EAAE,CACvB,EAAS,GAAa,EAAS,CAGjC,EAAI,WACN,EAAO,KAAK,CACV,MAAO,UACP,YAAa,oBACb,MAAO,EAAI,UACZ,CAAC,CAIA,EAAI,QACN,EAAO,KAAK,CACV,MAAO,OACP,YAAa,oBACb,MAAO,EAAI,OACZ,CAAC,CAIJ,IAAM,EAAW,GAAQ,SACzB,GAAI,GAAY,OAAO,GAAa,SAAU,CAC5C,IAAM,EAAK,EACL,EAAS,OAAO,EAAG,MAAS,SAAW,EAAG,KAAO,KAAK,UAAU,EAAS,CAC/E,EAAO,KAAK,CACV,MAAO,YACP,YAAa,0BACb,MAAO,EACR,CAAC,CAIA,EAAI,YAAc,EAAI,UAAY,OACpC,EAAO,KAAK,CACV,MAAO,cACP,YAAa,qBACb,MAAO,EAAI,WACZ,CAAC,CAIA,EAAI,YAAc,MACpB,EAAO,KAAK,CACV,MAAO,aACP,YAAa,0BACb,MAAO,OAAO,EAAI,UAAU,CAC5B,GAAI,EAAI,UAAY,CAAE,WAAY,aAAc,CAAG,EAAE,CACtD,CAAC,CAIJ,IAAM,EAAS,GAAQ,OAmBvB,GAlBI,OAAO,GAAW,UAAY,GAChC,EAAO,KAAK,CACV,MAAO,SACP,YAAa,0BACb,MAAO,EACR,CAAC,CAIA,EAAI,QAAU,EAAI,UAAY,OAAS,EAAI,UAAY,QACzD,EAAO,KAAK,CACV,MAAO,aACP,YAAa,sBACb,MAAO,EAAI,MACZ,CAAC,CAIA,EAAI,YAAc,KAAM,CAC1B,IAAM,EAAQ,GAAiB,EAAI,WAC7B,EAAW,EAAQ,GAAG,EAAI,UAAU,KAAK,IAAU,OAAO,EAAI,UAAU,CAC9E,EAAO,KAAK,CACV,MAAO,aACP,YAAa,2BACb,MAAO,EACR,CAAC,CAYJ,OARI,EAAI,UAAY,OAAS,EAAI,YAC/B,EAAO,KAAK,CACV,MAAO,oBACP,YAAa,2BACb,MAAO,EAAI,WACZ,CAAC,EAIF,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,kBACZ,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,MACL,QAAS,mBACV,UAEA,EAAO,IAAK,IACX,EAAA,EAAA,KAAC,GAAD,CAEE,YAAa,EAAE,YACf,MAAO,EAAE,MACT,MAAO,EAAE,MACT,GAAK,EAAE,aAAe,IAAA,GAA2C,EAAE,CAAjC,CAAE,WAAY,EAAE,WAAY,CAC9D,CALK,EAAE,MAKP,CACF,CACE,CAAA,CClJV,SAAgB,GAAkB,CAAE,OAAM,oBAAyD,CACjG,IAAM,EAAU,2BAA2B,GAAQ,GAAoB,UAAU,GASjF,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,sBACZ,MAAO,CACL,QAAS,OACT,WAAY,aACZ,IAAK,iBACL,QAAS,gCACT,WAAY,mCACZ,MAAO,2BACP,SAAU,4BACV,WAAY,mBACZ,aAAc,gCACf,UAZH,EAcE,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,GAAI,MAAO,CAAE,WAAY,EAAG,UAAW,MAAO,CAAI,CAAA,EACrE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,yBAA0B,UAAG,EAAc,CAAA,EACrE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,MAAO,0BAA2B,UAAW,MAAO,UAxBtE,IAAS,OACL,8DACA,IAAqB,eACnB,uCACA,mCAoB8E,CAAA,CAC5E,CAAA,CAAA,CACF,GC5CV,eAAsB,GAAS,EAA6B,CAC1D,GAAI,CACF,MAAM,UAAU,UAAU,UAAU,EAAK,CACzC,YACM,CACN,IAAM,EAAK,SAAS,cAAc,WAAW,CAC7C,EAAG,MAAQ,EACX,EAAG,MAAM,SAAW,QACpB,EAAG,MAAM,IAAM,IACf,EAAG,MAAM,KAAO,IAChB,EAAG,MAAM,QAAU,IACnB,SAAS,KAAK,YAAY,EAAG,CAC7B,EAAG,OAAO,CACV,EAAG,QAAQ,CACX,SAAS,YAAY,OAAO,CAC5B,SAAS,KAAK,YAAY,EAAG,ECUjC,SAAS,GAAc,EAAqB,CAC1C,OAAQ,EAAR,CACE,IAAK,MACH,MAAO,gBACT,IAAK,MACH,MAAO,gBACT,QACE,MAAO,YAIb,SAAS,GAAM,EAAoB,CACjC,IAAM,EAAI,IAAI,KAAK,EAAG,CAKtB,MAAO,GAJI,EAAE,aAAa,CAAC,UAAU,CAAC,SAAS,EAAG,IAIxC,CAAG,GAHF,EAAE,eAAe,CAAC,UAAU,CAAC,SAAS,EAAG,IAGpC,CAAG,GAFR,EAAE,eAAe,CAAC,UAAU,CAAC,SAAS,EAAG,IAE9B,CAAG,GADd,EAAE,oBAAoB,CAAC,UAAU,CAAC,SAAS,EAAG,IAC7B,GAG9B,SAAS,GAAW,EAAyB,CAC3C,OAAO,EAAM,QAAU,EAAM,YAAc,EAAM,KAGnD,SAAS,GAAQ,EAAgC,CAE/C,OADI,EAAM,KAAO,KAAa,KACvB,GAAG,OAAO,EAAM,GAAG,CAAC,IAAI,EAAM,OAAO,GAG9C,SAAS,GAAmB,EAAgB,EAAyB,CACnE,IAAI,EAAM,GAAG,EAAO,GAAG,GAAc,EAAM,IAAI,CAAC,GAAG,EAAM,KAAK,GAAG,GAAW,EAAM,GAC5E,EAAK,GAAQ,EAAM,CAKzB,OAJI,IAAI,GAAO,OAAO,KAClB,EAAM,YAAW,GAAO,YAAY,EAAM,aAC1C,EAAM,SAAQ,GAAO,SAAS,EAAM,UACpC,EAAM,aAAY,GAAO,SAAS,EAAM,cACrC,GAAG,EAAI,IAGhB,SAAS,GACP,EACA,EACA,EACA,EACA,EACQ,CACR,IAAM,EAAK,GAAM,EAAM,GAAG,CACpB,EAAM,GAAc,EAAM,IAAI,CAC9B,EAAS,EAAM,QAAU,EAAM,YAAc,IAC/C,EAAU,GAAG,EAAG,GAAG,EAAI,GAAG,EAAM,KAAK,GAAG,EAAO,WAAW,EAAO,WAAW,IAAc,KAA0B,IAAnB,GAAG,EAAU,IAAU,IAa5H,OAXI,EAAM,YAAW,GAAW,WAAW,EAAM,UAAU,KACvD,EAAM,SAAQ,GAAW,QAAQ,EAAM,OAAO,KAC9C,EAAM,YAAc,OAAM,GAAW,aAAa,EAAM,UAAU,KAClE,IACF,GAAW,qBACP,IAAY,OAAM,GAAW,YAAY,KAC7C,GAAW,WAAW,EAAO,WAAW,IAAc,KAA0B,IAAnB,GAAG,EAAU,IAAU,IACpF,GAAW,GAAmB,UAAW,EAAM,CAC/C,GAAW,GAAmB,OAAQ,EAAU,EAG3C,EAGT,SAAgB,GAAS,CACvB,QACA,YACA,UACA,YACA,SACA,UAC6B,CAC7B,GAAM,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,GAAM,CACjC,GAAA,EAAA,EAAA,QAAiC,KAAK,EAG5C,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,EAAM,OACX,SAAS,EAAQ,EAAe,CAC1B,EAAQ,SAAW,CAAC,EAAQ,QAAQ,SAAS,EAAE,OAAe,EAChE,EAAQ,GAAM,CAIlB,OADA,SAAS,iBAAiB,YAAa,EAAQ,KAClC,SAAS,oBAAoB,YAAa,EAAQ,EAC9D,CAAC,EAAK,CAAC,CAEV,eAAe,EAAW,EAA0B,CAClD,EAAQ,GAAM,CACd,IAAM,EAAO,GAAY,CACzB,GAAI,CACF,MAAM,GAAS,EAAK,CACpB,EAAO,UAAU,EAAK,OAAO,QAAS,GAAK,MACrC,CACN,EAAO,yCAA0C,GAAM,EA+B3D,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,IAAK,EAAS,MAAO,CAAE,SAAU,WAAY,UAAlD,EACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,gBAAc,OACd,gBAAe,EACf,YAAe,EAAS,GAAM,CAAC,EAAE,CACjC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,WAAY,8BACZ,OAAQ,uCACR,aAAc,MACd,MAAO,oBACP,OAAQ,UACR,SAAU,4BACV,WAAY,mBACZ,QAAS,gCACV,UAjBH,CAkBC,SACM,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,GAAM,CAAA,CACvB,GAER,IACC,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,OACL,MAAO,CACL,SAAU,WACV,IAAK,8BACL,MAAO,EACP,WAAY,8BACZ,OAAQ,uCACR,aAAc,MACd,SAAU,QACV,OAAQ,GACR,SAAU,SACX,UAEA,CAjEP,CACE,MAAO,gBACP,WAAc,CACZ,GAAI,CACF,OAAO,KAAK,UAAU,EAAM,IAAI,MAC1B,CACN,MAAO,yCAGZ,CACD,CACE,MAAO,mBACP,WAAc,CACZ,GAAI,CACF,OAAO,KAAK,UAAU,EAAM,IAAK,KAAM,EAAE,MACnC,CACN,MAAO,yCAGZ,CACD,CACE,MAAO,eACP,WAAc,GAAa,EAAO,EAAW,EAAS,EAAW,EAAO,CACzE,CA0CM,CAAU,IAAK,IACd,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,WACL,KAAK,SACL,YAAe,EAAW,EAAK,OAAO,CACtC,MAAO,CACL,QAAS,QACT,MAAO,OACP,UAAW,OACX,WAAY,OACZ,OAAQ,OACR,MAAO,oBACP,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,QAAS,gCACV,UAEA,EAAK,MACC,CAlBF,EAAK,MAkBH,CACT,CACE,CAAA,CAEJ,GCrMV,SAAgB,GAAU,CAAE,UAAS,QAA4C,CAC/E,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAK,CAgB5C,OAdA,EAAA,EAAA,eAAgB,CACd,IAAM,EAAK,eAAiB,EAAW,GAAM,CAAE,KAAK,CACpD,UAAa,aAAa,EAAG,EAC5B,EAAE,CAAC,CAED,GAUH,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,aACZ,KAAK,SACL,YAAU,SACV,MAAO,CACL,SAAU,WACV,OAAQ,iBACR,MAAO,iBACP,WAfJ,IAAS,UACL,4EACA,gFAcA,OAAQ,aAZM,IAAS,UAAY,uBAAyB,6BAa5D,aAAc,MACd,QAAS,gCACT,SAAU,4BACV,WAAY,mBACZ,MAAO,oBACP,OAAQ,IACR,UAAW,yBACX,cAAe,OAChB,UAEA,EACG,CAAA,CA/Ba,KCJvB,SAAS,GAAc,EAAqB,CAC1C,OAAQ,EAAR,CACE,IAAK,MACH,MAAO,kBACT,IAAK,MACH,MAAO,kBACT,QACE,MAAO,YAIb,SAAS,GAAW,EAAyB,CAC3C,OAAO,EAAM,QAAU,EAAM,YAAc,EAAM,KAGnD,SAAS,GAAe,EAAgC,CAEtD,OADI,EAAM,KAAO,KAAa,KACvB,GAAG,OAAO,EAAM,GAAG,CAAC,IAAI,EAAM,OAAO,GAG9C,SAAS,GAAY,EAA2B,CAC9C,IAAM,EAAiB,EAAE,CACnB,EAAY,GAAe,EAAM,CAKvC,OAJI,GAAW,EAAK,KAAK,MAAM,IAAY,CACvC,EAAM,WAAW,EAAK,KAAK,WAAW,EAAM,YAAY,CACxD,EAAM,QAAQ,EAAK,KAAK,QAAQ,EAAM,SAAS,CAC/C,EAAM,YAAY,EAAK,KAAK,QAAQ,EAAM,aAAa,CACpD,EAGT,SAAS,GAAqB,CAC5B,QACA,MACA,SAKc,CACd,IAAM,EAAO,GAAY,EAAM,CAC/B,OACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,MACL,SAAU,EACX,UANH,EAQE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,WAAY,mBACZ,SAAU,4BACV,MAAO,oBACP,SAAU,SACV,aAAc,WACd,WAAY,SACb,UARH,CAUG,EAAM,KAAG,EAAI,MAAI,EAAM,KAAK,MAAI,GAAW,EAAM,CAC9C,IACN,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,WAAY,mBACZ,SAAU,4BACV,MAAO,0BACP,SAAU,SACV,aAAc,WACd,WAAY,SACb,UARH,CAUG,GAAc,EAAM,IAAI,CACxB,EAAK,OAAS,MAAM,EAAK,KAAK,MAAM,GAAK,GACtC,GACF,GAIV,SAAgB,GAAkB,CAChC,aACA,QACA,YACA,UACA,YACA,UAC6C,CAG7C,MAFI,CAAC,GAAa,IAAY,KAAa,MAGzC,EAAA,EAAA,MAAC,UAAD,CACE,aAAW,cACX,cAAY,qBACZ,MAAO,CACL,UAAW,gCACX,aAAc,gCACd,QAAS,gCACT,QAAS,OACT,cAAe,SACf,IAAK,iBACN,UAVH,EAYE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,eAAgB,gBAChB,IAAK,iBACL,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACX,UARH,EAUE,EAAA,EAAA,KAAC,SAAD,CACE,MAAO,CACL,MAAO,oBACP,WAAY,yBACb,UACF,cAEQ,CAAA,EACT,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,aACO,EAAQ,aAAW,EAAO,aAAW,IAC/C,IAAc,KAA0B,IAAnB,GAAG,EAAU,IAC9B,CAAA,CAAA,CACH,IACN,EAAA,EAAA,KAAC,GAAD,CAAsB,MAAM,aAAa,IAAK,EAAmB,QAAS,CAAA,EAC1E,EAAA,EAAA,KAAC,GAAD,CAAsB,MAAM,OAAO,IAAK,EAAS,MAAO,EAAa,CAAA,CAC7D,GC/Hd,SAAgB,GAAmB,CACjC,QACA,WACA,MACA,OACuC,CACvC,IAAM,GAAA,EAAA,EAAA,QAAkB,GAAM,CACxB,GAAA,EAAA,EAAA,QAAgB,EAAE,CAClB,GAAA,EAAA,EAAA,QAAoB,EAAE,CACtB,GAAA,EAAA,EAAA,QAAmE,KAAK,CACxE,GAAA,EAAA,EAAA,QAAwC,KAAK,CAEnD,SAAS,EAAM,EAAmB,CAChC,OAAO,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,EAAE,CAAC,CAGxC,IAAM,GAAA,EAAA,EAAA,iBAA6B,CACjC,EAAS,QAAU,GACnB,AAEE,EAAY,WADZ,SAAS,oBAAoB,YAAa,EAAY,QAAQ,CACxC,MAExB,AAEE,EAAU,WADV,SAAS,oBAAoB,UAAW,EAAU,QAAQ,CACtC,OAErB,EAAE,CAAC,EAEN,EAAA,EAAA,eAAgB,EAAU,CAAC,EAAS,CAAC,CAErC,SAAS,EAAgB,EAAkC,CACzD,EAAE,gBAAgB,CAClB,GAAU,CACV,EAAS,QAAU,GACnB,EAAO,QAAU,EAAE,QACnB,EAAW,QAAU,EAErB,SAAS,EAAY,EAA2B,CAC9C,GAAI,CAAC,EAAS,QAAS,OACvB,IAAM,EAAQ,EAAO,QAAU,EAAG,QAClC,EAAS,EAAM,EAAW,QAAU,EAAM,CAAC,CAG7C,SAAS,GAAY,CACnB,GAAU,CAGZ,EAAY,QAAU,EACtB,EAAU,QAAU,EACpB,SAAS,iBAAiB,YAAa,EAAY,CACnD,SAAS,iBAAiB,UAAW,EAAU,CAGjD,SAAS,EAAc,EAAqC,CACtD,EAAE,MAAQ,aACZ,EAAE,gBAAgB,CAClB,EAAS,EAAM,EAAA,GAA6B,CAAC,EACpC,EAAE,MAAQ,eACnB,EAAE,gBAAgB,CAClB,EAAS,EAAM,EAAA,GAA6B,CAAC,EAIjD,OACE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,cAAY,uBACZ,aAAW,sBACX,YAAa,EACb,UAAW,EACX,MAAO,CACL,SAAU,WACV,KAAM,EACN,IAAK,EACL,OAAQ,EACR,MAAO,MACP,OAAQ,aACR,WAAY,cACZ,OAAQ,OACR,QAAS,EACT,OAAQ,GACR,WAAY,kBACb,CACD,aAAe,GAAM,CAClB,EAAE,cAA8B,MAAM,WACrC,4DAEJ,aAAe,GAAM,CACd,EAAS,UACX,EAAE,cAA8B,MAAM,WAAa,gBAGxD,CAAA,CC1FN,SAAS,GAAc,EAAqB,CAC1C,OAAQ,EAAR,CACE,IAAK,MACH,MAAO,kBACT,IAAK,MACH,MAAO,kBACT,QACE,MAAO,YAIb,SAAS,GAAY,EAAwB,CAG3C,OAFI,IAAW,KAAa,uBACxB,IAAW,QAAgB,2BACxB,0BAGT,SAAS,GAAM,EAAoB,CACjC,IAAM,EAAI,IAAI,KAAK,EAAG,CAKtB,MAAO,GAJI,EAAE,aAAa,CAAC,UAAU,CAAC,SAAS,EAAG,IAIxC,CAAG,GAHF,EAAE,eAAe,CAAC,UAAU,CAAC,SAAS,EAAG,IAGpC,CAAG,GAFR,EAAE,eAAe,CAAC,UAAU,CAAC,SAAS,EAAG,IAE9B,CAAG,GADd,EAAE,oBAAoB,CAAC,UAAU,CAAC,SAAS,EAAG,IAC7B,GAG9B,SAAS,GAAW,EAAgC,CAClD,OAAQ,EAAR,CACE,IAAK,UACH,MAAO,MACT,IAAK,WACH,MAAO,MACT,IAAK,sBACL,IAAK,sBACL,IAAK,wBACH,MAAO,MACT,IAAK,SACH,MAAO,MACT,IAAK,cACH,MAAO,MACT,IAAK,MACH,MAAO,MACT,QACE,MAAO,KAIb,SAAgB,GAAc,CAAE,QAAO,YAAW,UAA2C,CAM3F,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,cAAY,iBAAiB,MAAO,CAAE,QAAS,gCAAiC,UAArF,EACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,SAAU,uBACV,WAAY,mBACZ,MAAO,oBACP,WAAY,uBACZ,SAAU,SACV,aAAc,WACd,WAAY,SACb,UATH,CAPU,GAAM,EAAM,GAkBnB,CAAM,MAjBG,GAAc,EAAM,IAiBnB,CAAQ,MAhBT,GAAW,EAAM,KAgBJ,CAAQ,MAfjB,EAAM,QAAU,EAAM,YAAc,IAgB9C,IACN,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,SAAU,4BACV,WAAY,mBACZ,MAAO,0BACP,WAAY,uBACZ,UAAW,MACZ,UAPH,CAQC,YACS,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,MAAO,GAAY,EAAO,CAAE,UAAG,EAAc,CAAA,CACnE,MAAM,YACG,IAAc,KAA0B,IAAnB,GAAG,EAAU,IACxC,GACF,GCtFV,IAAM,GAAqC,CACzC,CAAE,GAAI,SAAU,MAAO,SAAU,CACjC,CAAE,GAAI,MAAO,MAAO,MAAO,CAC5B,CAED,SAAgB,GAAW,CAAE,SAAQ,YAA0C,CAC7E,SAAS,EAAc,EAAqC,EAAmB,CAC7E,GAAI,EAAE,MAAQ,aAAe,EAAE,MAAQ,aAAc,CACnD,EAAE,gBAAgB,CAGlB,IAAM,EAAM,GADV,EAAE,MAAQ,cAAgB,EAAM,GAAK,GAAK,QAAU,EAAM,EAAI,GAAK,QAAU,GAAK,QAEhF,GAAK,EAAS,EAAI,GAAG,EAI7B,OACE,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,UACL,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,QAAS,mBACT,aAAc,gCACd,OAAQ,2BACT,UAEA,GAAK,KAAK,EAAK,IAAQ,CACtB,IAAM,EAAW,EAAI,KAAO,EAC5B,OACE,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,MACL,gBAAe,EACf,SAAU,EAAW,EAAI,GACzB,KAAK,SACL,YAAe,EAAS,EAAI,GAAG,CAC/B,UAAY,GAAM,EAAc,EAAG,EAAI,CACvC,MAAO,CACL,WAAY,OACZ,OAAQ,OACR,aAAc,EAAW,gCAAkC,wBAC3D,MAAO,EAAW,oBAAsB,0BACxC,OAAQ,UACR,WAAY,mBACZ,SAAU,sBACV,WAAY,EAAW,yBAA2B,wBAClD,QAAS,gCACT,aAAc,OACf,UAEA,EAAI,MACE,CArBF,EAAI,GAqBF,EAEX,CACE,CAAA,CCvEV,IAAM,GAAY,GACT,OAAO,GAAS,WAAa,aAAgB,QAEhD,GAAW,GACR,OAAO,GAAS,UAAY,aAAgB,OAE/C,GAAW,GACR,OAAO,GAAS,UAAY,aAAgB,OAE/C,GAAS,GACN,CAAC,CAAC,GAAQ,aAAgB,KAE7B,GAAW,GACR,OAAO,GAAS,UAAY,aAAgB,OAE/C,GAAU,GACP,MAAM,QAAQ,EAAK,CAEtB,GAAW,GACR,OAAO,GAAS,YAAY,EAE/B,GAAa,GACV,CAAC,CAAC,GAAQ,aAAgB,QAAU,OAAO,GAAS,WAG7D,SAAS,GAAY,EAAO,EAAQ,CAIlC,OAHI,IAAW,IAAK,KAClB,EAAS,IAEJ,CAAC,GAAS,EAAS,IAAI,EAAM,GAAK,EAE3C,SAAS,GAAiB,EAAO,EAAQ,EAAW,CAIlD,OAHI,EACK,KAAK,UAAU,EAAM,CAEvB,EAAS,IAAI,EAAM,GAAK,EAEjC,SAAS,GAAiB,EAAM,CAC9B,GAAI,CACF,QACA,QACA,OACA,cACA,cACA,eACA,QACA,QACA,mBACA,oBACA,WACA,sBACE,EACE,GAAA,EAAA,EAAA,QAAmC,GAAM,CACzC,CAAC,EAAU,IAAA,EAAA,EAAA,cAA8B,EAAiB,EAAO,EAAO,EAAM,CAAC,CAC/E,GAAA,EAAA,EAAA,QAA2B,KAAK,EACtC,EAAA,EAAA,eAAgB,CACT,EAA0B,QAG7B,EAAY,EAAiB,EAAO,EAAO,EAAM,CAAC,CAFlD,EAA0B,QAAU,IAIrC,CAAC,EAAiB,CAAC,CACtB,IAAM,GAAA,EAAA,EAAA,QAAoB,CAC1B,GAAI,EAAK,SAAW,EAClB,OAAO,GAAY,CACjB,QACA,cACA,eACA,cACA,QACD,CAAC,CAEJ,IAAM,EAAoB,EAAW,EAAM,aAAe,EAAM,WAC1D,EAAY,EAAW,EAAM,WAAW,aAAe,EAAM,WAAW,WACxE,EAAa,EAAQ,EACrB,EAAY,EAAK,OAAS,EAC1B,EAAwB,GAAkB,CAC1C,IAAa,IAAmB,CAAC,GAAsB,EAAmB,CAC5E,QACA,QACA,QACA,iBACD,CAAC,GACA,EAAY,EAAe,EAGzB,EAAY,GAAK,CACrB,GAAI,EAAE,MAAQ,cAAgB,EAAE,MAAQ,YACtC,EAAE,gBAAgB,CAClB,EAAsB,EAAE,MAAQ,aAAa,SACpC,EAAE,MAAQ,WAAa,EAAE,MAAQ,YAAa,CACvD,EAAE,gBAAgB,CAClB,IAAM,EAAY,EAAE,MAAQ,UAAY,GAAK,EAC7C,GAAI,CAAC,EAAS,QAAS,OACvB,IAAM,EAAiB,EAAS,QAAQ,iBAAiB,gBAAgB,CACrE,EAAe,GACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAe,OAAQ,IACzC,GAAI,EAAe,GAAG,WAAa,EAAG,CACpC,EAAe,EACf,MAGJ,GAAI,EAAe,EACjB,OAEF,IAAM,GAAa,EAAe,EAAY,EAAe,QAAU,EAAe,OACtF,EAAe,GAAc,SAAW,GACxC,EAAe,GAAW,SAAW,EACrC,EAAe,GAAW,OAAO,GAG/B,MAAgB,CAEpB,EAAsB,CAAC,EAAS,CAChC,IAAM,EAAgB,EAAkB,QACxC,GAAI,CAAC,EAAe,OACpB,IAAM,EAAyC,EAAS,SAA+E,cAAc,8BAA8B,CAC/K,IACF,EAAkB,SAAW,IAE/B,EAAc,SAAW,EACzB,EAAc,OAAO,EAEvB,OAAoB,EAAA,EAAA,eAAc,MAAO,CACvC,UAAW,EAAM,gBACjB,KAAM,WACN,gBAAiB,EACjB,gBAAiB,IAAA,GAClB,EAAe,EAAA,EAAA,eAAc,OAAQ,CACpC,UAAW,EACF,UACE,YACX,KAAM,SACN,aAAc,EACd,gBAAiB,EACjB,gBAAiB,EAAW,EAAa,IAAA,GACzC,IAAK,EACL,SAAU,IAAU,EAAI,EAAI,GAC7B,CAAC,EAAG,GAAS,IAAU,MAAQ,GAEhC,EAAA,EAAA,eAAc,OAAQ,CACpB,UAAW,EAAM,eACR,UACE,YACZ,CAAE,GAAY,EAAO,EAAM,oBAAoB,CAAE,IAAI,EAAkB,EAAA,EAAA,eAAc,OAAQ,CAC5F,UAAW,EAAM,MAClB,CAAE,GAAY,EAAO,EAAM,oBAAoB,CAAE,IAAI,GAAiB,EAAA,EAAA,eAAc,OAAQ,CAC3F,UAAW,EAAM,YAClB,CAAE,EAAY,CAAE,GAAyB,EAAA,EAAA,eAAc,KAAM,CAC5D,GAAI,EACJ,KAAM,QACN,UAAW,EAAM,qBAClB,CAAE,EAAK,KAAK,EAAa,KAAwB,EAAA,EAAA,eAAc,GAAY,CAC1E,IAAK,EAAY,IAAM,EACvB,MAAO,EAAY,GACnB,MAAO,EAAY,GACZ,QACP,YAAa,IAAU,EACvB,MAAO,EACW,mBACC,oBACC,qBACV,WACX,CAAC,CAAE,CAAC,EAEL,EAAA,EAAA,eAAc,OAAQ,CACpB,UAAW,EAAM,iBACR,UACE,YACZ,CAAC,EAAgB,EAAA,EAAA,eAAc,OAAQ,CACtC,UAAW,EAAM,YAClB,CAAE,EAAa,CAAE,CAAC,IAA4B,EAAA,EAAA,eAAc,OAAQ,CACnE,UAAW,EAAM,YAClB,CAAE,IAAI,CAAC,CAEV,SAAS,GAAY,EAAO,CAC1B,GAAI,CACF,QACA,cACA,eACA,cACA,SACE,EACJ,OAAoB,EAAA,EAAA,eAAc,MAAO,CACvC,UAAW,EAAM,gBACjB,KAAM,WACN,gBAAiB,IAAA,GAClB,EAAG,GAAS,IAAU,MAAqB,EAAA,EAAA,eAAc,OAAQ,CAChE,UAAW,EAAM,MAClB,CAAE,GAAY,EAAO,EAAM,oBAAoB,CAAE,IAAI,EAAgB,EAAA,EAAA,eAAc,OAAQ,CAC1F,UAAW,EAAM,YAClB,CAAE,EAAY,EAAe,EAAA,EAAA,eAAc,OAAQ,CAClD,UAAW,EAAM,YAClB,CAAE,EAAa,CAAE,CAAC,IAA4B,EAAA,EAAA,eAAc,OAAQ,CACnE,UAAW,EAAM,YAClB,CAAE,IAAI,CAAC,CAEV,SAAS,GAAW,EAAO,CACzB,GAAI,CACF,QACA,QACA,QACA,cACA,mBACA,oBACA,QACA,WACA,sBACE,EACJ,OAAO,GAAiB,CACtB,QACA,QACA,YAAa,GAAe,GAC5B,QACA,YAAa,IACb,aAAc,IACd,QACA,mBACA,oBACA,KAAM,OAAO,KAAK,EAAM,CAAC,IAAI,GAAO,CAAC,EAAK,EAAM,GAAK,CAAC,CACtD,WACA,qBACD,CAAC,CAEJ,SAAS,GAAU,EAAO,CACxB,GAAI,CACF,QACA,QACA,QACA,cACA,QACA,mBACA,oBACA,WACA,sBACE,EACJ,OAAO,GAAiB,CACtB,QACA,QACA,YAAa,GAAe,GAC5B,QACA,YAAa,IACb,aAAc,IACd,QACA,mBACA,oBACA,KAAM,EAAM,IAAI,GAAW,CAAC,IAAA,GAAW,EAAQ,CAAC,CAChD,WACA,qBACD,CAAC,CAEJ,SAAS,GAAmB,EAAO,CACjC,GAAI,CACF,QACA,QACA,QACA,eACE,EACA,EACA,EAAa,EAAM,WA0BvB,OAzBI,IAAU,MACZ,EAAc,OACd,EAAa,EAAM,WACV,IAAU,IAAA,IACnB,EAAc,YACd,EAAa,EAAM,gBACV,GAAS,EAAM,EACxB,EAAc,GAAiB,EAAO,CAAC,EAAM,wBAAyB,EAAM,sBAAsB,CAClG,EAAa,EAAM,aACV,GAAU,EAAM,EACzB,EAAc,EAAQ,OAAS,QAC/B,EAAa,EAAM,cACV,GAAS,EAAM,EACxB,EAAc,EAAM,UAAU,CAC9B,EAAa,EAAM,aACV,GAAS,EAAM,EACxB,EAAc,GAAG,EAAM,UAAU,CAAC,GAClC,EAAa,EAAM,aAMnB,EALS,GAAO,EAAM,CACR,EAAM,aAAa,CACxB,GAAW,EAAM,CACZ,iBAEA,EAAM,UAAU,EAEZ,EAAA,EAAA,eAAc,MAAO,CACvC,UAAW,EAAM,gBACjB,KAAM,WACN,gBAAiB,IAAA,GAClB,EAAG,GAAS,IAAU,MAAqB,EAAA,EAAA,eAAc,OAAQ,CAChE,UAAW,EAAM,MAClB,CAAE,GAAY,EAAO,EAAM,oBAAoB,CAAE,IAAI,EAAgB,EAAA,EAAA,eAAc,OAAQ,CAC1F,UAAW,EACZ,CAAE,EAAY,CAAE,CAAC,IAA4B,EAAA,EAAA,eAAc,OAAQ,CAClE,UAAW,EAAM,YAClB,CAAE,IAAI,CAAC,CAEV,SAAS,GAAW,EAAO,CACzB,IAAM,EAAQ,EAAM,MAOpB,OANI,GAAQ,EAAM,EACI,EAAA,EAAA,eAAc,GAAW,OAAO,OAAO,EAAE,CAAE,EAAM,CAAC,CAEpE,GAAS,EAAM,EAAI,CAAC,GAAO,EAAM,EAAI,CAAC,GAAW,EAAM,EACrC,EAAA,EAAA,eAAc,GAAY,OAAO,OAAO,EAAE,CAAE,EAAM,CAAC,EAErD,EAAA,EAAA,eAAc,GAAoB,OAAO,OAAO,EAAE,CAAE,EAAM,CAAC,CAGjF,IAAI,EAAS,CAAC,iBAAiB,SAAS,mBAAmB,SAAS,QAAU,SAAS,gBAAgB,gBAAgB,cAAc,SAAS,gBAAgB,SAAS,yBAAyB,gBAAgB,kBAAkB,gBAAgB,sBAAsB,SAAS,yBAAyB,SAAS,cAAc,SAAS,wBAAwB,uBAAuB,oBAAoB,gBAAgB,mBAAmB,SAAS,wBAAwB,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,sBAAsB,SAAS,oBAAoB,SAAS,sBAAsB,8BAA8B,oBAAoB,8BAA8B,0BAA0B,uBAAuB,iBAAiB,gBAAgB,mBAAmB,8BAA8B,qBAAqB,8BAA8B,yBAAyB,uBAAuB,aAAa,SAAS,uBAAuB,uBAAuB,mBAAmB,gBAAgB,kBAAkB,SAAS,uBAAuB,SAAS,oBAAoB,SAAS,oBAAoB,SAAS,qBAAqB,SAAS,mBAAmB,SAAS,CAM9qC,GAAgB,CACpB,UAAW,EAAO,mBAClB,gBAAiB,EAAO,uBACxB,qBAAsB,EAAO,0BAC7B,MAAO,EAAO,eACd,eAAgB,EAAO,yBACvB,UAAW,EAAO,oBAClB,eAAgB,EAAO,yBACvB,YAAa,EAAO,sBACpB,aAAc,EAAO,uBACrB,YAAa,EAAO,sBACpB,WAAY,EAAO,qBACnB,YAAa,EAAO,qBACpB,aAAc,EAAO,uBACrB,WAAY,EAAO,qBACnB,iBAAkB,EAAO,2BACzB,wBAAyB,GACzB,oBAAqB,GACrB,WAAY,CArBZ,aAAc,gBACd,WAAY,cAoBA,CACZ,sBAAuB,GACxB,CAEY,EAAO,kBACD,EAAO,uBACF,EAAO,0BACtB,EAAO,cACE,EAAO,wBACZ,EAAO,mBACF,EAAO,wBACV,EAAO,qBACN,EAAO,sBACR,EAAO,qBACR,EAAO,oBACN,EAAO,oBACN,EAAO,sBACT,EAAO,oBACD,EAAO,0BAM3B,IAAM,OAAoB,GAEpB,GAAW,GAAQ,CACvB,GAAI,CACF,OACA,QAAQ,GACR,mBAAmB,GACnB,oBAAoB,GACpB,qBACA,kBACA,GAAG,GACD,EACE,GAAA,EAAA,EAAA,QAAkB,KAAK,CAC7B,OAAoB,EAAA,EAAA,eAAc,MAAO,OAAO,OAAO,CACrD,aAAc,YACf,CAAE,EAAW,CACZ,UAAW,EAAM,UACjB,IAAK,EACL,KAAM,OACP,CAAC,CAAE,GAAmB,GAAS,EAAK,CAAG,OAAO,QAAQ,EAAK,CAAC,IAAI,GAAS,CACxE,GAAI,CAAC,EAAK,GAAS,EACnB,OAAoB,EAAA,EAAA,eAAc,GAAY,CACvC,MACL,MAAO,EACA,QACP,MAAO,CACL,GAAG,GACH,GAAG,EACJ,CACD,YAAa,GACb,MAAO,EACW,mBACC,oBACC,qBACV,WACX,CAAC,EACF,EAAiB,EAAA,EAAA,eAAc,GAAY,CAC3C,MAAO,EACP,MAAO,CACL,GAAG,GACH,GAAG,EACJ,CACD,YAAa,GACb,MAAO,EACW,mBACC,oBACT,WACU,qBACrB,CAAC,CAAE,ECtYN,SAAgB,GAAiB,CAC/B,OACA,QACA,YACA,cACqC,CACrC,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,oBACZ,MAAO,CACL,QAAS,OACT,WAAY,aACZ,IAAK,iBACL,QAAS,gCACT,WAAY,gEACZ,MAAO,uBACP,SAAU,4BACV,WAAY,mBACb,UAXH,EAaE,EAAA,EAAA,KAAC,GAAD,CAAe,KAAM,GAAI,MAAO,CAAE,WAAY,EAAG,UAAW,MAAO,CAAI,CAAA,EACvE,EAAA,EAAA,KAAC,MAAD,CAAA,SACG,IAAS,cACR,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CAAE,2DACyD,IACxD,IACC,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,OACZ,OAAQ,OACR,MAAO,uBACP,OAAQ,UACR,eAAgB,YAChB,QAAS,EACT,SAAU,UACV,WAAY,UACb,UACF,aAEQ,CAAA,CAEV,GAAa,GAAc,IAC3B,IACC,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,OACZ,OAAQ,OACR,MAAO,uBACP,OAAQ,UACR,eAAgB,YAChB,QAAS,EACT,SAAU,UACV,WAAY,UACb,UACF,sBAEQ,CAAA,CAEV,CAAA,CAAA,CAEH,wBAAwB,GAAS,KAAkC,IAA3B,KAAK,MAAM,EAAQ,KAAK,CAAO,MAErE,CAAA,CACF,GCrEV,IAAM,GAAmB,IAAM,KAEzB,GAAoC,CACxC,GAAG,GACH,UAAW,qBACX,gBAAiB,iBACjB,MAAO,iBACP,eAAgB,0CAChB,UAAW,gBACX,eAAgB,gBAChB,YAAa,kBACb,YAAa,kBACb,aAAc,mBACd,WAAY,iBACZ,YAAa,uBACb,WAAY,oBACZ,aAAc,oBACd,iBAAkB,qBAClB,qBAAsB,oBACvB,CASD,SAAgB,GAAe,CAC7B,OACA,WAAW,GACX,aACmC,CACnC,IAAI,EACJ,GAAI,CACF,EAAa,KAAK,UAAU,EAAK,MAC3B,CACN,EAAa,uCAaf,OAVI,EAAW,OAAS,GAEpB,EAAA,EAAA,KAAC,GAAD,CACE,KAAK,aACL,MAAO,EAAW,OAClB,GAAK,IAAc,IAAA,GAA4B,EAAE,CAAlB,CAAE,YAAW,CAC5C,CAAA,EAKJ,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,mBACZ,UAAU,gBACV,MAAO,CACL,QAAS,gCACT,SAAU,OACV,WAAY,mBACZ,SAAU,4BACV,MAAO,oBACP,WAAY,uBACZ,KAAM,EACP,WAED,EAAA,EAAA,KAAC,GAAD,CACQ,OACN,iBAAmB,GAAkB,EAAQ,EAC7C,kBAAA,GACA,MAAO,GACP,CAAA,CACE,CAAA,CCzEV,SAAgB,IAA8B,CAC5C,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,kBACZ,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,QAAS,gCACT,MAAO,0BACP,SAAU,OACV,WAAY,mBACZ,UAAW,gCACZ,UAXH,EAaE,EAAA,EAAA,KAAC,GAAD,CAAM,KAAM,GAAI,MAAO,CAAE,WAAY,EAAG,CAAI,CAAA,EAC5C,EAAA,EAAA,KAAC,OAAD,CAAA,SAAM,qEAAyE,CAAA,CAC3E,GCbV,SAAgB,GAAY,CAAE,QAAuC,CASnE,OACE,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,gBACZ,MAAO,CACL,OAAQ,EACR,QAAS,gCACT,SAAU,OACV,WAAY,mBACZ,SAAU,4BACV,MAAO,oBACP,KAAM,EACN,WAAY,WACZ,UAAW,YACZ,eArBe,CAClB,GAAI,CACF,OAAO,KAAK,UAAU,EAAM,KAAM,EAAE,MAC9B,CACN,MAAO,2CAmBN,CACG,CAAA,CCuCV,eAAsB,GACpB,EACA,EAA+B,EAAE,CACO,CACxC,GAAI,CAAC,OAAO,UAAU,EAAI,EAAI,EAAM,EAClC,MAAU,MAAM,wBAAwB,IAAM,CAEhD,GAAK,EAAQ,eAAiB,IAAA,KAAgB,EAAQ,cAAgB,IAAA,IACpE,MAAU,MAAM,yDAAyD,CAG3E,IAAM,EAAS,IAAI,gBAAgB,CAAE,IAAK,OAAO,EAAI,CAAE,CAAC,CACpD,EAAQ,QAAQ,EAAO,IAAI,SAAU,EAAQ,OAAO,CACpD,EAAQ,eAAiB,IAAA,IAAa,EAAQ,cAAgB,IAAA,KAChE,EAAO,IAAI,eAAgB,EAAQ,aAAa,CAChD,EAAO,IAAI,cAAe,EAAQ,YAAY,EAGhD,IAAM,EAAoB,EAAQ,SAAW,IAAA,GAAyC,EAAE,CAA/B,CAAE,OAAQ,EAAQ,OAAQ,CAC7E,EAAO,MAAM,MAAM,iBAAiB,EAAO,UAAU,GAAI,EAAK,CACpE,GAAI,EAAK,SAAW,IAAK,OAAO,KAChC,GAAI,CAAC,EAAK,GAAI,CACZ,IAAM,EAAO,MAAM,GAAc,EAAK,CAChC,EAAU,GAAM,QAClB,GAAG,EAAK,QAAQ,IAAI,EAAK,OAAO,GAChC,yBAAyB,EAAK,SAClC,MAAU,MAAM,EAAQ,CAE1B,OAAQ,MAAM,EAAK,MAAM,CAG3B,eAAe,GAAc,EAAsD,CACjF,GAAI,CACF,OAAQ,MAAM,EAAK,MAAM,MACnB,CACN,OAAO,MC1GX,IAAM,GAA2D,CAC/D,SAAU,KACV,QAAS,oCACT,QAAS,4CACV,CAED,SAAgB,GAAqB,CACnC,aACA,SACyC,CACzC,IAAM,EAAU,GAAgB,GAEhC,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAmB,kBAAiB,WAAnD,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,kCAA0B,EAAa,CAAA,EACvD,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,iCAAyB,GAAQ,EAAW,CAAQ,CAAA,CACnE,IAAW,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oCAA4B,EAAe,CAAA,CACnE,GAIV,SAAS,GAAQ,EAAiC,CAChD,OAAO,EAAM,OAAO,EAAE,CAAC,aAAa,CAAG,EAAM,MAAM,EAAE,CChBvD,SAAgB,GACd,EACA,EACuB,CACvB,IAAM,EAAkB,GAAwB,EAAK,MAAO,EAAG,MAAM,CAC/D,EAAe,EAAgB,MAAM,EAAA,GAA+B,CAE1E,MAAO,CACL,OACA,KACA,eACA,cAAe,KAAK,IAAI,EAAG,EAAgB,OAAS,EAAa,OAAO,CACxE,KAAM,EAAgB,SAAW,EACjC,WAAY,GAAkB,EAAK,WAAY,EAAG,WAAW,CAC9D,CAGH,SAAS,GAAwB,EAAe,EAAuB,CAkBrE,OAjBI,GAAwB,EAAK,EAAI,GAAwB,EAAG,CACvD,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,EAAK,CAAE,GAAG,OAAO,KAAK,EAAG,CAAC,CAAC,CAAC,CAAC,OACpE,GAAQ,GAAgB,EAAK,GAAK,GAAK,GAAgB,EAAG,GAAK,CACjE,CAGC,MAAM,QAAQ,EAAK,EAAI,MAAM,QAAQ,EAAG,CACtC,EAAK,SAAW,EAAG,OAIhB,EACJ,KAAK,EAAO,KAAW,CAAE,QAAO,QAAO,EAAE,CACzC,QAAQ,CAAE,QAAO,WAAY,GAAgB,EAAM,GAAK,GAAgB,EAAG,GAAO,CAAC,CACnF,KAAK,CAAE,WAAY,IAAI,EAAM,GAAG,CAN1B,CAAC,SAAS,CASd,GAAgB,EAAK,GAAK,GAAgB,EAAG,CAAG,EAAE,CAAG,CAAC,SAAS,CAGxE,SAAS,GAAwB,EAAkD,CACjF,OAAyB,OAAO,GAAU,YAAnC,GAA+C,CAAC,MAAM,QAAQ,EAAM,CAG7E,SAAS,GAAgB,EAAwB,CAC/C,GAAI,CACF,IAAM,EAAa,KAAK,UAAU,EAAM,CACxC,OAAO,IAAe,IAAA,GAAY,uCAAyC,OACrE,CACN,MAAO,wCAIX,SAAS,GAAkB,EAAwB,EAAwC,CAOzF,OANI,IAAS,YAAc,IAAO,WACzB,WAEL,IAAS,WAAa,IAAO,UACxB,UAEF,UC3CT,SAAgB,GAAuB,CACrC,SACA,cACA,aACA,iBACA,YAC+C,CAC/C,MAAO,CACL,GAAI,GAAG,EAAO,GAAG,EAAY,GAAG,EAAS,KAAK,GAAG,EAAS,MAC1D,SACA,cACA,aACA,iBACA,aAAc,EAAS,KACvB,YAAa,EAAS,IACtB,WAAY,EAAS,WACrB,gBAAiB,EAAS,gBAC1B,iBAAkB,EAAS,iBAC3B,oBAAqB,EAAS,oBAC9B,gBAAiB,EAAS,gBAC1B,cAAe,EAAS,cACxB,MAAO,EAAS,MACjB,CAGH,SAAgB,GACd,EACA,EAC6B,CAC7B,IAAM,EAAiB,EAAS,UAAW,GAAU,EAAM,KAAO,EAAK,GAAG,CAK1E,OAJI,GAAkB,EACb,EAAS,KAAK,EAAO,IAAW,IAAU,EAAiB,EAAO,EAAO,CAG3E,CAAC,GAAG,EAAU,EAAK,CAAC,MAAM,GAAyB,CAG5D,SAAgB,GACd,EACA,EAC6B,CAC7B,OAAO,EAAS,OAAQ,GAAU,EAAM,KAAO,EAAG,CAGpD,SAAgB,IAAsD,CACpE,MAAO,EAAE,CC/DX,SAAgB,GAAiB,CAC/B,SACA,WACA,WACqC,CACrC,IAAM,EAAa,GAAc,EAAO,CAExC,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,qBAAqB,aAAW,+BAAnD,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,+BAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,sBAAwB,CAAA,EAC5B,EAAA,EAAA,KAAC,IAAD,CAAA,SAAI,UAAU,EAAO,OAAO,IAAiC,CAAA,CACzD,CAAA,CAAA,CACL,EAAO,OAAS,IACf,EAAA,EAAA,KAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,yBAAyB,QAAS,WAAS,sBAElE,CAAA,CAEP,GAEL,EAAO,SAAW,GACjB,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,8BAAqB,8DAE9B,CAAA,EAEJ,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,6BACX,EAAO,IAAK,IACX,EAAA,EAAA,MAAC,KAAD,CAAmB,UAAU,6BAA7B,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6BAAf,EACE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,gBAAhB,CAAuB,IAAE,EAAM,YAAmB,IAClD,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAM,WAAkB,CAAA,EAC/B,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,GAAgB,EAAM,eAAe,CAAQ,CAAA,CAChD,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,+BAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAuB,EAAM,aAAoB,CAAA,EACjE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8BAAsB,EAAM,YAAmB,CAAA,CAC3D,IACN,EAAA,EAAA,KAAC,GAAD,CAAsB,WAAY,EAAM,WAAY,MAAM,aAAe,CAAA,EACzE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6BAAf,EACE,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAM,gBAAgB,eAAmB,CAAA,CAAA,EAChD,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,aAAW,EAAM,iBAAwB,CAAA,CAAA,EAC/C,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,YAAU,EAAM,oBAA2B,CAAA,CAAA,EACjD,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,gBAAc,EAAM,iBAAmB,IAAW,CAAA,CAAA,EACxD,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,cAAY,EAAM,eAAiB,IAAW,CAAA,CAAA,CAChD,IACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iCACb,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,yBACV,YAAe,EAAS,EAAM,GAAG,UAClC,sBAEQ,CAAA,CACL,CAAA,CACH,EA3BI,EAAM,GA2BV,CACL,CACC,CAAA,CAEN,IACC,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,mBAAmB,aAAW,6BAAjD,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mCAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,oBAAsB,CAAA,EAC1B,EAAA,EAAA,KAAC,GAAD,CACE,WAAY,EAAW,WACvB,MAAM,wBACN,CAAA,CACE,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mCAAf,EACE,EAAA,EAAA,KAAC,GAAD,CAAiB,MAAM,OAAO,MAAO,EAAW,KAAQ,CAAA,EACxD,EAAA,EAAA,KAAC,GAAD,CAAiB,MAAM,KAAK,MAAO,EAAW,GAAM,CAAA,CAChD,GACL,EAAW,aAAe,aACzB,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,oCAA2B,kFAEpC,CAAA,CAEL,EAAW,MACV,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,kCAAyB,iCAAkC,CAAA,EAExE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kCAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAsB,0BAA8B,CAAA,EACpE,EAAA,EAAA,KAAC,KAAD,CAAA,SACG,EAAW,aAAa,IAAK,IAC5B,EAAA,EAAA,KAAC,KAAD,CAAA,SAAgB,EAAU,CAAjB,EAAiB,CAC1B,CACC,CAAA,CACJ,EAAW,cAAgB,IAAK,EAAA,EAAA,KAAC,IAAD,CAAA,SAAI,OAAO,EAAW,cAAc,OAAW,CAAA,CAC5E,GAEA,GAEJ,GAId,SAAS,GAAc,EAAqC,CAC1D,GAAI,EAAO,SAAA,EACT,OAAO,KAGT,GAAM,CAAC,EAAM,GAAM,EAKnB,MAJI,CAAC,GAAQ,CAAC,EACL,KAGF,GAAyB,EAAM,EAAG,CAG3C,SAAS,GAAgB,CACvB,QACA,SAIc,CACd,OACE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAuB,GAAG,EAAM,IAAI,EAAM,cAAqB,CAAA,EAC/E,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAM,WAAkB,CAAA,EAC/B,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CACG,EAAM,aAAa,KAAC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8BAAsB,EAAM,YAAmB,CAAA,CAC/E,CAAA,CAAA,CACH,CAAA,CAAA,CAIV,SAAS,GAAgB,EAAoB,CAE3C,OADK,OAAO,SAAS,EAAG,CACjB,IAAI,KAAK,EAAG,CAAC,gBAAgB,CADH,eChInC,SAAgB,GAAc,CAAE,cAAa,WAAU,UAA2C,CAChG,GAAM,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,GAAM,CACjC,GAAA,EAAA,EAAA,QAAiC,KAAK,EAE5C,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,EAAM,OACX,SAAS,EAAQ,EAAe,CAC1B,EAAQ,SAAW,CAAC,EAAQ,QAAQ,SAAS,EAAE,OAAe,EAChE,EAAQ,GAAM,CAIlB,OADA,SAAS,iBAAiB,YAAa,EAAQ,KAClC,SAAS,oBAAoB,YAAa,EAAQ,EAC9D,CAAC,EAAK,CAAC,CAEV,eAAe,EAAW,EAA0B,CAClD,EAAQ,GAAM,CACd,IAAM,EAAO,GAAY,CACzB,GAAI,CACF,MAAM,GAAS,EAAK,CACpB,EAAO,UAAU,EAAK,OAAO,QAAS,GAAK,MACrC,CACN,EAAO,yCAA0C,GAAM,EAU3D,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,IAAK,EAAS,UAAU,2BAA7B,EACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,gBAAc,OACd,gBAAe,EACf,YAAe,EAAS,GAAY,CAAC,EAAQ,CAC7C,UAAU,6BALZ,CAMC,eACY,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,GAAM,CAAA,CAC7B,GACR,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,OAAO,UAAU,gCACxB,CAlBP,CAAE,MAAO,sBAAuB,WAAc,GAAe,EAAS,MAAM,CAAE,CAC9E,CAAE,MAAO,yBAA0B,WAAc,GAAe,EAAS,MAAO,EAAE,CAAE,CACpF,CAAE,MAAO,qBAAsB,WAAc,GAAkB,EAAa,EAAS,CAAE,CAgBhF,CAAU,IAAK,IACd,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,WACL,KAAK,SACL,YAAe,EAAW,EAAK,OAAO,CACtC,UAAU,gCAET,EAAK,MACC,CAPF,EAAK,MAOH,CACT,CACE,CAAA,CAEJ,GAIV,SAAS,GAAe,EAAgB,EAAwB,CAC9D,GAAI,CACF,OAAO,KAAK,UAAU,EAAO,KAAM,EAAM,MACnC,CACN,MAAO,wCAIX,SAAS,GAAkB,EAAqB,EAA2C,CACzF,MAAO,CACL,WAAW,IACX,YAAY,EAAS,KAAK,GAAG,EAAS,MACtC,cAAc,EAAS,aACvB,eAAe,EAAS,YAAY,SACpC,kBAAkB,EAAS,mBAC3B,qBAAqB,EAAS,sBAC9B,eAAe,EAAS,iBAAmB,MAC3C,iBAAiB,EAAS,eAAiB,MAC5C,CAAC,KAAK;EAAK,CC7Ed,SAAgB,GAAsB,CACpC,uBACA,sBACA,UACA,SAC0C,CAC1C,IAAM,EAAiB,EAAqB,OAAS,GAAK,EAAoB,OAAS,EAEvF,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,oBAAoB,aAAW,8BAAlD,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oCAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,qBAAuB,CAAA,EAC3B,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,SACG,EAAM,IAAM,MAAQ,OAAO,MAAI,EAAM,KAAK,IAAE,EAAM,WACpD,CAAA,CAAA,EACP,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAQ,OAAO,kBAAsB,CAAA,CAAA,CACxC,GACJ,GAGA,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oCAAf,EACE,EAAA,EAAA,KAAC,GAAD,CAAiB,MAAM,YAAY,YAAa,EAAwB,CAAA,EACxE,EAAA,EAAA,KAAC,GAAD,CAAiB,MAAM,oBAAoB,YAAa,EAAuB,CAAA,CAC3E,IALN,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,mCAA0B,8CAA+C,CAAA,CAOhF,GAId,SAAS,GAAgB,CACvB,QACA,eAIc,CAUd,OATI,EAAY,SAAW,GAEvB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kCAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAW,CAAA,EAChB,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,mCAA0B,kBAAmB,CAAA,CACtD,IAKR,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kCAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAW,CAAA,EAChB,EAAA,EAAA,KAAC,KAAD,CAAA,SACG,EAAY,IAAK,IAChB,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,EAGE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,iCAAhB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,gBAAe,EAAW,kBAAW,EAAW,SAAgB,CAAA,EACtE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAW,KAAY,CAAA,CAC7B,EAAW,WAAa,OAAQ,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,UAAQ,EAAW,SAAgB,CAAA,CAAA,CACrE,IACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oCAA4B,EAAW,QAAe,CAAA,CACnE,CAAA,CARE,GAAG,EAAM,GAAG,EAAW,KAAK,GAAG,EAAW,UAAY,OAAO,GAAG,EAAW,UAQ7E,CACL,CACC,CAAA,CACD,GC9DV,SAAgB,GACd,EACqC,CACrC,OAAO,EAAS,OAAS,QAAU,EAAS,OAAS,WAAa,EAAS,OAAS,WAGtF,SAAgB,GAAiB,EAA2C,CAC1E,MAAO,GAAG,EAAS,KAAK,QAAQ,EAAS,MAG3C,SAAgB,GACd,EACgC,CAChC,IAAM,EAAa,EAAU,OAAO,GAAqB,CACzD,OAAO,EAAW,KAAM,GAAa,EAAS,aAAe,WAAW,EAAI,EAAW,IAAM,KAG/F,SAAgB,GAAsB,CACpC,YACA,cACA,YAC0C,CAC1C,OACE,EAAA,EAAA,MAAC,WAAD,CAAU,UAAU,mCAApB,EACE,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,+BAAsB,YAAkB,CAAA,EAC1D,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,+BACZ,EAAU,IAAK,GAAa,CAC3B,IAAM,EAAM,GAAiB,EAAS,CAChC,EAAa,GAAqB,EAAS,CAC3C,EAAW,GAAc,IAAQ,EACjC,EAAQ,GAAG,EAAS,KAAK,GAAG,EAAS,IAAI,GAAG,EAAS,WAAW,cAAc,EAAS,gBAAgB,cAe7G,OAbK,GAcH,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,SACL,UAAU,wBACV,eAAc,EACd,aAAY,EACZ,YAAe,EAAS,EAAS,WAEjC,EAAA,EAAA,KAAC,GAAD,CAAyB,WAAY,CAAA,CAC9B,CARF,EAQE,EArBP,EAAA,EAAA,MAAC,MAAD,CAEE,UAAU,uDACV,gBAAc,gBAHhB,EAKE,EAAA,EAAA,KAAC,GAAD,CAAyB,WAAY,CAAA,EACrC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sCAA6B,mBAAuB,CAAA,CAChE,EANC,EAMD,EAgBV,CACE,CAAA,CACG,GAIf,SAAS,GAAc,CAAE,YAAyE,CAChG,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,+BAAhB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+BAAuB,EAAS,KAAY,CAAA,EAC5D,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8BAAsB,EAAS,IAAW,CAAA,CACrD,IACP,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,+BAAhB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,kBAAiB,EAAS,oBAAa,EAAS,WAAkB,CAAA,EACxE,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAS,gBAAgB,eAAmB,CAAA,CAAA,CAC9C,GACN,CAAA,CAAA,CCjFP,SAAgB,GAAiB,CAAE,YAAgD,CACjF,IAAM,EAAQ,GAAmB,EAAS,MAAM,CAEhD,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qBAAqB,cAAY,8BAAhD,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iCAAwB,sHAGjC,CAAA,EACJ,EAAA,EAAA,MAAC,KAAD,CAAI,UAAU,8BAAd,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,WAAa,CAAA,EACjB,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,CACG,EAAS,KAAK,KAAC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8BAAsB,EAAS,IAAW,CAAA,CACvE,CAAA,CAAA,EACL,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,aAAe,CAAA,EACnB,EAAA,EAAA,KAAC,KAAD,CAAI,kBAAiB,EAAS,oBAAa,EAAS,WAAgB,CAAA,EACpE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,iBAAmB,CAAA,EACvB,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,CAAI,IAAE,EAAS,iBAAsB,CAAA,CAAA,EACrC,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,qBAAuB,CAAA,EAC3B,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,CAAI,IAAE,EAAS,oBAAyB,CAAA,CAAA,EACxC,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,oBAAsB,CAAA,EAC1B,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAS,iBAAmB,IAAS,CAAA,EAC1C,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,uBAAyB,CAAA,EAC7B,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAS,eAAiB,IAAS,CAAA,EACxC,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,cAAgB,CAAA,EACpB,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAS,YAAY,OAAY,CAAA,EACtC,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,kBAAoB,CAAA,EACxB,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAM,QAAa,CAAA,CACrB,GACJ,EAAM,QAAQ,OAAS,IACtB,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,sBAAsB,aAAW,gCAC5C,EAAM,QAAQ,IAAK,IAClB,EAAA,EAAA,KAAC,KAAD,CAAA,SAAkB,EAAY,CAArB,EAAqB,CAC9B,CACC,CAAA,CAEH,GAIV,SAAS,GAAmB,EAAwD,CAClF,GAAI,MAAM,QAAQ,EAAM,CACtB,MAAO,CAAE,QAAS,cAAc,EAAM,OAAO,QAAS,QAAS,EAAE,CAAE,CAErE,GAAI,GAAS,OAAO,GAAU,SAAU,CACtC,IAAM,EAAO,OAAO,KAAK,EAAiC,CAC1D,MAAO,CACL,QAAS,eAAe,EAAK,OAAO,iBACpC,QAAS,EAAK,MAAM,EAAG,GAAG,CAC3B,CAMH,OAJI,IAAU,KACL,CAAE,QAAS,OAAQ,QAAS,EAAE,CAAE,CAGlC,CAAE,QAAS,GAAG,OADD,EACM,IAAI,GAAa,EAAM,GAAI,QAAS,EAAE,CAAE,CAGpE,SAAS,GAAa,EAAwB,CAC5C,IAAM,OAAc,CAClB,GAAI,CACF,OAAO,KAAK,UAAU,EAAM,MACtB,CACN,OAAO,OAAO,EAAM,KAEpB,CACJ,OAAO,EAAK,OAAS,GAAK,GAAG,EAAK,MAAM,EAAG,GAAG,CAAC,KAAO,ECrBxD,IAAM,GAAwB,CAAE,OAAQ,OAAQ,KAAM,KAAM,MAAO,KAAM,CACnE,GAAyC,CAAE,OAAQ,OAAQ,KAAM,KAAM,MAAO,KAAM,CAE1F,SAAgB,GAAoB,CAClC,MACA,SACA,aAAa,gBACb,iBAAiB,IACjB,aAAc,EACd,wBACwC,CACxC,GAAM,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,GAAM,CACjC,CAAC,EAAW,IAAA,EAAA,EAAA,UAAoC,GAAW,CAC3D,CAAC,EAAa,IAAA,EAAA,EAAA,UAA0C,KAAK,CAC7D,CAAC,EAAmB,IAAA,EAAA,EAAA,UACI,GAAoB,CAC5C,CAAC,EAAmB,IAAA,EAAA,EAAA,UAA8D,EAAE,CAAC,CACrF,EAAe,GAA0B,EACzC,EAAkB,GAAwB,EAC1C,CAAC,EAAU,IAAA,EAAA,EAAA,UAAkC,UAAU,CACvD,CAAC,EAAO,IAAA,EAAA,EAAA,UAA4E,KAAK,CACzF,GAAA,EAAA,EAAA,QAA0C,KAAK,CAC/C,GAAA,EAAA,EAAA,QAAkD,KAAK,CACvD,EAAa,GAAG,EAAI,QAAQ,GAAU,KACtC,IAAA,EAAA,EAAA,QAA2B,EAAW,CACtC,IAAA,EAAA,EAAA,QAAuB,EAAO,CAE9B,GAAA,EAAA,EAAA,aACJ,KAAO,IAAsC,CACvC,EAAiB,SAAS,EAAiB,QAAQ,OAAO,CAC9D,IAAM,EAAa,IAAI,gBACvB,EAAiB,QAAU,EAC3B,EAAqB,CAAE,OAAQ,UAAW,KAAM,KAAM,MAAO,KAAM,CAAC,CAEpE,GAAI,CACF,IAAM,EAAO,MAAM,GAAa,EAAK,CACnC,SACA,aAAc,EAAS,KACvB,YAAa,EAAS,IACtB,OAAQ,EAAW,OACpB,CAAC,CACF,GAAI,EAAW,OAAO,QAAS,OAC3B,GAAM,kBACR,EAAc,GACZ,EAAQ,SAAW,KACf,CAAE,OAAQ,KAAM,KAAM,CAAE,GAAG,EAAM,UAAW,EAAQ,KAAK,UAAW,CAAE,MAAO,KAAM,CACnF,CAAE,OAAQ,KAAM,OAAM,MAAO,KAAM,CACxC,CACD,EAAqB,CAAE,OAAQ,KAAM,KAAM,EAAK,iBAAkB,MAAO,KAAM,CAAC,EAEhF,EAAqB,CACnB,OAAQ,QACR,KAAM,KACN,MAAO,oBAAoB,EAAS,KAAK,0BAA0B,EAAS,IAAI,GACjF,CAAC,OAEG,EAAK,CACZ,GAAI,EAAW,OAAO,QAAS,OAE/B,EAAqB,CAAE,OAAQ,QAAS,KAAM,KAAM,MADpC,aAAe,MAAQ,EAAI,QAAU,OAAO,EAAI,CACI,CAAC,GAGzE,CAAC,EAAK,EAAO,CACd,CAEK,GAAA,EAAA,EAAA,aAA2B,SAAY,CACvC,EAAS,SAAS,EAAS,QAAQ,OAAO,CAC1C,EAAiB,SAAS,EAAiB,QAAQ,OAAO,CAC9D,IAAM,EAAa,IAAI,gBACvB,EAAS,QAAU,EACnB,EAAa,CAAE,OAAQ,UAAW,KAAM,KAAM,MAAO,KAAM,CAAC,CAC5D,EAAe,KAAK,CACpB,EAAqB,GAAoB,CAEzC,GAAI,CACF,IAAM,EAAO,MAAM,GAAa,EAAK,CAAE,SAAQ,OAAQ,EAAW,OAAQ,CAAC,CAC3E,GAAI,EAAW,OAAO,QAAS,OAC/B,GAAI,IAAS,KACX,EAAa,CACX,OAAQ,QACR,KAAM,KACN,MAAO,UAAU,EAAI,+CACtB,CAAC,KACG,CACL,EAAa,CAAE,OAAQ,KAAM,OAAM,MAAO,KAAM,CAAC,CACjD,IAAM,EAAkB,GAAsB,EAAK,UAAU,CAC7D,EAAe,EAAkB,GAAiB,EAAgB,CAAG,KAAK,CAC1E,EAAY,UAAU,CAClB,GACG,EAAqB,EAAgB,QAGvC,EAAK,CACZ,GAAI,EAAW,OAAO,QAAS,OAE/B,EAAa,CAAE,OAAQ,QAAS,KAAM,KAAM,MAD5B,aAAe,MAAQ,EAAI,QAAU,OAAO,EAAI,CACJ,CAAC,GAE9D,CAAC,EAAK,EAAQ,EAAqB,CAAC,EAEvC,EAAA,EAAA,eAAgB,CACV,GAAkB,UAAY,IAClC,GAAkB,QAAU,EAC5B,EAAQ,GAAM,CACd,EAAa,GAAW,CACxB,EAAe,KAAK,CACpB,EAAqB,GAAoB,CACzC,EAAY,UAAU,CAClB,EAAS,SAAS,EAAS,QAAQ,OAAO,CAC1C,EAAiB,SAAS,EAAiB,QAAQ,OAAO,GAC7D,CAAC,EAAW,CAAC,EAEhB,EAAA,EAAA,eAAgB,CACV,GAAc,UAAY,IAC9B,GAAc,QAAU,EACxB,EAAgB,IAAwB,CAAC,GACxC,CAAC,EAAQ,EAAgB,CAAC,EAE7B,EAAA,EAAA,mBACe,CACP,EAAS,SAAS,EAAS,QAAQ,OAAO,CAC1C,EAAiB,SAAS,EAAiB,QAAQ,OAAO,EAE/D,EAAE,CAAC,CAEN,SAAS,IAAmB,CAC1B,EAAS,IACF,GAAc,GAAc,CAC1B,CAAC,GACR,CAGJ,SAAS,IAAoB,CACtB,GAAc,CAGrB,SAAS,GAAqB,EAAyC,CACrE,EAAe,GAAiB,EAAS,CAAC,CAC1C,EAAY,UAAU,CACjB,EAAqB,EAAS,CAGrC,SAAS,GAAoB,EAAmE,CACzF,GAQL,EAAgB,GAAuB,EAPzB,GAAuB,CACnC,SACA,YAAa,EACb,aACA,iBACA,WACD,CACoD,CAAM,CAAC,CAG9D,OACE,EAAA,EAAA,MAAC,UAAD,CACE,cAAY,wBACZ,aAAW,gCACX,UAAU,2BAHZ,EAKE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kCAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,sBAAwB,CAAA,EAC5B,EAAA,EAAA,MAAC,IAAD,CAAA,SAAA,CAAG,kCAAgC,EAAI,IAAK,CAAA,CAAA,CACxC,CAAA,CAAA,EACN,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,GACT,gBAAe,EACf,UAAU,+BACX,sBAEQ,CAAA,CACL,GAEL,IACC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gCAAf,CACG,EAAU,SAAW,YACpB,EAAA,EAAA,MAAC,MAAD,CAAK,cAAY,0BAA0B,UAAU,+BAArD,EACE,EAAA,EAAA,KAAC,GAAD,CAAS,KAAM,GAAI,UAAU,OAAS,CAAA,CAAA,wCAElC,GAGP,EAAU,SAAW,UACpB,EAAA,EAAA,MAAC,MAAD,CAAK,cAAY,wBAAwB,UAAU,uBAAnD,EACE,EAAA,EAAA,KAAC,IAAD,CAAA,SAAI,EAAU,MAAU,CAAA,EACxB,EAAA,EAAA,KAAC,SAAD,CAAQ,KAAK,SAAS,QAAS,GAAa,UAAU,kCAAyB,qBAEtE,CAAA,CACL,GAGP,EAAU,SAAW,OACpB,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,GAAD,CAAsB,KAAM,EAAU,KAAQ,CAAA,CAC7C,EAAU,KAAK,UAAU,SAAW,GACnC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,cAAc,cAAY,iCAAwB,4CAE3D,CAAA,EAEN,EAAA,EAAA,KAAC,GAAD,CACE,UAAW,EAAU,KAAK,UACb,cACb,SAAU,GACV,CAAA,EAEJ,EAAA,EAAA,KAAC,GAAD,CACE,YAAa,EAAU,KAAK,YAC5B,UAAW,EACX,UAAW,EACX,YAAa,EACb,QAAS,EAAS,IAAO,EAAS,CAAE,UAAS,KAAM,EAAK,UAAY,QAAS,CAAC,CAC9E,MAAO,GACP,CAAA,EACF,EAAA,EAAA,KAAC,GAAD,CACE,qBAAsB,EAAU,KAAK,YACrC,oBACE,EAAkB,SAAW,KAAO,EAAkB,KAAK,YAAc,EAAE,CAE7E,QAAS,EAAU,KAAK,QACxB,MAAO,EAAU,KAAK,MACtB,CAAA,EACF,EAAA,EAAA,KAAC,GAAD,CACE,OAAQ,EACR,SAAW,GAAO,EAAgB,GAAuB,EAAc,EAAG,CAAC,CAC3E,YAAe,EAAgB,IAAwB,CAAC,CACxD,CAAA,CACD,CAAA,CAAA,CAED,GAEP,IACC,EAAA,EAAA,KAAC,GAAD,CAA4C,QAAS,EAAM,QAAS,KAAM,EAAM,KAAQ,CAAxE,EAAM,QAAU,KAAK,KAAK,CAA8C,CAElF,GAId,SAAS,GAAqB,CAAE,QAAgE,CAC9F,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,cAAY,2BAA2B,UAAU,kCAAtD,EACE,EAAA,EAAA,KAAC,GAAD,CAAsB,WAAY,EAAK,WAAY,MAAM,uBAAyB,CAAA,EAClF,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,SAAW,CAAA,EACf,EAAA,EAAA,MAAC,KAAD,CAAA,SAAA,CAAI,IAAE,EAAK,YAAiB,CAAA,CAAA,EAC5B,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,aAAe,CAAA,EACnB,EAAA,EAAA,KAAC,KAAD,CAAI,kBAAiB,EAAK,oBAAa,EAAK,WAAgB,CAAA,EAC5D,EAAA,EAAA,KAAC,KAAD,CAAA,SAAI,YAAc,CAAA,EAClB,EAAA,EAAA,KAAC,KAAD,CAAA,SAAK,EAAK,UAAU,OAAY,CAAA,CAC7B,CAAA,CAAA,CACD,GAIV,SAAS,GAAmB,CAC1B,cACA,YACA,YACA,cACA,SACA,SAQqB,CACrB,GAAI,EAAU,SAAW,OAAQ,OAAO,KACxC,GAAI,EAAU,SAAW,UACvB,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,cAAY,yBAAyB,UAAU,+BAApD,EACE,EAAA,EAAA,KAAC,GAAD,CAAS,KAAM,GAAI,UAAU,OAAS,CAAA,CAAA,mCAElC,GAGV,GAAI,EAAU,SAAW,QACvB,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,cAAY,uBAAuB,UAAU,wBAChD,EAAA,EAAA,KAAC,IAAD,CAAA,SAAI,EAAU,MAAU,CAAA,CACpB,CAAA,CAIV,IAAM,EAAW,EAAU,KAC3B,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAmB,cAAY,4BAA9C,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6BAAf,EACE,EAAA,EAAA,KAAC,GAAD,CAAsB,WAAY,EAAS,WAAY,MAAM,oBAAsB,CAAA,EACnF,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,oBAAoB,YAAe,EAAM,EAAS,UAAE,kBAE3E,CAAA,EACT,EAAA,EAAA,KAAC,GAAD,CAA4B,cAAuB,WAAkB,SAAU,CAAA,CAC3E,GACF,IACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,aAAa,KAAK,UAAU,aAAW,qCAClD,CAAC,UAAW,SAAU,MAAM,CAAW,IAAK,IAC5C,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,SACL,KAAK,MACL,gBAAe,IAAc,EAC7B,UAAU,YACV,YAAe,EAAY,EAAI,UAE9B,IAAQ,UAAY,UAAY,IAAQ,SAAW,cAAgB,WAC7D,CARF,EAQE,CACT,CACE,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iBAAiB,KAAK,oBAArC,CACG,IAAc,YAAa,EAAA,EAAA,KAAC,GAAD,CAA4B,WAAY,CAAA,CACnE,IAAc,WACb,EAAA,EAAA,KAAC,GAAD,CAAgB,KAAM,EAAS,MAAO,cAAiB,EAAY,MAAM,CAAI,CAAA,CAE9E,IAAc,QAAS,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,EAAS,MAAS,CAAA,CACzD,GACF,GCpUV,SAAgB,GAAY,CAC1B,mBAAmB,IACC,EAAE,CAAsB,CAC5C,IAAM,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAS,EAAa,GAAM,EAAE,OAAO,CACrC,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAiB,EAAa,GAAM,EAAE,eAAe,CAErD,CAAC,EAAW,IAAA,EAAA,EAAA,UAAoC,CACpD,OAAQ,OACR,OAAQ,KACR,MAAO,KACR,CAAC,CACI,CAAC,EAAW,IAAA,EAAA,EAAA,UAA2C,SAAS,CAChE,CAAC,EAAc,IAAA,EAAA,EAAA,UAAyD,EAAE,CAAC,CAC3E,CAAC,EAAO,IAAA,EAAA,EAAA,UAA4E,KAAK,CACzF,GAAA,EAAA,EAAA,QAAkB,EAAE,CACpB,GAAA,EAAA,EAAA,QAA0C,KAAK,CAC/C,GAAA,EAAA,EAAA,QAAyB,EAAO,CAEhC,GAAA,EAAA,EAAA,aAAmB,MAAO,EAAa,IAAgC,CAEvE,EAAS,SACX,EAAS,QAAQ,OAAO,CAE1B,IAAM,EAAa,IAAI,gBACvB,EAAS,QAAU,EAEnB,EAAa,CAAE,OAAQ,UAAW,OAAQ,KAAM,MAAO,KAAM,CAAC,CAE9D,GAAI,CACF,IAAM,EAAS,MAAM,GAAW,EAAK,EAAW,OAAQ,EAAa,CACrE,GAAI,EAAW,OAAO,QAAS,OAE7B,EADE,IAAW,KACA,CAAE,OAAQ,QAAS,OAAQ,KAAM,MAAO,UAAU,EAAI,kBAAmB,CAEzE,CAAE,OAAQ,KAAM,SAAQ,MAAO,KAAM,CAAC,OAE9C,EAAK,CACZ,GAAI,EAAW,OAAO,QAAS,OAE/B,EAAa,CAAE,OAAQ,QAAS,OAAQ,KAAM,MADlC,aAAe,MAAQ,EAAI,QAAU,OAAO,EAAI,CACF,CAAC,GAE5D,EAAE,CAAC,EAEN,EAAA,EAAA,eAAgB,CACd,GAAI,IAAgB,KAAM,CACxB,EAAa,CAAE,OAAQ,OAAQ,OAAQ,KAAM,MAAO,KAAM,CAAC,CACvD,EAAS,SAAS,EAAS,QAAQ,OAAO,CAC9C,OAGF,OADK,EAAK,EAAa,EAAO,KACjB,CACP,EAAS,SAAS,EAAS,QAAQ,OAAO,GAE/C,CAAC,EAAa,EAAQ,EAAK,CAAC,EAE/B,EAAA,EAAA,eAAgB,CACV,EAAgB,UAAY,IAChC,EAAgB,QAAU,EAC1B,EAAgB,IAAwB,CAAC,GACxC,CAAC,EAAO,CAAC,CAEZ,SAAS,GAAc,CACjB,IAAgB,OAClB,EAAS,SAAW,EACf,EAAK,EAAa,EAAO,EAKlC,GAAI,IAAgB,KAClB,OACE,EAAA,EAAA,MAAC,QAAD,CACE,cAAY,eACZ,aAAW,eACX,MAAO,CACL,SAAU,WACV,KAAM,OAAO,EAAY,IACzB,MAAO,GAAG,EAAY,IACtB,OAAQ,OACR,UAAW,EACX,QAAS,OACT,cAAe,SACf,WAAY,uBACZ,WAAY,EAAmB,uCAAyC,IACxE,SAAU,SACX,UAdH,CAgBG,IACC,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,EACP,SAAU,EACV,IAAA,IACA,IAAA,IACA,CAAA,EAEJ,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,KAAM,EACN,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,IAAK,iBACL,QAAS,iBACT,MAAO,0BACP,UAAW,SACZ,UAXH,EAaE,EAAA,EAAA,KAAC,KAAD,CACE,MAAO,CACL,OAAQ,EACR,SAAU,2BACV,WAAY,mBACZ,WAAY,yBACZ,MAAO,oBACR,UACF,oBAEI,CAAA,EACL,EAAA,EAAA,KAAC,IAAD,CACE,MAAO,CACL,OAAQ,EACR,SAAU,4BACV,WAAY,mBACb,UACF,uDAEG,CAAA,CACA,GACA,GAKZ,GAAI,EAAU,SAAW,UACvB,OACE,EAAA,EAAA,MAAC,QAAD,CACE,cAAY,eACZ,aAAW,eACX,MAAO,CACL,SAAU,WACV,KAAM,OAAO,EAAY,IACzB,MAAO,GAAG,EAAY,IACtB,OAAQ,OACR,UAAW,EACX,QAAS,OACT,cAAe,SACf,WAAY,uBACZ,WAAY,EAAmB,uCAAyC,IACxE,SAAU,SACX,UAdH,CAgBG,IACC,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,EACP,SAAU,EACV,IAAA,IACA,IAAA,IACA,CAAA,EAEJ,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,iBACZ,MAAO,CACL,KAAM,EACN,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,IAAK,iBACL,MAAO,0BACP,WAAY,mBACZ,SAAU,sBACX,UAXH,EAaE,EAAA,EAAA,KAAC,GAAD,CAAS,KAAM,GAAI,MAAO,CAAE,UAAW,0BAA2B,CAAI,CAAA,mBACtD,EAAY,IACxB,GACA,GAKZ,GAAI,EAAU,SAAW,QACvB,OACE,EAAA,EAAA,MAAC,QAAD,CACE,cAAY,eACZ,aAAW,eACX,MAAO,CACL,SAAU,WACV,KAAM,OAAO,EAAY,IACzB,MAAO,GAAG,EAAY,IACtB,OAAQ,OACR,UAAW,EACX,QAAS,OACT,cAAe,SACf,WAAY,uBACZ,WAAY,EAAmB,uCAAyC,IACxE,SAAU,SACX,UAdH,CAgBG,IACC,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,EACP,SAAU,EACV,IAAA,IACA,IAAA,IACA,CAAA,EAEJ,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,eACZ,MAAO,CACL,KAAM,EACN,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,IAAK,iBACL,QAAS,iBACT,MAAO,0BACP,UAAW,SACZ,UAZH,EAcE,EAAA,EAAA,KAAC,IAAD,CACE,MAAO,CACL,OAAQ,EACR,MAAO,2BACP,WAAY,mBACZ,SAAU,sBACX,UAEA,EAAU,OAAS,wBAClB,CAAA,EACJ,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,8BACZ,OAAQ,uCACR,aAAc,MACd,MAAO,oBACP,OAAQ,UACR,WAAY,mBACZ,SAAU,sBACV,QAAS,gCACV,UACF,sBAEQ,CAAA,CACL,GACA,GAKZ,IAAM,EAAS,EAAU,OACzB,GAAI,CAAC,EAAQ,OAAO,KAEpB,IAAM,EAAQ,EAAO,MACf,EAAY,EAAO,KACnB,EAAM,IAAgB,KAAqC,KAA7B,EAAK,IAAgB,KACnD,EAAgB,GAAK,eAAiB,GAItC,EAAc,GAAK,QAAU,EAAO,OACpC,GAAgB,GAAK,WAAa,EAAO,UAE/C,OACE,EAAA,EAAA,MAAC,QAAD,CACE,cAAY,eACZ,aAAW,eACX,MAAO,CACL,SAAU,WACV,KAAM,OAAO,EAAY,IACzB,MAAO,GAAG,EAAY,IACtB,OAAQ,OACR,UAAW,EACX,QAAS,OACT,cAAe,SACf,WAAY,uBACZ,WAAY,EAAmB,uCAAyC,IACxE,SAAU,SACX,UAdH,CAgBG,IACC,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,EACP,SAAU,EACV,IAAA,IACA,IAAA,IACA,CAAA,CAIH,IACC,EAAA,EAAA,KAAC,GAAD,CACE,GAAK,GAAK,YAAc,MAAQ,GAAK,YAAc,IAAA,GAC/C,CAAE,KAAM,EAAI,UAAW,CACvB,EAAE,CACN,CAAA,EAIJ,EAAA,EAAA,KAAC,GAAD,CAAsB,QAAO,UAAW,GAAe,OAAQ,EAAc,CAAA,EAG7E,EAAA,EAAA,KAAC,GAAD,CACE,WAAY,EACL,QACI,YACX,QAAS,EAAO,QAChB,UAAW,GACX,OAAQ,EACR,CAAA,CAGD,IAAO,EAAA,EAAA,KAAC,GAAD,CAAoB,MAAK,SAAU,EAAS,CAAA,EAGpD,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,uBACZ,MAAO,CACL,KAAM,EACN,UAAW,EACX,SAAU,OACV,QAAS,OACT,cAAe,SAChB,UARH,EAUE,EAAA,EAAA,KAAC,GAAD,CACE,IAAK,EACG,SACR,WAAY,EAAM,QAAU,EAAM,YAAc,EAAM,KACtD,eAAgB,EAAM,GACR,eACd,qBAAsB,EACtB,CAAA,EAGF,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,aAAc,iBACd,aAAc,gCACd,SAAU,SACV,IAAK,EACL,WAAY,uBACZ,OAAQ,EACT,UAXH,EAaE,EAAA,EAAA,KAAC,GAAD,CAAY,OAAQ,EAAW,SAAU,EAAgB,CAAA,EACzD,EAAA,EAAA,KAAC,GAAD,CACS,QACI,YACX,QAAS,EAAO,QAChB,UAAW,GACX,OAAQ,EACR,QAAS,EAAK,IAAO,EAAS,CAAE,QAAS,EAAK,KAAM,EAAK,UAAY,QAAS,CAAC,CAC/E,CAAA,CACE,IAGN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,UACrE,IAAc,UACb,EAAA,EAAA,KAAC,GAAD,CAAgB,KAAM,EAAM,IAAK,cAAiB,EAAa,MAAM,CAAI,CAAA,EAEzE,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,EAAM,IAAO,CAAA,CAE9B,CAAA,EAGN,EAAA,EAAA,KAAC,GAAD,EAAkB,CAAA,CACd,GAGL,IACC,EAAA,EAAA,KAAC,GAAD,CAA4C,QAAS,EAAM,QAAS,KAAM,EAAM,KAAQ,CAAxE,EAAM,QAAU,KAAK,KAAK,CAA8C,CAEpF,GCpaZ,SAAgB,GAAW,CAAE,QAAO,YAAW,aAA2C,CACxF,OACE,EAAA,EAAA,MAAC,OAAD,CACE,MAAO,CACL,QAAS,cACT,WAAY,SACZ,IAAK,iBACL,OAAQ,GACR,YAAa,iBACb,aAAc,iBACd,WAAY,8BACZ,OAAQ,qCACR,aAAc,EACd,MAAO,uBACP,WAAY,mBACZ,SAAU,4BACV,WAAY,SACb,UAfH,EAiBE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAa,CAAA,EACpB,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,aAAY,EACZ,QAAS,EACT,MAAO,CACL,QAAS,OACT,WAAY,SACZ,WAAY,OACZ,OAAQ,OACR,OAAQ,UACR,MAAO,4BACP,QAAS,MACT,aAAc,EACd,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,iCAEzD,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,QAEzD,aAAe,GAAM,CAClB,EAAE,cAAoC,MAAM,MAAQ,4BAEvD,aAAe,GAAM,CAClB,EAAE,cAAoC,MAAM,MAAQ,uCAGvD,EAAA,EAAA,KAAC,GAAD,CAAG,KAAM,GAAM,CAAA,CACR,CAAA,CACJ,GCtDX,SAAgB,IAAwC,CACtD,IAAM,EAAU,EAAa,GAAM,EAAE,QAAQ,CACvC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAe,EAAa,GAAM,EAAE,aAAa,CAIvD,GAFoB,EAAe,EAAQ,CAE1B,OAAO,KAExB,IAAM,EAAuB,EAAE,CAgB/B,IAAK,GAAM,CAAE,MAAK,WAAY,CAT5B,CAAE,IAAK,YAAa,OAAQ,MAAO,CACnC,CAAE,IAAK,OAAQ,OAAQ,OAAQ,CAC/B,CAAE,IAAK,SAAU,OAAQ,SAAU,CACnC,CAAE,IAAK,aAAc,OAAQ,SAAU,CACvC,CAAE,IAAK,UAAW,OAAQ,UAAW,CACrC,CAAE,IAAK,OAAQ,OAAQ,OAAQ,CAC/B,CAAE,IAAK,SAAU,OAAQ,SAAU,CAGP,CAAa,CACzC,IAAM,EAAO,EAAQ,GACjB,MAAC,GAAQ,EAAK,SAAW,GAC7B,IAAK,IAAM,KAAO,EAChB,EAAM,MACJ,EAAA,EAAA,KAAC,GAAD,CAEE,MAAO,GAAG,EAAO,IAAI,IACrB,UAAW,iBAAiB,EAAO,IAAI,IACvC,cAAiB,CACf,EACE,EACA,EAAK,OAAQ,GAAM,IAAM,EAAI,CAC9B,EAEH,CATK,GAAG,EAAI,GAAG,IASf,CACH,CA0BL,OArBI,EAAQ,WAAa,MACvB,EAAM,MACJ,EAAA,EAAA,KAAC,GAAD,CAEE,MAAO,cAAc,IAAI,KAAK,EAAQ,SAAS,CAAC,gBAAgB,GAChE,UAAU,0BACV,cAAiB,EAAY,WAAY,KAAK,CAC9C,CAJI,WAIJ,CACH,CAEC,EAAQ,SAAW,MACrB,EAAM,MACJ,EAAA,EAAA,KAAC,GAAD,CAEE,MAAO,YAAY,IAAI,KAAK,EAAQ,OAAO,CAAC,gBAAgB,GAC5D,UAAU,wBACV,cAAiB,EAAY,SAAU,KAAK,CAC5C,CAJI,SAIJ,CACH,EAID,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,sBACZ,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,OAAQ,6BACR,YAAa,iBACb,aAAc,iBACd,WAAY,uBACZ,aAAc,gCACd,SAAU,SACV,SAAU,SACX,UAbH,EAeE,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,IAAK,iBACL,KAAM,EACN,SAAU,SACV,WAAY,SACb,UAEA,EACG,CAAA,EACN,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,aAAW,oBACX,QAAS,EACT,MAAO,CACL,WAAY,OACZ,WAAY,OACZ,OAAQ,OACR,MAAO,0BACP,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,WAAY,EACZ,QAAS,OACT,aAAc,EACd,QAAS,qBACT,eAAgB,YACjB,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,iCAEzD,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBAE1D,YAEQ,CAAA,CACL,GCnHV,SAAgB,GAAU,CACxB,QACA,cACA,SACA,aACA,WAC8B,CAC9B,OACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACI,UACT,YAAc,GAAU,EAAM,iBAAiB,CAC/C,SAAU,EACV,gBAAe,EACf,gBAAc,UACd,MAAO,CACL,QAAS,cACT,WAAY,SACZ,IAAK,iBACL,OAAQ,GACR,YAAa,iBACb,aAAc,iBACd,WAAY,EAAS,8BAAgC,uBACrD,OAAQ,qCACR,aAAc,EACd,MAAO,EAAa,6BAA+B,uBACnD,WAAY,mBACZ,SAAU,4BACV,OAAQ,EAAa,cAAgB,UACrC,QAAS,OACT,WAAY,SACZ,WAAY,EACb,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,gCACtD,EAAE,cAAoC,MAAM,cAAgB,OAE/D,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBA9B3D,EAiCE,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,MAAO,uBAAwB,UAAG,EAAa,CAAA,CAC7D,EAAc,IACb,EAAA,EAAA,MAAC,OAAD,CAAM,MAAO,CAAE,MAAO,6BAA8B,UAApD,CAAsD,KAAG,EAAmB,IAE9E,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,GAAI,MAAO,CAAE,MAAO,6BAA8B,CAAI,CAAA,CAClE,GCtDb,IAAM,GAAc,IAgBpB,SAAgB,GAAa,CAC3B,UACA,WACA,WACA,UACA,cACiC,CACjC,IAAM,GAAA,EAAA,EAAA,QAA6B,KAAK,CAClC,CAAC,EAAO,IAAA,EAAA,EAAA,UAAqB,GAAG,EAGtC,EAAA,EAAA,eAAgB,CACd,SAAS,EAAgB,EAAe,CAClC,EAAI,SAAW,CAAC,EAAI,QAAQ,SAAS,EAAE,OAAe,EACxD,GAAS,CAIb,OADA,SAAS,iBAAiB,YAAa,EAAgB,KAC1C,SAAS,oBAAoB,YAAa,EAAgB,EACtE,CAAC,EAAQ,CAAC,CAEb,IAAM,EAAW,EACb,EAAQ,OAAQ,GAAM,CACpB,IAAM,EAAI,EAAM,aAAa,CAC7B,OAAO,EAAE,MAAM,aAAa,CAAC,SAAS,EAAE,EAAI,EAAE,MAAM,aAAa,CAAC,SAAS,EAAE,EAC7E,CACF,EACE,EAAU,EAAS,MAAM,EAAG,GAAY,CACxC,EAAW,EAAS,OAAS,EAAQ,OAE3C,SAAS,EAAO,EAAe,CACzB,EAAS,SAAS,EAAM,CAC1B,EAAS,EAAS,OAAQ,GAAM,IAAM,EAAM,CAAC,CAE7C,EAAS,CAAC,GAAG,EAAU,EAAM,CAAC,CAIlC,OACE,EAAA,EAAA,MAAC,MAAD,CACO,MACL,KAAK,UACL,uBAAqB,OACrB,MAAO,CACL,SAAU,WACV,IAAK,mBACL,KAAM,EACN,OAAQ,KACR,WAAY,8BACZ,OAAQ,uCACR,aAAc,EACd,SAAU,IACV,SAAU,IACV,UAAW,IACX,UAAW,OACX,UAAW,qBACX,QAAS,OACT,cAAe,SAChB,UAnBH,CAqBG,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,QAAS,iBAAkB,aAAc,gCAAiC,WACtF,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,OACL,MAAO,EACP,SAAW,GAAM,EAAS,EAAE,OAAO,MAAM,CACzC,YAAY,UACZ,MAAO,CACL,MAAO,OACP,WAAY,uBACZ,OAAQ,gCACR,aAAc,EACd,MAAO,oBACP,WAAY,mBACZ,SAAU,4BACV,QAAS,gCACT,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,OAA4B,MAAM,QAAU,gCAC9C,EAAE,OAA4B,MAAM,cAAgB,QAEvD,OAAS,GAAM,CACZ,EAAE,OAA4B,MAAM,QAAU,QAEjD,CAAA,CACE,CAAA,CAEP,EAAQ,SAAW,IAClB,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,QAAS,iBACT,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACX,UACF,aAEK,CAAA,CAEP,EAAQ,IAAK,IACZ,EAAA,EAAA,MAAC,QAAD,CAEE,MAAO,EAAI,MACX,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,QAAS,gCACT,OAAQ,UACR,MAAO,oBACP,WAAY,mBACZ,SAAU,4BACX,UAZH,EAcE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,WACL,QAAS,EAAS,SAAS,EAAI,MAAM,CACrC,aAAgB,EAAO,EAAI,MAAM,CACjC,MAAO,CAAE,YAAa,sBAAuB,CAC7C,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,KAAM,EAAG,UAAG,EAAI,MAAa,CAAA,EAC5C,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,MAAO,0BAA2B,SAAU,4BAA6B,UACrF,EAAI,MACA,CAAA,CACD,EAvBD,EAAI,MAuBH,CACR,CACD,EAAW,IACV,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,gCACT,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACV,UAAW,gCACZ,UAPH,CAQC,QACO,EAAS,QACX,IAER,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,eAAgB,gBAChB,QAAS,gCACT,UAAW,gCACZ,UANH,EAQE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,YAAe,EAAS,EAAE,CAAC,CAC3B,MAAO,CACL,WAAY,OACZ,OAAQ,OACR,MAAO,0BACP,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,QAAS,iBACT,aAAc,EACd,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,iCAEzD,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBAE1D,kBAEQ,CAAA,EACT,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,OACZ,OAAQ,OACR,MAAO,0BACP,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,QAAS,iBACT,aAAc,EACd,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,iCAEzD,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBAE1D,QAEQ,CAAA,CACL,GACF,GClEV,SAAgB,GAAwB,EAAgD,CACtF,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAChD,IAAM,EAAI,EAEV,OADI,OAAO,EAAE,MAAS,SACf,EAAE,OAAS,YAAc,EAAE,OAAS,UAAY,EAAE,OAAS,aAD3B,GCvGzC,IAAkB,EAAX,SAAA,EAAA,OACL,GAAA,kBAAoB,qBACpB,EAAA,0BAA4B,6BAC5B,EAAA,aAAe,gBACf,EAAA,sBAAwB,yBACxB,EAAA,mBAAqB,sBACrB,EAAA,aAAe,gBACf,EAAA,oBAAsB,uBACtB,EAAA,qBAAuB,wBACvB,EAAA,qBAAuB,wBACvB,EAAA,qBAAuB,wBACvB,EAAA,yBAA2B,4BAC3B,EAAA,wBAA0B,2BAC1B,EAAA,+BAAiC,kCACjC,EAAA,8BAAgC,iCAChC,EAAA,oBAAsB,uBACtB,EAAA,qBAAuB,wBACvB,EAAA,aAAe,gBACf,EAAA,oBAAsB,uBACtB,EAAA,aAAe,gBACf,EAAA,iBAAmB,oBACnB,EAAA,oBAAsB,uBACtB,EAAA,0BAA4B,6BAC5B,EAAA,2BAA6B,8BAC7B,EAAA,gCAAkC,mCAClC,EAAA,yBAA2B,4BAC3B,EAAA,6BAA+B,gCAC/B,EAAA,+BAAiC,kCACjC,EAAA,sBAAwB,yBACxB,EAAA,0BAA4B,6BAC5B,EAAA,sBAAwB,yBACxB,EAAA,6BAA+B,gCAC/B,EAAA,4BAA8B,+BAC9B,EAAA,iBAAmB,oBACnB,EAAA,qBAAuB,wBACvB,EAAA,yBAA2B,4BAC3B,EAAA,uBAAyB,0BACzB,EAAA,oBAAsB,uBACtB,EAAA,qBAAuB,wBACvB,EAAA,mBAAqB,sBACrB,EAAA,qBAAuB,wBACvB,EAAA,kBAAoB,qBACpB,EAAA,aAAe,gBACf,EAAA,cAAgB,iBAChB,EAAA,gBAAkB,mBAClB,EAAA,gBAAkB,mBAClB,EAAA,qBAAuB,wBACvB,EAAA,mBAAqB,sBACrB,EAAA,eAAiB,kBACjB,EAAA,gBAAkB,mBAClB,EAAA,kCAAoC,qCACpC,EAAA,wBAA0B,2BAC1B,EAAA,wBAA0B,iCAC3B,CCuGE,EAAW,kBACX,EAAW,0BACX,EAAW,qBACX,EAAW,kBACX,EAAW,aACX,EAAW,sBACX,EAAW,mBACX,EAAW,aACX,EAAW,oBACX,EAAW,qBACX,EAAW,qBACX,EAAW,qBACX,EAAW,yBACX,EAAW,wBACX,EAAW,+BACX,EAAW,8BACX,EAAW,oBACX,EAAW,qBACX,EAAW,aACX,EAAW,oBACX,EAAW,aACX,EAAW,iBACX,EAAW,oBACX,EAAW,0BACX,EAAW,2BACX,EAAW,gCACX,EAAW,yBACX,EAAW,6BACX,EAAW,+BACX,EAAW,sBACX,EAAW,0BACX,EAAW,sBACX,EAAW,6BACX,EAAW,4BACX,EAAW,iBACX,EAAW,qBACX,EAAW,yBACX,EAAW,uBACX,EAAW,oBACX,EAAW,qBACX,EAAW,mBACX,EAAW,aACX,EAAW,cACX,EAAW,gBACX,EAAW,gBACX,EAAW,qBACX,EAAW,mBACX,EAAW,eACX,EAAW,gBACX,EAAW,kCACX,EAAW,wBACX,EAAW,wBC9Nd,IAAkB,GAAX,SAAA,EAAA,OACL,GAAA,aAAe,sBACf,EAAA,eAAiB,wBACjB,EAAA,sBAAwB,+BACxB,EAAA,aAAe,4BAChB,CEwBE,EAAW,kBACX,EAAW,0BACX,EAAW,aACX,EAAW,sBACX,EAAW,mBACX,EAAW,aACX,EAAW,oBACX,EAAW,qBACX,EAAW,qBACX,EAAW,qBACX,EAAW,yBACX,EAAW,wBACX,EAAW,+BACX,EAAW,8BACX,EAAW,oBACX,EAAW,qBACX,EAAW,aACX,EAAW,oBACX,EAAW,aACX,EAAW,iBACX,EAAW,oBACX,EAAW,0BACX,EAAW,2BACX,EAAW,gCACX,EAAW,yBACX,EAAW,6BACX,EAAW,+BACX,EAAW,sBACX,EAAW,0BACX,EAAW,sBACX,EAAW,6BACX,EAAW,4BACX,EAAW,iBACX,EAAW,qBACX,EAAW,yBACX,EAAW,uBACX,EAAW,oBACX,EAAW,qBACX,EAAW,mBACX,EAAW,qBACX,EAAW,kBACX,EAAW,aACX,EAAW,cACX,EAAW,gBACX,EAAW,gBACX,EAAW,qBACX,EAAW,mBACX,EAAW,eACX,EAAW,gBACX,EAAW,kCACX,EAAW,wBACX,EAAW,wBAqBT,GAAiB,aACjB,GAAiB,eACjB,GAAiB,sBACjB,GAAiB,aCzBtB,SAAgB,GAAmB,EAA2B,CAE5D,IAAI,EADU,EAAU,MAAM,QAAQ,CAAC,OAAO,QAClC,CAAM,GAAG,GAAG,EAAI,EAQ5B,MAPA,GAAQ,EAAM,QAAQ,kBAAmB,GAAG,CAC5C,EAAQ,EAAM,QAAQ,gCAAiC,GAAG,CAEtD,oBAAoB,KAAK,EAAM,CAAS,EAAM,MAAM,GAAG,CAClC,EAAM,MAAM,kCAAkC,GAAG,KAEtE,EAAM,QAAU,GAAW,EACxB,GAAG,EAAM,MAAM,EAAG,GAAG,CAAC,IChH/B,IAAM,GAAiD,CACrD,CAAE,KAAM,OAAQ,MAAO,OAAQ,CAC/B,CAAE,KAAM,UAAW,MAAO,UAAW,CACrC,CAAE,KAAM,eAAgB,MAAO,iBAAkB,CAClD,CAEK,GAA0C,CAC9C,KAAM,OACN,QAAS,UACT,eAAgB,iBACjB,CAQD,SAAS,GAAmB,CAAE,QAAO,WAAU,WAAiD,CAC9F,IAAM,GAAA,EAAA,EAAA,QAA6B,KAAK,EAExC,EAAA,EAAA,eAAgB,CACd,SAAS,EAAgB,EAAe,CAClC,EAAI,SAAW,CAAC,EAAI,QAAQ,SAAS,EAAE,OAAe,EACxD,GAAS,CAIb,OADA,SAAS,iBAAiB,YAAa,EAAgB,KAC1C,SAAS,oBAAoB,YAAa,EAAgB,EACtE,CAAC,EAAQ,CAAC,CAEb,SAAS,EAAa,EAAoB,CACxC,EAAS,EAAK,CACd,GAAS,CAGX,OACE,EAAA,EAAA,KAAC,MAAD,CACO,MACL,MAAO,CACL,SAAU,WACV,IAAK,mBACL,MAAO,EACP,OAAQ,KACR,WAAY,8BACZ,OAAQ,uCACR,aAAc,EACd,SAAU,IACV,UAAW,qBACX,QAAS,OACT,cAAe,SACf,QAAS,mBACV,UAEA,GAAM,KAAK,CAAE,OAAM,YAClB,EAAA,EAAA,MAAC,QAAD,CAEE,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,QAAS,gCACT,WAAY,IAAU,EAAO,8BAAgC,OAC7D,OAAQ,UACR,MAAO,oBACP,WAAY,mBACZ,SAAU,4BACV,MAAO,OACR,UAbH,EAeE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,QACL,KAAK,aACL,MAAO,EACP,QAAS,IAAU,EACnB,aAAgB,EAAa,EAAK,CAClC,MAAO,CACL,YAAa,sBACb,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,cAAmC,MAAM,QAAU,iCAExD,OAAS,GAAM,CACZ,EAAE,cAAmC,MAAM,QAAU,QAExD,CAAA,CACD,EACK,EAhCD,EAgCC,CACR,CACE,CAAA,CAIV,SAAgB,GAAgB,CAAE,QAAO,YAA+C,CACtF,GAAM,CAAC,EAAQ,IAAA,EAAA,EAAA,UAAsB,GAAM,CAE3C,SAAS,EAAa,EAAoB,CACxC,EAAS,EAAK,CACV,IAAS,QACX,OAAO,SAAS,EAAG,EAAE,CAIzB,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,gBAAe,EACf,gBAAc,UACd,YAAe,EAAW,GAAM,CAAC,EAAE,CACnC,YAAc,GAAU,EAAM,iBAAiB,CAC/C,MAAO,CACL,QAAS,cACT,WAAY,SACZ,IAAK,iBACL,OAAQ,GACR,YAAa,iBACb,aAAc,iBACd,WAAY,EAAS,8BAAgC,uBACrD,OAAQ,qCACR,aAAc,EACd,MAAO,uBACP,WAAY,mBACZ,SAAU,4BACV,OAAQ,UACR,QAAS,OACT,WAAY,SACb,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,gCACtD,EAAE,cAAoC,MAAM,cAAgB,OAE/D,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBA5B3D,EA+BE,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAM,UAAQ,GAAU,GAAc,CAAA,CAAA,EACtC,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,GAAI,MAAO,CAAE,MAAO,6BAA8B,CAAI,CAAA,CAClE,GACR,IACC,EAAA,EAAA,KAAC,GAAD,CACS,QACP,SAAU,EACV,YAAe,EAAU,GAAM,CAC/B,CAAA,CAEA,GCtJV,SAAgB,GAAc,CAAE,UAAS,SAA0C,CACjF,IAAM,EAAa,IAAY,EAG/B,OACE,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,MALS,IAAY,GAAK,EAKV,uBAAyB,0BACzC,WAAY,mBACZ,SAAU,4BACV,mBAAoB,eACpB,WAAY,SACZ,WAAY,EACb,CACD,YAAU,SACV,cAAY,gBAEX,EAAa,GAAG,EAAQ,GAAG,EAAM,SAAW,GAAG,EAAM,SACjD,CAAA,CCfX,SAAgB,GAAY,CAAE,QAAO,WAAU,UAAS,OAAsC,CAC5F,OACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,SAAU,WACV,QAAS,OACT,WAAY,SACZ,KAAM,YACN,SAAU,IACV,SAAU,IACX,UARH,EAUE,EAAA,EAAA,MAAC,OAAD,CACE,cAAY,OACZ,MAAO,CACL,SAAU,WACV,KAAM,iBACN,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACV,WAAY,yBACZ,cAAe,OAChB,UAbH,EAeE,EAAA,EAAA,KAAC,GAAD,CAAQ,KAAM,GAAM,CAAA,EACpB,EAAA,EAAA,KAAC,OAAD,CAAA,SAAM,SAAa,CAAA,CACd,IACP,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,OACA,MACE,QACP,SAAW,GAAM,EAAS,EAAE,OAAO,MAAM,CACzC,UAAY,GAAM,CACZ,EAAE,MAAQ,SAAW,EAAM,OAAS,IACtC,EAAE,gBAAgB,CAClB,OAAO,cACL,IAAI,YAAY,iBAAkB,CAChC,OAAQ,EAAE,SAAW,WAAa,OACnC,CAAC,CACH,GAGL,YAAY,+CACZ,aAAW,oBACX,MAAO,CACL,MAAO,OACP,OAAQ,2BACR,YAAa,OACb,aAAc,EAAM,OAAS,EAAI,iBAAmB,iBACpD,WAAY,8BACZ,OAAQ,uCACR,aAAc,EACd,MAAO,oBACP,WAAY,mBACZ,SAAU,uBACV,WAAY,uBACZ,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,OAA4B,MAAM,QAAU,gCAC9C,EAAE,OAA4B,MAAM,cAAgB,QAEvD,OAAS,GAAM,CACZ,EAAE,OAA4B,MAAM,QAAU,QAEjD,CAAA,CACD,EAAM,SAAW,IAChB,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,OACZ,MAAM,0BACN,MAAO,CACL,SAAU,WACV,MAAO,iBACP,MAAO,0BACP,OAAQ,gCACR,aAAc,EACd,QAAS,mBACT,WAAY,mBACZ,SAAU,4BACV,WAAY,OACZ,cAAe,OAChB,UACF,IAEM,CAAA,CAER,EAAM,OAAS,IACd,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,aAAW,eACX,QAAS,EACT,MAAO,CACL,SAAU,WACV,MAAO,iBACP,QAAS,OACT,WAAY,SACZ,WAAY,OACZ,OAAQ,OACR,OAAQ,UACR,MAAO,0BACP,QAAS,EACT,aAAc,EACf,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,iCAEzD,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,kBAGzD,EAAA,EAAA,KAAC,GAAD,CAAG,KAAM,GAAM,CAAA,CACR,CAAA,CAEP,GCpHV,SAAS,GAAkB,EAA2B,CACpD,GAAI,IAAO,KAAM,MAAO,GACxB,IAAM,EAAI,IAAI,KAAK,EAAG,CAEhB,EAAO,GAAc,OAAO,EAAE,CAAC,SAAS,EAAG,IAAI,CACrD,MAAO,GAAG,EAAE,aAAa,CAAC,GAAG,EAAI,EAAE,UAAU,CAAG,EAAE,CAAC,GAAG,EAAI,EAAE,SAAS,CAAC,CAAC,GAAG,EAAI,EAAE,UAAU,CAAC,CAAC,GAAG,EAAI,EAAE,YAAY,CAAC,GAGpH,SAAS,GAAkB,EAA0B,CACnD,GAAI,CAAC,EAAG,OAAO,KACf,IAAM,EAAK,IAAI,KAAK,EAAE,CAAC,SAAS,CAChC,OAAO,OAAO,MAAM,EAAG,CAAG,KAAO,EAGnC,SAAgB,GAAiB,CAC/B,OACA,KACA,UACA,WACqC,CACrC,IAAM,GAAA,EAAA,EAAA,QAA6B,KAAK,CAClC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAkB,EAAK,CAAC,CACzD,CAAC,EAAO,IAAA,EAAA,EAAA,UAAqB,GAAkB,EAAG,CAAC,EAEzD,EAAA,EAAA,eAAgB,CACd,SAAS,EAAgB,EAAe,CAClC,EAAI,SAAW,CAAC,EAAI,QAAQ,SAAS,EAAE,OAAe,EACxD,GAAS,CAIb,OADA,SAAS,iBAAiB,YAAa,EAAgB,KAC1C,SAAS,oBAAoB,YAAa,EAAgB,EACtE,CAAC,EAAQ,CAAC,CAEb,SAAS,GAAc,CACrB,EAAQ,GAAkB,EAAQ,CAAE,GAAkB,EAAM,CAAC,CAC7D,GAAS,CAGX,SAAS,GAAc,CACrB,EAAW,GAAG,CACd,EAAS,GAAG,CACZ,EAAQ,KAAM,KAAK,CAGrB,IAAM,EAAkC,CACtC,MAAO,OACP,WAAY,uBACZ,OAAQ,gCACR,aAAc,EACd,MAAO,oBACP,WAAY,mBACZ,SAAU,4BACV,QAAS,gCACT,QAAS,OACT,YAAa,sBACd,CAED,OACE,EAAA,EAAA,MAAC,MAAD,CACO,MACL,MAAO,CACL,SAAU,WACV,IAAK,mBACL,KAAM,EACN,OAAQ,KACR,WAAY,8BACZ,OAAQ,uCACR,aAAc,EACd,SAAU,IACV,UAAW,qBACX,QAAS,OACT,cAAe,SACf,IAAK,iBACL,QAAS,iBACV,UAhBH,EAkBE,EAAA,EAAA,MAAC,QAAD,CACE,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,iBACL,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACX,UARH,CASC,QAEC,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,iBACL,MAAO,EACP,SAAW,GAAM,EAAW,EAAE,OAAO,MAAM,CAC3C,MAAO,EACP,QAAU,GAAM,CACb,EAAE,OAA4B,MAAM,QAAU,gCAC9C,EAAE,OAA4B,MAAM,cAAgB,QAEvD,OAAS,GAAM,CACZ,EAAE,OAA4B,MAAM,QAAU,QAEjD,CAAA,CACI,IACR,EAAA,EAAA,MAAC,QAAD,CACE,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,iBACL,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACX,UARH,CASC,MAEC,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,iBACL,MAAO,EACP,SAAW,GAAM,EAAS,EAAE,OAAO,MAAM,CACzC,MAAO,EACP,QAAU,GAAM,CACb,EAAE,OAA4B,MAAM,QAAU,gCAC9C,EAAE,OAA4B,MAAM,cAAgB,QAEvD,OAAS,GAAM,CACZ,EAAE,OAA4B,MAAM,QAAU,QAEjD,CAAA,CACI,IACR,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,IAAK,iBAAkB,eAAgB,WAAY,UAAlF,EACE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,OACZ,OAAQ,gCACR,aAAc,EACd,MAAO,0BACP,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,QAAS,gCACT,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,iCAEzD,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBAE1D,kBAEQ,CAAA,EACT,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,sBACZ,OAAQ,OACR,aAAc,EACd,MAAO,iCACP,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,WAAY,yBACZ,QAAS,gCACT,QAAS,OACV,CACD,QAAU,GAAM,CACb,EAAE,cAAoC,MAAM,QAAU,gCACtD,EAAE,cAAoC,MAAM,cAAgB,OAE/D,OAAS,GAAM,CACZ,EAAE,cAAoC,MAAM,QAAU,iBAE1D,cAEQ,CAAA,CACL,GACF,GCpKV,SAAS,GACP,EACA,EAAuC,GAAU,EACE,CACnD,OAAO,MAAM,KAAK,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,EAAO,MAAY,CACtD,QACA,MAAO,EAAS,EAAM,CACtB,QACD,EAAE,CAGL,SAAgB,GAAU,CACxB,kBAGc,CACd,IAAM,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAe,EAAa,GAAM,EAAE,aAAa,CACjD,EAAkB,EAAa,GAAM,EAAE,gBAAgB,CACvD,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAU,EAAa,GAAM,EAAE,QAAQ,CACvC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAW,EAAa,GAAM,EAAE,SAAS,CACzC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAc,IAAgB,CAC9B,EAAe,IAAiB,CAChC,EAAY,EAAa,GAAM,EAAE,KAAK,OAAO,CAE7C,CAAC,EAAa,IAAA,EAAA,EAAA,UAAwC,KAAK,CAEjE,SAAS,EAAc,EAAmB,CACxC,EAAgB,GAAU,IAAS,EAAO,KAAO,EAAM,CAGzD,SAAS,GAAQ,CACf,EAAe,KAAK,CAGtB,SAAS,EAAe,EAAsC,CAC5D,OAAO,cAAc,IAAI,YAAY,iBAAkB,CAAE,OAAQ,EAAW,CAAC,CAAC,CAGhF,IAAM,EAAY,EAAY,MAAM,GAAK,GACnC,EAAmB,GAAa,EAAc,EAC9C,EAAoB,EAEtB,IAAiB,YACf,eACA,IAAiB,QACf,gBAAgB,EAAc,KAAK,IAAgB,KACnD,GAAG,EAAY,gBAAgB,CAAC,GAAG,IAAgB,EAAI,QAAU,YAAY,EAAkB,IAAM,KALzG,KAOJ,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,aACZ,UAAU,aACV,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,UAAW,2BACX,YAAa,iBACb,aAAc,iBACd,WAAY,uBACZ,aAAc,gCACd,SAAU,WACV,OAAQ,IACT,UAdH,EAiBE,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,EACP,SAAU,EACV,YAAe,EAAe,GAAG,CACjC,GAAK,IAAmB,IAAA,GAAsC,EAAE,CAA5B,CAAE,IAAK,EAAgB,CAC3D,CAAA,CACD,IAAqB,OACpB,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,gBACZ,MAAO,CACL,QAAS,cACT,WAAY,SACZ,IAAK,iBACL,MAAO,IAAiB,QAAU,sBAAwB,0BAC1D,WAAY,mBACZ,SAAU,4BACV,WAAY,SACZ,WAAY,EACb,UAXH,EAaE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAwB,CAAA,EAC/B,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,aAAW,wBACX,SAAU,CAAC,EACX,YAAe,EAAe,WAAW,UAC1C,OAEQ,CAAA,EACT,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,aAAW,oBACX,SAAU,CAAC,EACX,YAAe,EAAe,OAAO,UACtC,OAEQ,CAAA,CACL,IAIR,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,MACN,YAAa,EAAQ,UAAU,OAC/B,OAAQ,IAAgB,YACxB,WAAY,GACZ,YAAe,EAAc,YAAY,CACzC,CAAA,CACD,IAAgB,cACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,UAAU,CAC5C,SAAU,EAAQ,UAClB,SAAW,GAAS,EAAY,YAAa,EAA0B,CACvE,QAAS,EACT,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,OACN,YAAa,EAAQ,KAAK,OAC1B,OAAQ,IAAgB,OACxB,WAAY,GACZ,YAAe,EAAc,OAAO,CACpC,CAAA,CACD,IAAgB,SACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,KAAK,CACvC,SAAU,EAAQ,KAClB,SAAW,GACT,EAAY,OAAQ,EAAoD,CAE1E,QAAS,EACT,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,SACN,YAAa,EAAQ,OAAO,OAC5B,OAAQ,IAAgB,SACxB,WAAY,GACZ,YAAe,EAAc,SAAS,CACtC,CAAA,CACD,IAAgB,WACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,OAAO,CACzC,SAAU,EAAQ,OAClB,SAAW,GAAS,EAAY,SAAU,EAAK,CAC/C,QAAS,EACT,WAAA,GACA,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,SACN,YAAa,EAAQ,WAAW,OAChC,OAAQ,IAAgB,SACxB,WAAY,GACZ,YAAe,EAAc,SAAS,CACtC,CAAA,CACD,IAAgB,WACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,WAAW,CAC7C,SAAU,EAAQ,WAClB,SAAW,GAAS,EAAY,aAAc,EAAK,CACnD,QAAS,EACT,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,UACN,YAAa,EAAQ,QAAQ,OAC7B,OAAQ,IAAgB,UACxB,WAAY,GACZ,YAAe,EAAc,UAAU,CACvC,CAAA,CACD,IAAgB,YACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,QAAS,GAAmB,CAC9D,SAAU,EAAQ,QAClB,SAAW,GAAS,EAAY,UAAW,EAAK,CAChD,QAAS,EACT,WAAA,GACA,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,OACN,YAAa,EAAQ,KAAK,OAC1B,OAAQ,IAAgB,OACxB,WAAY,EAAQ,QAAQ,SAAW,EACvC,YAAe,EAAQ,QAAQ,OAAS,GAAK,EAAc,OAAO,CAClE,CAAA,CACD,IAAgB,SACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,KAAK,CACvC,SAAU,EAAQ,KAClB,SAAW,GAAS,EAAY,OAAQ,EAAK,CAC7C,QAAS,EACT,WAAA,GACA,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,SACN,YAAa,EAAQ,OAAO,OAC5B,OAAQ,IAAgB,SACxB,WAAY,GACZ,YAAe,EAAc,SAAS,CACtC,CAAA,CACD,IAAgB,WACf,EAAA,EAAA,KAAC,GAAD,CACE,QAAS,GAAa,EAAY,OAAO,CACzC,SAAU,EAAQ,OAClB,SAAW,GACT,EAAY,SAAU,EAA+C,CAEvE,QAAS,EACT,CAAA,CAEA,IAGN,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,WAAY,WAAY,EAAG,UAAnD,EACE,EAAA,EAAA,KAAC,GAAD,CACE,MAAM,OACN,aAAc,EAAQ,WAAa,KAAW,EAAJ,IAAU,EAAQ,SAAW,KAAW,EAAJ,GAC9E,OAAQ,IAAgB,OACxB,WAAY,GACZ,YAAe,EAAc,OAAO,CACpC,CAAA,CACD,IAAgB,SACf,EAAA,EAAA,KAAC,GAAD,CACE,KAAM,EAAQ,SACd,GAAI,EAAQ,OACZ,SAAU,EAAM,IAAO,CACrB,EAAY,WAAY,EAAK,CAC7B,EAAY,SAAU,EAAG,EAE3B,QAAS,EACT,CAAA,CAEA,IAGN,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,OAAQ,WAAY,EAAG,WAC/C,EAAA,EAAA,KAAC,GAAD,CAAiB,MAAO,EAAU,SAAU,EAAe,CAAA,CACvD,CAAA,EAGN,EAAA,EAAA,KAAC,GAAD,CAAe,QAAS,EAAa,OAAQ,MAAO,EAAa,CAAA,CAC7D,GCrSV,eAAsB,GAAa,EAAW,EAA6C,CACzF,IAAM,EAAS,IAAI,gBAAgB,CAAE,IAAG,MAAO,OAAQ,CAAC,CAGlD,EAAoB,CACxB,GAAI,IAAW,IAAA,GAAyB,EAAE,CAAf,CAAE,SAAQ,CACtC,CACK,EAAO,MAAM,MAAM,mBAAmB,EAAO,UAAU,GAAI,EAAK,CACtE,GAAI,CAAC,EAAK,GAAI,MAAU,MAAM,kBAAkB,EAAK,SAAS,CAC9D,OAAO,EAAK,MAAM,CChBpB,IAAM,GAAc,IAWpB,SAAgB,IAAkB,CAChC,IAAM,EAAQ,EAAa,GAAM,EAAE,YAAY,CACzC,EAAqB,EAAa,GAAM,EAAE,mBAAmB,CAC7D,EAAmB,EAAa,GAAM,EAAE,iBAAiB,CACzD,EAAkB,EAAa,GAAM,EAAE,gBAAgB,CACvD,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,GAAA,EAAA,EAAA,QAAwD,KAAK,CAC7D,GAAA,EAAA,EAAA,QAA0C,KAAK,EAErD,EAAA,EAAA,eAAgB,CAEd,GADI,EAAS,SAAS,aAAa,EAAS,QAAQ,CAChD,CAAC,EAAO,CAEV,EAAS,SAAS,OAAO,CACzB,EAAS,QAAU,KACnB,GAAoB,CACpB,OAeF,MAbA,GAAS,QAAU,eAAiB,CAClC,EAAS,SAAS,OAAO,CACzB,IAAM,EAAO,IAAI,gBACjB,EAAS,QAAU,EACnB,GAAkB,CAClB,GAAa,EAAO,EAAK,OAAO,CAC7B,KAAM,GAAM,EAAgB,EAAE,QAAS,EAAE,MAAO,EAAE,UAAU,CAAC,CAC7D,MAAO,GAAiB,CAClB,GAA2B,OAAS,eACzC,QAAQ,MAAM,cAAe,EAAI,CACjC,EAAe,aAAe,MAAQ,EAAI,QAAU,OAAO,EAAI,CAAC,GAChE,EACH,GAAY,KACF,CACP,EAAS,SAAS,aAAa,EAAS,QAAQ,CACpD,EAAS,SAAS,OAAO,CACzB,EAAS,QAAU,OAEpB,CAAC,EAAO,EAAoB,EAAgB,EAAkB,EAAgB,CAAC,CChDpF,IAAM,GAAwD,CAC5D,OAAQ,UACR,kBAAmB,mBACnB,iBAAkB,oBAClB,OAAQ,SACT,CAED,SAAS,GAAQ,EAAoB,CACnC,IAAM,EAAO,KAAK,KAAK,CAAG,EACpB,EAAM,KAAK,MAAM,EAAO,IAAO,CACrC,GAAI,EAAM,EAAG,MAAO,WACpB,GAAI,EAAM,GAAI,MAAO,GAAG,EAAI,OAC5B,IAAM,EAAK,KAAK,MAAM,EAAM,GAAG,CAE/B,OADI,EAAK,GAAW,GAAG,EAAG,OACnB,GAAG,KAAK,MAAM,EAAK,GAAG,CAAC,OAEhC,SAAS,GAAY,EAAmB,CAItC,OAHI,EAAI,KAAa,GAAG,EAAE,IACtB,EAAI,KAAO,KAAa,IAAI,EAAI,MAAM,QAAQ,EAAE,CAAC,KACjD,EAAI,KAAO,KAAO,KAAa,IAAI,EAAI,KAAO,MAAM,QAAQ,EAAE,CAAC,KAC5D,IAAI,EAAI,KAAO,KAAO,MAAM,QAAQ,EAAE,CAAC,KAGhD,SAAS,GAAc,EAAuB,CAC5C,OAAO,EAAM,SAAS,SAAS,CAAG,EAAM,MAAM,EAAG,GAAiB,CAAG,EAGvE,SAAgB,GAAa,CAC3B,YACA,YAIc,CACd,IAAM,EACJ,EAAU,aAAe,OACrB,+BACA,EAAU,aAAe,SACvB,iCACA,8BACR,OACE,EAAA,EAAA,KAAC,KAAD,CAAI,MAAO,CAAE,UAAW,OAAQ,WAC9B,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,EAAU,cAAgB,GACjC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,MAAO,OACP,OAAQ,8BACR,QAAS,mBACT,WAAY,cACZ,OAAQ,OACR,MAAO,oBACP,WAAY,mBACZ,SAAU,uBACV,UAAW,OACX,OAAQ,UACT,UAlBH,EAoBE,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,OACZ,MAAO,CACL,MAAO,EACP,OAAQ,EACR,aAAc,MACd,WAAY,EACZ,KAAM,UACP,CACD,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,MAAO,GACP,KAAM,WACN,UAAW,OACX,SAAU,4BACV,MAAO,0BACR,UAEA,GAAQ,EAAU,QAAQ,CACtB,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,KAAM,EACN,SAAU,EACV,WAAY,mBACZ,WAAY,IACZ,SAAU,SACV,aAAc,WACd,WAAY,SACb,UAEA,GAAc,EAAU,MAAM,CAC1B,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,SAAU,GACV,UAAW,QACX,SAAU,4BACV,MAAO,0BACP,cAAe,YACf,cAAe,SAChB,UAEA,GAAa,EAAU,QACnB,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,MAAO,GACP,UAAW,QACX,SAAU,4BACV,MAAO,0BACR,UAEA,GAAY,EAAU,UAAU,CAC5B,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,OAAO,MAAO,CAAE,MAAO,0BAA2B,SAAU,GAAI,UAAE,IAE7E,CAAA,CACA,GACN,CAAA,CC3HT,SAAgB,IAAgC,CAC9C,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,SACL,MAAO,CACL,QAAS,iBACT,WAAY,uBACZ,OAAQ,iCACR,aAAc,EACd,MAAO,0BACP,SAAU,wBACX,UATH,EAWE,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,WAAY,IACZ,MAAO,oBACP,aAAc,iBACf,UACF,qBAEK,CAAA,EACN,EAAA,EAAA,KAAC,IAAD,CAAG,MAAO,CAAE,OAAQ,EAAG,UAAE,qJAGrB,CAAA,CACA,GCvBV,SAAgB,GAAc,CAC5B,aACA,YAIc,CAEd,OADI,EAAW,SAAW,GAAU,EAAA,EAAA,KAAC,GAAD,EAAoB,CAAA,EAEtD,EAAA,EAAA,KAAC,KAAD,CAAI,aAAW,kBAAkB,MAAO,CAAE,OAAQ,EAAG,QAAS,EAAG,UAC9D,EAAW,IAAK,IACf,EAAA,EAAA,KAAC,GAAD,CAAyB,UAAW,EAAG,aAAgB,EAAS,EAAE,GAAG,CAAI,CAAtD,EAAE,GAAoD,CACzE,CACC,CAAA,CChBT,IAAM,GAAe,KAEf,GAAqC,CACzC,gBAAiB,oBACjB,YAAa,gDACb,aAAc,oCACd,eAAgB,oCAChB,cAAe,kEAChB,CACK,GAAiB,kEAEvB,SAAgB,GAAgB,CAC9B,SACA,YAIc,CACd,GAAM,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,GAAG,CAC9B,CAAC,EAAO,IAAA,EAAA,EAAA,UAAoC,KAAK,CACjD,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,GAAM,CACjC,GAAA,EAAA,EAAA,QAAiB,CAEvB,eAAe,EAAO,EAA6B,CACjD,KAAE,gBAAgB,CACd,KAAQ,KACZ,EAAS,KAAK,CACV,EAAK,SAAW,GACpB,IAAI,EAAK,OAAS,GAAc,CAC9B,EAAS,GAAW,kBAAoB,GAAe,CACvD,OAEF,EAAQ,GAAK,CACb,GAAI,CACF,MAAM,EAAO,EAAK,OACX,EAAK,CACZ,IAAM,EAAQ,EAA0B,KAExC,EADc,GAAQ,GAAW,IAAU,GAC7B,QACN,CACR,EAAQ,GAAM,GAIlB,OACE,EAAA,EAAA,MAAC,OAAD,CACE,SAAU,EACV,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,iBAAkB,CAC1E,aAAW,4BAHb,EAKE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,IAAK,iBAAkB,UAAtD,EACE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,OACL,MAAO,EACP,SAAW,GAAM,EAAQ,EAAE,OAAO,MAAM,CACxC,UAAW,GACX,YAAY,wBACZ,SAAU,GAAY,EACtB,eAAc,IAAU,KACxB,mBAAkB,EAAQ,EAAU,IAAA,GACpC,MAAO,CACL,KAAM,EACN,OAAQ,GACR,QAAS,mBACT,WAAY,uBACZ,OAAQ,gCACR,aAAc,EACd,MAAO,oBACP,WAAY,mBACZ,SAAU,uBACX,CACD,CAAA,EACF,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAU,GAAY,GAAQ,EAAK,SAAW,EAC9C,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,sBACZ,OAAQ,OACR,aAAc,EACd,MAAO,kBACP,WAAY,IACZ,OAAQ,UACT,UAEA,EAAO,WAAa,WACd,CAAA,CACL,GACL,IAAU,OACT,EAAA,EAAA,KAAC,MAAD,CACE,GAAI,EACJ,KAAK,QACL,MAAO,CACL,MAAO,2BACP,SAAU,wBACX,UAEA,EACG,CAAA,CAEH,GClGX,SAAgB,GAAe,CAC7B,OACA,aACA,YACA,WACA,aACA,YACA,WASqB,CACrB,IAAM,GAAA,EAAA,EAAA,QAAyC,KAAK,CAmBpD,OAjBA,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,EAAM,OACX,SAAS,EAAM,EAAwB,CACjC,EAAE,MAAQ,UAAU,GAAS,CAEnC,SAAS,iBAAiB,UAAW,EAAM,CAE3C,IAAM,EAAQ,EAAS,SAAS,cAC9B,0CACD,CAGD,OAFI,EAAO,EAAM,OAAO,CACnB,EAAS,SAAS,cAAgC,QAAQ,EAAE,OAAO,KAC3D,SAAS,oBAAoB,UAAW,EAAM,EAC1D,CAAC,EAAM,EAAQ,CAAC,CAEd,GAGH,EAAA,EAAA,MAAC,MAAD,CACE,IAAK,EACL,KAAK,SACL,aAAW,QACX,aAAW,aACX,MAAO,CACL,SAAU,QAKV,IAAK,GACL,KAAM,EACN,MAAO,EACP,UAAW,qBACX,UAAW,OACX,OAAQ,KACR,WAAY,uBACZ,aAAc,uCACd,UAAW,qBACX,QAAS,iBACV,UArBH,EAuBE,EAAA,EAAA,MAAC,SAAD,CACE,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,aAAc,iBACd,cAAe,iBACf,aAAc,gCACf,UARH,EAUE,EAAA,EAAA,KAAC,KAAD,CACE,MAAO,CACL,OAAQ,EACR,SAAU,2BACV,WAAY,IACZ,MAAO,oBACR,UACF,aAEI,CAAA,EACL,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,iBAAkB,UAA5E,EACE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,SAAU,EACV,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,8BACZ,OAAQ,gCACR,aAAc,EACd,MAAO,oBACP,OAAQ,UACR,SAAU,4BACX,UAEA,EAAY,cAAgB,UACtB,CAAA,EACT,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,aAAW,QACX,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,cACZ,OAAQ,gCACR,aAAc,EACd,MAAO,oBACP,OAAQ,UACT,UACF,IAEQ,CAAA,CACL,GACC,IACT,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,iBAAkB,UAA/E,EACE,EAAA,EAAA,KAAC,GAAD,CAA2B,aAAsB,WAAY,CAAA,EAC7D,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,UAAW,gCACX,WAAY,iBACb,WAED,EAAA,EAAA,KAAC,GAAD,CAAiB,OAAQ,EAAc,CAAA,CACnC,CAAA,CACF,GACF,GA7FU,KC5BpB,SAAgB,GAAe,CAAE,YAAqD,CAGpF,OAFI,IAAa,KAAa,MAG5B,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,mBACZ,MAAO,CACL,OAAQ,iCACR,QAAS,OACT,WAAY,SACZ,YAAa,EAAS,QAAU,OAAS,iBAAmB,iBAC5D,aAAc,iBACd,WAAY,+BACZ,MAAO,+BACP,SAAU,4BACV,WAAY,mBACZ,WAAY,yBACZ,aAAc,gCACd,WAAY,EACZ,OAAQ,EACT,UAEA,EAAS,MACN,CAAA,CC5BV,SAAgB,GAAe,CAAE,iBAAyD,CAKxF,OAJA,EAAA,EAAA,eAAgB,CACd,IAAM,EAAI,WAAW,EAAe,IAAK,CACzC,UAAa,aAAa,EAAE,EAC3B,CAAC,EAAc,CAAC,EAEjB,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,QACL,cAAY,kBACZ,MAAO,CACL,OAAQ,GACR,WAAY,kCACZ,MAAO,kCACP,WAAY,4CACZ,QAAS,mBACT,QAAS,OACT,WAAY,SACZ,IAAK,iBACN,UAZH,EAcE,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,gBAAO,IAAQ,CAAA,EACjC,EAAA,EAAA,KAAC,OAAD,CAAA,SAAM,yCAA6C,CAAA,CAC/C,GCrBV,SAAgB,GAAc,CAAE,QAAO,WAA4D,CAGjG,OACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACI,UACT,YAAU,SACV,cAAY,kBACZ,MAAO,CACL,SAAU,WACV,OAAQ,GACR,KAAM,MACN,UAAW,mBACX,OAAQ,GACR,QAAS,mBACT,WAAY,8BACZ,MAAO,oBACP,OAAQ,qCACR,aAAc,GACd,UAAW,qBACX,OAAQ,UACR,WAAY,IACZ,SAAU,uBACV,QAAS,cACT,WAAY,SACZ,IAAK,iBACN,UAvBH,EAyBE,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CA5BY,GAAS,IAAM,MAAQ,EAAM,gBAAgB,CA6B9C,IA5BF,IAAU,EAAI,YAAc,aA6B9B,CAAA,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,gBAAO,IAAQ,CAAA,EACjC,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,MAAO,sBAAuB,UAAE,mBAAuB,CAAA,CAC/D,GCtCb,SAAgB,GAAmB,CAAE,eAAyD,CAC5F,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,sBACZ,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,uBACZ,WAAY,qCACZ,QAAS,OACT,WAAY,SACZ,IAAK,iBACN,UAVH,EAYE,EAAA,EAAA,KAAC,GAAD,CAAS,KAAM,GAAI,MAAM,2BAA6B,CAAA,EACtD,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,KAAM,EAAG,UAAE,8DAAkE,CAAA,EAC5F,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,MAAO,sBACP,OAAQ,UACR,QAAS,EACV,UACF,mBAEQ,CAAA,CACL,GC9BV,SAAgB,IAA0B,CACxC,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,cACZ,MAAO,CACL,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,KAAM,EACN,IAAK,iBACL,MAAO,0BACR,UAVH,EAYE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,IAAK,MAAO,oBAAqB,UAAE,gBAAmB,CAAA,EAChF,EAAA,EAAA,KAAC,MAAD,CAAA,SAAK,kEAAqE,CAAA,CACtE,GCfV,SAAgB,GAAa,CAAE,YAA+C,CAC5E,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,gBACZ,MAAO,CACL,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,KAAM,EACN,IAAK,iBACN,UATH,EAWE,EAAA,EAAA,KAAC,GAAD,CAAS,UAAU,OAAO,MAAM,0BAA0B,KAAM,GAAM,CAAA,EACtE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,IAAK,UAAE,eAAkB,CAAA,EACnD,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,CAAK,YACK,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAAQ,EAAgB,CAAA,CAC5C,CAAA,CAAA,CACF,GCnBV,SAAgB,GAAgB,CAAE,UAAS,QAAwD,CACjG,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,oBACZ,MAAO,CACL,UAAW,GACX,QAAS,iBACT,WAAY,uBACZ,WAAY,iCACZ,QAAS,OACT,cAAe,SACf,IAAK,iBACN,UAVH,EAYE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,IAAK,UAAG,EAAc,CAAA,EAChD,EAAA,EAAA,KAAC,MAAD,CAAA,SAAM,EAAW,CAAA,CACb,cClBV,SAAA,GAAA,EAAA,EAAA,EAAA,mDAOI,EAAA,KAAA,EAAA,OAAA,KAAA,EAAA,GAAA,EAAA,KAAA,KAAA,YAGA,GAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,IAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAGA,EAAA,QAIA,GAFA,EAAA,KAAA,EAAA,OAAA,KAAA,EAAA,GAAA,EAAA,KAAA,KAAA,EACA,EAAA,EAAA,GAAA,EAAA,CACA,EAAA,KAAA,EAAA,OAAA,KAAA,EAAA,CAAA,gGAMI,IADA,EAAA,OAAA,EAAA,CACA,EAAA,OAAA,GAAA,EAAA,IAAA,EAGA,OAAA,GAEF,QAAA,KAAA,OAAA,EAAA,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,EAAA,CAAA,KAAA;;;qFAgBF,OAJA,GAAA,UAAA,EAAA,GAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,CAGA,EAAA,GACA,EAKF,MAHA,GAAA,WAAA,GAAA,CACE,EAAA,GAEF,EAEF,SAAA,GAAA,EAAA,EAAA,CACE,GAAA,IAAA,IAAA,GAAA,MAAA,MAAA,uBAAA,EAAA,KAAA,IAAA,KAAA,UAMF,IAAA,IAAA,EAAA,IAAA,KAAA,IAAA,EAAA,EAAA,CAAA,KACA,IAAA,EAAA,EAAA,IAAA,OAEE,OAAA,SAAA,GAAA,EAAA,CACE,EAAA,aAAA,EAAA,CACA,EAAA,EAAA,eAAA,EAAA,MAAA,KAAA,EAAA,CAAA,EAAA,GC9DE,GAAW,GAAY,CAC3B,GAAM,CAAE,cAAa,gBAAiB,EACtC,MAAO,CAAE,MAAO,EAAa,OAAQ,EAAc,EAE/C,GAAuB,GAAU,EACjC,GAAyB,GAAU,CACvC,IAAM,EAAQ,KAAK,IAAI,EAAM,WAAa,EAAM,SAAU,EAAE,CACtD,EAAM,KAAK,IAAI,EAAM,SAAW,EAAM,SAAU,EAAM,MAAQ,EAAE,CAChE,EAAM,EAAE,CACd,IAAK,IAAI,EAAI,EAAO,GAAK,EAAK,IAC5B,EAAI,KAAK,EAAE,CAEb,OAAO,GAEH,IAAsB,EAAU,IAAO,CAC3C,IAAM,EAAU,EAAS,cACzB,GAAI,CAAC,EACH,OAEF,IAAM,EAAe,EAAS,aAC9B,GAAI,CAAC,EACH,OAEF,IAAM,EAAW,GAAS,CACxB,GAAM,CAAE,QAAO,UAAW,EAC1B,EAAG,CAAE,MAAO,KAAK,MAAM,EAAM,CAAE,OAAQ,KAAK,MAAM,EAAO,CAAE,CAAC,EAG9D,GADA,EAAQ,GAAQ,EAAQ,CAAC,CACrB,CAAC,EAAa,eAChB,UAAa,GAGf,IAAM,EAAW,IAAI,EAAa,eAAgB,GAAY,CAC5D,IAAM,MAAY,CAChB,IAAM,EAAQ,EAAQ,GACtB,GAAI,GAA+B,cAAe,CAChD,IAAM,EAAM,EAAM,cAAc,GAChC,GAAI,EAAK,CACP,EAAQ,CAAE,MAAO,EAAI,WAAY,OAAQ,EAAI,UAAW,CAAC,CACzD,QAGJ,EAAQ,GAAQ,EAAQ,CAAC,EAE3B,EAAS,QAAQ,oCAAsC,sBAAsB,EAAI,CAAG,GAAK,EACzF,CAEF,OADA,EAAS,QAAQ,EAAS,CAAE,IAAK,aAAc,CAAC,KACnC,CACX,EAAS,UAAU,EAAQ,GAGzB,GAA0B,CAC9B,QAAS,GACV,CAeK,GAAoB,OAAO,OAAU,IAAc,GAAO,gBAAiB,OAC3E,IAAwB,EAAU,IAAO,CAC7C,IAAM,EAAU,EAAS,cACzB,GAAI,CAAC,EACH,OAEF,IAAM,EAAe,EAAS,aAC9B,GAAI,CAAC,EACH,OAEF,IAAI,EAAS,EACP,EAAW,EAAS,QAAQ,mBAAqB,OAA0B,IAAK,GAAI,GACxF,MACM,CACJ,EAAG,EAAQ,GAAM,EAEnB,EAAS,QAAQ,sBAClB,CACK,EAAiB,OAAsB,CAC3C,GAAM,CAAE,aAAY,SAAU,EAAS,QACvC,EAAS,EAAa,EAAQ,YAAiB,GAAS,IAAM,GAAK,EAAQ,UAC3E,GAAU,CACV,EAAG,EAAQ,EAAY,EAEnB,EAAU,EAAc,GAAK,CAC7B,EAAa,EAAc,GAAM,CACvC,EAAQ,iBAAiB,SAAU,EAAS,GAAwB,CACpE,IAAM,EAAyB,EAAS,QAAQ,mBAAqB,GAIrE,OAHI,GACF,EAAQ,iBAAiB,YAAa,EAAY,GAAwB,KAE/D,CACX,EAAQ,oBAAoB,SAAU,EAAQ,CAC1C,GACF,EAAQ,oBAAoB,YAAa,EAAW,GAwCpD,IAAkB,EAAS,EAAO,IAAa,CACnD,GAAI,GAA+B,cAAe,CAChD,IAAM,EAAM,EAAM,cAAc,GAChC,GAAI,EAIF,OAHa,KAAK,MAChB,EAAI,EAAS,QAAQ,WAAa,aAAe,aAExC,CAGf,OAAO,EAAQ,EAAS,QAAQ,WAAa,cAAgB,iBAazD,IAAiB,EAAQ,CAC7B,cAAc,EACd,YACC,IAAa,CACd,IAAI,EAAI,EACR,IAAM,EAAW,EAAS,GACzB,GAAM,EAAK,EAAS,gBAAqC,WAAa,MAAgB,EAAG,KAAK,EAAI,EAChG,EAAS,QAAQ,WAAa,OAAS,OAAQ,EAChD,WACD,CAAC,EAEE,GAAN,KAAkB,CAChB,YAAY,EAAM,CAChB,KAAK,OAAS,EAAE,CAChB,KAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,YAAc,GACnB,KAAK,YAAc,KACnB,KAAK,kBAAoB,EAAE,CAC3B,KAAK,cAAgC,IAAI,IACzC,KAAK,gBAAkC,IAAI,IAC3C,KAAK,4BAA8B,EAAE,CACrC,KAAK,UAAY,IAAK,GACtB,KAAK,iBAAmB,GACxB,KAAK,cAAgB,GACrB,KAAK,WAAa,KAClB,KAAK,aAAe,KACpB,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,cAAgC,IAAI,IACzC,KAAK,QAAY,CACf,IAAQ,EACR,QAAe,EAAW,KAAK,cAAoC,cAAmC,MAA2B,KAAK,EAAG,EAAK,KAAK,KAAK,EAE1J,KAAK,cAAkC,CACrC,IAAI,EAAM,KACJ,MACA,IAGA,CAAC,KAAK,cAAgB,CAAC,KAAK,aAAa,eACpC,KAEF,EAAM,IAAI,KAAK,aAAa,eAAgB,GAAY,CAC7D,EAAQ,QAAS,GAAU,CACzB,IAAM,MAAY,CAChB,IAAM,EAAO,EAAM,OACb,EAAQ,KAAK,iBAAiB,EAAK,CACzC,GAAI,CAAC,EAAK,YAAa,CACrB,KAAK,SAAS,UAAU,EAAK,CAC7B,OAEE,KAAK,0BAA0B,EAAM,EACvC,KAAK,WACH,EACA,KAAK,QAAQ,eAAe,EAAM,EAAO,KAAK,CAC/C,EAGL,KAAK,QAAQ,oCAAsC,sBAAsB,EAAI,CAAG,GAAK,EACrF,EACF,EAEJ,MAAO,CACL,eAAkB,CAChB,IAAI,GACH,EAAK,GAAK,GAAK,MAAgB,EAAG,YAAY,CAC/C,EAAM,MAER,QAAU,GAEK,GAAK,EAAwB,QAAQ,EAAQ,CAAE,IAAK,aAAc,CAAC,CAElF,UAAY,GAEG,GAAK,EAAwB,UAAU,EAAO,CAE9D,IACC,CACJ,KAAK,MAAQ,KACb,KAAK,WAAc,GAAU,CAC3B,OAAO,QAAQ,EAAM,CAAC,SAAS,CAAC,EAAK,KAAW,CACnC,IAAU,QAAa,OAAO,EAAM,IAC/C,CACF,KAAK,QAAU,CACb,MAAO,GACP,cAAe,EACf,SAAU,EACV,aAAc,EACd,WAAY,EACZ,mBAAoB,EACpB,iBAAkB,EAClB,WAAY,GACZ,WAAY,GACZ,eAAgB,GAChB,aAAgB,GAEhB,kBACA,YAAa,CAAE,MAAO,EAAG,OAAQ,EAAG,CACpC,aAAc,EACd,IAAK,EACL,eAAgB,aAChB,yBAA0B,EAAE,CAC5B,MAAO,EACP,sBAAuB,IACvB,QAAS,GACT,MAAO,GACP,kBAAmB,GACnB,oCAAqC,GACrC,mBAAoB,WACpB,GAAG,EACJ,EAEH,KAAK,OAAU,GAAS,CACtB,IAAI,EAAI,GACP,GAAM,EAAK,KAAK,SAAS,WAAa,MAAgB,EAAG,KAAK,EAAI,KAAM,EAAK,EAEhF,KAAK,YAAcE,QAEf,KAAK,gBAAgB,CACd,CACL,KAAK,YACL,KAAK,MAAQ,KAAK,MAAM,WAAa,KACrC,KAAK,MAAQ,KAAK,MAAM,SAAW,KACpC,EAEF,GAAgB,CACf,KAAK,OAAO,EAAY,EAE1B,CACE,IAAK,GACL,UAAa,KAAK,QAAQ,MAC1B,YAAa,CACX,KAAK,YACL,KAAK,MAAQ,KAAK,MAAM,WAAa,KACrC,KAAK,MAAQ,KAAK,MAAM,SAAW,KACpC,CACF,CACF,CACD,KAAK,YAAgB,CACnB,KAAK,OAAO,OAAO,QAAQ,CAAC,QAAS,GAAM,GAAG,CAAC,CAC/C,KAAK,OAAS,EAAE,CAChB,KAAK,SAAS,YAAY,CACtB,KAAK,OAAS,MAAQ,KAAK,eAC7B,KAAK,aAAa,qBAAqB,KAAK,MAAM,CAClD,KAAK,MAAQ,MAEf,KAAK,YAAc,KACnB,KAAK,cAAgB,KACrB,KAAK,aAAe,MAEtB,KAAK,kBACU,CACX,KAAK,SAAS,EAGlB,KAAK,gBAAoB,CAEvB,IAAM,EAAgB,KAAK,QAAQ,QAAU,KAAK,QAAQ,kBAAkB,CAAG,KAC/E,GAAI,KAAK,gBAAkB,EAAe,CAExC,GADA,KAAK,SAAS,CACV,CAAC,EAAe,CAClB,KAAK,aAAa,CAClB,OAEF,KAAK,cAAgB,EACjB,KAAK,eAAiB,kBAAmB,KAAK,cAChD,KAAK,aAAe,KAAK,cAAc,cAAc,YAErD,KAAK,aAAsB,KAAK,eAAqC,QAAW,KAElF,KAAK,cAAc,QAAS,GAAW,CACrC,KAAK,SAAS,QAAQ,EAAO,EAC7B,CACF,KAAK,OAAO,KACV,KAAK,QAAQ,mBAAmB,KAAO,GAAS,CAC9C,KAAK,WAAa,EAClB,KAAK,aAAa,EAClB,CACH,CACD,KAAK,OAAO,KACV,KAAK,QAAQ,qBAAqB,MAAO,EAAQ,IAAgB,CAC/D,KAAK,kBAAoB,EACzB,KAAK,gBAAkB,EAAc,KAAK,iBAAiB,CAAG,EAAS,UAAY,WAAa,KAChG,KAAK,aAAe,EACpB,KAAK,YAAc,EACf,KAAK,aACP,KAAK,yBAAyB,CAEhC,KAAK,aAAa,EAClB,CACH,CACD,KAAK,gBAAgB,KAAK,iBAAiB,CAAE,CAC3C,YAAa,IAAK,GAClB,SAAU,IAAK,GAChB,CAAC,GAGN,KAAK,MAAQ,KACb,KAAK,YACE,KAAK,QAAQ,SAIlB,KAAK,WAAa,KAAK,YAAc,KAAK,QAAQ,YAC3C,KAAK,WAAW,KAAK,QAAQ,WAAa,QAAU,YAJzD,KAAK,WAAa,KACX,GAKX,KAAK,oBACE,KAAK,QAAQ,SAIlB,KAAK,aAAe,KAAK,eAAiB,OAAO,KAAK,QAAQ,eAAkB,WAAa,KAAK,QAAQ,eAAe,CAAG,KAAK,QAAQ,eAClI,KAAK,eAJV,KAAK,aAAe,KACb,GAKX,KAAK,wBAA0B,EAAc,IAAU,CACrD,IAAM,EAA4C,IAAI,IAChD,EAAuC,IAAI,IACjD,IAAK,IAAI,EAAI,EAAQ,EAAG,GAAK,EAAG,IAAK,CACnC,IAAM,EAAc,EAAa,GACjC,GAAI,EAA0B,IAAI,EAAY,KAAK,CACjD,SAEF,IAAM,EAA8B,EAAqB,IACvD,EAAY,KACb,CAMD,GALI,GAA+B,MAAQ,EAAY,IAAM,EAA4B,IACvF,EAAqB,IAAI,EAAY,KAAM,EAAY,CAC9C,EAAY,IAAM,EAA4B,KACvD,EAA0B,IAAI,EAAY,KAAM,GAAK,CAEnD,EAA0B,OAAS,KAAK,QAAQ,MAClD,MAGJ,OAAO,EAAqB,OAAS,KAAK,QAAQ,MAAQ,MAAM,KAAK,EAAqB,QAAQ,CAAC,CAAC,MAAM,EAAG,IACvG,EAAE,MAAQ,EAAE,IACP,EAAE,MAAQ,EAAE,MAEd,EAAE,IAAM,EAAE,IACjB,CAAC,GAAK,IAAK,IAEf,KAAK,sBAAwBA,OACrB,CACJ,KAAK,QAAQ,MACb,KAAK,QAAQ,aACb,KAAK,QAAQ,aACb,KAAK,QAAQ,WACb,KAAK,QAAQ,QACb,KAAK,QAAQ,MACb,KAAK,QAAQ,mBACd,EACA,EAAO,EAAc,EAAc,EAAY,EAAS,EAAO,KACzC,KAAK,YAAc,IAAK,IAAK,KAAK,YAAc,IAEnE,KAAK,iBAAmB,IAE1B,KAAK,UAAY,EACjB,KAAK,4BAA8B,EAAE,CAC9B,CACL,QACA,eACA,eACA,aACA,UACA,QACA,qBACD,EAEH,CACE,IAAK,GACN,CACF,CACD,KAAK,gBAAkBA,OACf,CAAC,KAAK,uBAAuB,CAAE,KAAK,cAAc,EACvD,CACC,QACA,eACA,eACA,aACA,UACA,QACA,sBACC,IAAkB,CACnB,GAAI,CAAC,EAIH,MAHA,MAAK,kBAAoB,EAAE,CAC3B,KAAK,cAAc,OAAO,CAC1B,KAAK,gBAAgB,OAAO,CACrB,EAAE,CAEX,GAAI,KAAK,gBAAgB,KAAO,MACzB,IAAM,KAAS,KAAK,gBAAgB,MAAM,CACzC,GAAS,GACX,KAAK,gBAAgB,OAAO,EAAM,CAIpC,KAAK,mBACP,KAAK,iBAAmB,GACxB,KAAK,cAAgB,GACrB,KAAK,kBAAoB,EAAE,CAC3B,KAAK,cAAc,OAAO,CAC1B,KAAK,gBAAgB,OAAO,CAC5B,KAAK,4BAA8B,EAAE,EAEnC,KAAK,kBAAkB,SAAW,GAAK,CAAC,KAAK,gBAC/C,KAAK,kBAAoB,KAAK,QAAQ,yBACtC,KAAK,kBAAkB,QAAS,GAAS,CACvC,KAAK,cAAc,IAAI,EAAK,IAAK,EAAK,KAAK,EAC3C,EAEJ,IAAM,EAAM,KAAK,cAAgB,EAAI,KAAK,4BAA4B,OAAS,EAAI,KAAK,IAAI,GAAG,KAAK,4BAA4B,CAAG,EACnI,KAAK,4BAA8B,EAAE,CACjC,KAAK,eAAiB,KAAK,kBAAkB,SAAW,IAC1D,KAAK,cAAgB,IAEvB,IAAM,EAAe,KAAK,kBAAkB,MAAM,EAAG,EAAI,CACnD,EAAoB,MAAM,EAAM,CAAC,KACrC,IAAK,GACN,CACD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IAAK,CAC5B,IAAM,EAAO,EAAa,GACtB,IACF,EAAc,EAAK,MAAQ,GAG/B,IAAK,IAAI,EAAI,EAAK,EAAI,EAAO,IAAK,CAChC,IAAM,EAAM,EAAW,EAAE,CACnB,EAAa,KAAK,gBAAgB,IAAI,EAAE,CAC1C,EACA,EACE,EAAkB,IAAuB,YAAc,EAAc,IAAI,EAAI,CACnF,GAAI,IAAe,IAAK,IAAK,KAAK,QAAQ,MAAQ,EAAG,CACnD,EAAO,EACP,IAAM,EAAY,EAAc,GAC1B,EAAa,IAAc,IAAK,GAA8B,IAAK,GAA/B,EAAa,GACvD,EAAQ,EAAa,EAAW,IAAM,KAAK,QAAQ,IAAM,EAAe,MACnE,CACL,IAAM,EAAsB,KAAK,QAAQ,QAAU,EAAI,EAAa,EAAI,GAAK,KAAK,uBAAuB,EAAc,EAAE,CACzH,EAAQ,EAAsB,EAAoB,IAAM,KAAK,QAAQ,IAAM,EAAe,EAC1F,EAAO,EAAsB,EAAoB,KAAO,EAAI,KAAK,QAAQ,MACrE,KAAK,QAAQ,MAAQ,GAAK,GAC5B,KAAK,gBAAgB,IAAI,EAAG,EAAK,CAGrC,IAAM,EAAe,EAAc,IAAI,EAAI,CACrC,EAAO,OAAO,GAAiB,SAAW,EAAe,KAAK,QAAQ,aAAa,EAAE,CACrF,EAAM,EAAQ,EACpB,EAAa,GAAK,CAChB,MAAO,EACP,QACA,OACA,MACA,MACA,OACD,CACD,EAAc,GAAQ,EAGxB,MADA,MAAK,kBAAoB,EAClB,GAET,CACE,IAAK,GACL,UAAa,KAAK,QAAQ,MAC3B,CACF,CACD,KAAK,eAAiBA,OACd,CACJ,KAAK,iBAAiB,CACtB,KAAK,SAAS,CACd,KAAK,iBAAiB,CACtB,KAAK,QAAQ,MACd,EACA,EAAc,EAAW,EAAc,IAC/B,KAAK,MAAQ,EAAa,OAAS,GAAK,EAAY,EAAI,GAAe,CAC5E,eACA,YACA,eACA,QACD,CAAC,CAAG,KAEP,CACE,IAAK,GACL,UAAa,KAAK,QAAQ,MAC3B,CACF,CACD,KAAK,kBAAoBA,OACjB,CACJ,IAAI,EAAa,KACb,EAAW,KACT,EAAQ,KAAK,gBAAgB,CAMnC,OALI,IACF,EAAa,EAAM,WACnB,EAAW,EAAM,UAEnB,KAAK,YAAY,WAAW,CAAC,KAAK,YAAa,EAAY,EAAS,CAAC,CAC9D,CACL,KAAK,QAAQ,eACb,KAAK,QAAQ,SACb,KAAK,QAAQ,MACb,EACA,EACD,GAEF,EAAgB,EAAU,EAAO,EAAY,IACrC,IAAe,MAAQ,IAAa,KAAO,EAAE,CAAG,EAAe,CACpE,aACA,WACA,WACA,QACD,CAAC,CAEJ,CACE,IAAK,GACL,UAAa,KAAK,QAAQ,MAC3B,CACF,CACD,KAAK,iBAAoB,GAAS,CAChC,IAAM,EAAgB,KAAK,QAAQ,eAC7B,EAAW,EAAK,aAAa,EAAc,CAOjD,OANK,EAME,SAAS,EAAU,GAAG,EAL3B,QAAQ,KACN,2BAA2B,EAAc,gCAC1C,CACM,KAIX,KAAK,0BAA6B,GAAU,CAE1C,GAAI,CAAC,KAAK,aAAe,KAAK,YAAY,WAAa,SACrD,MAAO,GAET,IAAM,EAAc,KAAK,YAAY,OAAgB,KAAK,wBAAwB,KAAK,YAAY,iBAAiB,EAAwB,MAC5I,GAAI,IAAgB,IAAK,IAAK,KAAK,MAAO,CACxC,IAAM,EAAa,KAAK,IACtB,KAAK,QAAQ,SACb,KAAK,MAAM,KAAK,MAAM,SAAW,KAAK,MAAM,YAAc,EAAE,CAC7D,CACK,EAAW,KAAK,IAAI,EAAG,EAAc,EAAW,CAChD,EAAW,KAAK,IACpB,KAAK,QAAQ,MAAQ,EACrB,EAAc,EACf,CACD,OAAO,GAAS,GAAY,GAAS,EAEvC,MAAO,IAET,KAAK,eAAkB,GAAS,CAC9B,GAAI,CAAC,EAAM,CACT,KAAK,cAAc,SAAS,EAAQ,IAAS,CACtC,EAAO,cACV,KAAK,SAAS,UAAU,EAAO,CAC/B,KAAK,cAAc,OAAO,EAAK,GAEjC,CACF,OAEF,IAAM,EAAQ,KAAK,iBAAiB,EAAK,CACnC,EAAM,KAAK,QAAQ,WAAW,EAAM,CACpC,EAAW,KAAK,cAAc,IAAI,EAAI,CACxC,IAAa,IACX,GACF,KAAK,SAAS,UAAU,EAAS,CAEnC,KAAK,SAAS,QAAQ,EAAK,CAC3B,KAAK,cAAc,IAAI,EAAK,EAAK,GAE9B,CAAC,KAAK,aAAe,KAAK,cAAgB,KAAK,0BAA0B,EAAM,EAClF,KAAK,WAAW,EAAO,KAAK,QAAQ,eAAe,EAAM,IAAK,GAAG,KAAK,CAAC,EAG3E,KAAK,YAAc,EAAO,IAAS,CAEjC,IAAM,EAAO,KAAK,kBAAkB,GACpC,GAAI,CAAC,EAAM,OAEX,IAAM,EAAQ,GADG,KAAK,cAAc,IAAI,EAAK,IAAI,EAAI,EAAK,MAEtD,IAAU,IACD,KAAK,aAAmC,WAAc,WAAa,KAAK,6CAA+C,IAAK,GAAyE,EAAK,MAAQ,KAAK,iBAAiB,CAAG,KAAK,kBAAhH,KAAK,2CAA2C,EAAM,EAAO,KAAK,GAI3M,KAAK,gBAAgB,KAAK,iBAAiB,CAAE,CAC3C,YAAa,KAAK,mBAAqB,EACvC,SAAU,IAAK,GAChB,CAAC,CAEJ,KAAK,4BAA4B,KAAK,EAAK,MAAM,CACjD,KAAK,cAAgB,IAAI,IAAI,KAAK,cAAc,IAAI,EAAK,IAAK,EAAK,CAAC,CACpE,KAAK,OAAO,GAAM,GAGtB,KAAK,gBAAkBA,OACf,CAAC,KAAK,mBAAmB,CAAE,KAAK,iBAAiB,CAAC,EACvD,EAAS,IAAiB,CACzB,IAAM,EAAe,EAAE,CACvB,IAAK,IAAI,EAAI,EAAG,EAAM,EAAQ,OAAQ,EAAI,EAAK,IAAK,CAElD,IAAM,EAAc,EADV,EAAQ,IAElB,EAAa,KAAK,EAAY,CAEhC,OAAO,GAET,CACE,IAAK,GACL,UAAa,KAAK,QAAQ,MAC3B,CACF,CACD,KAAK,wBAA2B,GAAW,CACzC,IAAM,EAAe,KAAK,iBAAiB,CACvC,KAAa,SAAW,EAG5B,OAAO,GACL,EAAa,GACX,EACA,EAAa,OAAS,EACrB,GAAU,GAAa,EAAa,GAAO,CAAC,MAC7C,EACD,EACF,EAEH,KAAK,uBAA2B,CAC9B,GAAI,CAAC,KAAK,cAAe,MAAO,GAChC,GAAI,iBAAkB,KAAK,cACzB,OAAO,KAAK,QAAQ,WAAa,KAAK,cAAc,YAAc,KAAK,cAAc,YAAc,KAAK,cAAc,aAAe,KAAK,cAAc,aACnJ,CACL,IAAM,EAAM,KAAK,cAAc,SAAS,gBACxC,OAAO,KAAK,QAAQ,WAAa,EAAI,YAAc,KAAK,cAAc,WAAa,EAAI,aAAe,KAAK,cAAc,cAG7H,KAAK,uBAAyB,EAAU,EAAO,EAAW,IAAM,CAC9D,GAAI,CAAC,KAAK,cAAe,MAAO,GAChC,IAAM,EAAO,KAAK,SAAS,CACrB,EAAe,KAAK,iBAAiB,CACvC,IAAU,SACZ,EAAQ,GAAY,EAAe,EAAO,MAAQ,SAEhD,IAAU,SACZ,IAAa,EAAW,GAAQ,EACvB,IAAU,QACnB,GAAY,GAEd,IAAM,EAAY,KAAK,oBAAoB,CAC3C,OAAO,KAAK,IAAI,KAAK,IAAI,EAAW,EAAS,CAAE,EAAE,EAEnD,KAAK,mBAAqB,EAAO,EAAQ,SAAW,CAClD,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAO,KAAK,QAAQ,MAAQ,EAAE,CAAC,CAC5D,IAAM,EAAO,KAAK,SAAS,CACrB,EAAe,KAAK,iBAAiB,CACrC,EAAO,KAAK,kBAAkB,GACpC,GAAI,CAAC,EAAM,OACX,GAAI,IAAU,OACZ,GAAI,EAAK,KAAO,EAAe,EAAO,KAAK,QAAQ,iBACjD,EAAQ,cACC,EAAK,OAAS,EAAe,KAAK,QAAQ,mBACnD,EAAQ,aAER,MAAO,CAAC,EAAc,EAAM,CAGhC,GAAI,IAAU,OAAS,IAAU,KAAK,QAAQ,MAAQ,EACpD,MAAO,CAAC,KAAK,oBAAoB,CAAE,EAAM,CAE3C,IAAM,EAAW,IAAU,MAAQ,EAAK,IAAM,KAAK,QAAQ,iBAAmB,EAAK,MAAQ,KAAK,QAAQ,mBACxG,MAAO,CACL,KAAK,sBAAsB,EAAU,EAAO,EAAK,KAAK,CACtD,EACD,EAEH,KAAK,gBAAkB,EAAU,CAAE,QAAQ,QAAS,WAAW,QAAW,EAAE,GAAK,CAC/E,IAAM,EAAS,KAAK,sBAAsB,EAAU,EAAM,CACpD,EAAM,KAAK,KAAK,CACtB,KAAK,YAAc,CACjB,MAAO,KACP,QACA,WACA,UAAW,EACX,iBAAkB,EAClB,aAAc,EACf,CACD,KAAK,gBAAgB,EAAQ,CAAE,YAAa,IAAK,GAAG,WAAU,CAAC,CAC/D,KAAK,yBAAyB,EAEhC,KAAK,eAAiB,EAAO,CAC3B,MAAO,EAAe,OACtB,WAAW,QACT,EAAE,GAAK,CACT,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAO,KAAK,QAAQ,MAAQ,EAAE,CAAC,CAC5D,IAAM,EAAa,KAAK,kBAAkB,EAAO,EAAa,CAC9D,GAAI,CAAC,EACH,OAEF,GAAM,CAAC,EAAQ,GAAS,EAClB,EAAM,KAAK,KAAK,CACtB,KAAK,YAAc,CACjB,QACA,QACA,WACA,UAAW,EACX,iBAAkB,EAClB,aAAc,EACf,CACD,KAAK,gBAAgB,EAAQ,CAAE,YAAa,IAAK,GAAG,WAAU,CAAC,CAC/D,KAAK,yBAAyB,EAEhC,KAAK,UAAY,EAAO,CAAE,WAAW,QAAW,EAAE,GAAK,CACrD,IAAM,EAAS,KAAK,iBAAiB,CAAG,EAClC,EAAM,KAAK,KAAK,CACtB,KAAK,YAAc,CACjB,MAAO,KACP,MAAO,QACP,WACA,UAAW,EACX,iBAAkB,EAClB,aAAc,EACf,CACD,KAAK,gBAAgB,EAAQ,CAAE,YAAa,IAAK,GAAG,WAAU,CAAC,CAC/D,KAAK,yBAAyB,EAEhC,KAAK,iBAAqB,CAExB,IAAM,EAAe,KAAK,iBAAiB,CACvC,EACJ,GAAI,EAAa,SAAW,EAC1B,EAAM,KAAK,QAAQ,qBACV,KAAK,QAAQ,QAAU,EAChC,EAAa,EAAa,EAAa,OAAS,IAA0B,KAAQ,MAC7E,CACL,IAAM,EAAY,MAAM,KAAK,QAAQ,MAAM,CAAC,KAAK,KAAK,CAClD,EAAW,EAAa,OAAS,EACrC,KAAO,GAAY,GAAK,EAAU,KAAM,GAAQ,IAAQ,KAAK,EAAE,CAC7D,IAAM,EAAO,EAAa,GACtB,EAAU,EAAK,QAAU,OAC3B,EAAU,EAAK,MAAQ,EAAK,KAE9B,IAEF,EAAM,KAAK,IAAI,GAAG,EAAU,OAAQ,GAAQ,IAAQ,KAAK,CAAC,CAE5D,OAAO,KAAK,IACV,EAAM,KAAK,QAAQ,aAAe,KAAK,QAAQ,WAC/C,EACD,EAEH,KAAK,iBAAmB,EAAQ,CAC9B,cACA,cACI,CACJ,KAAK,QAAQ,WAAW,EAAQ,CAAE,WAAU,cAAa,CAAE,KAAK,EAElE,KAAK,YAAgB,CACnB,KAAK,cAAgC,IAAI,IACzC,KAAK,gBAAkC,IAAI,IAC3C,KAAK,OAAO,GAAM,EAEpB,KAAK,WAAW,EAAK,CAEvB,yBAA0B,CACxB,GAAI,CAAC,KAAK,aAAc,CACtB,KAAK,YAAc,KACnB,OAEE,AACJ,KAAK,QAAQ,KAAK,aAAa,0BAA4B,CACzD,KAAK,MAAQ,KACb,KAAK,iBAAiB,EACtB,CAEJ,iBAAkB,CAGhB,GAFI,CAAC,KAAK,aAEN,CADO,KAAK,cACP,OAET,GAAI,KAAK,KAAK,CAAG,KAAK,YAAY,UAAY,IAAkB,CAC9D,KAAK,YAAc,KACnB,OAEF,IAAM,EAAa,KAAK,YAAY,OAAS,KAAgF,IAAK,GAA9E,KAAK,kBAAkB,KAAK,YAAY,MAAO,KAAK,YAAY,MAAM,CACpH,EAAe,EAAa,EAAW,GAAK,KAAK,YAAY,iBAE7D,EAAgB,IAAiB,KAAK,YAAY,iBACxD,GAAI,CAAC,GAAiB,GAAY,EAAc,KAAK,iBAAiB,CAAC,CAErE,IADA,KAAK,YAAY,eACb,KAAK,YAAY,cAAgB,EAAe,CAClD,KAAK,YAAc,KACnB,aAGF,KAAK,YAAY,aAAe,EAC5B,IACF,KAAK,YAAY,iBAAmB,EACpC,KAAK,YAAY,SAAW,OAC5B,KAAK,gBAAgB,EAAc,CACjC,YAAa,IAAK,GAClB,SAAU,OACX,CAAC,EAGN,KAAK,yBAAyB,GAG5B,IAA2B,EAAK,EAAM,EAAiB,IAAU,CACrE,KAAO,GAAO,GAAM,CAClB,IAAM,GAAU,EAAM,GAAQ,EAAI,EAC5B,EAAe,EAAgB,EAAO,CAC5C,GAAI,EAAe,EACjB,EAAM,EAAS,UACN,EAAe,EACxB,EAAO,EAAS,OAEhB,OAAO,EAMT,OAHE,EAAM,EACD,EAAM,EAEN,GAGX,SAAS,GAAe,CACtB,eACA,YACA,eACA,SACC,CACD,IAAM,EAAY,EAAa,OAAS,EAClC,EAAa,GAAU,EAAa,GAAO,MACjD,GAAI,EAAa,QAAU,EACzB,MAAO,CACL,WAAY,EACZ,SAAU,EACX,CAEH,IAAI,EAAa,GACf,EACA,EACA,EACA,EACD,CACG,EAAW,EACf,GAAI,IAAU,EACZ,KAAO,EAAW,GAAa,EAAa,GAAU,IAAM,EAAe,GACzE,YAEO,EAAQ,EAAG,CACpB,IAAM,EAAa,MAAM,EAAM,CAAC,KAAK,EAAE,CACvC,KAAO,EAAW,GAAa,EAAW,KAAM,GAAQ,EAAM,EAAe,EAAU,EAAE,CACvF,IAAM,EAAO,EAAa,GAC1B,EAAW,EAAK,MAAQ,EAAK,IAC7B,IAEF,IAAM,EAAe,MAAM,EAAM,CAAC,KAAK,EAAe,EAAU,CAChE,KAAO,GAAc,GAAK,EAAa,KAAM,GAAQ,GAAO,EAAa,EAAE,CACzE,IAAM,EAAO,EAAa,GAC1B,EAAa,EAAK,MAAQ,EAAK,MAC/B,IAEF,EAAa,KAAK,IAAI,EAAG,EAAa,EAAa,EAAM,CACzD,EAAW,KAAK,IAAI,EAAW,GAAY,EAAQ,EAAI,EAAW,GAAO,CAE3E,MAAO,CAAE,aAAY,WAAU,CC55BjC,IAAM,GAA4B,OAAO,SAAa,IAAA,EAAoB,gBAAA,EAAwB,UAClG,SAAS,GAAmB,CAC1B,eAAe,GACf,GAAG,GACF,CACD,IAAM,EAAA,EAAiB,gBAAkB,EAAE,EAAG,EAAE,CAAC,CAAC,GAC5C,EAAkB,CACtB,GAAG,EACH,UAAW,EAAW,IAAS,CAC7B,IAAI,EACA,GAAgB,GAClB,EAAA,GAAA,WAAU,EAAS,CAEnB,GAAU,EAEX,EAAK,EAAQ,WAAa,MAAgB,EAAG,KAAK,EAAS,EAAW,EAAK,EAE/E,CACK,CAAC,GAAA,EAAkB,aACjB,IAAI,GAAY,EAAgB,CACvC,CAQD,OAPA,EAAS,WAAW,EAAgB,CACpC,OACS,EAAS,WAAW,CAC1B,EAAE,CAAC,CACN,OACS,EAAS,aAAa,CAC7B,CACK,EAET,SAAS,GAAe,EAAS,CAC/B,OAAO,GAAmB,CACxB,sBACA,wBACA,WAAY,GACZ,GAAG,EACJ,CAAC,CC/BJ,IAAM,GAAwC,CAC5C,IAAK,IACL,IAAK,IACL,QAAS,IACV,CACK,GAAwC,CAC5C,IAAK,iBACL,IAAK,iBACL,QAAS,0BACV,CAED,SAAgB,GAAe,CAAE,aAAyD,CACxF,OACE,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,YACZ,iBAAgB,EAChB,MAAO,CACL,QAAS,eACT,MAAO,GACP,UAAW,SACX,MAAO,GAAM,GACd,UAEA,GAAM,GACF,CAAA,CC9BX,IAAM,GAAoC,CACxC,IAAK,iBACL,IAAK,kBACL,IAAK,sBACL,IAAK,gBACL,IAAK,qBACL,IAAK,gBACN,CAEK,GAAsC,CAC1C,IAAK,UACL,IAAK,WACL,IAAK,eACL,IAAK,SACL,IAAK,cACL,IAAK,MACN,CAED,SAAgB,GAAQ,CAAE,QAA6C,CACrE,IAAM,EAAI,GAAI,GACd,OACE,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,WACZ,YAAW,EACX,MAAO,GAAM,GACb,MAAO,CACL,QAAS,eACT,MAAO,GACP,UAAW,SACX,QAAS,QACT,SAAU,4BACV,cAAe,YACf,WAAY,0BAA0B,EAAE,qBACxC,MAAO,OAAO,EAAE,GAChB,aAAc,EACf,UAEA,EACI,CAAA,CCtCX,SAAS,GAAI,EAA2B,CAGtC,OAFI,GAAM,KAAa,IACnB,EAAK,IAAa,GAAG,EAAG,IACrB,IAAI,EAAK,KAAM,QAAQ,EAAE,CAAC,GAGnC,SAAgB,GAAY,CAC1B,KACA,QAIc,CACd,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,eACZ,YAAW,GAAQ,GACnB,UAAU,UACV,MAAO,CACL,SAAU,WACV,MAAO,GACP,OAAQ,oBACR,QAAS,OACT,WAAY,SACZ,mBAAoB,eACrB,UAXH,EAaE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,GAAI,EAAG,CAAQ,CAAA,CACrB,IACC,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,cACZ,MAAO,CACL,SAAU,WACV,KAAM,EACN,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,WAAY,iBAAiB,EAAK,GACnC,CACD,CAAA,CAEA,GC1CV,SAAgB,GAAY,CAAE,QAAuC,CACnE,OACE,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,cACZ,UAAU,UACV,MAAO,CACL,MAAO,0BACP,aAAc,WACd,WAAY,SACZ,SAAU,SACV,QAAS,eACT,SAAU,OACX,UAEA,EACI,CAAA,CCMX,IAAa,GACX,mEAEI,GAA2B,CAC/B,SAAU,EACV,SAAU,SACV,aAAc,WACd,WAAY,SACb,CAED,SAAS,GAAU,EAAmB,EAA6B,CAIjE,OAHI,EAAmB,sBACnB,EAAI,SAAW,SAAW,EAAI,cAAsB,2BACpD,EAAI,SAAW,UAAY,EAAI,SAAW,YAAoB,uBAC3D,cAGT,SAAS,GAAa,EAAkC,CAItD,OAHI,EAAI,OAAS,UAAY,EAAI,OAAS,wBACjC,EAAI,YAAc,EAAI,OAExB,EAAI,QAAU,EAAI,WAG3B,SAAS,GAAkB,EAA2B,CACpD,IAAM,EAAQ,GAAa,EAAI,CAQ/B,OANG,EAAI,OAAS,UAAY,EAAI,OAAS,0BACvC,EAAI,QACJ,EAAI,WAEG,GAAG,EAAI,WAAW,IAAI,EAAI,OAAO,GAEnC,GAAS,GAGlB,SAAS,GACP,EACmE,CAqBnE,OApBI,EAAI,cACC,CAAE,KAAM,OAAQ,MAAO,yBAA0B,KAAM,QAAS,CAErE,EAAI,SAAW,QACV,CAAE,KAAM,MAAO,MAAO,iBAAkB,KAAM,QAAS,CAE5D,EAAI,SAAW,YACV,CACL,KAAM,UACN,MAAO,mDACP,KAAM,UACP,CAEC,EAAI,SAAW,SACV,CACL,KAAM,SACN,MAAO,sDACP,KAAM,UACP,CAEI,KAQT,SAAS,GAAiB,EAAc,EAA4B,CAClE,GAAI,EAAM,OAAS,EAAG,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SAAG,EAAQ,CAAA,CACxC,IAAM,EAAQ,EAAK,aAAa,CAC1B,EAAS,EAAM,aAAa,CAC5B,EAAuB,EAAE,CAC3B,EAAO,EACP,EAAM,EAAM,QAAQ,EAAQ,EAAK,CACrC,KAAO,IAAQ,IACT,EAAM,GACR,EAAM,MAAK,EAAA,EAAA,KAAC,OAAD,CAAA,SAAyB,EAAK,MAAM,EAAM,EAAI,CAAQ,CAA3C,KAAK,IAAsC,CAAC,CAEpE,EAAM,MACJ,EAAA,EAAA,KAAC,OAAD,CAEE,MAAO,CACL,WAAY,+BACZ,MAAO,+BACR,UAEA,EAAK,MAAM,EAAK,EAAM,EAAM,OAAO,CAC/B,CAPA,KAAK,IAOL,CACR,CACD,EAAO,EAAM,EAAM,OACnB,EAAM,EAAM,QAAQ,EAAQ,EAAK,CAKnC,OAHI,EAAO,EAAK,QACd,EAAM,MAAK,EAAA,EAAA,KAAC,OAAD,CAAA,SAAyB,EAAK,MAAM,EAAK,CAAQ,CAAtC,KAAK,IAAiC,CAAC,EAExD,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SAAG,EAAS,CAAA,CAGrB,IAAa,IAAA,EAAA,EAAA,MAAgB,SAAkB,CAC7C,MACA,aACA,UACA,QACA,cAAc,GACd,gBAAgB,GAChB,gBAAgB,KAChB,aAAa,MACgB,CAC7B,IAAM,EAAQ,GAAa,EAAI,CACzB,EAAa,GAAkB,EAAI,CACnC,EAAQ,GAAY,EAAI,CACxB,EACJ,IAAe,WACX,mDACA,IAAe,UACb,kDACA,KAER,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,MACL,gBAAe,EAAI,IAAM,EACzB,gBAAe,EACf,aAAY,GAAG,EAAI,OAAS,QAAQ,GAAG,EAAI,MAAM,GAAG,EAAI,IAAI,GAAG,EAAI,QAAQ,GAAG,GAAS,aACrF,EAAQ,IAAI,EAAM,OAAS,KAC1B,EAAiB,IAAI,IAAmB,KAC3C,MAAO,GAAkB,IAAA,GAChB,UACT,UAAY,GAAU,EAChB,EAAM,MAAQ,SAAW,EAAM,MAAQ,OACzC,EAAM,gBAAgB,CACtB,GAAS,GAGb,SAAU,EAAa,EAAI,GAC3B,cAAa,OAAO,EAAI,MACxB,gBAAe,EAAa,OAAS,IAAA,GACrC,oBAAmB,EAAgB,OAAS,IAAA,GAC5C,sBAAqB,GAAiB,IAAA,GACtC,mBAAkB,GAAc,IAAA,GAChC,MAAO,CACL,QAAS,OACT,oBAAqB,GACrB,WAAY,SACZ,OAAQ,oBACR,UAAW,aACX,QAAS,UACT,OAAQ,UACR,SAAU,cACV,WAAY,EACR,yBACA,EACE,yDACA,EACE,oEACA,cACR,GAAG,EACJ,UAtCH,EAwCE,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,WACL,cAAY,WACZ,MAAO,CACL,GAAG,GACH,MAAO,EACP,OAAQ,OACR,WACE,GAAiB,CAAC,EACd,+BACA,GAAU,EAAK,EAAW,CACjC,CACD,CAAA,EACF,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,UAAU,KAAK,MAAO,YACxC,EAAI,OAAS,IACV,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,UAAU,KAAK,MAAO,YACxC,EAAI,MACD,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,MAAO,YACzB,EAAI,eACH,EAAA,EAAA,KAAC,GAAD,CACE,KAAM,GACN,cAAY,kBACZ,aAAW,yBACX,MAAO,CAAE,MAAO,8BAA+B,QAAS,QAAS,CACjE,CAAA,EAEF,EAAA,EAAA,KAAC,GAAD,CAAgB,UAAW,EAAI,IAAO,CAAA,CAEpC,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,MAAO,aAC1B,EAAA,EAAA,KAAC,GAAD,CAAS,KAAM,EAAI,QAAW,CAAA,CAC1B,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,WACL,UAAU,SACV,MAAO,EACP,MAAO,CACL,GAAG,GACH,QAAS,OACT,WAAY,SACZ,IAAK,iBACN,UATH,CAWG,GACC,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,mBACZ,MAAO,EAAM,MACb,MAAO,CACL,MAAO,EAAM,OAAS,QAAU,2BAA6B,uBAC7D,SAAU,4BACV,WAAY,IACZ,WAAY,EACb,UAEA,EAAM,KACF,CAAA,CACL,MACJ,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CACL,WAAY,EAAQ,IAAM,IAC1B,SAAU,EACV,SAAU,SACV,aAAc,WACd,WAAY,SACZ,QAAS,QACV,UAEA,EAAQ,GAAiB,EAAO,EAAY,CAAG,IAC3C,CAAA,CACH,IACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,UAAU,KAAK,MAAO,EAAI,WAAa,GAAI,MAAO,YACpE,EAAI,cAAgB,IACjB,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,UAAU,KAAK,MAAO,EAAI,QAAU,GAAI,MAAO,YACjE,EAAI,WAAa,IACd,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,MAAO,aAC1B,EAAA,EAAA,KAAC,GAAD,CAAa,GAAI,EAAI,UAAW,KAAM,EAAI,YAAe,CAAA,CACrD,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,KAAK,WAAW,MAAO,aAC1B,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,EAAI,SAAW,EAAI,eAAkB,CAAA,CACpD,CAAA,CACF,IAER,CC3PF,SAAS,GAAe,EAAoB,CAK1C,OAJI,EAAK,GAAW,GAAG,EAAG,IACtB,EAAK,IAAe,IAAI,EAAK,KAAM,QAAQ,EAAE,CAAC,GAG3C,GAFG,KAAK,MAAM,EAAK,IAEhB,CAAE,IADF,KAAK,MAAO,EAAK,IAAU,IACrB,CAAE,GAGpB,SAAgB,GAAe,CAC7B,QACA,YACA,SACA,QACA,aACA,cACA,WACA,gBACmC,CACnC,IAAM,EACJ,IAAU,UACN,WAAW,GAAmB,EAAU,GACxC,WAAW,GAAU,IAAI,MAAM,GAAG,GAElC,EAAY,EAAc,UAAU,IAAU,YAAY,IAEhE,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,MACL,cAAa,gBAAgB,IAC7B,SAAU,GACV,MAAO,CACL,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,iCACR,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,YAAa,IAAU,OAAS,iBAAmB,iBACnD,aAAc,iBACd,WAAY,+BACZ,MAAO,+BACP,SAAU,4BACV,WAAY,mBACZ,WAAY,OACZ,GAAG,EACJ,UArBH,EAuBE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,aAAY,EACZ,QAAS,EACT,MAAO,CACL,WAAY,OACZ,OAAQ,OACR,OAAQ,UACR,MAAO,+BACP,QAAS,OACT,WAAY,SACZ,QAAS,EACT,WAAY,EACb,UAEA,GAAc,EAAA,EAAA,KAAC,GAAD,CAAc,KAAM,GAAM,CAAA,EAAG,EAAA,EAAA,KAAC,GAAD,CAAa,KAAM,GAAM,CAAA,CAC9D,CAAA,EACT,EAAA,EAAA,KAAC,OAAD,CACE,MAAO,CAAE,KAAM,EAAG,WAAY,yBAAyD,UAEtF,EACI,CAAA,EACP,EAAA,EAAA,MAAC,OAAD,CAAM,MAAO,CAAE,MAAO,iCAAkC,WAAY,EAAG,UAAvE,CACG,EAAM,IAAE,IAAU,EAAI,QAAU,SAAS,MAAI,GAAe,EAAW,CACnE,GACH,GCrFV,SAAgB,GAAc,CAC5B,MACA,aACA,UACA,SAMc,CACd,IAAM,EAA2B,CAC/B,SAAU,EACV,SAAU,SACV,aAAc,WACd,WAAY,SACb,CAED,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,MACL,gBAAe,EAAI,IAAM,EACzB,gBAAe,EACN,UACT,UAAY,GAAU,EAChB,EAAM,MAAQ,SAAW,EAAM,MAAQ,OACzC,EAAM,gBAAgB,CACtB,GAAS,GAGb,SAAU,EAAa,EAAI,GAC3B,cAAa,eAAe,EAAI,MAChC,MAAO,CACL,QAAS,OACT,oBAAqB,UACrB,WAAY,SACZ,OAAQ,oBACR,UAAW,aACX,QAAS,UACT,OAAQ,UACR,WAAY,EAAa,8BAAgC,cACzD,GAAG,EACJ,UAvBH,EAyBE,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,WACL,cAAY,mBACZ,MAAO,CACL,MAAO,EACP,OAAQ,OACR,SAAU,SACV,WACE,wFACH,CACD,CAAA,EACF,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,WACL,UAAU,OACV,MAAO,CAAE,GAAG,EAAW,MAAO,2BAA4B,UAEzD,cAAc,EAAI,WAAa,IAAI,KAAK,EAAI,kBAAoB,YAC7D,CAAA,CACF,GCzDV,IAAM,GAAc,CAClB,IAAK,GACL,cAAe,GACf,OAAQ,GACT,CAEK,GAAgB,CACpB,CAAE,IAAK,OAAQ,MAAO,GAAI,UAAW,YAAa,CAClD,CAAE,IAAK,KAAM,MAAO,KAAM,UAAW,sBAAuB,CAC5D,CAAE,IAAK,OAAQ,MAAO,OAAQ,UAAW,OAAQ,CACjD,CAAE,IAAK,YAAa,MAAO,MAAO,UAAW,YAAa,CAC1D,CAAE,IAAK,OAAQ,MAAO,OAAQ,UAAW,OAAQ,CACjD,CAAE,IAAK,QAAS,MAAO,QAAS,UAAW,QAAS,CACpD,CAAE,IAAK,UAAW,MAAO,UAAW,UAAW,UAAW,CAC1D,CAAE,IAAK,OAAQ,MAAO,OAAQ,UAAW,OAAQ,CACjD,CAAE,IAAK,UAAW,MAAO,UAAW,UAAW,UAAW,CAC1D,CAAE,IAAK,UAAW,MAAO,UAAW,UAAW,uBAAwB,CACxE,CAED,SAAS,GAAe,EAA6C,CAEnE,OADI,EAAK,OAAS,SAAiB,SAC5B,MAeT,SAAgB,GAAa,CAC3B,QACA,OACA,cACA,WACA,cAAc,GACd,gBAAgB,KAChB,mBACA,iBACA,iBACiC,CACjC,IAAM,GAAA,EAAA,EAAA,QAAmC,KAAK,CACxC,GAAA,EAAA,EAAA,aAA+B,CACnC,IAAM,EAAU,IAAI,IACpB,IAAK,IAAM,KAAQ,EACjB,GAAI,EAAK,OAAS,MAAO,CACvB,IAAM,EAAM,EAAK,EAAK,QAClB,GAAK,EAAQ,IAAI,EAAI,IAAI,CAGjC,OAAO,GACN,CAAC,EAAO,EAAK,CAAC,CACX,EAAc,IAAgB,KAA2B,IAAA,GAApB,EAAK,GAC1C,EAAkB,GAAa,SAAW,KAC1C,EAAsB,IAAoB,MAAQ,EAAe,IAAI,EAAgB,CACrF,EACJ,IAAoB,MAAQ,CAAC,EACzB,GAAa,OAAS,WACpB,UACA,WACF,KACA,EAAI,GAAe,CACvB,MAAO,EAAM,OACb,qBAAwB,EAAU,QAClC,aAAe,GAAM,CACnB,IAAM,EAAO,EAAM,GAEnB,OADK,EACE,GAAY,GAAe,EAAK,GAAK,GAD1B,IAGpB,SAAU,GACX,CAAC,CAMI,GAAA,EAAA,EAAA,QAAuB,GAAK,CAG5B,GAAA,EAAA,EAAA,iBAAyC,CAC7C,IAAM,EAAK,EAAU,QAChB,IACL,EAAG,UAAY,EAAG,eACjB,EAAE,CAAC,EAKN,EAAA,EAAA,eAAgB,CAEd,GADI,CAAC,EAAc,SACf,EAAM,SAAW,EAAG,OACxB,IAAM,EAAM,sBAAsB,EAAe,CACjD,UAAa,qBAAqB,EAAI,EACrC,CAAC,EAAM,OAAQ,EAAe,CAAC,EAKlC,EAAA,EAAA,eAAgB,CACd,GAAI,IAAgB,KAAM,OAC1B,IAAM,EAAW,EAAM,UACpB,GAAO,EAAG,OAAS,OAAS,EAAK,EAAG,SAAS,MAAQ,EACvD,CACD,GAAI,EAAW,EAAG,OAClB,IAAM,EAAU,EAAE,iBAAiB,CACnC,GAAI,EAAQ,OAAS,EAAG,CACtB,IAAM,EAAQ,EAAQ,IAAI,OAAS,EAC7B,EAAO,EAAQ,EAAQ,OAAS,IAAI,OAAS,EAInD,GAAI,GAAY,EAAQ,GAAU,GAAY,EAAO,EACnD,OAGJ,EAAc,QAAU,GACxB,EAAE,cAAc,EAAU,CAAE,MAAO,SAAU,CAAC,EAC7C,CAAC,EAAa,EAAO,EAAM,EAAE,CAAC,CAEjC,IAAM,GAAA,EAAA,EAAA,iBAAmC,CACvC,IAAM,EAAK,EAAU,QAChB,IAEL,EAAc,QADa,EAAG,aAAe,EAAG,UAAY,EAAG,cACjB,IAC7C,EAAE,CAAC,CAGA,EAAe,EAAE,iBAAiB,CAClC,GAAA,EAAA,EAAA,aAAyB,CAC7B,GAAI,EAAa,SAAW,EAAG,OAAO,KACtC,IAAM,EAAU,EAAa,GAC7B,GAAI,IAAY,IAAA,GAAW,OAAO,KAElC,IAAK,IAAI,EAAI,EAAQ,MAAO,GAAK,EAAG,IAAK,CACvC,IAAM,EAAO,EAAM,GACf,OAAS,IAAA,IACT,EAAK,OAAS,SAAU,CAC1B,IAAM,EACJ,EAAK,QAAU,UACX,WAAW,GAAmB,EAAK,UAAU,GAC7C,WAAW,EAAK,QAAU,IAAI,MAAM,GAAG,GAC7C,MAAO,CAAE,MAAO,EAAK,MAAO,QAAO,EAGvC,OAAO,MACN,CAAC,EAAc,EAAM,CAAC,CAGnB,GAAA,EAAA,EAAA,QAA0C,KAAK,EACrD,EAAA,EAAA,eAAgB,CACd,IAAM,EAAO,EAAgB,SACb,GAAM,QAAU,GAAU,OAAS,GAAM,QAAU,GAAU,QAC9D,GACb,EAAiB,EAAS,CAE5B,EAAgB,QAAU,GACzB,CAAC,EAAU,EAAiB,CAAC,CAEhC,IAAM,EAAiC,CACrC,SAAU,EACV,SAAU,SACV,aAAc,WACd,WAAY,SACb,CAED,OACE,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,sBACZ,UAAU,sBACV,MAAO,CACL,QAAS,OACT,cAAe,SACf,OAAQ,OACR,UAAW,EACX,SAAU,EACX,WAED,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,EACK,WACV,KAAK,OACL,aAAW,qBACX,gBAAe,EAAM,OACrB,cAAY,gBACZ,MAAO,CACL,KAAM,EACN,UAAW,EACX,SAAU,OACV,WAAY,kBACZ,SAAU,EACX,WAED,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,SAAU,cAAe,UAAvC,EACE,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,MACL,SAAU,GACV,cAAY,yBACZ,MAAO,CACL,QAAS,OACT,oBAAqB,GACrB,SAAU,cACV,WAAY,SACZ,OAAQ,GACR,UAAW,aACX,QAAS,UACT,SAAU,SACV,IAAK,EACL,OAAQ,EACR,WAAY,uBACZ,aAAc,gCACd,MAAO,0BACP,WAAY,mBACZ,SAAU,4BACV,WAAY,yBACZ,cAAe,YACf,cAAe,SAChB,UAEA,GAAc,KAAK,CAAE,MAAK,QAAO,gBAChC,EAAA,EAAA,KAAC,MAAD,CAEE,KAAK,eACL,aAAY,EACZ,SAAU,GACV,MAAO,WAEN,EACG,CAPC,EAOD,CACN,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,OAAQ,EAAE,cAAc,CAAE,SAAU,WAAY,UAC3D,EAAE,iBAAiB,CAAC,IAAK,GAAO,CAC/B,IAAM,EAAO,EAAM,EAAG,OACtB,GAAI,CAAC,EAAM,OAAO,KAElB,GAAI,EAAK,OAAS,SAAU,CAC1B,IAAM,EAAuB,CAC3B,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,GACR,UAAW,cAAc,EAAG,MAAM,KACnC,CACD,OACE,EAAA,EAAA,KAAC,GAAD,CAEE,MAAO,EAAK,MACZ,UAAW,EAAK,UAChB,GAAK,EAAK,SAAW,IAAA,GAAsC,EAAE,CAA5B,CAAE,OAAQ,EAAK,OAAQ,CACxD,MAAO,EAAK,MACZ,WAAY,EAAK,WACjB,YAAa,GAAgB,IAAI,EAAK,SAAS,EAAI,GACnD,aAAgB,IAAgB,EAAK,SAAS,CAC9C,aAAc,EACd,CATK,UAAU,EAAK,WASpB,CAKN,IAAM,EAAM,EAAK,EAAK,QACtB,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAa,EAAI,MAAQ,EACzB,EACJ,IAAoB,MAAQ,EAAI,MAAQ,GAAmB,EACvD,EAAI,OAAS,WACX,WACA,UACF,KACA,EAAa,EAAa,EAAiB,KAC3C,EAAuB,CAC3B,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,GACR,UAAW,cAAc,EAAG,MAAM,KACnC,CAED,OAAO,EAAI,OAAS,eAClB,EAAA,EAAA,KAAC,GAAD,CAEO,MACO,aACZ,YAAe,EAAS,EAAI,IAAI,CACzB,QACP,CALK,EAAI,IAKT,EAEF,EAAA,EAAA,KAAC,GAAD,CAEO,MACO,aACZ,YAAe,EAAS,EAAI,IAAI,CACnB,cACb,cAAe,GAAe,IAAI,EAAI,IAAI,EAAI,GAC/B,gBACH,aACL,QACP,CATK,EAAI,IAST,EAEJ,CACE,CAAA,CACF,GACF,CAAA,CACF,CAAA,CCtSV,SAAS,IAAyB,CAEhC,GAAI,OAAO,OAAW,KAAe,OAAO,YAC1C,GAAI,CACF,OAAO,YAAY,OAAO,MACpB,EAIV,IAAM,EAAS,IAAkB,CAC7B,OAAO,OAAW,MAAa,OAAO,YAAc,GAS1D,SAAgB,GAAe,CAC7B,cACA,iBACA,oBACuB,EAAE,CAAe,CACxC,IAAM,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAa,EAAa,GAAM,EAAE,WAAW,CAC7C,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAS,EAAa,GAAM,EAAE,UAAU,CACxC,EAAQ,EAAa,GAAM,EAAE,eAAe,CAC5C,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAgB,EAAa,GAAM,EAAE,cAAc,CACnD,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,EAAqB,EAAa,GAAM,EAAE,mBAAmB,CAC7D,EAAU,EAAa,GAAM,EAAE,QAAQ,CACvC,EAAe,EAAa,GAAM,EAAE,aAAa,CACjD,EAAW,EAAa,GAAM,EAAE,SAAS,CACzC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,EAAuB,EAAa,GAAM,EAAE,qBAAqB,CAGjE,EAAa,EAAa,GAAM,EAAE,WAAW,CAC7C,EAAkB,EAAa,GAAM,EAAE,gBAAgB,CACvD,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,EAAoB,EAAa,GAAM,EAAE,kBAAkB,CAE3D,GAAA,EAAA,EAAA,iBAAsC,CAC1C,EAAkB,GAAM,EACvB,CAAC,EAAkB,CAAC,CAEjB,IAAA,EAAA,EAAA,iBAAsC,CAC1C,IAAM,EAAI,EAAY,UAAU,CAChC,EAAE,oBAAoB,CACtB,EAAE,cAAc,GAAM,EACrB,EAAE,CAAC,CAIN,SAAS,GAAiB,EAAiC,CACzD,GAAI,EAAE,aAAc,aAAc,MAAO,GACzC,IAAM,EAAM,EAAG,QAEf,GADI,IAAQ,SAAW,IAAQ,YAAc,IAAQ,UACjD,EAAG,kBAAmB,MAAO,GAGjC,IAAM,EAAK,EAAG,aAAa,kBAAkB,CAE7C,OADI,IAAO,MAAQ,IAAO,QAI5B,SAAS,EAAgB,EAA2C,CAElE,GADI,EAAG,MAAQ,KAAO,EAAG,OAAS,SAC9B,GAAiB,EAAG,OAAO,CAAE,OACjC,EAAG,gBAAgB,CACnB,IAAM,EAAI,EAAY,UAAU,CAChC,EAAE,cAAc,CAAC,EAAE,WAAW,CAIhC,IAAM,EAAkB,IAAiB,CACnC,GAAuB,IAAyB,CAChD,GAAe,GAAgB,EAAgB,CAE/C,IAAA,EAAA,EAAA,aACH,GAAmC,CAClC,GAAI,GAAqB,SAAW,EAAG,OACvC,IAAM,EAAqB,EAAY,UAAU,CAAC,YAC5C,EACJ,IAAuB,KAA0D,GAAnD,GAAqB,QAAQ,EAAmB,CAO1E,EAAO,GALX,IAAc,QACT,EAAU,GAAK,GAAqB,OACrC,GAAW,EACT,GAAqB,OAAS,EAC9B,EAAU,GAEd,IAAS,IAAA,IAAW,EAAO,EAAK,EAEtC,CAAC,EAAQ,GAAqB,CAC/B,CAEK,IAAA,EAAA,EAAA,QAAqC,KAAK,CAuGhD,IArGA,EAAA,EAAA,eAAgB,CACd,SAAS,EAAM,EAAwB,CAErC,GAAI,EAAE,MAAQ,KAAO,EAAE,EAAE,kBAAkB,kBAAmB,CAC5D,EAAE,gBAAgB,CAClB,GAAgB,SAAS,OAAO,CAChC,OAIF,IAAM,EAAM,KAAK,KAAK,CAChB,EAAO,GAAS,QACtB,GAAI,EAAE,MAAQ,IAAK,CACjB,GAAS,QAAU,CAAE,IAAK,IAAK,GAAI,EAAK,CACxC,OAEF,GAAI,EAAE,MAAQ,KAAO,GAAM,MAAQ,KAAO,EAAM,EAAK,GAAK,IAAK,CAC7D,GAAS,QAAU,KAGnB,EADE,IAAa,OAAS,UAAY,IAAa,UAAY,eAAiB,OAC7D,CACjB,OAKF,GAHA,GAAS,QAAU,KAGf,EAAE,MAAQ,SAAU,CAClB,GACF,EAAe,GAAG,CAClB,GAAoB,EACV,EAAe,EAAQ,CAGjC,GAAO,CAFP,GAAc,CAIhB,OAGF,GAAI,EAAE,MAAQ,MAAQ,GAAe,GAAqB,OAAS,EAAG,CACpE,EAAE,gBAAgB,CAClB,GAAkB,EAAE,SAAW,WAAa,OAAO,CACnD,OAIF,GAAI,EAAgB,SAAW,EAAG,OAClC,IAAM,EAAS,IAAgB,KAA8C,GAAvC,EAAgB,QAAQ,EAAY,CAE1E,GAAI,EAAE,MAAQ,YAAa,CACzB,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAgB,KAAK,IAAI,EAAgB,OAAS,EAAG,EAAS,EAAE,EACzE,IAAS,IAAA,IAAW,EAAO,EAAK,SAC3B,EAAE,MAAQ,UAAW,CAC9B,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAgB,KAAK,IAAI,EAAG,EAAS,EAAE,EAChD,IAAS,IAAA,IAAW,EAAO,EAAK,SAC3B,EAAE,MAAQ,WAAY,CAC/B,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAgB,KAAK,IAAI,EAAgB,OAAS,EAAG,EAAS,GAAG,EAC1E,IAAS,IAAA,IAAW,EAAO,EAAK,SAC3B,EAAE,MAAQ,SAAU,CAC7B,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAgB,KAAK,IAAI,EAAG,EAAS,GAAG,EACjD,IAAS,IAAA,IAAW,EAAO,EAAK,SAC3B,EAAE,MAAQ,OAAQ,CAC3B,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAgB,GACzB,IAAS,IAAA,IAAW,EAAO,EAAK,SAC3B,EAAE,MAAQ,MAAO,CAC1B,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAgB,EAAgB,OAAS,GAClD,IAAS,IAAA,IAAW,EAAO,EAAK,EAGxC,OAAO,iBAAiB,UAAW,EAAM,CACzC,SAAS,EAAY,EAAgB,CACnC,IAAM,EAAa,EAAuC,QACtD,IAAc,YAAc,IAAc,SAAQ,GAAkB,EAAU,CAGpF,OADA,OAAO,iBAAiB,iBAAkB,EAAY,KACzC,CACX,OAAO,oBAAoB,UAAW,EAAM,CAC5C,OAAO,oBAAoB,iBAAkB,EAAY,GAE1D,CACD,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACD,CAAC,CAEE,IAAe,cAAgB,EAAK,SAAW,EACjD,OAAO,EAAA,EAAA,KAAC,GAAD,CAAc,SAAU,GAAM,UAAY,GAAM,CAAA,CAEzD,GAAI,IAAe,aAAe,EAAK,SAAW,EAChD,OAAO,EAAA,EAAA,KAAC,GAAD,EAAc,CAAA,CAGvB,IAAM,GAAiB,EAAK,OAAS,GAAK,EAAK,MAAO,GAAM,EAAE,OAAS,cAAc,CACrF,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,kBACZ,SAAU,EACV,UAAW,EACX,MAAO,CACL,QAAS,OACT,cAAe,SACf,KAAM,EACN,UAAW,EACX,SAAU,WACV,QAAS,OACV,UAXH,CAaG,IAAkB,EAAA,EAAA,KAAC,GAAD,CAAgB,cAAe,EAAqB,CAAA,CACtE,KACC,EAAA,EAAA,KAAC,GAAD,CACE,QAAQ,kBACR,KAAM,OAAO,EAAK,OAAO,kEACzB,CAAA,CAEH,IAAe,iBACd,EAAA,EAAA,KAAC,GAAD,CAAoB,YAAa,GAAe,GAAoB,CAAA,EAEtE,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,GACD,OACO,cACb,SAAW,GAAQ,EAAO,EAAI,CACjB,cACE,gBACC,iBAChB,cAAe,EACf,GAAK,IAAqB,IAAA,GAAmC,EAAE,CAAzB,CAAE,mBAAkB,CAC1D,CAAA,CACD,GAAc,EAAkB,IAC/B,EAAA,EAAA,KAAC,GAAD,CAAe,MAAO,EAAiB,QAAS,GAAqB,CAAA,CAEnE,GCtRV,IAAa,GAAS,CACpB,CAAE,GAAI,OAAQ,MAAO,OAAQ,CAC7B,CAAE,GAAI,QAAS,MAAO,QAAS,CAC/B,CAAE,GAAI,SAAU,MAAO,SAAU,CAClC,CAIY,GAAoB,YAEjC,SAAgB,GAAU,EAAkC,CAC1D,OAAO,IAAU,QAAU,IAAU,SAAW,IAAU,SAG5D,SAAgB,GAAgB,EAAoC,aAAuB,CACzF,GAAI,CACF,IAAM,EAAS,EAAQ,QAAQ,GAAkB,CACjD,OAAO,GAAU,EAAO,CAAG,EAAS,YAC9B,CACN,MAAO,QAIX,SAAgB,GAAW,EAAgB,EAAgB,SAAS,gBAAuB,CACzF,EAAK,aAAa,aAAc,EAAM,CAGxC,SAAgB,GACd,EACA,EAAoC,aAC9B,CACN,GAAI,CACF,EAAQ,QAAQ,GAAmB,EAAM,MACnC,GAKV,SAAgB,GAAc,EAAwB,CACpD,OAAO,GAAO,KAAM,GAAW,EAAO,KAAO,EAAM,EAAE,OAAS,OC9BhE,SAAgB,IAA+B,CAC7C,IAAM,EAAa,EAAa,GAAM,EAAE,WAAW,CAC7C,EAAgB,EAAa,GAAM,EAAE,cAAc,CAEzD,OACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,YAAe,EAAc,CAAC,EAAW,CACzC,eAAc,EACd,aAAY,EAAa,qBAAuB,oBAChD,cAAY,oBACZ,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,EACR,oEACA,8BACJ,OAAQ,gCACR,aAAc,EACd,MAAO,EAAa,sBAAwB,oBAC5C,OAAQ,UACR,SAAU,4BACV,QAAS,cACT,WAAY,SACZ,IAAK,iBACN,UApBH,EAsBE,EAAA,EAAA,KAxBS,EAAa,GAAO,GAwB7B,CAAM,KAAM,GAAI,cAAY,OAAS,CAAA,CACpC,EAAa,SAAW,QAClB,GCrBb,SAAS,IAAqB,CAC5B,IAAM,EAAO,SAAS,gBAAgB,aAAa,aAAa,CAChE,OAAO,IAAS,SAAW,IAAS,SAAW,EAAO,OAGxD,SAAgB,GAAU,CAAE,WAAwC,CAClE,GAAM,CAAC,EAAO,IAAA,EAAA,EAAA,UAAmC,GAAU,CACrD,CAAC,EAAiB,IAAA,EAAA,EAAA,UAA+B,GAAM,CACvD,GAAA,EAAA,EAAA,QAAsC,KAAK,CAC3C,GAAA,EAAA,EAAA,QAA2C,KAAK,CAChD,GAAA,EAAA,EAAA,QAAqD,EAAE,CAAC,EAE9D,EAAA,EAAA,eAAgB,CACd,SAAS,EAAgB,EAAyB,CAC5C,EAAa,SAAW,CAAC,EAAa,QAAQ,SAAS,EAAM,OAAe,EAC9E,EAAmB,GAAM,CAK7B,OADA,SAAS,iBAAiB,YAAa,EAAgB,KAC1C,SAAS,oBAAoB,YAAa,EAAgB,EACtE,EAAE,CAAC,CAEN,SAAS,GAAuB,CAC9B,EAAmB,GAAM,CACzB,EAAe,SAAS,OAAO,CAGjC,SAAS,EAAS,EAAqB,CACrC,GAAW,EAAK,CAChB,GAAa,EAAK,CAClB,EAAc,EAAK,CACnB,GAAgB,CAGlB,SAAS,EAAY,EAAqB,CACxC,EAAW,QAAQ,IAAQ,OAAO,CAGpC,SAAS,EAAoB,EAAyC,EAAqB,CACrF,EAAM,MAAQ,UAChB,EAAM,gBAAgB,CACtB,GAAgB,EACP,EAAM,MAAQ,aACvB,EAAM,gBAAgB,CACtB,GAAa,EAAQ,GAAK,GAAO,OAAO,EAC/B,EAAM,MAAQ,WACvB,EAAM,gBAAgB,CACtB,GAAa,EAAQ,EAAI,GAAO,QAAU,GAAO,OAAO,EAC/C,EAAM,MAAQ,QACvB,EAAM,gBAAgB,CACtB,EAAY,EAAE,EACL,EAAM,MAAQ,QACvB,EAAM,gBAAgB,CACtB,EAAY,GAAO,OAAS,EAAE,EAIlC,OACE,EAAA,EAAA,MAAC,SAAD,CACE,MAAO,CACL,OAAQ,GACR,WAAY,uBACZ,aAAc,uCACd,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,QAAS,mBACT,KAAM,WACP,CACD,cAAY,sBAXd,EAaE,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,WAAY,IAAK,UAAE,gBAAoB,CAAA,EACtD,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,iBAAkB,UAA5E,EACE,EAAA,EAAA,KAAC,GAAD,EAAmB,CAAA,EACnB,EAAA,EAAA,MAAC,MAAD,CAAK,IAAK,EAAc,MAAO,CAAE,SAAU,WAAY,UAAvD,EACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,aAAY,iBAAiB,GAAc,EAAM,CAAC,GAClD,gBAAc,OACd,gBAAe,EACf,MAAO,UAAU,GAAc,EAAM,GACrC,IAAK,EACL,YAAe,EAAoB,GAAS,CAAC,EAAK,CAClD,YAAc,GAAU,EAAM,iBAAiB,CAC/C,MAAO,CACL,QAAS,cACT,WAAY,SACZ,IAAK,iBACL,OAAQ,GACR,QAAS,mBACT,WAAY,EAAkB,8BAAgC,uBAC9D,OAAQ,qCACR,aAAc,EACd,MAAO,uBACP,OAAQ,UACR,WAAY,mBACZ,QAAS,OACV,UAtBH,EAwBE,EAAA,EAAA,KAAC,GAAD,CAAS,KAAM,GAAI,cAAY,OAAS,CAAA,EACxC,EAAA,EAAA,KAAC,OAAD,CACE,cAAY,OACZ,MAAO,CACL,MAAO,EACP,OAAQ,EACR,aAAc,MACd,WAAY,sBACZ,UAAW,uCACZ,CACD,CAAA,EACF,EAAA,EAAA,KAAC,GAAD,CACE,KAAM,GACN,cAAY,OACZ,MAAO,CAAE,MAAO,6BAA8B,CAC9C,CAAA,CACK,GACR,IACC,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,OACL,aAAW,QACX,MAAO,CACL,SAAU,WACV,IAAK,mBACL,MAAO,EACP,OAAQ,KACR,SAAU,IACV,QAAS,mBACT,WAAY,8BACZ,OAAQ,uCACR,aAAc,EACd,UAAW,qBACZ,UAEA,GAAO,KAAK,EAAQ,IAAU,CAC7B,IAAM,EAAS,IAAU,EAAO,GAChC,OACE,EAAA,EAAA,MAAC,SAAD,CAEE,KAAK,SACL,KAAK,gBACL,eAAc,EACd,IAAM,GAAS,CACb,EAAW,QAAQ,GAAS,GAE9B,YAAe,EAAS,EAAO,GAAG,CAClC,UAAY,GAAU,EAAoB,EAAO,EAAM,CACvD,MAAO,CACL,MAAO,OACP,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,IAAK,iBACL,QAAS,gCACT,WAAY,EAAS,8BAAgC,cACrD,OAAQ,OACR,MAAO,EAAS,oBAAsB,0BACtC,UAAW,EAAS,oCAAsC,OAC1D,OAAQ,UACR,WAAY,mBACZ,SAAU,4BACV,UAAW,OACZ,UAzBH,EA2BE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAO,MAAa,CAAA,CAC1B,IAAU,EAAA,EAAA,KAAC,GAAD,CAAO,KAAM,GAAI,cAAY,OAAS,CAAA,CAC1C,EA5BF,EAAO,GA4BL,EAEX,CACE,CAAA,CAEJ,IACN,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,OAAO,MAAO,CAAE,MAAO,0BAA2B,UAAlE,CAAoE,IAChE,EACG,GACH,GACC,GAIb,GAAU,eAAiB,GCxL3B,SAAgB,GAAY,CAC1B,WACA,aACA,eACA,eACgC,CAChC,OACE,EAAA,EAAA,KAAC,MAAD,CACE,MAAO,CACL,OAAQ,GACR,WAAY,uBACZ,aAAc,gCACd,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,QAAS,mBACT,SAAU,sBACV,KAAM,WACP,CACD,cAAY,wBAEX,IAAa,MACZ,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,MAAO,0BAA2B,UAAE,eAAmB,CAAA,EAEtE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,GAAD,CAAY,KAAM,GAAI,cAAA,GAAc,CAAA,CACnC,GACC,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,aAAW,aACX,MAAM,aACN,UAAU,OACV,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,QAAS,EACT,MAAO,oBACP,OAAQ,UACR,KAAM,UACN,eAAgB,YAChB,oBAAqB,sBACrB,oBAAqB,EACtB,UAEA,EACM,CAAA,EAET,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAAQ,EAAgB,CAAA,EAE1C,EAAA,EAAA,MAAC,OAAD,CAAM,MAAO,CAAE,MAAO,0BAA2B,UAAjD,CACG,MACA,EAAW,UACX,EAAa,GAAK,EAAe,EAAI,MAAM,EAAa,WAAa,GACjE,GACN,CAAA,CAAA,CAED,CAAA,CCpDV,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACc,CACd,OAAQ,EAAR,CACE,IAAK,YAAa,CAChB,IAAM,EAAO,eAAe,EAAW,SACnC,EACF,GAAoB,MAAQ,GAAoB,EAC5C,GAAG,EAAK,eAAe,IACvB,EASN,OAPI,IAAiB,IAAA,IAAa,IAAe,IAAA,IAAa,IAAiB,IAC7E,EAAQ,GAAG,EAAM,KAAK,EAAa,GAAG,EAAW,WAG/C,IAAe,IAAA,IAAa,EAAa,IAC3C,EAAQ,GAAG,EAAM,KAAK,EAAW,UAE5B,CAAE,MAAO,IAAK,SAAU,uBAAwB,QAAO,CAEhE,IAAK,aACH,MAAO,CAAE,MAAO,IAAK,SAAU,uBAAwB,MAAO,cAAe,CAC/E,IAAK,eACH,MAAO,CAAE,MAAO,IAAK,SAAU,2BAA4B,MAAO,eAAgB,CACpF,IAAK,YACH,MAAO,CAAE,MAAO,IAAK,SAAU,2BAA4B,MAAO,YAAa,CACjF,IAAK,SACH,MAAO,CAAE,MAAO,IAAK,SAAU,2BAA4B,MAAO,kBAAmB,EAI3F,SAAgB,GAAU,CACxB,aACA,aACA,mBAAmB,KACnB,eACA,aACA,cAC8B,CAC9B,GAAM,CAAE,QAAO,WAAU,SAAU,GACjC,EACA,EACA,EACA,EACA,EACA,EACD,CACD,OACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,OAAQ,GACR,WAAY,uBACZ,UAAW,gCACX,QAAS,mBACT,QAAS,OACT,WAAY,SACZ,IAAK,iBACL,SAAU,4BACV,KAAM,WACP,CACD,cAAY,sBAZd,EAcE,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,aAAa,MAAO,CAAE,MAAO,EAAU,MAAO,EAAG,UAChE,EACI,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,cAAY,wBAAgB,EAAa,CAAA,CAC3C,GChEV,SAAS,IAA8B,CAKrC,OAJI,OAAO,OAAW,IAAoB,GACtC,OAAO,OAAO,YAAe,WACxB,OAAO,WAAW,eAAe,EAA0B,KAAK,CAAC,QAEnE,OAAO,YAAc,EAG9B,SAAS,IAA8B,CACrC,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,GAAmB,CAkB9D,OAhBA,EAAA,EAAA,eAAgB,CACd,GAAI,OAAO,OAAW,IAAa,OACnC,IAAM,MAAqB,EAAa,IAAoB,CAAC,CACvD,EACJ,OAAO,OAAO,YAAe,WACzB,OAAO,WAAW,eAAe,EAA0B,KAAK,CAChE,KAIN,OAHA,GAAO,mBAAmB,SAAU,EAAO,CAC3C,OAAO,iBAAiB,SAAU,EAAO,CACzC,GAAQ,KACK,CACX,GAAO,sBAAsB,SAAU,EAAO,CAC9C,OAAO,oBAAoB,SAAU,EAAO,GAE7C,EAAE,CAAC,CAEC,EAGT,SAAS,GAAqC,EAC3B,OAAO,OAAW,IAAc,OAAO,YAAc,IAAA,KAC5D,OAAO,CACjB,IAAM,EAAS,IAAkB,CAEjC,OADI,OAAO,OAAW,MAAa,OAAO,YAAc,GACjD,EAGT,SAAgB,GAAwB,CAEtC,GAAkB,CAElB,IAAM,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAa,EAAa,GAAM,EAAE,WAAW,CAC7C,EAAO,EAAa,GAAM,EAAE,KAAK,CACjC,EAAU,EAAa,GAAM,EAAE,QAAQ,CACvC,EAAW,EAAa,GAAM,EAAE,SAAS,CACzC,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,EAAiB,EAAa,GAAM,EAAE,eAAe,CACrD,EAAc,EAAa,GAAM,EAAE,YAAY,CAC/C,EAAkB,IAAoB,CACtC,GAAA,EAAA,EAAA,iBAA4C,GAAgB,CAAE,CAAC,EAAe,CAAC,CAGrF,IAAW,CAGX,IAAM,EAAkB,IAAiB,CACnC,EAAe,GAAgB,EAAgB,CAG/C,EAAmB,CAAC,EAAe,EAAQ,CAG3C,CAAC,EAAa,IAAA,EAAA,EAAA,UAGV,KAAK,CAGT,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,GAAM,CAC7C,CAAC,EAAkB,IAAA,EAAA,EAAA,UAA0D,EAAE,CAAC,CAChF,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,GAAM,CAEnD,GAAA,EAAA,EAAA,aAAsC,SAA2B,CACrE,EAAiB,GAAK,CACtB,GAAI,CAEF,EAAoB,MADD,IAAiB,CACX,MACnB,CACN,EAAoB,EAAE,CAAC,QACf,CACR,EAAiB,GAAM,GAExB,EAAE,CAAC,CAEA,IAAA,EAAA,EAAA,iBAA4C,CAChD,EAAe,GAAS,CACtB,IAAM,EAAO,CAAC,EAEd,OADI,GAAW,GAAyB,CACjC,GACP,EACD,CAAC,EAAwB,CAAC,CAEvB,IAAA,EAAA,EAAA,aAA8B,GAAqB,EACjD,SAAY,CAChB,GAAI,CACF,IAAM,EAAS,MAAM,GAAuB,EAAG,CAC/C,EAAY,UAAU,CAAC,UAAU,EAAO,OAAO,OAAO,CACtD,EAAY,UAAU,CAAC,eAAe,CAAE,KAAM,YAAa,KAAI,CAAC,CAChE,GAAkB,QACV,CACR,EAAc,GAAM,KAEpB,EACH,EAAE,CAAC,CAEA,GAAA,EAAA,EAAA,aAA+B,KAAO,IAAgC,CAC1E,IAAM,EAAS,MAAM,GAAkB,EAAK,CAC5C,EAAY,UAAU,CAAC,UAAU,EAAO,OAAO,OAAO,CACtD,EAAY,UAAU,CAAC,eAAe,CAAE,KAAM,OAAQ,OAAM,CAAC,CAC7D,GAAkB,CAClB,EAAc,GAAM,EACnB,EAAE,CAAC,CAEA,GAAA,EAAA,EAAA,iBAA4C,CAChD,GAAkB,CAClB,EAAY,UAAU,CAAC,kBAAkB,KAAK,EAC7C,EAAE,CAAC,CAEA,IAAA,EAAA,EAAA,iBAA6C,EAC3C,SAAY,CAChB,GAAI,CACF,GAAI,GAAa,OAAS,YAAa,CACrC,IAAM,EAAS,MAAM,GAAuB,EAAY,GAAG,CAC3D,EAAY,UAAU,CAAC,UAAU,EAAO,OAAO,OAAO,SAC7C,GAAa,OAAS,OAAQ,CACvC,IAAM,EAAS,MAAM,GAAkB,EAAY,KAAK,CACxD,EAAY,UAAU,CAAC,UAAU,EAAO,OAAO,OAAO,CAExD,EAAY,UAAU,CAAC,kBAAkB,KAAK,CAC9C,GAAkB,MACZ,MAGN,EACH,CAAC,EAAY,CAAC,CAGX,IAAA,EAAA,EAAA,QAAiD,KAAK,CACtD,IAAA,EAAA,EAAA,QAAkD,KAAK,CAGvD,GAAa,EAAa,OAAQ,GAAM,EAAE,OAAS,SAAS,CAAC,OAiBnE,OAfA,EAAA,EAAA,eAAgB,CACV,CAAC,GAAmB,IAAgB,MACtC,GAAe,SAAS,OAAO,EAEhC,CAAC,EAAiB,EAAY,CAAC,EAElC,EAAA,EAAA,eAAgB,CACd,GAAI,GAAmB,IAAgB,KAAM,OAC7C,SAAS,EAAU,EAA4B,CACzC,EAAM,MAAQ,UAAU,GAAmB,CAGjD,OADA,OAAO,iBAAiB,UAAW,EAAU,KAChC,OAAO,oBAAoB,UAAW,EAAU,EAC5D,CAAC,EAAmB,EAAiB,EAAY,CAAC,EAGnD,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,YACZ,UAAU,YACV,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,OAAQ,OAAQ,UAHrE,EAKE,EAAA,EAAA,KAAC,GAAD,CAAW,QAAS,GAAmB,CAAA,CACtC,IACC,EAAA,EAAA,KAAC,GAAD,CACE,KAAM,EAAe,KACrB,QAAS,EACT,SAAU,GACV,CAAA,EAEJ,EAAA,EAAA,KAAC,GAAD,CACE,SAAU,GAAM,UAAY,KAC5B,WAAY,GAAM,YAAc,EAChC,aAAc,GAAM,cAAgB,EACpC,YAAa,GACb,CAAA,EACF,EAAA,EAAA,KAAC,GAAD,CAA2B,kBAAkB,CAAA,CAC5C,IAAoB,EAAA,EAAA,KAAC,GAAD,EAAqB,CAAA,EAC1C,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,WAAW,MAAO,CAAE,QAAS,OAAQ,KAAM,EAAG,UAAW,EAAG,UAA3E,EACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAU,gBACV,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,KAAM,EAAG,UAAW,EAAG,SAAU,EAAG,UAFzF,CAIG,IAAa,QAAU,IAAe,EAAA,EAAA,KAAC,GAAD,CAAgB,SAAU,EAAe,CAAA,EAChF,EAAA,EAAA,KAAC,GAAD,CAAgC,kBAAgB,iBAAkB,EAAkB,CAAA,CAChF,GACL,IACC,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,uBACZ,UAAU,cACV,MAAO,CACL,QAAS,OACT,KAAM,OAAO,EAAY,IACzB,UAAW,EACX,SAAU,EACV,SAAU,SACX,WAED,EAAA,EAAA,KAAC,GAAD,EAAe,CAAA,CACX,CAAA,CAEJ,GACL,CAAC,GAAmB,IAAgB,OACnC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yBAAyB,cAAY,mCAClD,EAAA,EAAA,MAAC,MAAD,CACE,UAAU,gBACV,KAAK,SACL,aAAW,eACX,cAAY,yBAJd,EAME,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,sBACV,IAAK,GACL,QAAS,WACV,gBAEQ,CAAA,EACT,EAAA,EAAA,KAAC,GAAD,CAAa,iBAAkB,GAAS,CAAA,CACpC,GACF,CAAA,EAER,EAAA,EAAA,KAAC,GAAD,CACc,aACZ,WAAY,GAAM,YAAc,EAChC,iBAAkB,EAClB,aAAc,EAAgB,OAC9B,WAAY,EAAK,OACjB,WAAY,IAAa,OAAsB,EAAb,GAClC,CAAA,EACF,EAAA,EAAA,KAAC,GAAD,CACE,KAAM,EACN,WAAY,EACZ,UAAW,EACX,SAAU,GACV,WAAY,EACZ,cAAiB,KAAK,GAAyB,CAC/C,YAAe,EAAc,GAAM,CACnC,CAAA,CACE,GCzQV,SAAgB,GAAiB,CAC/B,aACA,YACA,WACA,aACA,aAOc,CACd,IAAM,GAAA,EAAA,EAAA,QAA4C,KAAK,EACvD,EAAA,EAAA,eAAgB,CAEd,IAAM,EAAQ,SAAS,cAA2B,0CAA0C,CAC5F,GAAI,EAAO,CACT,EAAM,OAAO,CACb,OAEY,SAAS,cACrB,4CAEF,EAAO,OAAO,EACb,EAAE,CAAC,CAEN,IACM,EACJ,EAAW,SAAW,GAAK,CAAC,EACxB,8EACA,wDAEN,OACE,EAAA,EAAA,KAAC,OAAD,CACE,IAAM,GAAO,CACX,EAAe,QAAU,GAE3B,MAAO,CACL,UAAW,QACX,WAAY,kBACZ,QAAS,OACT,eAAgB,SACjB,WAED,EAAA,EAAA,MAAC,UAAD,CACE,MAAO,CACL,MAAO,OACP,SAAU,IACV,QAAS,gCACT,QAAS,OACT,cAAe,SACf,IAAK,iBACN,UARH,EAUE,EAAA,EAAA,MAAC,SAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CACE,MAAO,CACL,SAAU,2BACV,WAAY,IACZ,MAAO,oBACP,OAAQ,EACT,UAEA,cACE,CAAA,EACL,EAAA,EAAA,KAAC,IAAD,CACE,MAAO,CACL,MAAO,0BACP,OAAQ,qBACR,SAAU,wBACX,UAEA,EACC,CAAA,CACG,CAAA,CAAA,EAET,EAAA,EAAA,MAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,aAAc,iBACf,UANH,EAQE,EAAA,EAAA,KAAC,KAAD,CACE,MAAO,CACL,SAAU,2BACV,WAAY,IACZ,MAAO,oBACP,OAAQ,EACT,UACF,kBAEI,CAAA,EACL,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,QAAS,EACT,SAAU,EACV,aAAW,eACX,MAAO,CACL,OAAQ,GACR,QAAS,mBACT,WAAY,8BACZ,OAAQ,gCACR,aAAc,EACd,MAAO,oBACP,OAAQ,UACR,SAAU,4BACX,UAEA,EAAY,cAAgB,eACtB,CAAA,CACL,IACN,EAAA,EAAA,KAAC,GAAD,CAA2B,aAAsB,WAAY,CAAA,CACrD,CAAA,CAAA,EAEV,EAAA,EAAA,KAAC,MAAD,CACE,cAAY,OACZ,MAAO,CACL,UAAW,gCACX,MAAO,0BACP,SAAU,4BACV,WAAY,iBACZ,UAAW,SACZ,UACF,mBAEK,CAAA,EAEN,EAAA,EAAA,KAAC,GAAD,CAAiB,OAAQ,EAAc,CAAA,CAC/B,GACL,CAAA,CCxIX,SAAgB,IAAqC,CACnD,OACE,EAAA,EAAA,MAAC,MAAD,CACE,cAAY,2BACZ,MAAO,CACL,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,OAAQ,OACR,IAAK,iBACL,QAAS,iBACT,UAAW,SACZ,UAXH,EAaE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,IAAK,UAAE,gCAAmC,CAAA,EACpE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,CAAK,QACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAAO,kCAAsC,CAAA,gDAE7D,CAAA,CAAA,CACF,GCnBV,IAAM,IAAA,EAAA,EAAA,eAA4C,KAAK,CAOvD,SAAgB,GAAwB,EAAkD,CACxF,OAAO,EAAA,EAAA,KAAC,GAAI,SAAL,CAAc,MAAO,EAAM,gBAAS,EAAM,SAAwB,CAAA,CAG3E,SAAgB,IAAsC,CACpD,IAAM,GAAA,EAAA,EAAA,YAAmB,GAAI,CAC7B,GAAI,IAAU,KACZ,MAAU,MACR,6HAED,CAEH,OAAO,ECPT,SAAgB,IAAmB,CACjC,IAAM,EAAS,IAAoB,CAC7B,EAAa,EAAa,GAAM,EAAE,WAAW,CAC7C,CAAC,EAAY,IAAA,EAAA,EAAA,UAAoD,EAAE,CAAC,CACpE,CAAC,EAAmB,IAAA,EAAA,EAAA,UAAiC,GAAM,CAE3D,GAAA,EAAA,EAAA,aAAgC,SAA2B,CAC/D,EAAqB,GAAK,CAC1B,GAAI,CAEF,EAAc,MADK,EAAO,iBAAiB,CACxB,MACb,CACN,EAAc,EAAE,CAAC,QACT,CACR,EAAqB,GAAM,GAE5B,CAAC,EAAO,CAAC,CAEN,GAAA,EAAA,EAAA,iBAAsD,EACzC,OAAO,OAAW,IAAc,OAAO,YAAc,IAAA,KAC5D,OAAO,CACjB,IAAM,EAAS,EAAO,kBAAkB,CAExC,OADI,OAAO,OAAW,MAAa,OAAO,YAAc,GACjD,GACN,CAAC,EAAO,CAAC,EAKZ,EAAA,EAAA,eAAgB,CACd,IAAI,EAAY,GACZ,EAAiC,KAqBrC,OADK,SAnBkC,CACrC,GAAI,CACF,IAAM,EAAS,MAAM,EAAO,cAAc,CAC1C,GAAI,EAAW,OACf,GAAI,IAAW,SAAU,CACvB,EAAY,UAAU,CAAC,cAAc,SAAS,CAC9C,MAAM,GAAmB,CACzB,OAEF,GAAI,IAAW,YAAa,CAC1B,EAAY,UAAU,CAAC,cAAc,YAAY,CACjD,OAEF,EAAS,EAAO,kBAAkB,CAC9B,OAAO,OAAW,MAAa,OAAO,YAAc,QAClD,CACD,GAAW,EAAY,UAAU,CAAC,cAAc,YAAY,KAG3D,KACG,CACX,EAAY,GACZ,GAAQ,OAAO,CACX,OAAO,OAAW,KAAa,OAAO,OAAO,cAElD,CAAC,EAAQ,EAAkB,CAAC,CAE/B,IAAM,GAAA,EAAA,EAAA,aACJ,KAAO,IAA8B,CACnC,IAAM,EAAS,MAAM,EAAO,uBAAuB,EAAG,CACtD,EAAY,UAAU,CAAC,UAAU,EAAO,OAAO,OAAO,CACtD,EAAY,UAAU,CAAC,eAAe,CAAE,KAAM,YAAa,KAAI,CAAC,CAChE,GAAkB,EAEpB,CAAC,EAAQ,EAAiB,CAC3B,CAEK,GAAA,EAAA,EAAA,aACJ,KAAO,IAAgC,CACrC,IAAM,EAAS,MAAM,EAAO,kBAAkB,EAAK,CACnD,EAAY,UAAU,CAAC,UAAU,EAAO,OAAO,OAAO,CACtD,EAAY,UAAU,CAAC,eAAe,CAAE,KAAM,OAAQ,OAAM,CAAC,CAC7D,GAAkB,EAEpB,CAAC,EAAQ,EAAiB,CAC3B,CAcD,OAZI,IAAe,aAAoB,EAAA,EAAA,KAAC,GAAD,EAAyB,CAAA,CAC5D,IAAe,UAEf,EAAA,EAAA,KAAC,GAAD,CACc,aACZ,UAAW,EACX,SAAW,GAAO,KAAK,EAAS,EAAG,CACvB,aACZ,cAAiB,KAAK,GAAmB,CACzC,CAAA,EAGC,EAAA,EAAA,KAAC,EAAD,EAAY,CAAA,CCzFrB,eAAe,IAA4C,CACzD,IAAI,EACJ,GAAI,CACF,EAAO,MAAM,MAAM,gBAAgB,MAC7B,CACN,MAAO,YAET,GAAI,EAAK,SAAW,IAAK,MAAO,SAChC,IAAM,EAAc,EAAK,QAAQ,IAAI,eAAe,EAAI,GAIxD,MAHI,CAAC,EAAK,IAAM,CAAC,EAAY,aAAa,CAAC,SAAS,mBAAmB,CAC9D,YAEF,QAGT,SAAgB,IAAgD,CAC9D,MAAO,CACL,gBACA,mBACA,0BACA,qBACA,kBAAoC,CAClC,OAAO,IAAkB,EAE3B,cACA,gBACA,gBACD,CCHH,IAAI,GAA8B,KAClC,SAAS,IAA0B,CACjC,GAAI,GAAW,OAAO,GACtB,IAAM,EAAU,OAAO,OAAW,IAAc,OAAO,iBAAmB,IAAA,GAC1E,GAAI,CAAC,EACH,MAAU,MACR,sFACD,CAGH,MADA,IAAY,GAAS,CACd,GAGT,SAAgB,IAAkC,CAChD,OAAO,OAAO,OAAW,KAAe,OAAO,OAAO,kBAAqB,WAQ7E,IAAM,GAAqB,IAS3B,SAAgB,GAA6B,EAA6B,EAAE,CAAmB,CAC7F,IAAM,EAAM,EAAK,KAAO,IAAc,CAChC,EAAS,EAAK,QAAU,OACxB,EAAU,IAAI,IAChB,EAAS,EACP,MAA6B,MAAM,EAAE,GAAQ,SAAS,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,SAAS,GAAG,GAE1F,SAAS,EAAQ,EAAiC,CAChD,OAAO,IAAI,SAAY,EAAS,IAAW,CACzC,IAAM,EAAQ,eAAiB,CAC7B,EAAQ,OAAO,EAAI,UAAU,CAC7B,EAAW,MAAM,8BAA8B,EAAI,OAAO,CAAC,EAC1D,GAAmB,CACtB,EAAQ,IAAI,EAAI,UAAW,CACzB,QAAU,GAAU,CAClB,aAAa,EAAM,CACnB,EAAQ,EAAW,EAErB,OAAS,GAAQ,CACf,aAAa,EAAM,CACnB,EAAO,EAAI,EAEd,CAAC,CACF,EAAI,YAAY,EAAI,EACpB,CA4BJ,OAFA,EAAO,iBAAiB,UAvBL,GAAoB,CACrC,IAAM,EAAQ,EAAoB,KAC7B,MAAwB,EAAK,CAClC,IAAI,EAAK,OAAS,WAAY,CAC5B,IAAM,EAAQ,EAAQ,IAAI,EAAK,UAAU,CACzC,GAAI,CAAC,EAAO,OAEZ,GADA,EAAQ,OAAO,EAAK,UAAU,CAC1B,EAAK,GACP,EAAM,QAAQ,EAAK,MAAM,KACpB,CACL,IAAM,EAAU,MAAM,EAAK,QAAQ,CAClC,EAA0B,KAAO,EAAK,KACvC,EAAM,OAAO,EAAI,CAEnB,OAEF,GAAI,EAAK,OAAS,SAAU,CAC1B,GAAmB,EAAK,QAAQ,CAChC,UAKyC,CAEtC,CACL,MAAM,cAA4C,CAChD,GAAI,CAEF,OADA,MAAM,EAAc,CAAE,KAAM,WAAY,UAAW,GAAc,CAAE,CAAC,CAC7D,cACA,EAAK,CAGZ,OAFc,EAA0B,OAC3B,gBAAwB,SAC9B,cAGX,MAAM,iBAAqD,CAKzD,OAAO,MAJa,EAAsC,CACxD,KAAM,mBACN,UAAW,GAAc,CAC1B,CAAC,EACW,YAAc,EAAE,EAE/B,MAAM,uBAAuB,EAAwC,CACnE,OAAO,EAAwB,CAC7B,KAAM,wBACN,UAAW,GAAc,CACzB,KACD,CAAC,EAEJ,MAAM,kBAAkB,EAA0C,CAChE,OAAO,EAAwB,CAC7B,KAAM,mBACN,UAAW,GAAc,CACzB,OACD,CAAC,EAEJ,kBAAoC,CAClC,EAAY,UAAU,CAAC,cAAc,aAAa,CAE7C,EAAc,CAAE,KAAM,eAAgB,UADzB,GACyB,CAAW,CAAC,CAAC,UAAY,CAClE,EAAY,UAAU,CAAC,cAAc,eAAe,EACpD,CACF,IAAI,EAAS,GACb,MAAO,CACL,OAAc,CACR,IACJ,EAAS,GACJ,EAAc,CAAE,KAAM,cAAe,UAAW,GAAc,CAAE,CAAC,CAAC,UAAY,GAAG,GAEzF,EAEH,MAAM,WACJ,EACA,EACA,EACgC,CAChC,IAAM,EACJ,IAAW,IAAA,GACP,CAAE,KAAM,YAAa,UAAW,GAAc,CAAE,MAAK,CACrD,CAAE,KAAM,YAAa,UAAW,GAAc,CAAE,MAAK,SAAQ,CACnE,GAAI,CACF,OAAO,MAAM,EAA4B,EAAI,OACtC,EAAK,CAEZ,GADc,EAA0B,OAC3B,YAAa,OAAO,KACjC,MAAM,IAGV,MAAM,aAAa,EAAW,EAA8C,CAC1E,OAAO,EAAmB,CAAE,KAAM,aAAc,UAAW,GAAc,CAAE,IAAG,CAAC,EAEjF,MAAM,aACJ,EACA,EACwC,CAExC,IAAM,EAAsB,CAC1B,KAAM,WACN,UAHgB,GAGhB,CACA,MACA,GAAI,GAAS,SAAW,IAAA,GAAyC,EAAE,CAA/B,CAAE,OAAQ,EAAQ,OAAQ,CAC9D,GAAI,GAAS,eAAiB,IAAA,GAAqD,EAAE,CAA3C,CAAE,aAAc,EAAQ,aAAc,CAChF,GAAI,GAAS,cAAgB,IAAA,GAAmD,EAAE,CAAzC,CAAE,YAAa,EAAQ,YAAa,CAC9E,CACD,GAAI,CACF,OAAO,MAAM,EAA6B,EAAI,OACvC,EAAK,CAEZ,GADc,EAA0B,OAC3B,YAAa,OAAO,KACjC,MAAM,IAGX,CAWH,IAAI,GAA2B,EAAE,CAEjC,SAAS,GAAmB,EAAkC,CAC5D,IAAM,EAAQ,EAAY,UAAU,CACpC,OAAQ,EAAQ,KAAhB,CACE,IAAK,iBAAkB,CACrB,IAAM,EAAQ,EAA4C,KAC1D,GAAe,EAAE,CACjB,EAAM,QAAQ,CACZ,SAAU,EAAK,SACf,WAAY,EACZ,aAAc,EACf,CAAC,CACE,OAAO,EAAK,QAAW,UAAY,EAAK,OAAO,OAAS,GAC1D,EAAM,UAAU,EAAK,OAAO,CAE9B,OAEF,IAAK,iBACH,GAAe,GAAa,OAAO,EAAQ,KAAmB,CAC9D,OAEF,IAAK,eACH,EAAM,QAAQ,GAAa,CAC3B,GAAe,EAAE,CACjB,EAAM,cAAc,YAAY,CAChC,OAEF,IAAK,SACH,EAAM,WAAW,EAAQ,KAAoB,EAAQ,KAAK,CAC1D,OAEF,IAAK,QACH,EAAM,WACJ,EAAQ,QAQT,CACD,OAEF,IAAK,OACH,OACF,IAAK,WACH,EAAM,kBAAkB,GAAK,CAC7B,EAAM,kBAAkB,CACxB,GAAe,EAAE,CACjB,OAEF,IAAK,cACH,EAAM,kBAAkB,CAAE,KAAM,EAAQ,KAAM,QAAS,EAAQ,QAAS,CAAC,CACzE,OAEF,IAAK,YACH,EAAM,mBAAmB,CACzB,GAAe,EAAE,CACjB,OAEF,IAAK,MACH,EAAM,cAAc,eAAe,CACnC,OACF,IAAK,QAEH,QCtRN,GAAW,IAAiB,CAAC,CAE7B,IAAM,GAAK,SAAS,eAAe,OAAO,CAC1C,GAAI,GAAI,CACN,IAAM,EAAS,IAAwB,CACnC,IAA8B,CAC9B,IAA8B,EAClC,EAAA,EAAA,YAAW,GAAG,CAAC,QACb,EAAA,EAAA,KAAC,EAAA,WAAD,CAAA,UACE,EAAA,EAAA,KAAC,GAAD,CAAiC,mBAC/B,EAAA,EAAA,KAAC,GAAD,EAAO,CAAA,CACiB,CAAA,CACf,CAAA,CACd"}
|