@reckona/mreact-compat 0.0.174 → 0.0.176

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.
@@ -1 +1 @@
1
- {"version":3,"file":"host-reconciler.js","sourceRoot":"","sources":["../src/host-reconciler.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Fragment,\n HOST_CHILDREN_ONLY_PROPS_META,\n LAZY_TYPE,\n MEMO_TYPE,\n Profiler,\n REACTIVE_DOM_BLOCK_TYPE,\n REACTIVE_TEXT_BINDING_META,\n STRICT_MODE_TYPE,\n Suspense,\n SuspenseList,\n type ReactCompatElement,\n type ReactCompatPortal,\n type ReactiveDomBlockProps,\n type ReactiveDomBlockResult,\n isReactCompatElement,\n isReactCompatPortal,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n createReactivePropCell,\n createReactivePropProxy,\n setReactivePropCell,\n type ReactiveDomBlockState,\n} from \"./reactive-prop-cell.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport { applyPostChildFormProps, applyProps } from \"./dom-props.js\";\nimport { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from \"./dom-children.js\";\nimport { setLogicalEventParent } from \"./host-event-binder.js\";\nimport { ChildDeletion, NoFlags, Placement, Update } from \"./fiber-flags.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isDomHostElement,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type CustomHostDocument,\n type HostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\nimport { createFiber, createWorkInProgress, type Fiber, type FiberRoot } from \"./fiber.js\";\nimport {\n renderWithRootRuntime,\n renderWithProfiler,\n renderWithStrictModeMemoCapture,\n renderStrictModeReplay,\n runWithHostCommit,\n restoreRuntimeSnapshot,\n takeRuntimeSnapshot,\n getDevToolsHookState,\n collectRuntimeInstanceKeys,\n hasContextDependency,\n hasChangedContextDependency,\n subscribeReactiveTextBinding,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { isThenable } from \"./thenable.js\";\nimport {\n hasDirtyClassUpdate,\n isClassComponentType,\n recoverClassComponentError,\n renderClassComponentWithRuntime,\n type ClassComponentInstance,\n} from \"./class-component.js\";\nimport { areMemoPropsEqual, getPendingProps, shallowEqual } from \"./prop-comparison.js\";\nimport {\n reportElementTextMismatch,\n reportExtraHydrationNodes,\n reportHydrationNodeTypeMismatch,\n reportMissingHydrationNode,\n reportReactSuspenseServerError,\n reportRecoverable,\n type HydrationScope,\n type RenderOptions,\n withHydrationComponentStack,\n} from \"./hydration.js\";\n\ninterface MemoFiberState {\n props: Record<string, unknown>;\n instanceKeys: string[];\n hasDirtyInstanceDependencies: boolean;\n hasUnflushedEffectDependencies: boolean;\n hasRetainedInstanceDependencies: boolean;\n}\n\ninterface FunctionFiberState {\n element: ReactCompatElement;\n props: Record<string, unknown>;\n instanceKeys: string[];\n hasContextDependencies: boolean;\n}\n\ninterface SuspenseFiberState {\n didSuspend: boolean;\n}\n\nconst committedPortalContainers = new Set<Element>();\nconst pendingHostRefUpdates: { ref: unknown; node: unknown }[] = [];\nconst emptyInstanceKeys: string[] = [];\n\ninterface FiberHydrationOptions extends RenderOptions {\n previousNodes?: readonly Node[];\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n namespace?: HostNamespace;\n documentRef?: Document | CustomHostDocument;\n}\n\nconst SKIP_COMMIT_PATH = \"\\0\";\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\ninterface FiberReconcileResult {\n fiber: Fiber | undefined;\n consumed: number;\n}\n\ninterface AppendSuffixCommitHint {\n fiber: Fiber;\n index: number;\n}\n\ninterface ReactSuspenseBoundary {\n previousNodes?: Node[];\n consumed: number;\n serverError?: {\n message: string;\n componentStack?: string;\n };\n}\n\nlet suspensePrimaryRenderDepth = 0;\n\nexport function canRenderHostFiber(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canRenderHostFiber);\n }\n\n if (isReactCompatPortal(node)) {\n return canRenderHostFiber(node.children);\n }\n\n if (!isReactCompatElement(node)) {\n return false;\n }\n\n if (\n node.type === Fragment ||\n node.type === Profiler ||\n node.type === STRICT_MODE_TYPE\n ) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Activity) {\n return (node.props as { mode?: unknown }).mode === \"hidden\"\n ? true\n : canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Suspense || node.type === SuspenseList) {\n return true;\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n return true;\n }\n\n if (node.type === REACTIVE_DOM_BLOCK_TYPE) {\n return true;\n }\n\n if (isReactCompatProvider(node.type)) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatConsumer(node.type)) {\n return true;\n }\n\n if (isForwardRefType(node.type)) {\n return true;\n }\n\n if (isMemoType(node.type)) {\n return true;\n }\n\n if (isLazyType(node.type)) {\n return true;\n }\n\n if (isClassComponentType(node.type)) {\n return true;\n }\n\n return (\n typeof node.type === \"string\" &&\n canRenderHostFiber(node.props.children as ReactCompatNode)\n ) || isFunctionComponentType(node.type);\n}\n\nexport function renderHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime?: RootRuntime,\n options: FiberHydrationOptions = {},\n): Fiber {\n const workInProgress = createWorkInProgress(root.current, { children: element });\n const rootDocument = root.container.ownerDocument;\n const result = reconcileHostChild(\n workInProgress,\n root.current.child,\n element,\n runtime,\n options.previousNodes === undefined ? \"0\" : \"\",\n { ...options, documentRef: options.documentRef ?? rootDocument },\n );\n workInProgress.child = result.fiber;\n workInProgress.memoizedProps = { children: element };\n root.refCleanupKnown = true;\n return workInProgress;\n}\n\nexport function renderHydratingHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime: RootRuntime,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): Fiber {\n root.hydrationState = {\n parent: scope.parent,\n nextHydratableNode: scope.previousNodes[0] ?? null,\n before: scope.before,\n after: scope.after,\n ...(options.resumeId === undefined ? {} : { resumeId: options.resumeId }),\n };\n return renderHostFiberRoot(root, element, runtime, {\n ...options,\n previousNodes: scope.previousNodes,\n });\n}\n\nexport function commitHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n options: RenderOptions = {},\n): void {\n runWithHostCommit(() => {\n let committed = false;\n try {\n committedPortalContainers.clear();\n pendingHostRefUpdates.length = 0;\n const commitPath = getRootCommitPath(options);\n if (!hasChildListMutation(finishedWork)) {\n commitHostDirtyChildrenOf(\n finishedWork,\n finishedWork.child,\n root.container,\n root.container,\n commitPath,\n options,\n );\n committed = true;\n return;\n }\n\n if (\n finishedWork.childListChanged &&\n commitHostKeyedChildListMutationFiber(\n finishedWork,\n root.container,\n root.container,\n commitPath,\n options,\n )\n ) {\n committed = true;\n return;\n }\n\n if (\n !finishedWork.childListChanged &&\n finishedWork.subtreeChildListChanged &&\n commitHostKeyedChildListMutation(finishedWork.child, root.container, root.container, commitPath, options)\n ) {\n committed = true;\n return;\n }\n\n const nodes = commitHostChildren(finishedWork.child, root.container, root.container, commitPath, options);\n syncChildNodes(root.container, nodes);\n committed = true;\n } finally {\n if (committed) {\n flushPendingHostRefUpdates();\n } else {\n pendingHostRefUpdates.length = 0;\n }\n committedPortalContainers.clear();\n }\n });\n}\n\nexport function commitHydratingHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): void {\n runWithHostCommit(() => {\n let committed = false;\n try {\n committedPortalContainers.clear();\n pendingHostRefUpdates.length = 0;\n const eventRoot = root.container;\n const nodes = commitHostChildren(finishedWork.child, scope.parent, eventRoot, \"\", options);\n syncScopedChildNodes(scope.parent, scope.before, scope.after, nodes);\n committed = true;\n } finally {\n if (committed) {\n flushPendingHostRefUpdates();\n } else {\n pendingHostRefUpdates.length = 0;\n }\n committedPortalContainers.clear();\n }\n });\n\n if (options.consumeResumeMarkers === true) {\n scope.before?.parentNode?.removeChild(scope.before);\n scope.after?.parentNode?.removeChild(scope.after);\n }\n}\n\nexport function disposeHostFiberResources(fiber: Fiber | undefined): void {\n if (fiber === undefined || fiber.hasDisposableResources !== true) {\n return;\n }\n\n // Dispose this fiber and its SUBTREE only — not its siblings. This is called\n // once per deleted fiber, and deleted siblings are disposed by their own\n // calls; walking siblings here re-walked the whole deleted list per deletion\n // (O(n^2) on a cleared 1k-row reactive list). The dedupe set is allocated\n // once for the subtree walk.\n const seen = new Set<unknown>();\n if (fiber.tag === \"reactive-dom-block\") {\n disposeReactiveDomBlockState(fiber.stateNode, seen);\n }\n disposeHostFiberChildResources(fiber.child, seen);\n}\n\nexport function disposeUnretainedHostFiberResources(\n fiber: Fiber | undefined,\n retained: ReadonlySet<Fiber>,\n): void {\n if (fiber === undefined || fiber.hasDisposableResources !== true || retained.has(fiber)) {\n return;\n }\n\n const seen = new Set<unknown>();\n disposeUnretainedHostFiberSubtreeResources(fiber, seen, retained);\n}\n\nfunction disposeHostFiberChildResources(\n fiber: Fiber | undefined,\n seen: Set<unknown>,\n): void {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (cursor.hasDisposableResources === true) {\n if (cursor.tag === \"reactive-dom-block\") {\n disposeReactiveDomBlockState(cursor.stateNode, seen);\n }\n\n disposeHostFiberChildResources(cursor.child, seen);\n }\n\n cursor = cursor.sibling;\n }\n}\n\nfunction disposeUnretainedHostFiberSubtreeResources(\n fiber: Fiber | undefined,\n seen: Set<unknown>,\n retained: ReadonlySet<Fiber>,\n): void {\n if (fiber === undefined || retained.has(fiber) || fiber.hasDisposableResources !== true) {\n return;\n }\n\n if (fiber.tag === \"reactive-dom-block\") {\n disposeReactiveDomBlockState(fiber.stateNode, seen);\n }\n\n let child = fiber.child;\n while (child !== undefined) {\n disposeUnretainedHostFiberSubtreeResources(child, seen, retained);\n child = child.sibling;\n }\n}\n\nfunction reconcileHostChild(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n resetFiberRefSubtree(parent);\n parent.subtreeFlags = NoFlags;\n parent.childListChanged = false;\n parent.subtreeChildListChanged = false;\n\n if (node === null || node === undefined || typeof node === \"boolean\") {\n parent.childListChanged = currentFirstChild !== undefined;\n if (currentFirstChild !== undefined) {\n markOptimizedChildrenForDeletion(parent, currentFirstChild);\n }\n return { fiber: undefined, consumed: 0 };\n }\n\n const children = Array.isArray(node) ? node : undefined;\n const rowResult =\n children === undefined\n ? undefined\n : reconcileKeyedRowHostChildren(parent, currentFirstChild, children, options) ??\n reconcileKeyedMemoRowHostChildren(\n parent,\n currentFirstChild,\n children,\n runtime,\n path,\n options,\n );\n if (rowResult !== undefined) {\n return rowResult;\n }\n\n const childCount = children === undefined ? 1 : children.length;\n const hasKeyedChildren = children !== undefined && hasKeyedChild(children);\n const canReuseCurrentFibersInList = !hasKeyedChildren || currentFirstChild === undefined;\n let existingByKey: Map<string, Fiber> | undefined;\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let currentUnkeyed = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n let skipRemainingKeyedLookup = false;\n let sequentialCurrentCursor = currentFirstChild;\n let childListOrderChanged = false;\n let dirtyChildren: Fiber[] | undefined;\n let usedCurrentChildren =\n currentFirstChild === undefined || hasKeyedChildren ? undefined : new Set<Fiber>();\n const ensureUsedCurrentChildren = (): Set<Fiber> => {\n if (usedCurrentChildren === undefined) {\n usedCurrentChildren = new Set<Fiber>();\n let cursor = currentFirstChild;\n\n while (cursor !== undefined && cursor !== sequentialCurrentCursor) {\n usedCurrentChildren.add(cursor);\n cursor = cursor.sibling;\n }\n }\n\n return usedCurrentChildren;\n };\n\n for (let index = 0; index < childCount; index += 1) {\n const child = children === undefined ? node : children[index];\n const key = getNodeKey(child);\n let matchedCurrent: Fiber | undefined;\n let canReuseMatchedCurrentFiber = canReuseCurrentFibersInList;\n\n if (key === undefined) {\n if (hasKeyedChildren && currentUnkeyed !== undefined) {\n childListOrderChanged = true;\n ensureUsedCurrentChildren();\n }\n matchedCurrent = currentUnkeyed;\n } else if (skipRemainingKeyedLookup) {\n childListOrderChanged = true;\n matchedCurrent = undefined;\n } else if (existingByKey !== undefined) {\n childListOrderChanged = true;\n matchedCurrent = existingByKey.get(key);\n canReuseMatchedCurrentFiber = matchedCurrent === undefined;\n } else if (currentKeyed?.key === key) {\n matchedCurrent = currentKeyed;\n canReuseMatchedCurrentFiber = true;\n currentKeyed = currentKeyed.sibling;\n sequentialCurrentCursor = currentKeyed;\n } else if (\n children !== undefined &&\n currentKeyed?.sibling?.key === key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n const deleted = currentKeyed;\n const matched = currentKeyed.sibling;\n const suffixResult = tryReuseDependencyFreeMemoRemovalSuffix(\n parent,\n children,\n index,\n deleted,\n matched,\n runtime,\n options,\n first,\n previous,\n consumed,\n );\n if (suffixResult !== undefined) {\n return suffixResult;\n }\n childListOrderChanged = true;\n ensureUsedCurrentChildren();\n matchedCurrent = matched;\n canReuseMatchedCurrentFiber = false;\n currentKeyed = matched.sibling;\n } else {\n if (\n children !== undefined &&\n hasKeyedChildren &&\n canSkipRemainingKeyedLookup(currentKeyed, children, index)\n ) {\n childListOrderChanged = true;\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n } else if (hasKeyedChildren) {\n childListOrderChanged = true;\n ensureUsedCurrentChildren();\n existingByKey = collectExistingKeyedFibers(currentKeyed);\n matchedCurrent = existingByKey.get(key);\n canReuseMatchedCurrentFiber = matchedCurrent === undefined;\n }\n }\n\n const memoBailout = tryReuseDependencyFreeMemoBailout(\n matchedCurrent,\n child,\n runtime,\n options,\n canReuseMatchedCurrentFiber,\n );\n const previousNodes =\n memoBailout !== undefined || options.previousNodes === undefined\n ? undefined\n : options.previousNodes.slice(consumed);\n const result = memoBailout ?? createHostFiber(\n parent,\n matchedCurrent,\n child,\n key,\n runtime,\n getReconcileChildPath(path, child, index, options),\n previousNodes === undefined ? options : { ...options, previousNodes },\n canReuseMatchedCurrentFiber,\n );\n const fiber = result.fiber;\n\n if (fiber === undefined) {\n if (matchedCurrent !== undefined) {\n usedCurrentChildren?.add(matchedCurrent);\n markOptimizedChildForDeletion(parent, matchedCurrent);\n }\n continue;\n }\n\n if (matchedCurrent !== undefined) {\n usedCurrentChildren?.add(matchedCurrent);\n if (fiber !== matchedCurrent && fiber.alternate !== matchedCurrent) {\n markOptimizedChildForDeletion(parent, matchedCurrent);\n }\n }\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n if (\n fiber.tag !== \"memo\" &&\n fiber.tag !== \"function-component\" &&\n fiber.tag !== \"forward-ref\" &&\n fiber.tag !== \"profiler\" &&\n fiber.tag !== \"suspense\" &&\n fiber.tag !== \"suspense-list\"\n && fiber.memoizedState === undefined\n ) {\n fiber.memoizedState = index;\n } else if (\n fiber.tag === \"memo\" &&\n (fiber.stateNode === undefined || typeof fiber.stateNode === \"number\")\n ) {\n fiber.stateNode = index;\n }\n if (hasHostCommitWork(fiber)) {\n (dirtyChildren ??= []).push(fiber);\n }\n previous = fiber;\n }\n\n if (usedCurrentChildren === undefined && hasKeyedChildren && currentKeyed !== undefined) {\n markOptimizedChildrenForDeletion(parent, currentKeyed);\n } else {\n markUnusedCurrentChildrenForDeletion(parent, currentFirstChild, usedCurrentChildren);\n }\n parent.childListChanged =\n childListOrderChanged || childFiberListShapeChanged(currentFirstChild, first);\n recordDirtyChildCommitHints(parent, dirtyChildren);\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileKeyedRowHostChildren(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n children.length === 0 ||\n currentFirstChild === undefined ||\n options.previousNodes !== undefined ||\n !isKeyedRowHostElementCandidate(children[0]) ||\n !shouldUseDirectHostTextChild()\n ) {\n return undefined;\n }\n\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let listShapeChanged = currentFirstChild === undefined;\n let skipRemainingKeyedLookup = false;\n let subtreeFlags = NoFlags;\n let subtreeChildListChanged = false;\n let hasRefSubtree = false;\n let hasDisposableResources = false;\n let appendSuffix: AppendSuffixCommitHint | undefined;\n const canReuseUnchangedRows = hasSameKeyOrderPrefix(currentFirstChild, children);\n const row = createKeyedRowHostElementScratch();\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (!readKeyedRowHostElement(child, row)) {\n return undefined;\n }\n\n let matchedCurrent: Fiber | undefined;\n let matchedByAppendSuffix = false;\n\n if (skipRemainingKeyedLookup) {\n matchedCurrent = undefined;\n } else if (currentKeyed === undefined) {\n listShapeChanged = true;\n skipRemainingKeyedLookup = true;\n matchedByAppendSuffix = true;\n matchedCurrent = undefined;\n } else if (currentKeyed?.key === row.key) {\n matchedCurrent = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n } else if (\n currentKeyed?.sibling?.key === row.key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n const deleted = currentKeyed;\n const matched = currentKeyed.sibling;\n listShapeChanged = true;\n markOptimizedChildForDeletion(parent, deleted);\n matchedCurrent = matched;\n currentKeyed = matched.sibling;\n } else if (canSkipRemainingKeyedLookup(currentKeyed, children, index)) {\n listShapeChanged = true;\n markOptimizedChildrenForDeletion(parent, currentKeyed);\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n matchedCurrent = undefined;\n } else {\n return undefined;\n }\n\n const fiber =\n matchedCurrent === undefined\n ? createKeyedRowHostFiber(parent, undefined, row, options)\n : (canReuseUnchangedRows ? getReusableKeyedRowHostFiber(matchedCurrent, row) : undefined) ??\n createKeyedRowHostFiber(parent, matchedCurrent, row, options);\n\n if (matchedByAppendSuffix && appendSuffix === undefined) {\n appendSuffix = { fiber, index };\n }\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n if (fiber.hasRefSubtree) {\n hasRefSubtree = true;\n }\n if (fiber.hasDisposableResources) {\n hasDisposableResources = true;\n }\n subtreeFlags |= fiber.flags | fiber.subtreeFlags;\n subtreeChildListChanged =\n subtreeChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged;\n if (fiber.memoizedState === undefined) {\n fiber.memoizedState = index;\n }\n previous = fiber;\n }\n\n if (currentKeyed !== undefined) {\n listShapeChanged = true;\n markOptimizedChildrenForDeletion(parent, currentKeyed);\n }\n\n parent.hasRefSubtree = hasRefSubtree;\n parent.hasDisposableResources = hasDisposableResources;\n parent.subtreeFlags = subtreeFlags;\n parent.subtreeChildListChanged = subtreeChildListChanged;\n parent.childListChanged = listShapeChanged;\n if (appendSuffix !== undefined && canStoreAppendSuffixCommitHint(parent)) {\n parent.memoizedState = appendSuffix;\n }\n return { fiber: first, consumed: 0 };\n}\n\nfunction isKeyedMemoRowCandidate(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n node.key !== null &&\n node.ref === null &&\n isMemoType(node.type)\n );\n}\n\n// Marker the compiler stamps on a lowered host-only component that returns its\n// props verbatim as a reactive block (`createReactiveDomBlock(render, props)`).\n// Such a component is pure and structurally static, so on a props change the\n// reconciler can drive its committed block straight through the prop cell instead\n// of re-invoking the component (the block's bound DOM updates via subscriptions).\nconst STATIC_REACTIVE_BLOCK_MARKER = \"__mreactStaticBlock\";\n\nfunction isStaticReactiveBlockComponent(type: unknown): boolean {\n return (\n typeof type === \"function\" &&\n (type as unknown as Record<string, unknown>)[STATIC_REACTIVE_BLOCK_MARKER] === true\n );\n}\n\n// In-place bailout for a keyed memo row whose props are unchanged and which has\n// no hook/context/effect dependencies. The caller has proven the key order is\n// unchanged (hasSameKeyOrderPrefix), so the fiber keeps its position and can be\n// reused WITHOUT createWorkInProgress — no allocation, and the retained subtree\n// (including any reactive-dom-block subscriptions) is left untouched. Returns\n// undefined when the row must re-render or has dependencies (handled by the\n// general per-child path instead). Mirrors tryReuseDependencyFreeMemoBailout +\n// getMemoBailoutFiber's in-place branch, but is safe to reuse a fiber with\n// disposable resources because a stable position means nothing is disposed.\nfunction tryReuseDependencyFreeKeyedMemoRow(\n matched: Fiber,\n child: ReactCompatElement,\n): Fiber | undefined {\n if (\n matched.tag !== \"memo\" ||\n matched.type !== child.type ||\n matched.hasRefSubtree === true ||\n matched.hydrateExisting === true\n ) {\n return undefined;\n }\n\n const state = matched.memoizedState as MemoFiberState | undefined;\n\n if (\n state === undefined ||\n state.hasDirtyInstanceDependencies !== false ||\n state.hasUnflushedEffectDependencies !== false ||\n state.hasRetainedInstanceDependencies !== false ||\n !areMemoPropsEqual(\n child.type as { compare?: (a: Record<string, unknown>, b: Record<string, unknown>) => boolean },\n state.props,\n child.props as Record<string, unknown>,\n )\n ) {\n return undefined;\n }\n\n matched.pendingProps = child.props;\n matched.flags = NoFlags;\n matched.subtreeFlags = NoFlags;\n matched.childListChanged = false;\n matched.subtreeChildListChanged = false;\n matched.hostChildListChanged = false;\n matched.child = getSkippedChild(matched);\n return matched;\n}\n\n// In-place CHANGED-row update for a keyed memo row whose inner component is a\n// compiler-marked static reactive block (returns its props verbatim as the block\n// props). Instead of re-invoking the component to rebuild a throwaway block\n// element, push the new props straight into the committed block's prop cell — the\n// bound DOM updates via subscriptions, exactly as the normal block re-render path\n// would, but without the memo/component render machinery. Same-order is proven by\n// the caller, so the fiber is reused in place. Returns undefined when this is not\n// a marked, dependency-free, single-block memo row (the general path handles it).\nfunction tryCellUpdateStaticBlockMemoRow(\n matched: Fiber,\n child: ReactCompatElement,\n): Fiber | undefined {\n if (\n matched.tag !== \"memo\" ||\n matched.type !== child.type ||\n matched.hasRefSubtree === true ||\n matched.hydrateExisting === true ||\n !isStaticReactiveBlockComponent((matched.type as { type?: unknown }).type)\n ) {\n return undefined;\n }\n\n const state = matched.memoizedState as MemoFiberState | undefined;\n\n if (\n state === undefined ||\n state.hasDirtyInstanceDependencies !== false ||\n state.hasUnflushedEffectDependencies !== false ||\n state.hasRetainedInstanceDependencies !== false\n ) {\n return undefined;\n }\n\n // Navigate memo -> component fiber -> reactive-dom-block fiber. The marked\n // component renders exactly one static block, so anything else is unexpected.\n const componentFiber = matched.child;\n if (componentFiber === undefined || componentFiber.sibling !== undefined) {\n return undefined;\n }\n\n const blockFiber = componentFiber.child;\n if (\n blockFiber === undefined ||\n blockFiber.tag !== \"reactive-dom-block\" ||\n blockFiber.sibling !== undefined\n ) {\n return undefined;\n }\n\n const blockState = blockFiber.stateNode as ReactiveDomBlockState | undefined;\n if (blockState?.propCell === undefined) {\n return undefined;\n }\n\n // Drive the bound DOM through the prop cell (the marker guarantees the block's\n // props are the component's props verbatim), then reuse the memo fiber in place.\n setReactivePropCell(blockState.propCell, child.props as Record<string, unknown>);\n matched.memoizedState = { ...state, props: child.props as Record<string, unknown> };\n matched.pendingProps = child.props;\n matched.flags = NoFlags;\n matched.subtreeFlags = NoFlags;\n matched.childListChanged = false;\n matched.subtreeChildListChanged = false;\n matched.hostChildListChanged = false;\n matched.child = getSkippedChild(matched);\n return matched;\n}\n\n// Fast path for a keyed list of memo-wrapped rows (e.g. `<RowMemo key={id} />`)\n// whose key order is UNCHANGED between renders — the js-framework-benchmark\n// \"select row\" and \"partial update\" shapes. Walks current fibers and new\n// children in lockstep: unchanged rows bail in place (no allocation, no general\n// keyed-reconcile machinery), changed rows re-render through the proven\n// per-child path. Any reorder / insert / delete / non-memo child / length change\n// makes it return undefined so the general reconcile takes over.\nfunction reconcileKeyedMemoRowHostChildren(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n children.length === 0 ||\n currentFirstChild === undefined ||\n runtime === undefined ||\n options.previousNodes !== undefined ||\n !isKeyedMemoRowCandidate(children[0]) ||\n !hasSameKeyOrderPrefix(currentFirstChild, children)\n ) {\n return undefined;\n }\n\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let subtreeFlags = NoFlags;\n let subtreeChildListChanged = false;\n let hasRefSubtree = false;\n let hasDisposableResources = false;\n let dirtyChildren: Fiber[] | undefined;\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (currentKeyed === undefined || !isKeyedMemoRowCandidate(child)) {\n return undefined;\n }\n\n const matched = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n const childElement = child as ReactCompatElement;\n\n let fiber =\n tryReuseDependencyFreeKeyedMemoRow(matched, childElement) ??\n tryCellUpdateStaticBlockMemoRow(matched, childElement);\n if (fiber === undefined) {\n const result = createHostFiber(\n parent,\n matched,\n child,\n childElement.key ?? undefined,\n runtime,\n getReconcileChildPath(path, child, index, options),\n options,\n false,\n );\n fiber = result.fiber;\n\n if (fiber === undefined) {\n return undefined;\n }\n\n if (fiber !== matched && fiber.alternate !== matched) {\n markOptimizedChildForDeletion(parent, matched);\n }\n }\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n if (fiber.hasRefSubtree) {\n hasRefSubtree = true;\n }\n if (fiber.hasDisposableResources) {\n hasDisposableResources = true;\n }\n subtreeFlags |= fiber.flags | fiber.subtreeFlags;\n subtreeChildListChanged =\n subtreeChildListChanged || fiber.childListChanged || fiber.subtreeChildListChanged;\n if (\n fiber.tag === \"memo\" &&\n (fiber.stateNode === undefined || typeof fiber.stateNode === \"number\")\n ) {\n fiber.stateNode = index;\n }\n if (hasHostCommitWork(fiber)) {\n (dirtyChildren ??= []).push(fiber);\n }\n previous = fiber;\n }\n\n if (currentKeyed !== undefined) {\n return undefined;\n }\n\n parent.hasRefSubtree = hasRefSubtree;\n parent.hasDisposableResources = hasDisposableResources;\n parent.subtreeFlags = subtreeFlags;\n parent.subtreeChildListChanged = subtreeChildListChanged;\n parent.childListChanged = false;\n recordDirtyChildCommitHints(parent, dirtyChildren);\n return { fiber: first, consumed: 0 };\n}\n\nfunction canReuseDependencyFreeMemoAtKey(\n current: Fiber | undefined,\n node: ReactCompatElement,\n key: string,\n): boolean {\n return (\n current !== undefined &&\n current.key === key &&\n current.tag === \"memo\" &&\n current.type === node.type &&\n current.hasRefSubtree !== true &&\n current.hasDisposableResources !== true &&\n current.hydrateExisting !== true &&\n isMemoType(node.type)\n );\n}\n\nfunction tryReuseDependencyFreeMemoRemovalSuffix(\n parent: Fiber,\n children: readonly ReactCompatNode[],\n startIndex: number,\n removed: Fiber,\n matchedCurrent: Fiber,\n runtime: RootRuntime | undefined,\n options: FiberHydrationOptions,\n prefixFirst: Fiber | undefined,\n prefixPrevious: Fiber | undefined,\n consumed: number,\n): FiberReconcileResult | undefined {\n if (\n runtime === undefined ||\n options.previousNodes !== undefined ||\n removed.hasRefSubtree\n ) {\n return undefined;\n }\n\n const suffix: Fiber[] = [];\n let current: Fiber | undefined = matchedCurrent;\n\n for (let index = startIndex; index < children.length; index += 1) {\n const child = children[index];\n const key = getNodeKey(child);\n\n if (key === undefined || !isReactCompatElement(child) || !isMemoType(child.type)) {\n return undefined;\n }\n\n if (!canReuseDependencyFreeMemoAtKey(current, child, key)) {\n return undefined;\n }\n\n if (current === undefined) {\n return undefined;\n }\n\n const matched: Fiber = current;\n const fiber = reuseDependencyFreeMemoFiber(matched, child);\n\n if (fiber === undefined) {\n return undefined;\n }\n\n suffix.push(fiber);\n current = matched.sibling;\n }\n\n if (current !== undefined) {\n return undefined;\n }\n\n let first = prefixFirst;\n let previous = prefixPrevious;\n\n for (const fiber of suffix) {\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n previous = fiber;\n }\n\n parent.childListChanged = true;\n parent.deletions = [removed];\n markOptimizedChildForDeletion(parent, removed);\n return { fiber: first, consumed };\n}\n\nfunction reuseDependencyFreeMemoFiber(\n current: Fiber,\n node: ReactCompatElement,\n): Fiber | undefined {\n if (!isMemoType(node.type)) {\n return undefined;\n }\n\n const previousMemoState = current.memoizedState as MemoFiberState | undefined;\n\n if (\n previousMemoState === undefined ||\n previousMemoState.hasDirtyInstanceDependencies !== false ||\n previousMemoState.hasUnflushedEffectDependencies !== false ||\n previousMemoState.hasRetainedInstanceDependencies !== false ||\n !areMemoPropsEqual(node.type, previousMemoState.props, node.props)\n ) {\n return undefined;\n }\n\n current.pendingProps = node.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n current.type = node.type;\n current.child = getSkippedChild(current);\n current.memoizedState = previousMemoState;\n return current;\n}\n\nfunction canStoreAppendSuffixCommitHint(parent: Fiber): boolean {\n return (\n parent.tag === \"fragment\" ||\n parent.tag === \"host-component\" ||\n parent.tag === \"host-root\"\n );\n}\n\nfunction markOptimizedChildForDeletion(parent: Fiber, _child: Fiber): void {\n parent.flags |= ChildDeletion;\n}\n\nfunction markOptimizedChildrenForDeletion(parent: Fiber, _firstChild: Fiber): void {\n parent.flags |= ChildDeletion;\n}\n\nfunction markUnusedCurrentChildrenForDeletion(\n parent: Fiber,\n firstChild: Fiber | undefined,\n used: ReadonlySet<Fiber> | undefined,\n): void {\n if (firstChild === undefined || used === undefined) {\n return;\n }\n\n let cursor: Fiber | undefined = firstChild;\n\n while (cursor !== undefined) {\n if (!used.has(cursor)) {\n parent.flags |= ChildDeletion;\n return;\n }\n cursor = cursor.sibling;\n }\n}\n\nfunction hasSameKeyOrderPrefix(\n currentFirstChild: Fiber,\n children: readonly ReactCompatNode[],\n): boolean {\n let current: Fiber | undefined = currentFirstChild;\n\n for (let index = 0; index < children.length; index += 1) {\n if (current === undefined) {\n return true;\n }\n\n if (current.key !== getNodeKey(children[index])) {\n return false;\n }\n\n current = current.sibling;\n }\n\n return current === undefined;\n}\n\nfunction getReusableKeyedRowHostFiber(\n current: Fiber,\n row: KeyedRowHostElement,\n): Fiber | undefined {\n if (\n current.tag !== \"host-component\" ||\n current.type !== row.type ||\n current.hydrateExisting ||\n current.child !== undefined ||\n !isHostElement(current.stateNode)\n ) {\n return undefined;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n\n if (typeof previousProps !== \"object\" || previousProps === null) {\n return undefined;\n }\n\n const previousRecord = previousProps as Record<string, unknown>;\n\n if (\n getDirectHostTextChild(previousRecord.children) !== row.text ||\n !hostOwnPropsEqual(previousRecord, row.element.props)\n ) {\n return undefined;\n }\n\n current.pendingProps = row.element.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n current.hasRefSubtree = false;\n current.hasDisposableResources = false;\n return current;\n}\n\ninterface KeyedRowHostElement {\n element: ReactCompatElement;\n key: string;\n type: string;\n text: string;\n}\n\nfunction createKeyedRowHostElementScratch(): KeyedRowHostElement {\n return {\n element: undefined as unknown as ReactCompatElement,\n key: \"\",\n type: \"\",\n text: \"\",\n };\n}\n\nfunction isKeyedRowHostElementCandidate(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n typeof node.type === \"string\" &&\n node.key !== null &&\n node.ref === null\n );\n}\n\nfunction readKeyedRowHostElement(\n node: ReactCompatNode,\n row: KeyedRowHostElement,\n): boolean {\n if (\n !isReactCompatElement(node) ||\n typeof node.type !== \"string\" ||\n node.key === null ||\n node.ref !== null\n ) {\n return false;\n }\n\n // Any keyed host row whose children collapse to a single text value\n // qualifies; row props are compared per reuse with hostOwnPropsEqual.\n const text = getDirectHostTextChild((node.props as Record<string, unknown>).children);\n\n if (text === undefined) {\n return false;\n }\n\n row.element = node;\n row.key = node.key;\n row.type = node.type;\n row.text = text;\n return true;\n}\n\nfunction createKeyedRowHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n row: KeyedRowHostElement,\n options: FiberHydrationOptions,\n): Fiber {\n const node = row.element;\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", row.type);\n const fiber =\n current?.tag === \"host-component\" && current.type === row.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"host-component\", node.props, row.key);\n\n fiber.type = row.type;\n fiber.stateNode =\n current?.tag === \"host-component\" &&\n current.type === row.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, row.type, elementNamespace)\n ? current.stateNode\n : createHostElement(getDocumentRef(options), row.type, options.namespace ?? \"html\");\n fiber.child = undefined;\n fiber.pendingProps = node.props;\n fiber.hostChildListChanged = false;\n fiber.hasRefSubtree = false;\n fiber.hasDisposableResources = false;\n\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return fiber;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previousProps));\n\n if (previousText !== row.text || !hostOwnPropsEqual(previousProps, row.element.props)) {\n fiber.flags |= Update;\n }\n\n return fiber;\n}\n\nfunction canReuseStaticHostSubtree(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (\n cursor.tag !== \"host-component\" &&\n cursor.tag !== \"host-text\" &&\n cursor.tag !== \"fragment\" &&\n cursor.tag !== \"strict-mode\"\n ) {\n return false;\n }\n\n if (cursor.child !== undefined && !canReuseStaticHostSubtree(cursor.child)) {\n return false;\n }\n\n cursor = cursor.sibling;\n }\n\n return true;\n}\n\nfunction canSkipSingleDeletedKeyedFiber(\n children: readonly ReactCompatNode[],\n index: number,\n matched: Fiber,\n): boolean {\n const nextKey = index + 1 < children.length ? getNodeKey(children[index + 1]) : undefined;\n const afterMatched = matched.sibling;\n\n return nextKey === undefined ? afterMatched === undefined : afterMatched?.key === nextKey;\n}\n\nfunction canSkipRemainingKeyedLookup(\n current: Fiber | undefined,\n children: readonly ReactCompatNode[],\n startIndex: number,\n): boolean {\n const currentRange = readContiguousNumericFiberKeyRange(current);\n\n if (currentRange === undefined) {\n return false;\n }\n\n const nextRange = readContiguousNumericNodeKeyRange(children, startIndex);\n\n if (nextRange === undefined) {\n return false;\n }\n\n return (\n currentRange.end < nextRange.start ||\n nextRange.end < currentRange.start\n );\n}\n\nfunction readContiguousNumericFiberKeyRange(\n fiber: Fiber | undefined,\n): { start: number; end: number } | undefined {\n let cursor = fiber;\n let start: number | undefined;\n let previous: number | undefined;\n\n while (cursor !== undefined) {\n const value = parseNumericKey(cursor.key);\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n cursor = cursor.sibling;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction readContiguousNumericNodeKeyRange(\n children: readonly ReactCompatNode[],\n startIndex: number,\n): { start: number; end: number } | undefined {\n let start: number | undefined;\n let previous: number | undefined;\n\n for (let index = startIndex; index < children.length; index += 1) {\n const value = parseNumericKey(getNodeKey(children[index]));\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction parseNumericKey(key: string | undefined): number | undefined {\n if (key === undefined || key.length === 0) {\n return undefined;\n }\n\n const value = Number(key);\n\n return Number.isSafeInteger(value) && String(value) === key ? value : undefined;\n}\n\nfunction childFiberListShapeChanged(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): boolean {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n const isSameSlot =\n nextCursor === currentCursor ||\n nextCursor.alternate === currentCursor;\n\n if (\n !isSameSlot ||\n currentCursor.tag !== nextCursor.tag ||\n currentCursor.type !== nextCursor.type ||\n currentCursor.key !== nextCursor.key\n ) {\n return true;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor !== undefined || nextCursor !== undefined;\n}\n\nfunction bubbleHostChild(parent: Fiber, child: Fiber): void {\n if (child.hasRefSubtree) {\n parent.hasRefSubtree = true;\n }\n if (child.hasDisposableResources) {\n parent.hasDisposableResources = true;\n }\n parent.subtreeFlags |= child.flags | child.subtreeFlags;\n parent.subtreeChildListChanged =\n parent.subtreeChildListChanged ||\n child.childListChanged ||\n child.subtreeChildListChanged;\n}\n\nfunction recordDirtyChildCommitHints(\n parent: Fiber,\n dirtyChildren: Fiber[] | undefined,\n): void {\n if (parent.childListChanged || dirtyChildren === undefined || dirtyChildren.length === 0) {\n return;\n }\n\n // Reuse the effect-list slot only when there are no child-list deletions.\n parent.deletions = dirtyChildren;\n}\n\nfunction resetFiberRefSubtree(fiber: Fiber): void {\n fiber.hasRefSubtree = false;\n fiber.hasDisposableResources = false;\n}\n\nfunction includeNodeRef(fiber: Fiber, node: ReactCompatNode): void {\n fiber.hasRefSubtree =\n fiber.hasRefSubtree ||\n (isReactCompatElement(node) && node.ref !== null);\n}\n\nfunction markHostFiberEffects(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n): void {\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return;\n }\n\n if (fiber.tag === \"host-text\") {\n if (!Object.is(current.memoizedProps ?? current.pendingProps, fiber.pendingProps)) {\n fiber.flags |= Update;\n }\n return;\n }\n\n if (fiber.tag !== \"host-component\") {\n return;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const nextProps = fiber.pendingProps as Record<string, unknown>;\n\n fiber.hostChildListChanged = hostChildListChanged(previousProps, nextProps);\n\n if (!hostOwnPropsEqual(previousProps, nextProps) || hostDirectTextChildChanged(previousProps, nextProps)) {\n fiber.flags |= Update;\n }\n\n if (isReactCompatElement(node) && node.ref !== null) {\n fiber.flags |= Update;\n }\n}\n\nfunction createHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n canReuseCurrentFiber = true,\n): FiberReconcileResult {\n const result = createHostFiberImpl(\n parent,\n current,\n node,\n key,\n runtime,\n path,\n options,\n canReuseCurrentFiber,\n );\n\n if (result.fiber !== undefined) {\n if (canFinalizeNewHostFiber(result.fiber, current, node, options)) {\n result.fiber.flags |= Placement;\n result.fiber.hostChildListChanged = true;\n return result;\n }\n\n result.fiber.pendingProps = getPendingProps(node);\n includeNodeRef(result.fiber, node);\n markHostFiberEffects(result.fiber, current, node);\n }\n\n return result;\n}\n\nfunction canFinalizeNewHostFiber(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n return (\n current === undefined &&\n options.previousNodes === undefined &&\n fiber.tag === \"host-component\" &&\n isReactCompatElement(node) &&\n node.ref === null &&\n typeof node.type === \"string\"\n );\n}\n\nfunction createHostFiberImpl(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n canReuseCurrentFiber = true,\n): FiberReconcileResult {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const existing = options.previousNodes?.[0];\n const fiber =\n current?.tag === \"host-text\"\n ? createWorkInProgress(current, String(node))\n : createFiber(\"host-text\", String(node), key);\n if (existing === undefined && options.previousNodes !== undefined) {\n reportMissingHydrationNode(options, path);\n } else if (existing !== undefined && !(existing instanceof Text)) {\n reportHydrationNodeTypeMismatch(options, path, \"text\", existing);\n }\n fiber.stateNode =\n existing instanceof Text\n ? existing\n : current?.tag === \"host-text\" && current.stateNode instanceof Text\n ? current.stateNode\n : createHostTextNode(getDocumentRef(options));\n\n if (existing instanceof Text && existing.data !== String(node)) {\n reportRecoverable(\n options,\n \"text\",\n path,\n new Error(\"Hydration text mismatch.\"),\n );\n }\n\n return { fiber, consumed: existing instanceof Text ? 1 : 0 };\n }\n\n if (Array.isArray(node)) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node)\n : createFiber(\"fragment\", node, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n const memoBailout = tryReuseMemoBailout(\n current,\n node,\n runtime,\n path,\n options,\n canReuseCurrentFiber,\n );\n if (memoBailout !== undefined) {\n return memoBailout;\n }\n\n if (!isReactCompatElement(node)) {\n if (isReactCompatPortal(node)) {\n return createPortalFiber(parent, current, node, key, runtime, path, options);\n }\n\n return { fiber: undefined, consumed: 0 };\n }\n\n // Host elements (string type) are by far the most common node. Dispatch them\n // before the component-type checks below, none of which a string can match,\n // so each reconciled host element skips ~12 type comparisons / probes.\n if (typeof node.type === \"string\") {\n return createHostComponentFiber(parent, current, node, key, runtime, path, options);\n }\n\n if (node.type === Fragment) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node.props.children)\n : createFiber(\"fragment\", node.props.children, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.f`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Activity) {\n const children =\n (node.props as { mode?: unknown }).mode === \"hidden\"\n ? null\n : node.props.children;\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, children)\n : createFiber(\"fragment\", children, key);\n fiber.type = node.type;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"fragment\" ? current.child : undefined,\n children as ReactCompatNode,\n runtime,\n `${path}.activity`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Profiler) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"profiler\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"profiler\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithProfiler(\n runtime,\n `${path}.profiler`,\n node.props,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"profiler\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.profiler`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === STRICT_MODE_TYPE) {\n return createStrictModeFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === Suspense) {\n return createSuspenseFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === SuspenseList) {\n return createSuspenseListFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n const fiber =\n current?.tag === \"error-boundary\"\n ? createWorkInProgress(current, node.props)\n : createFiber(\"error-boundary\", node.props, key);\n fiber.type = node.type;\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.eb`,\n options,\n );\n fiber.child = childResult.fiber;\n } catch (error) {\n if (isThenable(error)) {\n throw error;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const onError = node.props.onError;\n\n if (typeof onError === \"function\") {\n (onError as (error: Error) => void)(normalizedError);\n }\n\n const fallback = node.props.fallback;\n const fallbackNode =\n typeof fallback === \"function\"\n ? (fallback as (error: Error) => ReactCompatNode)(normalizedError)\n : null;\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.eb.fallback`,\n options,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (node.type === REACTIVE_DOM_BLOCK_TYPE) {\n const blockProps = (node.props as unknown as ReactiveDomBlockProps).blockProps;\n if (current?.tag === \"reactive-dom-block\") {\n // Re-render: reuse the committed DOM/subscriptions and push the new props\n // into the prop cell instead of re-running render(). Bound text/attributes\n // update via their reactive subscriptions; the subtree is never reconciled.\n const fiber = createWorkInProgress(current, node.props);\n fiber.type = node.type;\n fiber.hasDisposableResources = true;\n const previousState = current.stateNode as ReactiveDomBlockState | undefined;\n if (previousState?.propCell !== undefined && blockProps !== undefined) {\n setReactivePropCell(previousState.propCell, blockProps);\n }\n fiber.stateNode = previousState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const fiber = createFiber(\"reactive-dom-block\", node.props, key);\n fiber.type = node.type;\n fiber.hasDisposableResources = true;\n const render = (node.props as unknown as ReactiveDomBlockProps).render;\n if (blockProps !== undefined) {\n const propCell = createReactivePropCell(blockProps);\n const result = render(createReactivePropProxy(propCell));\n fiber.stateNode = { node: result.node, dispose: result.dispose, propCell };\n } else {\n fiber.stateNode = (render as () => ReactiveDomBlockResult)();\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isReactCompatProvider(node.type)) {\n const fiber =\n current?.tag === \"context-provider\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-provider\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithContextProvider(node.type, node.props.value, () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"context-provider\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.provider`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isReactCompatConsumer(node.type)) {\n const fiber =\n current?.tag === \"context-consumer\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-consumer\", node.props, key);\n fiber.type = node.type;\n const children = node.props.children;\n const render =\n typeof children === \"function\"\n ? (children as (value: unknown) => ReactCompatNode)\n : () => null;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"context-consumer\" ? current.child : undefined,\n render(useContext(consumerContext(node.type))),\n runtime,\n `${path}.consumer`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isForwardRefType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const forwardRefType = node.type;\n const fiber =\n current?.tag === \"forward-ref\" && current.type === forwardRefType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"forward-ref\", node.props, key);\n fiber.type = forwardRefType;\n const rendered = renderWithRootRuntime(runtime, path, () =>\n forwardRefType.render(node.props, node.ref),\n forwardRefType,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = getHydrationChildOptions(options, forwardRefType.render);\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"forward-ref\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.forwardRef`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isMemoType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const memoType = node.type;\n const memoPath = `${path}.memo`;\n const previousMemoFiber =\n current?.tag === \"memo\" && current.type === memoType ? current : undefined;\n const previousMemoState =\n previousMemoFiber !== undefined\n ? (previousMemoFiber.memoizedState as MemoFiberState | undefined)\n : undefined;\n\n if (\n previousMemoFiber !== undefined &&\n previousMemoState !== undefined &&\n !(\n memoStateNeedsDirtyInstanceCheck(previousMemoState) &&\n hasDirtyInstance(runtime, previousMemoState.instanceKeys, memoPath)\n ) &&\n !(\n memoStateNeedsEffectCheck(previousMemoState) &&\n hasUnflushedMountEffectInstance(runtime, previousMemoState.instanceKeys)\n ) &&\n areMemoPropsEqual(memoType, previousMemoState.props, node.props)\n ) {\n const fiber = getMemoBailoutFiber(\n runtime,\n previousMemoFiber,\n node.props,\n previousMemoState,\n canReuseCurrentFiber,\n );\n fiber.child = getSkippedChild(previousMemoFiber);\n fiber.memoizedState = previousMemoState;\n return {\n fiber,\n consumed: options.previousNodes?.length ?? 0,\n };\n }\n\n const fiber =\n previousMemoFiber !== undefined\n ? createWorkInProgress(previousMemoFiber, node.props)\n : createFiber(\"memo\", node.props, key);\n fiber.type = memoType;\n\n const renderedElement: ReactCompatElement = {\n $$typeof: node.$$typeof,\n type: memoType.type,\n key: node.key,\n ref: node.ref,\n props: node.props,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"memo\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n memoPath,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n const instanceKeys = collectMemoInstanceKeys(runtime, memoPath);\n const hasClassDescendant = hasClassComponentDescendant(fiber.child);\n fiber.memoizedState = {\n props: node.props as Record<string, unknown>,\n instanceKeys,\n hasDirtyInstanceDependencies:\n hasDirtyInstanceDependencies(runtime, instanceKeys) || hasClassDescendant,\n hasUnflushedEffectDependencies: hasUnflushedEffectDependencies(\n runtime,\n instanceKeys,\n ),\n hasRetainedInstanceDependencies:\n hasRetainedInstanceDependencies(runtime, instanceKeys) || hasClassDescendant,\n };\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isLazyType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const lazyType = node.type;\n const fiber =\n current?.tag === \"lazy\" && current.type === lazyType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"lazy\", node.props, key);\n fiber.type = lazyType;\n\n if (lazyType.status === \"resolved\" && lazyType.resolved !== undefined) {\n const renderedElement: ReactCompatElement = {\n $$typeof: node.$$typeof,\n type: lazyType.resolved,\n key: node.key,\n ref: node.ref,\n props: node.props,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"lazy\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n `${path}.lazy`,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n return { fiber, consumed: childResult.consumed };\n }\n\n if (lazyType.status === \"rejected\") {\n throw lazyType.error;\n }\n\n if (lazyType.status === \"uninitialized\") {\n lazyType.status = \"pending\";\n lazyType.promise = lazyType\n .load()\n .then((module) => {\n lazyType.status = \"resolved\";\n lazyType.resolved = module.default;\n runtime.rerender();\n })\n .catch((error: unknown) => {\n lazyType.status = \"rejected\";\n lazyType.error = error;\n runtime.rerender();\n });\n }\n\n if (suspensePrimaryRenderDepth > 0) {\n throw lazyType.promise;\n }\n\n fiber.child = undefined;\n return { fiber, consumed: 0 };\n }\n\n if (isClassComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const classType = node.type;\n const fiber =\n current?.tag === \"class-component\" && current.type === classType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"class-component\", node.props, key);\n fiber.type = classType;\n const previousClassChildKeys = collectInstanceKeys(runtime, `${path}.class`);\n const currentClassInstance =\n current?.tag === \"class-component\" && current.type === classType\n ? (current.stateNode as ClassComponentInstance)\n : undefined;\n const hasCurrentClassFiber =\n current?.tag === \"class-component\" && current.type === classType;\n const rendered = renderClassComponentWithRuntime(\n classType,\n node.props,\n runtime,\n path,\n {\n ...(currentClassInstance === undefined\n ? {}\n : { currentInstance: currentClassInstance }),\n hasDirtyDescendant: hasDirtyInstance(\n runtime,\n previousClassChildKeys,\n `${path}.class`,\n ),\n allowSkip: hasCurrentClassFiber,\n },\n );\n applyRef(node.ref, rendered.kind === \"skip\" ? current?.stateNode : rendered.instance);\n\n if (rendered.kind === \"skip\") {\n fiber.child = getSkippedChild(current);\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const childOptions = getHydrationChildOptions(options, classType);\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n rendered.node,\n runtime,\n `${path}.class`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n fiber.stateNode = rendered.instance;\n } catch (error) {\n const fallbackNode = recoverClassComponentError(\n rendered.type,\n rendered.instance,\n error,\n );\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.class.fallback`,\n childOptions,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isFunctionComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const previousFunctionState =\n current?.tag === \"function-component\"\n ? (current.stateNode as FunctionFiberState | undefined)\n : undefined;\n const fiber =\n current?.tag === \"function-component\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"function-component\", node.props, key);\n fiber.type = node.type;\n\n const canReuseSameElement =\n previousFunctionState !== undefined &&\n previousFunctionState.hasContextDependencies !== true &&\n previousFunctionState.element === node;\n const canReuseExternalStoreSnapshot =\n previousFunctionState !== undefined &&\n runtime.externalStoreUpdate &&\n shallowEqual(previousFunctionState.props, node.props) &&\n !hasChangedContextDependency(runtime, previousFunctionState.instanceKeys);\n\n if (\n runtime.strictReplayDepth === 0 &&\n previousFunctionState !== undefined &&\n (canReuseSameElement || canReuseExternalStoreSnapshot) &&\n !hasDirtyInstance(runtime, previousFunctionState.instanceKeys, path) &&\n !hasUnflushedMountEffectInstance(runtime, previousFunctionState.instanceKeys) &&\n !hasPendingAsyncChild(current?.child)\n ) {\n markActiveInstanceKeys(runtime, previousFunctionState.instanceKeys);\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = current?.memoizedState;\n fiber.stateNode = previousFunctionState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const rendered = renderWithRootRuntime(runtime, path, () =>\n (node.type as (props: Record<string, unknown>) => ReactCompatNode)(node.props),\n node.type,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = getHydrationChildOptions(options, node.type as Function);\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"function-component\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.0`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n const instanceKeys = collectInstanceKeys(runtime, path);\n fiber.stateNode = {\n element: node,\n props: node.props as Record<string, unknown>,\n instanceKeys,\n hasContextDependencies: hasContextDependency(runtime, instanceKeys),\n } satisfies FunctionFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n\n return { fiber: undefined, consumed: 0 };\n}\n\n// The host-component reconcile, split out of createHostFiberImpl so host\n// elements can be dispatched before the component-type checks. Only called with\n// a string element type.\nfunction createHostComponentFiber(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions,\n): FiberReconcileResult {\n if (typeof node.type !== \"string\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n const initialHostOnlyFiber = tryCreateInitialHostOnlyFiber(\n current,\n node,\n key,\n options,\n );\n if (initialHostOnlyFiber !== undefined) {\n return { fiber: initialHostOnlyFiber, consumed: 0 };\n }\n\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", node.type);\n const childNamespace = namespaceForHostChildren(elementNamespace, node.type);\n const reusableCurrent =\n current?.tag === \"host-component\" && current.type === node.type ? current : undefined;\n const fiber =\n reusableCurrent !== undefined\n ? createWorkInProgress(reusableCurrent, node.props)\n : createFiber(\"host-component\", node.props, key);\n // The hydration node bookkeeping only matters when hydrating. Skipping it for\n // the common (non-hydration) render avoids an isHostElement(undefined) probe\n // and the mismatch checks on every reconciled element.\n const existing = options.previousNodes?.[0];\n let existingElement: HostElement | undefined;\n let tagMatches = false;\n if (options.previousNodes !== undefined) {\n existingElement = isHostElement(existing) ? existing : undefined;\n tagMatches =\n existingElement !== undefined &&\n hostElementMatches(existingElement, node.type, elementNamespace);\n\n if (existing === undefined) {\n reportMissingHydrationNode(options, path);\n } else if (!isHostElement(existing)) {\n reportHydrationNodeTypeMismatch(options, path, `<${node.type}>`, existing);\n }\n\n if (existingElement !== undefined && !tagMatches) {\n reportRecoverable(\n options,\n \"tag\",\n path,\n new Error(\n `Hydration tag mismatch: expected <${node.type}> but found <${existingElement.tagName.toLowerCase()}>.`,\n ),\n );\n reportElementTextMismatch(options, `${path}.c`, existingElement, node.props.children);\n }\n }\n\n fiber.type = node.type;\n // When reusing a same-type current fiber, its stateNode was created for this\n // exact tag and namespace (same tree position), so the hostElementMatches\n // re-check (localName + namespaceURI reads) is redundant.\n fiber.stateNode =\n tagMatches\n ? existingElement\n : reusableCurrent !== undefined && isHostElement(reusableCurrent.stateNode)\n ? reusableCurrent.stateNode\n : createHostElement(getDocumentRef(options), node.type, options.namespace ?? \"html\");\n fiber.hydrateExisting = tagMatches;\n const previousChildNodes =\n tagMatches && existingElement !== undefined\n ? Array.from((existingElement as Element).childNodes)\n : undefined;\n const directTextChild =\n shouldUseDirectHostTextChild() && previousChildNodes === undefined\n ? getDirectHostTextChild(node.props.children)\n : undefined;\n if (\n previousChildNodes === undefined &&\n current?.tag === \"host-component\" &&\n current.type === node.type &&\n Object.is(hostFiberChildrenProp(current.memoizedProps), node.props.children) &&\n !hasDirtyInstance(runtime, [], `${path}.c`) &&\n canReuseStaticHostSubtree(current.child)\n ) {\n fiber.child = current.child;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n if (directTextChild !== undefined) {\n fiber.child = undefined;\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"host-component\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.c`,\n getHostChildFiberOptions(options, childNamespace, previousChildNodes),\n );\n fiber.child = childResult.fiber;\n if (previousChildNodes !== undefined) {\n reportExtraHydrationNodes(options, `${path}.c`, previousChildNodes, childResult.consumed);\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n}\n\nfunction isFunctionComponentType(value: unknown): value is (\n props: Record<string, unknown>,\n) => ReactCompatNode {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render !==\n \"function\"\n );\n}\n\nfunction tryCreateInitialHostOnlyFiber(\n current: Fiber | undefined,\n node: ReactCompatElement,\n key: string | undefined,\n options: FiberHydrationOptions,\n): Fiber | undefined {\n if (\n current !== undefined ||\n options.previousNodes !== undefined ||\n !shouldUseDirectHostTextChild() ||\n typeof node.type !== \"string\" ||\n !canCreateInitialHostOnlyNode(node)\n ) {\n return undefined;\n }\n\n return createInitialHostOnlyElementFiber(\n node,\n key,\n options.namespace ?? \"html\",\n getDocumentRef(options),\n );\n}\n\nfunction createInitialHostOnlyElementFiber(\n node: ReactCompatElement,\n key: string | undefined,\n namespace: HostNamespace,\n documentRef: Document | CustomHostDocument,\n): Fiber {\n const elementType = node.type as string;\n const elementNamespace = namespaceForHostElement(namespace, elementType);\n const childNamespace = namespaceForHostChildren(elementNamespace, elementType);\n const fiber = createFiber(\"host-component\", node.props, key);\n fiber.type = elementType;\n fiber.stateNode = createHostElement(documentRef, elementType, namespace);\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n\n if (getDirectHostTextChild(node.props.children) === undefined) {\n fiber.child = createInitialHostOnlyChildList(\n fiber,\n node.props.children as ReactCompatNode,\n childNamespace,\n documentRef,\n );\n }\n\n return fiber;\n}\n\nfunction createInitialHostOnlyChildList(\n parent: Fiber,\n children: ReactCompatNode,\n namespace: HostNamespace,\n documentRef: Document | CustomHostDocument,\n): Fiber | undefined {\n const normalized = normalizeChildren(children);\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n\n for (let index = 0; index < normalized.length; index += 1) {\n const child = normalized[index];\n const fiber = createInitialHostOnlyChildFiber(child, namespace, documentRef);\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.memoizedState = index;\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n bubbleHostChild(parent, fiber);\n previous = fiber;\n }\n\n return first;\n}\n\nfunction createInitialHostOnlyChildFiber(\n node: ReactCompatNode,\n namespace: HostNamespace,\n documentRef: Document | CustomHostDocument,\n): Fiber | undefined {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return undefined;\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const fiber = createFiber(\"host-text\", String(node));\n fiber.stateNode = createHostTextNode(documentRef);\n fiber.flags |= Placement;\n return fiber;\n }\n\n if (Array.isArray(node)) {\n const fiber = createFiber(\"fragment\", node);\n fiber.child = createInitialHostOnlyChildList(fiber, node, namespace, documentRef);\n return fiber.child === undefined ? undefined : fiber;\n }\n\n if (!isReactCompatElement(node) || typeof node.type !== \"string\") {\n return undefined;\n }\n\n return createInitialHostOnlyElementFiber(\n node,\n node.key === null ? undefined : node.key,\n namespace,\n documentRef,\n );\n}\n\nfunction canCreateInitialHostOnlyNode(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canCreateInitialHostOnlyNode);\n }\n\n if (\n !isReactCompatElement(node) ||\n typeof node.type !== \"string\" ||\n node.ref !== null ||\n hasInitialHostOnlyExcludedProps(node.props)\n ) {\n return false;\n }\n\n return canCreateInitialHostOnlyNode(node.props.children as ReactCompatNode);\n}\n\nfunction hasInitialHostOnlyExcludedProps(props: Record<string, unknown>): boolean {\n return (\n hasOwnProperty.call(props, REACTIVE_TEXT_BINDING_META) ||\n props.dangerouslySetInnerHTML !== undefined ||\n props.contentEditable === true ||\n props.suppressContentEditableWarning === true ||\n props.value !== undefined ||\n props.defaultValue !== undefined ||\n props.checked !== undefined ||\n props.defaultChecked !== undefined\n );\n}\n\nfunction getHostChildFiberOptions(\n options: FiberHydrationOptions,\n namespace: HostNamespace,\n previousNodes: readonly Node[] | undefined,\n): FiberHydrationOptions {\n const namespaceUnchanged =\n options.namespace === namespace ||\n (options.namespace === undefined && namespace === \"html\");\n\n if (previousNodes === undefined && namespaceUnchanged) {\n return options;\n }\n\n return {\n ...options,\n namespace,\n ...(previousNodes === undefined ? {} : { previousNodes }),\n };\n}\n\nfunction commitHostChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n const nodes: Node[] = [];\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options)) {\n nodes.push(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return nodes;\n}\n\nfunction commitHostDirtyChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n if (hasHostCommitWork(cursor)) {\n commitHostDirtyFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n}\n\nfunction commitHostDirtyChildrenOf(\n owner: Fiber,\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n const dirtyChildren = readDirtyChildCommitHints(owner);\n\n if (dirtyChildren === undefined) {\n commitHostDirtyChildren(fiber, parent, eventRoot, path, options);\n return;\n }\n\n for (let index = 0; index < dirtyChildren.length; index += 1) {\n const dirtyChild = dirtyChildren[index];\n\n if (dirtyChild !== undefined && hasHostCommitWork(dirtyChild)) {\n commitHostDirtyFiber(\n dirtyChild,\n parent,\n eventRoot,\n joinCommitPath(path, String(getDirtyChildCommitIndex(dirtyChild, index))),\n options,\n );\n }\n }\n owner.deletions = undefined;\n}\n\nfunction readDirtyChildCommitHints(fiber: Fiber): Fiber[] | undefined {\n return fiber.childListChanged ? undefined : fiber.deletions;\n}\n\nfunction getDirtyChildCommitIndex(fiber: Fiber, fallback: number): number {\n if (typeof fiber.memoizedState === \"number\") {\n return fiber.memoizedState;\n }\n\n return typeof fiber.stateNode === \"number\" ? fiber.stateNode : fallback;\n}\n\nfunction commitHostDirtyFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n if (fiber.tag === \"host-text\") {\n commitHostFiber(fiber, parent, eventRoot, path, options);\n return;\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return;\n }\n\n const isDomElement = isDomHostElement(element);\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (isDomElement && !propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n }\n\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(isDomElement && childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !(isDomElement && shouldPreserveContentEditableChildren(element, props, childNodes))\n ) {\n syncChildNodes(element as ParentNode, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildrenOf(fiber, fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n if (isDomElement && isFormHostType(fiber.type)) {\n applyPostChildFormProps(element, props, previousProps);\n }\n applyChangedRef(previousProps?.ref, props.ref, element);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (isPortalHostContainer(container)) {\n if (container instanceof Element) {\n setLogicalEventParent(container, parent);\n }\n const portalEventRoot =\n container instanceof Element && eventRoot !== container && eventRoot.contains(container)\n ? eventRoot\n : container instanceof Element\n ? container\n : eventRoot;\n const portalOptions = withPortalHostOptions(options, container);\n\n if (\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n (fiber.subtreeFlags & Placement) !== NoFlags\n ) {\n const childNodes = commitHostChildren(\n fiber.child,\n container as ParentNode,\n portalEventRoot,\n `${path}.portal`,\n portalOptions,\n );\n const previousNodes = committedHostNodesFromState(fiber.alternate?.memoizedState);\n syncOwnedChildNodes(container as ParentNode, previousNodes, childNodes);\n fiber.memoizedState = childNodes;\n } else {\n commitHostDirtyChildrenOf(\n fiber,\n fiber.child,\n container as ParentNode,\n portalEventRoot,\n `${path}.portal`,\n portalOptions,\n );\n }\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.tag === \"reactive-dom-block\") {\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildrenOf(fiber, fiber.child, parent, eventRoot, path, options);\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction hasHostCommitWork(fiber: Fiber): boolean {\n return (\n fiber.flags !== NoFlags ||\n fiber.subtreeFlags !== NoFlags ||\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting\n );\n}\n\nfunction commitHostKeyedChildListMutation(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n let cursor = fiber;\n let index = 0;\n let committed = false;\n\n while (cursor !== undefined) {\n if (!hasHostCommitWork(cursor)) {\n cursor = cursor.sibling;\n index += 1;\n continue;\n }\n\n const childPath = joinCommitPath(path, String(index));\n const didCommit = commitHostKeyedChildListMutationFiber(\n cursor,\n parent,\n eventRoot,\n childPath,\n options,\n );\n\n if (!didCommit) {\n return false;\n }\n\n committed = true;\n cursor = cursor.sibling;\n index += 1;\n }\n\n return committed;\n}\n\nfunction commitHostKeyedChildListMutationFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n if (fiber.tag === \"portal\") {\n commitHostDirtyFiber(fiber, parent, eventRoot, path, options);\n return true;\n }\n\n if (fiber.childListChanged) {\n const mutationParent =\n fiber.tag === \"host-component\" && isHostElement(fiber.stateNode)\n ? fiber.stateNode\n : parent;\n\n if (fiber.tag === \"host-component\" && !isHostElement(fiber.stateNode)) {\n return false;\n }\n\n if (commitHostAppendSuffix(fiber, mutationParent, eventRoot, path, options)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (commitHostSingleRemoval(fiber, mutationParent)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n return false;\n }\n\n if (fiber.subtreeChildListChanged) {\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n return false;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, element, eventRoot, `${path}.c`, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, parent, eventRoot, path, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n commitHostDirtyFiber(fiber, parent, eventRoot, path, options);\n return true;\n}\n\nfunction commitHostAppendSuffix(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions,\n): boolean {\n const appendHint = readAppendSuffixCommitHint(fiber.memoizedState);\n const append = appendHint ?? getAppendSuffix(fiber.alternate?.child, fiber.child);\n\n if (append === undefined) {\n return false;\n }\n\n if (appendHint !== undefined) {\n fiber.memoizedState = undefined;\n }\n\n let cursor: Fiber | undefined = append.fiber;\n let index = append.index;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(\n cursor,\n parent,\n eventRoot,\n joinCommitPath(path, String(index)),\n options,\n )) {\n parent.appendChild(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return true;\n}\n\nfunction readAppendSuffixCommitHint(value: unknown): AppendSuffixCommitHint | undefined {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const candidate = value as Partial<AppendSuffixCommitHint>;\n return candidate.fiber !== undefined && typeof candidate.index === \"number\"\n ? { fiber: candidate.fiber, index: candidate.index }\n : undefined;\n}\n\nfunction commitHostSingleRemoval(fiber: Fiber, parent: ParentNode): boolean {\n const removed =\n fiber.deletions?.length === 1\n ? fiber.deletions[0]\n : getSingleRemovedFiber(fiber.alternate?.child, fiber.child);\n\n if (removed === undefined) {\n return false;\n }\n\n let removedAny = false;\n\n for (const node of collectCommittedHostNodes(removed)) {\n if (node.parentNode !== parent) {\n return false;\n }\n\n parent.removeChild(node);\n removedAny = true;\n }\n\n if (removedAny) {\n fiber.deletions = undefined;\n }\n\n return removedAny;\n}\n\nfunction getAppendSuffix(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): { fiber: Fiber; index: number } | undefined {\n let currentCursor = current;\n let nextCursor = next;\n let index = 0;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n index += 1;\n }\n\n if (currentCursor !== undefined || nextCursor === undefined) {\n return undefined;\n }\n\n return { fiber: nextCursor, index };\n}\n\nfunction getSingleRemovedFiber(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): Fiber | undefined {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor)) {\n break;\n }\n\n if (hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n if (currentCursor === undefined) {\n return undefined;\n }\n\n const removed = currentCursor;\n currentCursor = currentCursor.sibling;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor === undefined && nextCursor === undefined ? removed : undefined;\n}\n\nfunction isSameFiberSlot(current: Fiber, next: Fiber): boolean {\n return (\n (next === current || next.alternate === current) &&\n current.tag === next.tag &&\n current.type === next.type &&\n current.key === next.key\n );\n}\n\nfunction collectCommittedHostNodes(fiber: Fiber): Node[] {\n if (fiber.tag === \"reactive-dom-block\") {\n const node = getReactiveDomBlockNode(fiber.stateNode);\n return node === undefined ? [] : [node];\n }\n\n if (\n (fiber.tag === \"host-component\" || fiber.tag === \"host-text\") &&\n fiber.stateNode instanceof Node\n ) {\n return [fiber.stateNode];\n }\n\n const nodes: Node[] = [];\n let child = fiber.child;\n\n while (child !== undefined) {\n nodes.push(...collectCommittedHostNodes(child));\n child = child.sibling;\n }\n\n return nodes;\n}\n\nfunction hasCommittedHostNode(fiber: Fiber): boolean {\n if (fiber.tag === \"reactive-dom-block\") {\n return getReactiveDomBlockNode(fiber.stateNode) !== undefined;\n }\n\n if (\n (fiber.tag === \"host-component\" || fiber.tag === \"host-text\") &&\n fiber.stateNode instanceof Node\n ) {\n return true;\n }\n\n let child = fiber.child;\n\n while (child !== undefined) {\n if (hasCommittedHostNode(child)) {\n return true;\n }\n child = child.sibling;\n }\n\n return false;\n}\n\nfunction getSkippedChild(current: Fiber | undefined): Fiber | undefined {\n const child = current?.child;\n const alternateChild = current?.alternate?.child;\n\n if (\n child !== undefined &&\n alternateChild !== undefined &&\n !hasCommittedHostNode(child) &&\n hasCommittedHostNode(alternateChild)\n ) {\n return alternateChild;\n }\n\n return child;\n}\n\nfunction finishHostPassthroughFiber(fiber: Fiber): void {\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction commitHostFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n if (fiber.tag === \"host-text\") {\n const text = fiber.stateNode;\n\n if (!(text instanceof Text)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n const nextText = String(fiber.pendingProps);\n if (text.data !== nextText) {\n text.data = nextText;\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [text];\n }\n\n if (fiber.tag === \"reactive-dom-block\") {\n const node = getReactiveDomBlockNode(fiber.stateNode);\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return node === undefined ? [] : [node];\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n if (\n fiber.hydrateExisting !== true &&\n fiber.flags === NoFlags &&\n fiber.subtreeFlags === NoFlags &&\n fiber.hostChildListChanged !== true &&\n fiber.childListChanged !== true &&\n fiber.subtreeChildListChanged !== true\n ) {\n fiber.memoizedProps = fiber.pendingProps;\n return [element];\n }\n\n const isDomElement = isDomHostElement(element);\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (isDomElement && !propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n }\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting === true ||\n (fiber.subtreeFlags & Placement) !== NoFlags\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(isDomElement && childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !(isDomElement && shouldPreserveContentEditableChildren(element, props, childNodes))\n ) {\n syncChildNodes(element as ParentNode, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n if (isDomElement && isFormHostType(fiber.type)) {\n applyPostChildFormProps(element, props, previousProps);\n }\n applyChangedRef(previousProps?.ref, props.ref, element);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return [element];\n }\n\n if (fiber.tag === \"fragment\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.f`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"profiler\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.profiler`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"strict-mode\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.strict`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.s`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense-list\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.sl`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"context-provider\" || fiber.tag === \"context-consumer\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.ctx`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"function-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fc`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"forward-ref\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fr`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"memo\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.memo`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"lazy\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.lazy`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"error-boundary\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.eb`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"class-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.class`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (!isPortalHostContainer(container)) {\n return [];\n }\n\n if (container instanceof Element) {\n setLogicalEventParent(container, parent);\n committedPortalContainers.add(container);\n }\n const portalEventRoot =\n container instanceof Element && eventRoot !== container && eventRoot.contains(container)\n ? eventRoot\n : container instanceof Element\n ? container\n : eventRoot;\n const portalOptions = withPortalHostOptions(options, container);\n const childNodes = commitHostChildren(\n fiber.child,\n container as ParentNode,\n portalEventRoot,\n `${path}.portal`,\n portalOptions,\n );\n const previousNodes = committedHostNodesFromState(fiber.alternate?.memoizedState);\n syncOwnedChildNodes(container as ParentNode, previousNodes, childNodes);\n fiber.memoizedState = childNodes;\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [];\n }\n\n finishCommittedFiber(fiber);\n return [];\n}\n\nfunction finishCommittedFiber(fiber: Fiber): void {\n fiber.flags = NoFlags;\n fiber.subtreeFlags = NoFlags;\n fiber.childListChanged = false;\n fiber.subtreeChildListChanged = false;\n fiber.hostChildListChanged = false;\n}\n\nfunction getReactiveDomBlockNode(state: unknown): ChildNode | undefined {\n if (\n typeof state === \"object\" &&\n state !== null &&\n \"node\" in state &&\n (state as { node?: unknown }).node instanceof Node\n ) {\n return (state as { node: ChildNode }).node;\n }\n\n return undefined;\n}\n\nfunction disposeReactiveDomBlockState(\n state: unknown,\n seen: Set<unknown>,\n): void {\n if (typeof state !== \"object\" || state === null || seen.has(state)) {\n return;\n }\n\n seen.add(state);\n const dispose = (state as { dispose?: unknown }).dispose;\n\n if (typeof dispose === \"function\") {\n dispose();\n (state as { dispose?: unknown }).dispose = undefined;\n }\n}\n\nfunction hasChildListMutation(fiber: Fiber): boolean {\n return fiber.childListChanged || fiber.subtreeChildListChanged;\n}\n\nfunction hostPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key)) {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key)) {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostOwnPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key) || key === \"children\") {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key) && key !== \"children\") {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostDirectTextChildChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previous));\n const nextText = getDirectHostTextChild(next.children);\n\n return (previousText !== undefined || nextText !== undefined) && previousText !== nextText;\n}\n\nfunction hostChildListChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousChildren = hostFiberChildrenProp(previous);\n const nextChildren = next.children;\n\n if (Object.is(previousChildren, nextChildren)) {\n return false;\n }\n\n if (\n getDirectHostTextChild(previousChildren) !== undefined ||\n getDirectHostTextChild(nextChildren) !== undefined\n ) {\n return false;\n }\n\n if (sameSingleHostChild(previousChildren, nextChildren)) {\n return false;\n }\n\n if (sameHostChildList(previousChildren, nextChildren)) {\n return false;\n }\n\n return true;\n}\n\nfunction sameSingleHostChild(previous: unknown, next: unknown): boolean {\n return (\n isReactCompatElement(previous) &&\n isReactCompatElement(next) &&\n previous.key === next.key &&\n previous.type === next.type\n );\n}\n\nfunction sameHostChildList(previous: unknown, next: unknown): boolean {\n if (!Array.isArray(previous) || !Array.isArray(next) || previous.length !== next.length) {\n return false;\n }\n\n for (let index = 0; index < previous.length; index += 1) {\n const previousChild = previous[index];\n const nextChild = next[index];\n\n if (Object.is(previousChild, nextChild)) {\n continue;\n }\n\n if (!sameSingleHostChild(previousChild, nextChild)) {\n return false;\n }\n }\n\n return (\n previous.length > 0 ||\n (Array.isArray(previous) && Array.isArray(next))\n );\n}\n\nfunction hostPropsAreChildrenOnly(props: unknown): boolean {\n if (typeof props !== \"object\" || props === null) {\n return false;\n }\n\n for (const key in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, key) &&\n key !== \"children\"\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction hostPropsAreKnownChildrenOnly(props: unknown): boolean {\n return (\n typeof props === \"object\" &&\n props !== null &&\n (props as { [HOST_CHILDREN_ONLY_PROPS_META]?: true })[\n HOST_CHILDREN_ONLY_PROPS_META\n ] === true\n );\n}\n\nfunction isRowTextOnlyUpdate(previous: unknown, next: Record<string, unknown>): boolean {\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n const previousText = getDirectHostTextChild(previousProps.children);\n const nextText = getDirectHostTextChild(next.children);\n\n return (\n previousText !== undefined &&\n nextText !== undefined &&\n previousText !== nextText &&\n hostOwnPropsEqual(previousProps, next)\n );\n}\n\nfunction hostFiberChildrenProp(props: unknown): unknown {\n return typeof props === \"object\" && props !== null\n ? (props as { children?: unknown }).children\n : undefined;\n}\n\nfunction getDirectHostTextChild(children: unknown): string | undefined {\n return typeof children === \"string\" || typeof children === \"number\"\n ? String(children)\n : undefined;\n}\n\n// Only these host tags carry post-child form value/checked semantics. Gating on\n// the (cheap, already-known) type string lets the commit skip applyPostChildFormProps\n// and its instanceof probes for every other element.\nfunction isFormHostType(type: unknown): boolean {\n return type === \"input\" || type === \"textarea\" || type === \"select\";\n}\n\n// This package has no Node type dependency; declare the minimal process\n// shape needed for the literal process.env.NODE_ENV expression below.\ndeclare const process: { env: Record<string, string | undefined> };\n\ntype HostFastPathMode = \"static-fast\" | \"dynamic\";\n\nconst hostFastPathMode: HostFastPathMode = (() => {\n try {\n // The literal process.env.NODE_ENV member expression is what bundler\n // define rewriting matches; a globalThis.process indirection is never\n // rewritten and leaves deployed browser bundles without any fast path.\n return process.env.NODE_ENV === \"production\" ? \"static-fast\" : \"dynamic\";\n } catch {\n // No process global at all: an unbundled browser runtime. Treat it as\n // production rather than running every host update on the slow path.\n return \"static-fast\";\n }\n})();\n\nfunction shouldUseDirectHostTextChild(): boolean {\n if (hostFastPathMode === \"static-fast\") {\n return true;\n }\n\n // Node dev/test environments keep the per-call env read so test harnesses\n // can flip NODE_ENV (vi.stubEnv) without re-importing this module.\n return process.env.NODE_ENV === \"production\";\n}\n\nfunction syncDirectHostTextChild(element: Element, text: string): Text {\n const firstChild = element.firstChild;\n\n if (firstChild instanceof Text && firstChild.nextSibling === null) {\n if (firstChild.data !== text) {\n firstChild.data = text;\n }\n return firstChild;\n }\n\n element.textContent = text;\n const nextFirstChild = element.firstChild;\n\n if (!(nextFirstChild instanceof Text)) {\n const textNode = document.createTextNode(text);\n element.replaceChildren(textNode);\n return textNode;\n }\n\n return nextFirstChild;\n}\n\nfunction subscribeReactiveHostTextBinding(\n props: Record<string, unknown>,\n text: Text,\n): void {\n subscribeReactiveTextBinding(\n (props as Record<PropertyKey, unknown>)[REACTIVE_TEXT_BINDING_META],\n text,\n );\n}\n\nfunction shouldPreserveContentEditableChildren(\n element: Element,\n props: Record<string, unknown>,\n childNodes: readonly Node[],\n): boolean {\n void childNodes;\n\n if (\n !element.hasAttribute(\"contenteditable\") ||\n element.getAttribute(\"contenteditable\") === \"false\"\n ) {\n return false;\n }\n\n const children = props.children;\n return (\n children === undefined ||\n children === null ||\n children === false ||\n (Array.isArray(children) && children.length === 0)\n );\n}\n\nfunction createSuspenseFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const boundary = findReactSuspenseBoundary(options.previousNodes ?? []);\n if (boundary?.serverError !== undefined) {\n reportReactSuspenseServerError(\n options,\n path,\n boundary.serverError.message,\n boundary.serverError.componentStack,\n );\n }\n const { previousNodes: _previousNodes, ...optionsWithoutPreviousNodes } = options;\n const boundaryOptions =\n boundary === undefined\n ? options\n : boundary.serverError === undefined\n ? boundary.previousNodes === undefined\n ? optionsWithoutPreviousNodes\n : { ...options, previousNodes: boundary.previousNodes }\n : optionsWithoutPreviousNodes;\n const fiber =\n current?.tag === \"suspense\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense\", element.props, key);\n fiber.type = element.type;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n\n try {\n suspensePrimaryRenderDepth += 1;\n let childResult: FiberReconcileResult;\n\n try {\n childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.s`,\n boundaryOptions,\n );\n } finally {\n suspensePrimaryRenderDepth -= 1;\n }\n\n fiber.child = childResult.fiber;\n fiber.memoizedState = { didSuspend: false } satisfies SuspenseFiberState;\n } catch (error) {\n if (!isThenable(error)) {\n throw error;\n }\n\n restoreRuntimeSnapshot(runtime, snapshot);\n error.then(\n () => runtime.rerender(),\n () => runtime.rerender(),\n );\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.fallback as ReactCompatNode,\n runtime,\n `${path}.fallback`,\n boundaryOptions,\n );\n fiber.child = fallbackResult.fiber;\n fiber.memoizedState = { didSuspend: true } satisfies SuspenseFiberState;\n }\n\n return {\n fiber,\n consumed: boundary?.consumed ?? options.previousNodes?.length ?? 0,\n };\n}\n\nfunction createStrictModeFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"strict-mode\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"strict-mode\", element.props, key);\n fiber.type = element.type;\n\n const { result: childResult, memoValues, memoValuesByHook } = renderWithStrictModeMemoCapture(\n runtime,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"strict-mode\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n try {\n renderStrictModeReplay(\n runtime,\n memoValues,\n memoValuesByHook,\n () =>\n reconcileHostChild(\n fiber,\n childResult.fiber,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: [] },\n ),\n );\n } finally {\n restoreRuntimeSnapshot(runtime, snapshot);\n }\n\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction createSuspenseListFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"suspense-list\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense-list\", element.props, key);\n fiber.type = element.type;\n const children = normalizeChildren(element.props.children as ReactCompatNode);\n const revealOrder = element.props.revealOrder;\n\n if (revealOrder === \"forwards\") {\n const childResult = reconcileSuspenseListForwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else if (revealOrder === \"backwards\") {\n const childResult = reconcileSuspenseListBackwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n `${path}.sl`,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n}\n\nfunction reconcileSuspenseListForwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let currentUnkeyed = currentFirstChild;\n\n for (const [index, child] of children.entries()) {\n const key = getNodeKey(child);\n const current = key === undefined ? currentUnkeyed : currentByKey.get(key);\n const childOptions =\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) };\n const result = createHostFiber(\n parent,\n current,\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n childOptions,\n );\n const fiber = result.fiber;\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n previous = fiber;\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileSuspenseListBackwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n const fibers: Fiber[] = [];\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let consumed = 0;\n\n for (let index = children.length - 1; index >= 0; index -= 1) {\n const child = children[index] as ReactCompatNode;\n const key = getNodeKey(child);\n const result = createHostFiber(\n parent,\n key === undefined ? undefined : currentByKey.get(key),\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) },\n );\n const fiber = result.fiber;\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n fibers.unshift(fiber);\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: linkFiberSiblings(fibers), consumed };\n}\n\nfunction linkFiberSiblings(fibers: readonly Fiber[]): Fiber | undefined {\n let previous: Fiber | undefined;\n\n for (const fiber of fibers) {\n if (previous !== undefined) {\n previous.sibling = fiber;\n }\n previous = fiber;\n }\n\n return fibers[0];\n}\n\nfunction hasSuspendedChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction hasPendingAsyncChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isPendingLazyFiber(cursor) || isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n if (cursor.child !== undefined && hasPendingAsyncChild(cursor.child)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction tryReuseMemoBailout(\n current: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions,\n canReuseCurrentFiber = true,\n): FiberReconcileResult | undefined {\n if (\n current?.tag !== \"memo\" ||\n runtime === undefined ||\n !isReactCompatElement(node) ||\n node.type !== current.type ||\n !isMemoType(node.type)\n ) {\n return undefined;\n }\n\n const previousMemoState = current.memoizedState as MemoFiberState | undefined;\n const memoPath = `${path}.memo`;\n\n if (\n previousMemoState === undefined ||\n (\n memoStateNeedsDirtyInstanceCheck(previousMemoState) &&\n hasDirtyInstance(runtime, previousMemoState.instanceKeys, memoPath)\n ) ||\n (\n memoStateNeedsEffectCheck(previousMemoState) &&\n hasUnflushedMountEffectInstance(runtime, previousMemoState.instanceKeys)\n ) ||\n !areMemoPropsEqual(node.type, previousMemoState.props, node.props)\n ) {\n return undefined;\n }\n\n if (memoStateNeedsActiveInstanceMark(previousMemoState)) {\n markActiveInstanceKeys(runtime, previousMemoState.instanceKeys);\n }\n\n const fiber =\n canReuseCurrentFiber &&\n current.hasRefSubtree !== true &&\n current.hasDisposableResources !== true &&\n current.hydrateExisting !== true\n ? current\n : createWorkInProgress(current, node.props);\n\n if (fiber === current) {\n current.pendingProps = node.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n }\n fiber.type = node.type;\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = previousMemoState;\n return {\n fiber,\n consumed: options.previousNodes?.length ?? 0,\n };\n}\n\nfunction tryReuseDependencyFreeMemoBailout(\n current: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n options: FiberHydrationOptions,\n canReuseCurrentFiber: boolean,\n): FiberReconcileResult | undefined {\n if (\n options.previousNodes !== undefined ||\n current?.tag !== \"memo\" ||\n runtime === undefined ||\n !isReactCompatElement(node) ||\n node.type !== current.type ||\n !isMemoType(node.type)\n ) {\n return undefined;\n }\n\n const previousMemoState = current.memoizedState as MemoFiberState | undefined;\n\n if (\n previousMemoState === undefined ||\n previousMemoState.hasDirtyInstanceDependencies !== false ||\n previousMemoState.hasUnflushedEffectDependencies !== false ||\n previousMemoState.hasRetainedInstanceDependencies !== false ||\n !areMemoPropsEqual(node.type, previousMemoState.props, node.props)\n ) {\n return undefined;\n }\n\n const fiber = getMemoBailoutFiber(\n runtime,\n current,\n node.props,\n previousMemoState,\n canReuseCurrentFiber,\n );\n fiber.type = node.type;\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = previousMemoState;\n return {\n fiber,\n consumed: 0,\n };\n}\n\nfunction isPendingLazyFiber(fiber: Fiber): boolean {\n if (fiber.tag !== \"lazy\" || !isLazyType(fiber.type)) {\n return false;\n }\n\n return fiber.type.status !== \"resolved\" || fiber.child === undefined;\n}\n\nfunction isSuspendedSuspenseFiber(fiber: Fiber): boolean {\n return (\n fiber.tag === \"suspense\" &&\n (fiber.memoizedState as SuspenseFiberState | undefined)?.didSuspend === true\n );\n}\n\nfunction findReactSuspenseBoundary(\n previousNodes: readonly Node[],\n): ReactSuspenseBoundary | undefined {\n const startIndex = previousNodes.findIndex(isReactSuspenseStartComment);\n\n if (startIndex < 0) {\n return undefined;\n }\n\n let depth = 0;\n\n for (let index = startIndex; index < previousNodes.length; index += 1) {\n const node = previousNodes[index];\n\n if (isReactSuspenseStartComment(node)) {\n depth += 1;\n continue;\n }\n\n if (isReactSuspenseEndComment(node)) {\n depth -= 1;\n\n if (depth === 0) {\n const start = previousNodes[startIndex] as Comment;\n const boundaryNodes = previousNodes.slice(startIndex + 1, index);\n const boundary: ReactSuspenseBoundary = {\n consumed: index - startIndex + 1,\n ...readReactSuspenseServerError(start, boundaryNodes),\n };\n\n if (!isReactSuspenseErrorStartComment(start)) {\n boundary.previousNodes = isReactSuspensePendingStartComment(start)\n ? removeReactSuspensePendingTemplate(boundaryNodes)\n : boundaryNodes;\n }\n\n return boundary;\n }\n }\n }\n\n return undefined;\n}\n\nfunction isReactSuspenseStartComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && reactSuspenseStartComments.has(node.data);\n}\n\nfunction isReactSuspensePendingStartComment(node: Comment): boolean {\n return node.data === \"$?\" || node.data === \"$!\";\n}\n\nfunction isReactSuspenseErrorStartComment(node: Comment): boolean {\n return node.data === \"$!\";\n}\n\nfunction isReactSuspenseEndComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && node.data === \"/$\";\n}\n\nfunction removeReactSuspensePendingTemplate(nodes: readonly Node[]): Node[] {\n const [firstNode, ...remainingNodes] = nodes;\n\n return firstNode instanceof HTMLTemplateElement\n ? remainingNodes\n : [...nodes];\n}\n\nconst reactSuspenseStartComments = new Set([\"$\", \"$?\", \"$!\"]);\n\nfunction readReactSuspenseServerError(\n start: Comment,\n boundaryNodes: readonly Node[],\n): { serverError: { message: string; componentStack?: string } } | {} {\n if (start.data !== \"$!\") {\n return {};\n }\n\n const template = boundaryNodes[0];\n const message =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-msg\")\n : null;\n const componentStack =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-stck\")\n : null;\n\n return {\n serverError: {\n message: message ?? \"React Suspense server rendering error.\",\n ...(componentStack === null ? {} : { componentStack }),\n },\n };\n}\n\nfunction createPortalFiber(\n parent: Fiber,\n current: Fiber | undefined,\n portal: ReactCompatPortal,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n runtime.portalContainers.add(portal.container);\n const fiber =\n current?.tag === \"portal\" && current.stateNode === portal.container\n ? createWorkInProgress(current, portal.children)\n : createFiber(\"portal\", portal.children, key);\n fiber.stateNode = portal.container;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"portal\" ? current.child : undefined,\n portal.children,\n runtime,\n `${path}.portal`,\n {\n ...options,\n documentRef: portal.container.ownerDocument,\n namespace: namespaceForPortalContainer(portal.container),\n },\n );\n fiber.child = childResult.fiber;\n fiber.return = parent;\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction normalizeChildren(node: ReactCompatNode): ReactCompatNode[] {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return [];\n }\n\n return Array.isArray(node) ? node : [node];\n}\n\nfunction getDocumentRef(options: FiberHydrationOptions): Document | CustomHostDocument {\n return options.documentRef ?? document;\n}\n\nfunction createHostTextNode(documentRef: Document | CustomHostDocument): Text {\n if (\"createTextNode\" in documentRef && typeof documentRef.createTextNode === \"function\") {\n return documentRef.createTextNode(\"\");\n }\n\n return document.createTextNode(\"\");\n}\n\nfunction collectExistingKeyedFibers(\n firstChild: Fiber | undefined,\n): Map<string, Fiber> {\n const keyed = new Map<string, Fiber>();\n let cursor = firstChild;\n\n while (cursor !== undefined) {\n if (cursor.key !== undefined) {\n keyed.set(cursor.key, cursor);\n }\n\n cursor = cursor.sibling;\n }\n\n return keyed;\n}\n\nfunction getNodeKey(node: ReactCompatNode): string | undefined {\n return isReactCompatElement(node) && node.key !== null ? node.key : undefined;\n}\n\nfunction hasKeyedChild(children: readonly ReactCompatNode[]): boolean {\n for (const child of children) {\n if (getNodeKey(child) !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getNodePathSegment(node: ReactCompatNode, index: number): string {\n const key = getNodeKey(node);\n return key === undefined ? String(index) : `k:${key}`;\n}\n\nfunction getReconcileChildPath(\n path: string,\n node: ReactCompatNode,\n index: number,\n options: FiberHydrationOptions,\n): string {\n if (!shouldTrackReconcilePath(node, options)) {\n return \"\";\n }\n\n return joinPath(path, getNodePathSegment(node, index));\n}\n\nfunction shouldTrackReconcilePath(\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n if (\n options.previousNodes !== undefined ||\n options.hydration?.onRecoverableError !== undefined ||\n options.resumeId !== undefined\n ) {\n return true;\n }\n\n return !isHostElementWithDirectTextChild(node);\n}\n\nfunction isHostElementWithDirectTextChild(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n typeof node.type === \"string\" &&\n getDirectHostTextChild(node.props.children) !== undefined\n );\n}\n\nfunction getRootCommitPath(options: RenderOptions): string {\n return options.hydration?.onRecoverableError === undefined ? SKIP_COMMIT_PATH : \"0\";\n}\n\nfunction joinCommitPath(path: string, segment: string): string {\n return path === SKIP_COMMIT_PATH ? \"\" : joinPath(path, segment);\n}\n\nfunction getHydrationChildOptions(\n options: FiberHydrationOptions,\n component: Function,\n): FiberHydrationOptions {\n return options.hydration === undefined\n ? options\n : withHydrationComponentStack(options, getComponentName(component));\n}\n\nfunction getComponentName(component: Function): string {\n return component.name === \"\" ? \"Anonymous\" : component.name;\n}\n\nfunction joinPath(path: string, segment: string): string {\n return path === \"\" ? segment : `${path}.${segment}`;\n}\n\nfunction isForwardRefType(\n value: unknown,\n): value is {\n $$typeof: typeof FORWARD_REF_TYPE;\n render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n value: unknown,\n): value is {\n $$typeof: typeof MEMO_TYPE;\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction isLazyType(\n value: unknown,\n): value is {\n $$typeof: typeof LAZY_TYPE;\n load: () => Promise<{ default: ReactCompatElement[\"type\"] }>;\n status: \"uninitialized\" | \"pending\" | \"resolved\" | \"rejected\";\n promise?: Promise<void>;\n resolved?: ReactCompatElement[\"type\"];\n error?: unknown;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction collectInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return collectRuntimeInstanceKeys(runtime, prefix);\n}\n\nfunction collectMemoInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return readDependencyFreeMemoInstanceKey(runtime, prefix) === undefined\n ? collectInstanceKeys(runtime, prefix)\n : emptyInstanceKeys;\n}\n\nfunction readDependencyFreeMemoInstanceKey(\n runtime: RootRuntime,\n prefix: string,\n): string | undefined {\n const keys = runtime.instanceKeysByPrefix.get(prefix);\n\n if (keys === undefined || keys.size !== 1 || !keys.has(prefix)) {\n return undefined;\n }\n\n const instance = runtime.instances.get(prefix) as RuntimeInstanceLike | undefined;\n\n if (\n instance === undefined ||\n instance.contextDependencies !== undefined ||\n (instance.hooks !== undefined && instance.hooks.length > 0)\n ) {\n return undefined;\n }\n\n return prefix;\n}\n\nfunction markActiveInstanceKeys(runtime: RootRuntime, keys: readonly string[]): void {\n for (const key of keys) {\n runtime.activeInstanceKeys?.add(key);\n }\n}\n\ntype RuntimeHookSlotLike = {\n kind?: string;\n};\n\ntype RuntimeEffectHookSlotLike = RuntimeHookSlotLike & {\n mounted?: boolean;\n disposed?: boolean;\n};\n\ninterface RuntimeInstanceLike {\n hooks?: readonly (RuntimeHookSlotLike | undefined)[];\n contextDependencies?: unknown;\n}\n\nfunction memoStateNeedsDirtyInstanceCheck(state: MemoFiberState): boolean {\n return state.hasDirtyInstanceDependencies !== false;\n}\n\nfunction memoStateNeedsEffectCheck(state: MemoFiberState): boolean {\n return state.hasUnflushedEffectDependencies !== false;\n}\n\nfunction memoStateNeedsActiveInstanceMark(state: MemoFiberState): boolean {\n return state.hasRetainedInstanceDependencies !== false;\n}\n\nfunction getMemoBailoutFiber(\n runtime: RootRuntime,\n current: Fiber,\n pendingProps: unknown,\n state: MemoFiberState,\n canReuseCurrentFiber: boolean,\n): Fiber {\n if (memoStateNeedsActiveInstanceMark(state)) {\n markActiveInstanceKeys(runtime, state.instanceKeys);\n }\n\n if (canReuseCurrentFiber && canReuseMemoBailoutFiber(current, state)) {\n current.pendingProps = pendingProps;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n return current;\n }\n\n const fiber = createWorkInProgress(current, pendingProps);\n return fiber;\n}\n\nfunction canReuseMemoBailoutFiber(current: Fiber, state: MemoFiberState): boolean {\n return (\n state.hasRetainedInstanceDependencies === false &&\n current.hasRefSubtree !== true &&\n current.hasDisposableResources !== true &&\n current.hydrateExisting !== true\n );\n}\n\nfunction hasDirtyInstanceDependencies(\n runtime: RootRuntime,\n keys: readonly string[],\n): boolean {\n for (const key of keys) {\n const instance = runtime.instances.get(key) as RuntimeInstanceLike | undefined;\n\n if (instance === undefined || instance.contextDependencies !== undefined) {\n return true;\n }\n\n if (instance.hooks?.some(isDirtyCapableHookSlot) === true) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasRetainedInstanceDependencies(\n runtime: RootRuntime,\n keys: readonly string[],\n): boolean {\n for (const key of keys) {\n const instance = runtime.instances.get(key) as RuntimeInstanceLike | undefined;\n\n if (instance === undefined || instance.contextDependencies !== undefined) {\n return true;\n }\n\n if (instance.hooks !== undefined && instance.hooks.length > 0) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isDirtyCapableHookSlot(slot: RuntimeHookSlotLike | undefined): boolean {\n if (slot === undefined) {\n return false;\n }\n\n return (\n slot.kind !== \"ref\" &&\n slot.kind !== \"memo\" &&\n slot.kind !== \"debug\" &&\n slot.kind !== \"effect\"\n );\n}\n\nfunction hasUnflushedEffectDependencies(\n runtime: RootRuntime,\n keys: readonly string[],\n): boolean {\n for (const key of keys) {\n const instance = runtime.instances.get(key) as RuntimeInstanceLike | undefined;\n\n if (instance === undefined) {\n return true;\n }\n\n if (instance.hooks?.some((slot) => slot?.kind === \"effect\") === true) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasClassComponentDescendant(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (cursor.tag === \"class-component\") {\n return true;\n }\n\n if (hasClassComponentDescendant(cursor.child)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction hasDirtyInstance(\n runtime: RootRuntime | undefined,\n keys: readonly string[],\n prefix?: string,\n): boolean {\n if (runtime === undefined) {\n return false;\n }\n\n if (hasDirtyClassUpdate(runtime, keys, prefix)) {\n return true;\n }\n\n if (keys.length === 0) {\n return false;\n }\n\n if (keys.some(\n (key) =>\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty === true,\n )) {\n return true;\n }\n\n if (prefix === undefined) {\n return false;\n }\n\n // Resolve dirty descendants through the prefix index instead of scanning\n // every runtime instance. The previous full-map scan made memo/function\n // bailout O(total instances) per node, i.e. O(n^2) for large keyed lists\n // (js-framework-benchmark update-every-10th / select). The index is the same\n // source of truth used by collectRuntimeInstanceKeys.\n const keysUnderPrefix = runtime.instanceKeysByPrefix.get(prefix);\n\n if (keysUnderPrefix !== undefined) {\n for (const key of keysUnderPrefix) {\n if (\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty ===\n true\n ) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction hasUnflushedMountEffectInstance(runtime: RootRuntime, keys: readonly string[]): boolean {\n return keys.some((key) => {\n const instance = runtime.instances.get(key) as\n | { hooks?: readonly (RuntimeEffectHookSlotLike | undefined)[] }\n | undefined;\n\n return instance?.hooks?.some(\n (slot) =>\n slot?.kind === \"effect\" &&\n slot.disposed !== true &&\n slot.mounted !== true,\n ) === true;\n });\n}\n\nfunction applyRef(ref: unknown, node: unknown): void {\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = node;\n }\n}\n\nfunction applyChangedRef(previousRef: unknown, nextRef: unknown, node: unknown): void {\n if (Object.is(previousRef, nextRef)) {\n return;\n }\n\n queueHostRefUpdate(previousRef, null);\n queueHostRefUpdate(nextRef, node);\n}\n\nfunction queueHostRefUpdate(ref: unknown, node: unknown): void {\n if (ref === null || ref === undefined) {\n return;\n }\n\n pendingHostRefUpdates.push({ ref, node });\n}\n\nfunction flushPendingHostRefUpdates(): void {\n const pending = pendingHostRefUpdates.splice(0);\n for (const { ref, node } of pending) {\n applyRef(ref, node);\n }\n}\n\nfunction isPortalHostContainer(value: unknown): value is ParentNode {\n if (value instanceof Element) {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as Partial<ParentNode> & {\n ownerDocument?: { createElement?: unknown };\n };\n return (\n typeof candidate.appendChild === \"function\" &&\n typeof candidate.insertBefore === \"function\" &&\n typeof candidate.removeChild === \"function\" &&\n typeof candidate.ownerDocument?.createElement === \"function\"\n );\n}\n\nfunction withPortalHostOptions(\n options: RenderOptions,\n container: ParentNode,\n): RenderOptions & { documentRef?: Document | CustomHostDocument; namespace: HostNamespace } {\n const namespace = namespaceForPortalContainer(container);\n const ownerDocument = (container as { ownerDocument?: unknown }).ownerDocument;\n if (\n typeof ownerDocument === \"object\" &&\n ownerDocument !== null &&\n typeof (ownerDocument as { createElement?: unknown }).createElement === \"function\"\n ) {\n return {\n ...options,\n documentRef: ownerDocument as Document | CustomHostDocument,\n namespace,\n };\n }\n\n return { ...options, namespace };\n}\n\nfunction namespaceForPortalContainer(container: ParentNode): HostNamespace {\n if (container instanceof SVGElement && container.localName !== \"foreignObject\") {\n return \"svg\";\n }\n\n return \"html\";\n}\n\nfunction committedHostNodesFromState(state: unknown): Node[] {\n return Array.isArray(state) ? state as Node[] : [];\n}\n"]}
1
+ {"version":3,"file":"host-reconciler.js","sourceRoot":"","sources":["../src/host-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,6BAA6B,EAC7B,SAAS,EACT,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,QAAQ,EACR,YAAY,EAMZ,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,GAEpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAA8B,MAAM,YAAY,CAAC;AAC3F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,+BAA+B,EAC/B,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,GAE7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,GAEhC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,8BAA8B,EAC9B,iBAAiB,EAGjB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAqBxB,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAW,CAAC;AACrD,MAAM,qBAAqB,GAAsC,EAAE,CAAC;AACpE,MAAM,iBAAiB,GAAa,EAAE,CAAC;AAUvC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAqBvD,IAAI,0BAA0B,GAAG,CAAC,CAAC;AAEnC,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,IACE,IAAI,KAAK,IAAI;QACb,IAAI,KAAK,SAAS;QAClB,OAAO,IAAI,KAAK,SAAS;QACzB,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,IAAI,KAAK,QAAQ,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACtB,IAAI,CAAC,IAAI,KAAK,QAAQ;QACtB,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAC9B,CAAC;QACD,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAQ,IAAI,CAAC,KAA4B,CAAC,IAAI,KAAK,QAAQ;YACzD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,CAAC,CAC3D,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAe,EACf,OAAwB,EACxB,OAAqB,EACrB,UAAiC,EAAE;IAEnC,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;IAClD,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,EAAE,CAC/C,kBAAkB,CAChB,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,OAAO,EACP,OAAO,EACP,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAC9C;QACE,GAAG,OAAO;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,YAAY;KACjD,CACF,CACF,CAAC;IACF,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACpC,cAAc,CAAC,aAAa,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC5B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAe,EACf,OAAwB,EACxB,OAAoB,EACpB,KAAqB,EACrB,UAAiC,EAAE;IAEnC,IAAI,CAAC,cAAc,GAAG;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,kBAAkB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI;QAClD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;KAC1E,CAAC;IACF,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;QACjD,GAAG,OAAO;QACV,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAe,EACf,YAAmB,EACnB,UAAyB,EAAE;IAE3B,iBAAiB,CAAC,GAAG,EAAE;QACrB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,yBAAyB,CAAC,KAAK,EAAE,CAAC;YAClC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,yBAAyB,CACvB,YAAY,EACZ,YAAY,CAAC,KAAK,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,UAAU,EACV,OAAO,CACR,CAAC;gBACF,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,IACE,YAAY,CAAC,gBAAgB;gBAC7B,qCAAqC,CACnC,YAAY,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,UAAU,EACV,OAAO,CACR,EACD,CAAC;gBACD,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,IACE,CAAC,YAAY,CAAC,gBAAgB;gBAC9B,YAAY,CAAC,uBAAuB;gBACpC,gCAAgC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EACzG,CAAC;gBACD,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1G,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACtC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,0BAA0B,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAe,EACf,YAAmB,EACnB,KAAqB,EACrB,UAAiC,EAAE;IAEnC,iBAAiB,CAAC,GAAG,EAAE;QACrB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,yBAAyB,CAAC,KAAK,EAAE,CAAC;YAClC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3F,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrE,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,0BAA0B,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC1C,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAwB;IAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;QACjE,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,6BAA6B;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,4BAA4B,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,8BAA8B,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,KAAwB,EACxB,QAA4B;IAE5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,sBAAsB,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,0CAA0C,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAwB,EACxB,IAAkB;IAElB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;gBACxC,4BAA4B,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvD,CAAC;YAED,8BAA8B,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,0CAA0C,CACjD,KAAwB,EACxB,IAAkB,EAClB,QAA4B;IAE5B,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;QACxF,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,4BAA4B,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3B,0CAA0C,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAa,EACb,iBAAoC,EACpC,IAAqB,EACrB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE;IAEnC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,MAAM,CAAC,uBAAuB,GAAG,KAAK,CAAC;IAEvC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,CAAC,gBAAgB,GAAG,iBAAiB,KAAK,SAAS,CAAC;QAC1D,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,gCAAgC,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,SAAS,GACb,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,6BAA6B,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC;YAC3E,iCAAiC,CAC/B,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,OAAO,CACR,CAAC;IACR,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChE,MAAM,gBAAgB,GAAG,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,2BAA2B,GAAG,CAAC,gBAAgB,IAAI,iBAAiB,KAAK,SAAS,CAAC;IACzF,IAAI,aAA6C,CAAC;IAClD,IAAI,YAAY,GAAsB,iBAAiB,CAAC;IACxD,IAAI,cAAc,GAAG,iBAAiB,CAAC;IACvC,IAAI,KAAwB,CAAC;IAC7B,IAAI,QAA2B,CAAC;IAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,IAAI,uBAAuB,GAAG,iBAAiB,CAAC;IAChD,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAClC,IAAI,aAAkC,CAAC;IACvC,IAAI,mBAAmB,GACrB,iBAAiB,KAAK,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,EAAS,CAAC;IACrF,MAAM,yBAAyB,GAAG,GAAe,EAAE;QACjD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,mBAAmB,GAAG,IAAI,GAAG,EAAS,CAAC;YACvC,IAAI,MAAM,GAAG,iBAAiB,CAAC;YAE/B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,uBAAuB,EAAE,CAAC;gBAClE,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,cAAiC,CAAC;QACtC,IAAI,2BAA2B,GAAG,2BAA2B,CAAC;QAE9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,gBAAgB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACrD,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,yBAAyB,EAAE,CAAC;YAC9B,CAAC;YACD,cAAc,GAAG,cAAc,CAAC;QAClC,CAAC;aAAM,IAAI,wBAAwB,EAAE,CAAC;YACpC,qBAAqB,GAAG,IAAI,CAAC;YAC7B,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,qBAAqB,GAAG,IAAI,CAAC;YAC7B,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,2BAA2B,GAAG,cAAc,KAAK,SAAS,CAAC;QAC7D,CAAC;aAAM,IAAI,YAAY,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;YACrC,cAAc,GAAG,YAAY,CAAC;YAC9B,2BAA2B,GAAG,IAAI,CAAC;YACnC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;YACpC,uBAAuB,GAAG,YAAY,CAAC;QACzC,CAAC;aAAM,IACL,QAAQ,KAAK,SAAS;YACtB,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,GAAG;YAClC,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EACrE,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC;YAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YACrC,MAAM,YAAY,GAAG,uCAAuC,CAC1D,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,CACT,CAAC;YACF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,qBAAqB,GAAG,IAAI,CAAC;YAC7B,yBAAyB,EAAE,CAAC;YAC5B,cAAc,GAAG,OAAO,CAAC;YACzB,2BAA2B,GAAG,KAAK,CAAC;YACpC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IACE,QAAQ,KAAK,SAAS;gBACtB,gBAAgB;gBAChB,2BAA2B,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC1D,CAAC;gBACD,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,wBAAwB,GAAG,IAAI,CAAC;gBAChC,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;iBAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC5B,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,yBAAyB,EAAE,CAAC;gBAC5B,aAAa,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;gBACzD,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,2BAA2B,GAAG,cAAc,KAAK,SAAS,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,iCAAiC,CACnD,cAAc,EACd,KAAK,EACL,OAAO,EACP,OAAO,EACP,2BAA2B,CAC5B,CAAC;QACF,MAAM,aAAa,GACjB,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;YAC9D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,WAAW,IAAI,eAAe,CAC3C,MAAM,EACN,cAAc,EACd,KAAK,EACL,GAAG,EACH,OAAO,EACP,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAClD,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,EACrE,2BAA2B,CAC5B,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,mBAAmB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzC,6BAA6B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACxD,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,mBAAmB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;gBACnE,6BAA6B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,cAAc,GAAG,cAAc,EAAE,OAAO,CAAC;QAC3C,CAAC;QACD,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/B,IACE,KAAK,CAAC,GAAG,KAAK,MAAM;YACpB,KAAK,CAAC,GAAG,KAAK,oBAAoB;YAClC,KAAK,CAAC,GAAG,KAAK,aAAa;YAC3B,KAAK,CAAC,GAAG,KAAK,UAAU;YACxB,KAAK,CAAC,GAAG,KAAK,UAAU;YACxB,KAAK,CAAC,GAAG,KAAK,eAAe;eAC1B,KAAK,CAAC,aAAa,KAAK,SAAS,EACpC,CAAC;YACD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IACL,KAAK,CAAC,GAAG,KAAK,MAAM;YACpB,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,EACtE,CAAC;YACD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,mBAAmB,KAAK,SAAS,IAAI,gBAAgB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACxF,gCAAgC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,oCAAoC,CAAC,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,gBAAgB;QACrB,qBAAqB,IAAI,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAChF,2BAA2B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,6BAA6B,CACpC,MAAa,EACb,iBAAoC,EACpC,QAAoC,EACpC,OAA8B;IAE9B,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,iBAAiB,KAAK,SAAS;QAC/B,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,4BAA4B,EAAE,EAC/B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,YAAY,GAAsB,iBAAiB,CAAC;IACxD,IAAI,KAAwB,CAAC;IAC7B,IAAI,QAA2B,CAAC;IAChC,IAAI,gBAAgB,GAAG,iBAAiB,KAAK,SAAS,CAAC;IACvD,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,IAAI,YAAY,GAAG,OAAO,CAAC;IAC3B,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,YAAgD,CAAC;IACrD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,gCAAgC,EAAE,CAAC;IAE/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,cAAiC,CAAC;QACtC,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAElC,IAAI,wBAAwB,EAAE,CAAC;YAC7B,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,gBAAgB,GAAG,IAAI,CAAC;YACxB,wBAAwB,GAAG,IAAI,CAAC;YAChC,qBAAqB,GAAG,IAAI,CAAC;YAC7B,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,IAAI,YAAY,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;YACzC,cAAc,GAAG,YAAY,CAAC;YAC9B,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;QACtC,CAAC;aAAM,IACL,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG;YACtC,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EACrE,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC;YAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YACrC,gBAAgB,GAAG,IAAI,CAAC;YACxB,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/C,cAAc,GAAG,OAAO,CAAC;YACzB,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;aAAM,IAAI,2BAA2B,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;YACtE,gBAAgB,GAAG,IAAI,CAAC;YACxB,gCAAgC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvD,wBAAwB,GAAG,IAAI,CAAC;YAChC,YAAY,GAAG,SAAS,CAAC;YACzB,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GACT,cAAc,KAAK,SAAS;YAC1B,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;YAC1D,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,4BAA4B,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvF,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAEpE,IAAI,qBAAqB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACxD,YAAY,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACjC,sBAAsB,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,YAAY,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QACjD,uBAAuB;YACrB,uBAAuB;gBACvB,KAAK,CAAC,gBAAgB;gBACtB,KAAK,CAAC,uBAAuB,CAAC;QAChC,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC9B,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,gBAAgB,GAAG,IAAI,CAAC;QACxB,gCAAgC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,MAAM,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,MAAM,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;IACzD,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,IAAI,YAAY,KAAK,SAAS,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAqB;IACpD,OAAO,CACL,oBAAoB,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,kFAAkF;AAClF,kFAAkF;AAClF,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;AAC3D,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAE7D,SAAS,8BAA8B,CAAC,IAAa;IACnD,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QACzB,IAA2C,CAAC,4BAA4B,CAAC,KAAK,IAAI,CACpF,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CACvC,QAA2C,EAC3C,aAAsC,EACtC,SAAkC;IAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACjD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAC9B,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QACjC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC;YAC9C,aAAa,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAChC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC;YAC9C,aAAa,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC;YAC3C,aAAa,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oCAAoC,CAC3C,IAAwB,EACxB,GAAuB,EACvB,QAMC,EACD,OAAoB,EACpB,QAAgB,EAChB,OAA8B;IAE9B,IACE,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC9C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAgC,CAAC;IACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAA2D,CAAC;IAC3F,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QACjF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;IAE1B,MAAM,cAAc,GAAG,WAAW,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrE,cAAc,CAAC,IAAI,GAAG,aAAa,CAAC;IAEpC,MAAM,WAAW,GAAG,eAAe,CACjC,cAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,EACH,OAAO,EACP,GAAG,QAAQ,IAAI,EACf,OAAO,CACR,CAAC;IACF,cAAc,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IACzC,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACvC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;QAC7C,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QACzC,eAAe,CAAC,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,cAAc,CAAC,SAAS,GAAG;QACzB,OAAO,EAAE,IAAI;QACb,KAAK;QACL,YAAY,EAAE,iBAAiB;QAC/B,sBAAsB,EAAE,KAAK;KACD,CAAC;IAE/B,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;IACjC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,aAAa,GAAG;QACxB,KAAK;QACL,YAAY,EAAE,iBAAiB;QAC/B,4BAA4B,EAAE,KAAK;QACnC,8BAA8B,EAAE,KAAK;QACrC,+BAA+B,EAAE,KAAK;KACd,CAAC;IAE3B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,4EAA4E;AAC5E,SAAS,kCAAkC,CACzC,OAAc,EACd,KAAyB;IAEzB,IACE,OAAO,CAAC,GAAG,KAAK,MAAM;QACtB,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAC3B,OAAO,CAAC,aAAa,KAAK,IAAI;QAC9B,OAAO,CAAC,eAAe,KAAK,IAAI,EAChC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,aAA2C,CAAC;IAElE,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,CAAC,4BAA4B,KAAK,KAAK;QAC5C,KAAK,CAAC,8BAA8B,KAAK,KAAK;QAC9C,KAAK,CAAC,+BAA+B,KAAK,KAAK,EAC/C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAyC,CAAC;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAgC,CAAC;IACzD,MAAM,UAAU,GACd,gCAAgC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;QAClE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;IACnC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;IAC/B,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,iFAAiF;AACjF,4EAA4E;AAC5E,kFAAkF;AAClF,kFAAkF;AAClF,kFAAkF;AAClF,kFAAkF;AAClF,kFAAkF;AAClF,SAAS,+BAA+B,CACtC,OAAc,EACd,KAAyB;IAEzB,IACE,OAAO,CAAC,GAAG,KAAK,MAAM;QACtB,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAC3B,OAAO,CAAC,aAAa,KAAK,IAAI;QAC9B,OAAO,CAAC,eAAe,KAAK,IAAI;QAChC,CAAC,8BAA8B,CAAE,OAAO,CAAC,IAA2B,CAAC,IAAI,CAAC,EAC1E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,aAA2C,CAAC;IAElE,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,CAAC,4BAA4B,KAAK,KAAK;QAC5C,KAAK,CAAC,8BAA8B,KAAK,KAAK;QAC9C,KAAK,CAAC,+BAA+B,KAAK,KAAK,EAC/C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IACrC,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC;IACxC,IACE,UAAU,KAAK,SAAS;QACxB,UAAU,CAAC,GAAG,KAAK,oBAAoB;QACvC,UAAU,CAAC,OAAO,KAAK,SAAS,EAChC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,SAA8C,CAAC;IAC7E,IAAI,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,+EAA+E;IAC/E,iFAAiF;IACjF,MAAM,SAAS,GAAG,KAAK,CAAC,KAAgC,CAAC;IACzD,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IAC9B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;IACnC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;IAC/B,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,0EAA0E;AAC1E,uEAAuE;AACvE,gFAAgF;AAChF,uEAAuE;AACvE,0EAA0E;AAC1E,8EAA8E;AAC9E,sEAAsE;AACtE,yEAAyE;AACzE,wBAAwB;AACxB,SAAS,iCAAiC,CACxC,MAAa,EACb,iBAAoC,EACpC,QAAoC,EACpC,OAAgC,EAChC,IAAY,EACZ,OAA8B;IAE9B,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,iBAAiB,KAAK,SAAS;QAC/B,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAI,QAAQ,CAAC,CAAC,CAAwB,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC,mCAAmC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,YAAY,GAAsB,iBAAiB,CAAC;IACxD,IAAI,KAAwB,CAAC;IAC7B,IAAI,QAA2B,CAAC;IAChC,IAAI,YAAY,GAAG,OAAO,CAAC;IAC3B,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,YAAgD,CAAC;IACrD,IAAI,YAA+B,CAAC;IACpC,IAAI,aAAkC,CAAC;IAEvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAuB,CAAC;QACpD,MAAM,YAAY,GAAG,KAAK,CAAC;QAC3B,IAAI,OAAO,GAAsB,YAAY,CAAC;QAE9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,qBAAqB;QACvB,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,EAAE,CAAC;YAC5C,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;aAAM,IACL,YAAY,KAAK,SAAS;YAC1B,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,YAAY,CAAC,GAAG;YACzC,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAChE,CAAC;YACD,YAAY,GAAG,OAAO,CAAC;YACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC1B,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,GACP,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,kCAAkC,CAAC,OAAO,EAAE,YAAY,CAAC;gBACzD,+BAA+B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,eAAe,CAC5B,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,CAAC,GAAG,IAAI,SAAS,EAC7B,OAAO,EACP,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAClD,OAAO,EACP,KAAK,CACN,CAAC;YACF,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAErB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC9E,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,gBAAgB,GAAG,IAAI,CAAC;YACxB,YAAY,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACjC,sBAAsB,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,YAAY,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QACjD,uBAAuB;YACrB,uBAAuB,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,uBAAuB,CAAC;QACrF,IACE,KAAK,CAAC,GAAG,KAAK,MAAM;YACpB,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,EACtE,CAAC;YACD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACrE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,YAAY,GAAG,YAAY,CAAC;QAC5B,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,MAAM,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,MAAM,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;IACzD,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,IAAI,YAAY,KAAK,SAAS,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,6BAA6B,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IACD,2BAA2B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,mCAAmC,CAC1C,iBAAwB,EACxB,QAAoC,EACpC,YAAwC;IAExC,IAAI,OAAO,GAAsB,iBAAiB,CAAC;IACnD,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAI,KAA4B,CAAC,GAAG,CAAC;QAE9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IACE,CAAC,eAAe;YAChB,OAAO,KAAK,SAAS;YACrB,OAAO,CAAC,GAAG,KAAK,GAAG;YACnB,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EACxD,CAAC;YACD,eAAe,GAAG,IAAI,CAAC;YACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAqB,EACrB,YAAwC;IAExC,OAAO,CACL,oBAAoB,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,IAAI,CAAC,IAAI,KAAK,YAAY,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,OAA0B,EAC1B,IAAwB,EACxB,GAAW;IAEX,OAAO,CACL,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,GAAG,KAAK,GAAG;QACnB,OAAO,CAAC,GAAG,KAAK,MAAM;QACtB,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;QAC1B,OAAO,CAAC,aAAa,KAAK,IAAI;QAC9B,OAAO,CAAC,sBAAsB,KAAK,IAAI;QACvC,OAAO,CAAC,eAAe,KAAK,IAAI;QAChC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,uCAAuC,CAC9C,MAAa,EACb,QAAoC,EACpC,UAAkB,EAClB,OAAc,EACd,cAAqB,EACrB,OAAgC,EAChC,OAA8B,EAC9B,WAA8B,EAC9B,cAAiC,EACjC,QAAgB;IAEhB,IACE,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,OAAO,CAAC,aAAa,EACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAsB,cAAc,CAAC;IAEhD,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAU,OAAO,CAAC;QAC/B,MAAM,KAAK,GAAG,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,GAAG,WAAW,CAAC;IACxB,IAAI,QAAQ,GAAG,cAAc,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,4BAA4B,CACnC,OAAc,EACd,IAAwB;IAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAA2C,CAAC;IAE9E,IACE,iBAAiB,KAAK,SAAS;QAC/B,iBAAiB,CAAC,4BAA4B,KAAK,KAAK;QACxD,iBAAiB,CAAC,8BAA8B,KAAK,KAAK;QAC1D,iBAAiB,CAAC,+BAA+B,KAAK,KAAK;QAC3D,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;IAC/B,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,aAAa,GAAG,iBAAiB,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAa;IACnD,OAAO,CACL,MAAM,CAAC,GAAG,KAAK,UAAU;QACzB,MAAM,CAAC,GAAG,KAAK,gBAAgB;QAC/B,MAAM,CAAC,GAAG,KAAK,WAAW,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAa,EAAE,MAAa;IACjE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;AAChC,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAa,EAAE,WAAkB;IACzE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;AAChC,CAAC;AAED,SAAS,oCAAoC,CAC3C,MAAa,EACb,UAA6B,EAC7B,IAAoC;IAEpC,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,GAAsB,UAAU,CAAC;IAE3C,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,iBAAwB,EACxB,QAAoC;IAEpC,IAAI,OAAO,GAAsB,iBAAiB,CAAC;IAEnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,OAAO,OAAO,KAAK,SAAS,CAAC;AAC/B,CAAC;AAED,SAAS,4BAA4B,CACnC,OAAc,EACd,GAAwB;IAExB,IACE,OAAO,CAAC,GAAG,KAAK,gBAAgB;QAChC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QACzB,OAAO,CAAC,eAAe;QACvB,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,EACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAEpE,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,aAAwC,CAAC;IAEhE,IACE,sBAAsB,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI;QAC5D,CAAC,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EACrD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;IAC/B,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IAC9B,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AASD,SAAS,gCAAgC;IACvC,OAAO;QACL,OAAO,EAAE,SAA0C;QACnD,GAAG,EAAE,EAAE;QACP,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;KACT,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAqB;IAC3D,OAAO,CACL,oBAAoB,CAAC,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,IAAI,CAAC,GAAG,KAAK,IAAI,CAClB,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAqB,EACrB,GAAwB;IAExB,IACE,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,IAAI,CAAC,GAAG,KAAK,IAAI,EACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,IAAI,GAAG,sBAAsB,CAAE,IAAI,CAAC,KAAiC,CAAC,QAAQ,CAAC,CAAC;IAEtF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAa,EACb,OAA0B,EAC1B,GAAwB,EACxB,OAA8B;IAE9B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxF,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QAC5D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEzD,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,KAAK,CAAC,SAAS;QACb,OAAO,EAAE,GAAG,KAAK,gBAAgB;YACjC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YACzB,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;YAChC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAC/D,CAAC,CAAC,OAAO,CAAC,SAAS;YACnB,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IACxF,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC;IAErC,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACzD,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;QACzB,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IACpE,MAAM,YAAY,GAAG,sBAAsB,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC;IAElF,IAAI,YAAY,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAwB;IACzD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IACE,MAAM,CAAC,GAAG,KAAK,gBAAgB;YAC/B,MAAM,CAAC,GAAG,KAAK,WAAW;YAC1B,MAAM,CAAC,GAAG,KAAK,UAAU;YACzB,MAAM,CAAC,GAAG,KAAK,aAAa,EAC5B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CACrC,QAAoC,EACpC,KAAa,EACb,OAAc;IAEd,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAErC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,KAAK,OAAO,CAAC;AAC5F,CAAC;AAED,SAAS,2BAA2B,CAClC,OAA0B,EAC1B,QAAoC,EACpC,UAAkB;IAElB,MAAM,YAAY,GAAG,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAEjE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,iCAAiC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE1E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK;QAClC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,KAAwB;IAExB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAyB,CAAC;IAC9B,IAAI,QAA4B,CAAC;IAEjC,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,KAAK,KAAK,CAAC;QAChB,QAAQ,GAAG,KAAK,CAAC;QACjB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAClD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,iCAAiC,CACxC,QAAoC,EACpC,UAAkB;IAElB,IAAI,KAAyB,CAAC;IAC9B,IAAI,QAA4B,CAAC;IAEjC,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,KAAK,KAAK,CAAC;QAChB,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAClD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,GAAuB;IAC9C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,0BAA0B,CACjC,OAA0B,EAC1B,IAAuB;IAEvB,IAAI,aAAa,GAAG,OAAO,CAAC;IAC5B,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,OAAO,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,UAAU,GACd,UAAU,KAAK,aAAa;YAC5B,UAAU,CAAC,SAAS,KAAK,aAAa,CAAC;QAEzC,IACE,CAAC,UAAU;YACX,aAAa,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG;YACpC,aAAa,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;YACtC,aAAa,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;QACtC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,OAAO,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,MAAa,EAAE,KAAY;IAClD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;QACjC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IACxD,MAAM,CAAC,uBAAuB;QAC5B,MAAM,CAAC,uBAAuB;YAC9B,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,uBAAuB,CAAC;AAClC,CAAC;AAED,SAAS,2BAA2B,CAClC,MAAa,EACb,aAAkC;IAElC,IAAI,MAAM,CAAC,gBAAgB,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzF,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AACnC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAY;IACxC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,KAAY,EAAE,IAAqB;IACzD,KAAK,CAAC,aAAa;QACjB,KAAK,CAAC,aAAa;YACnB,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAY,EACZ,OAA0B,EAC1B,IAAqB;IAErB,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACzD,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;QACzB,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAClC,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAClF,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC;QACxB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,YAAuC,CAAC;IAEhE,KAAK,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE5E,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,0BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;QACzG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACpD,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,MAAa,EACb,OAA0B,EAC1B,IAAqB,EACrB,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE,EACnC,oBAAoB,GAAG,IAAI;IAE3B,MAAM,MAAM,GAAG,mBAAmB,CAChC,MAAM,EACN,OAAO,EACP,IAAI,EACJ,GAAG,EACH,OAAO,EACP,IAAI,EACJ,OAAO,EACP,oBAAoB,CACrB,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAY,EACZ,OAA0B,EAC1B,IAAqB,EACrB,OAA8B;IAE9B,OAAO,CACL,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,KAAK,CAAC,GAAG,KAAK,gBAAgB;QAC9B,oBAAoB,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAa,EACb,OAA0B,EAC1B,IAAqB,EACrB,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE,EACnC,oBAAoB,GAAG,IAAI;IAE3B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,WAAW;YAC1B,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAClE,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,YAAY,IAAI,CAAC,EAAE,CAAC;YACjE,+BAA+B,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,SAAS;YACb,QAAQ,YAAY,IAAI;gBACtB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,WAAW,IAAI,OAAO,CAAC,SAAS,YAAY,IAAI;oBACjE,CAAC,CAAC,OAAO,CAAC,SAAS;oBACnB,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QAEpD,IAAI,QAAQ,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,iBAAiB,CACf,OAAO,EACP,MAAM,EACN,IAAI,EACJ,IAAI,KAAK,CAAC,0BAA0B,CAAC,CACtC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,UAAU;YACzB,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC;YACrC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,KAAK,EACd,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CACrC,OAAO,EACP,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,EACP,oBAAoB,CACrB,CAAC;IACF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,UAAU;YACzB,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACpD,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,KAAK,EACd,IAAI,CAAC,KAAK,CAAC,QAA2B,EACtC,OAAO,EACP,GAAG,IAAI,IAAI,EACX,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GACX,IAAI,CAAC,KAA4B,CAAC,IAAI,KAAK,QAAQ;YAClD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1B,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,UAAU;YACzB,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;YACzC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACvD,QAA2B,EAC3B,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YACvD,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,WAAW,GAAG,kBAAkB,CACpC,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,IAAI,CAAC,KAAK,EACV,GAAG,EAAE,CACH,kBAAkB,CAChB,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACvD,IAAI,CAAC,KAAK,CAAC,QAA2B,EACtC,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CACJ,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,gBAAgB;YAC/B,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC7D,IAAI,CAAC,KAAK,CAAC,QAA2B,EACtC,OAAO,EACP,GAAG,IAAI,KAAK,EACZ,OAAO,CACR,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAEnC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAkC,CAAC,eAAe,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,UAAU;gBAC5B,CAAC,CAAE,QAA8C,CAAC,eAAe,CAAC;gBAClE,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,cAAc,GAAG,kBAAkB,CACvC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC7D,YAAY,EACZ,OAAO,EACP,GAAG,IAAI,cAAc,EACrB,OAAO,CACR,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAI,IAAI,CAAC,KAA0C,CAAC,UAAU,CAAC;QAC/E,IAAI,OAAO,EAAE,GAAG,KAAK,oBAAoB,EAAE,CAAC;YAC1C,0EAA0E;YAC1E,2EAA2E;YAC3E,4EAA4E;YAC5E,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACpC,MAAM,aAAa,GAAG,OAAO,CAAC,SAA8C,CAAC;YAC7E,IAAI,aAAa,EAAE,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACtE,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;YAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACpC,MAAM,MAAM,GAAI,IAAI,CAAC,KAA0C,CAAC,MAAM,CAAC;QACvE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzD,KAAK,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,SAAS,GAAI,MAAuC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,kBAAkB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAC/D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAC9E,kBAAkB,CAChB,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC/D,IAAI,CAAC,KAAK,CAAC,QAA2B,EACtC,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CACF,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,kBAAkB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAC/D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,MAAM,MAAM,GACV,OAAO,QAAQ,KAAK,UAAU;YAC5B,CAAC,CAAE,QAAgD;YACnD,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACjB,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC/D,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAC9C,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;QACjC,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc;YAC/D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;QAC5B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CACzD,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAC3C,cAAc,CACf,CAAC;QACF,KAAK,CAAC,aAAa,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC1D,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,aAAa,EACpB,YAAY,CACb,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC;QAChC,MAAM,iBAAiB,GACrB,OAAO,EAAE,GAAG,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,2BAA2B,GAC/B,iBAAiB,KAAK,SAAS;YAC7B,CAAC,CAAC,oCAAoC,CACpC,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,CACR;YACD,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,2BAA2B,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,2BAA2B,CAAC;QACrC,CAAC;QAED,MAAM,iBAAiB,GACrB,iBAAiB,KAAK,SAAS;YAC7B,CAAC,CAAE,iBAAiB,CAAC,aAA4C;YACjE,CAAC,CAAC,SAAS,CAAC;QAEhB,IACE,iBAAiB,KAAK,SAAS;YAC/B,iBAAiB,KAAK,SAAS;YAC/B,CAAC,CACC,gCAAgC,CAAC,iBAAiB,CAAC;gBACnD,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,CACpE;YACD,CAAC,CACC,yBAAyB,CAAC,iBAAiB,CAAC;gBAC5C,+BAA+B,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC,CACzE;YACD,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAChE,CAAC;YACD,MAAM,KAAK,GAAG,mBAAmB,CAC/B,OAAO,EACP,iBAAiB,EACjB,IAAI,CAAC,KAAK,EACV,iBAAiB,EACjB,oBAAoB,CACrB,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;YACjD,KAAK,CAAC,aAAa,GAAG,iBAAiB,CAAC;YACxC,OAAO;gBACL,KAAK;gBACL,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;aAC7C,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GACT,iBAAiB,KAAK,SAAS;YAC7B,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC;YACrD,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEtB,MAAM,eAAe,GAAuB;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,MAAM,WAAW,GAAG,eAAe,CACjC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACnD,eAAe,EACf,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YAC3B,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAChC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,KAAK,CAAC,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI,CAAC,KAAgC;YAC5C,YAAY;YACZ,4BAA4B,EAC1B,4BAA4B,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,kBAAkB;YAC3E,8BAA8B,EAAE,8BAA8B,CAC5D,OAAO,EACP,YAAY,CACb;YACD,+BAA+B,EAC7B,+BAA+B,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,kBAAkB;SAC/E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;YAClD,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEtB,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtE,MAAM,eAAe,GAAuB;gBAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;YACF,MAAM,WAAW,GAAG,eAAe,CACjC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACnD,eAAe,EACf,GAAG,EACH,OAAO,EACP,GAAG,IAAI,OAAO,EACd,OAAO,CACR,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;YAChC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;gBAChC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YACxC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;YAC5B,QAAQ,CAAC,OAAO,GAAG,QAAQ;iBACxB,IAAI,EAAE;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;gBAC7B,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;gBACnC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;gBAC7B,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBACvB,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,0BAA0B,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAC9D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QACvB,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;QAC7E,MAAM,oBAAoB,GACxB,OAAO,EAAE,GAAG,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAC9D,CAAC,CAAE,OAAO,CAAC,SAAoC;YAC/C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,oBAAoB,GACxB,OAAO,EAAE,GAAG,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;QACnE,MAAM,QAAQ,GAAG,+BAA+B,CAC9C,SAAS,EACT,IAAI,CAAC,KAAK,EACV,OAAO,EACP,IAAI,EACJ;YACE,GAAG,CAAC,oBAAoB,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;YAC9C,kBAAkB,EAAE,gBAAgB,CAClC,OAAO,EACP,sBAAsB,EACtB,GAAG,IAAI,QAAQ,CAChB;YACD,SAAS,EAAE,oBAAoB;SAChC,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtF,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC9D,QAAQ,CAAC,IAAI,EACb,OAAO,EACP,GAAG,IAAI,QAAQ,EACf,YAAY,CACb,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;YAChC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,0BAA0B,CAC7C,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,QAAQ,EACjB,KAAK,CACN,CAAC;YAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,cAAc,GAAG,kBAAkB,CACvC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC9D,YAAY,EACZ,OAAO,EACP,GAAG,IAAI,iBAAiB,EACxB,YAAY,CACb,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,qBAAqB,GACzB,OAAO,EAAE,GAAG,KAAK,oBAAoB;YACnC,CAAC,CAAE,OAAO,CAAC,SAA4C;YACvD,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,oBAAoB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YACjE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,MAAM,mBAAmB,GACvB,qBAAqB,KAAK,SAAS;YACnC,qBAAqB,CAAC,sBAAsB,KAAK,IAAI;YACrD,qBAAqB,CAAC,OAAO,KAAK,IAAI,CAAC;QACzC,MAAM,6BAA6B,GACjC,qBAAqB,KAAK,SAAS;YACnC,OAAO,CAAC,mBAAmB;YAC3B,YAAY,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;YACrD,CAAC,2BAA2B,CAAC,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAE5E,IACE,OAAO,CAAC,iBAAiB,KAAK,CAAC;YAC/B,qBAAqB,KAAK,SAAS;YACnC,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;YACtD,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC;YACpE,CAAC,+BAA+B,CAAC,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC;YAC7E,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,EACrC,CAAC;YACD,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;YACpE,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACvC,KAAK,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;YAC7C,KAAK,CAAC,SAAS,GAAG,qBAAqB,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CACxD,IAAI,CAAC,IAA4D,CAAC,IAAI,CAAC,KAAK,CAAC,EAC9E,IAAI,CAAC,IAAI,CACV,CAAC;QACF,KAAK,CAAC,aAAa,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAgB,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACjE,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,IAAI,EACX,YAAY,CACb,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,SAAS,GAAG;YAChB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,CAAC,KAAgC;YAC5C,YAAY;YACZ,sBAAsB,EAAE,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC;SACvC,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,yEAAyE;AACzE,gFAAgF;AAChF,yBAAyB;AACzB,SAAS,wBAAwB,CAC/B,MAAa,EACb,OAA0B,EAC1B,IAAwB,EACxB,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,OAA8B;IAE9B,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,oBAAoB,GAAG,6BAA6B,CACxD,OAAO,EACP,IAAI,EACJ,GAAG,EACH,OAAO,CACR,CAAC;IACF,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzF,MAAM,cAAc,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,eAAe,GACnB,OAAO,EAAE,GAAG,KAAK,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,MAAM,KAAK,GACT,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,oBAAoB,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC;QACnD,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,8EAA8E;IAC9E,6EAA6E;IAC7E,uDAAuD;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,eAAwC,CAAC;IAC7C,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,UAAU;YACR,eAAe,KAAK,SAAS;gBAC7B,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAEnE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,+BAA+B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;YACjD,iBAAiB,CACf,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,KAAK,CACP,qCAAqC,IAAI,CAAC,IAAI,gBAAgB,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CACxG,CACF,CAAC;YACF,yBAAyB,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,6EAA6E;IAC7E,0EAA0E;IAC1E,0DAA0D;IAC1D,KAAK,CAAC,SAAS;QACb,UAAU;YACR,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC;gBACzE,CAAC,CAAC,eAAe,CAAC,SAAS;gBAC3B,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAC3F,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC;IACnC,MAAM,kBAAkB,GACtB,UAAU,IAAI,eAAe,KAAK,SAAS;QACzC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE,eAA2B,CAAC,UAAU,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,eAAe,GACnB,4BAA4B,EAAE,IAAI,kBAAkB,KAAK,SAAS;QAChE,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC;IAChB,IACE,kBAAkB,KAAK,SAAS;QAChC,OAAO,EAAE,GAAG,KAAK,gBAAgB;QACjC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;QAC1B,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5E,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC;QAC3C,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,EACxC,CAAC;QACD,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC7D,IAAI,CAAC,KAAK,CAAC,QAA2B,EACtC,OAAO,EACP,GAAG,IAAI,IAAI,EACX,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,CAAC,CACtE,CAAC;IACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAChC,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,yBAAyB,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,kBAAkB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;IACvB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAG7C,OAAO,CACL,OAAO,KAAK,KAAK,UAAU;QAC3B,OAAQ,KAA8C,CAAC,SAAS,EAAE,MAAM;YACtE,UAAU,CACb,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,OAA0B,EAC1B,IAAwB,EACxB,GAAuB,EACvB,OAA8B;IAE9B,IACE,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,CAAC,4BAA4B,EAAE;QAC/B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,4BAA4B,CAAC,IAAI,CAAC,EACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iCAAiC,CACtC,IAAI,EACJ,GAAG,EACH,OAAO,CAAC,SAAS,IAAI,MAAM,EAC3B,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,IAAwB,EACxB,GAAuB,EACvB,SAAwB,EACxB,WAA0C;IAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAc,CAAC;IACxC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;IACzB,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACzE,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACzB,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAElC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9D,KAAK,CAAC,KAAK,GAAG,8BAA8B,CAC1C,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,QAA2B,EACtC,cAAc,EACd,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CACrC,MAAa,EACb,QAAyB,EACzB,SAAwB,EACxB,WAA0C;IAE1C,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,KAAwB,CAAC;IAC7B,IAAI,QAA2B,CAAC;IAEhC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,+BAA+B,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAE7E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/B,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CACtC,IAAqB,EACrB,SAAwB,EACxB,WAA0C;IAE1C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAClD,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,CAAC,KAAK,GAAG,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iCAAiC,CACtC,IAAI,EACJ,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EACxC,SAAS,EACT,WAAW,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAqB;IACzD,IACE,IAAI,KAAK,IAAI;QACb,IAAI,KAAK,SAAS;QAClB,OAAO,IAAI,KAAK,SAAS;QACzB,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,IAAI,KAAK,QAAQ,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IAED,IACE,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,IAAI,CAAC,GAAG,KAAK,IAAI;QACjB,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,EAC3C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,QAA2B,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,+BAA+B,CAAC,KAA8B;IACrE,OAAO,CACL,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,0BAA0B,CAAC;QACtD,KAAK,CAAC,uBAAuB,KAAK,SAAS;QAC3C,KAAK,CAAC,eAAe,KAAK,IAAI;QAC9B,KAAK,CAAC,8BAA8B,KAAK,IAAI;QAC7C,KAAK,CAAC,KAAK,KAAK,SAAS;QACzB,KAAK,CAAC,YAAY,KAAK,SAAS;QAChC,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,cAAc,KAAK,SAAS,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAA8B,EAC9B,SAAwB,EACxB,aAA0C;IAE1C,MAAM,kBAAkB,GACtB,OAAO,CAAC,SAAS,KAAK,SAAS;QAC/B,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC;IAE5D,IAAI,aAAa,KAAK,SAAS,IAAI,kBAAkB,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,SAAS;QACT,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAwB,EACxB,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5G,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAwB,EACxB,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAY,EACZ,KAAwB,EACxB,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAEvD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,UAAU,KAAK,SAAS,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,oBAAoB,CAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EACzE,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAY;IAC7C,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAY,EAAE,QAAgB;IAC9D,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,aAAa,CAAC;IAC7B,CAAC;IAED,OAAO,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1E,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAY,EACZ,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC9B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;QAEhC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,YAAuC,CAAC;QAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAoD,CAAC;QACjF,MAAM,eAAe,GACnB,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;YACzD,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,sBAAsB,GAC1B,eAAe,KAAK,SAAS;YAC7B,6BAA6B,CAAC,KAAK,CAAC,aAAa,CAAC;YAClD,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,iBAAiB,GACrB,KAAK,CAAC,eAAe,KAAK,IAAI;YAC9B,CAAC,sBAAsB;YACvB,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,oBAAoB,GACxB,sBAAsB;YACtB,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI;gBAC7B,wBAAwB,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC7C,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,iBAAiB,GACrB,CAAC,iBAAiB;YAClB,CAAC,oBAAoB;YACrB,KAAK,CAAC,eAAe,KAAK,IAAI;YAC9B,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAElD,IAAI,YAAY,IAAI,CAAC,iBAAiB,IAAI,CAAC,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACtF,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC/B,GAAG,OAAO;gBACV,SAAS;gBACT,2BAA2B,EAAE,KAAK,CAAC,eAAe;aACnD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAC/D,gCAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;aAAM,IACL,KAAK,CAAC,oBAAoB;YAC1B,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,uBAAuB,EAC7B,CAAC;YACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7F,IACE,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpF,CAAC,CAAC,YAAY,IAAI,qCAAqC,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EACpF,CAAC;gBACD,cAAc,CAAC,OAAqB,EAAE,UAAU,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YAC1C,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,YAAY,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC;QACD,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,SAAS,YAAY,OAAO,EAAE,CAAC;gBACjC,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,eAAe,GACnB,SAAS,YAAY,OAAO,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACtF,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,YAAY,OAAO;oBAC9B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAEhE,IACE,KAAK,CAAC,gBAAgB;gBACtB,KAAK,CAAC,uBAAuB;gBAC7B,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,OAAO,EAC5C,CAAC;gBACD,MAAM,UAAU,GAAG,kBAAkB,CACnC,KAAK,CAAC,KAAK,EACX,SAAuB,EACvB,eAAe,EACf,GAAG,IAAI,SAAS,EAChB,aAAa,CACd,CAAC;gBACF,MAAM,aAAa,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAClF,mBAAmB,CAAC,SAAuB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;gBACxE,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,yBAAyB,CACvB,KAAK,EACL,KAAK,CAAC,KAAK,EACX,SAAuB,EACvB,eAAe,EACf,GAAG,IAAI,SAAS,EAChB,aAAa,CACd,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;QACnC,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;IACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAY;IACrC,OAAO,CACL,KAAK,CAAC,KAAK,KAAK,OAAO;QACvB,KAAK,CAAC,YAAY,KAAK,OAAO;QAC9B,KAAK,CAAC,oBAAoB;QAC1B,KAAK,CAAC,gBAAgB;QACtB,KAAK,CAAC,uBAAuB;QAC7B,KAAK,CAAC,eAAe,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CACvC,KAAwB,EACxB,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YACxB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,qCAAqC,CACrD,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qCAAqC,CAC5C,KAAY,EACZ,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3B,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,MAAM,cAAc,GAClB,KAAK,CAAC,GAAG,KAAK,gBAAgB,IAAI,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAC,KAAK,CAAC,SAAS;YACjB,CAAC,CAAC,MAAM,CAAC;QAEb,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5E,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;YACnD,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;YAEhC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC7F,OAAO,KAAK,CAAC;YACf,CAAC;YACD,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACrF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAY,EACZ,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,OAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAElF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAClC,CAAC;IAED,IAAI,MAAM,GAAsB,MAAM,CAAC,KAAK,CAAC;IAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAEzB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,eAAe,CAChC,MAAM,EACN,MAAM,EACN,SAAS,EACT,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EACnC,OAAO,CACR,EAAE,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,KAAwC,CAAC;IAC3D,OAAO,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;QACzE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;QACpD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAY,EAAE,MAAkB;IAC/D,MAAM,OAAO,GACX,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEjE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CACtB,OAA0B,EAC1B,IAAuB;IAEvB,IAAI,aAAa,GAAG,OAAO,CAAC;IAC5B,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;QACtC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA0B,EAC1B,IAAuB;IAEvB,IAAI,aAAa,GAAG,OAAO,CAAC;IAC5B,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,OAAO,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;YAChD,MAAM;QACR,CAAC;QAED,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;QACtC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC;IAC9B,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;IAEtC,OAAO,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;QACtC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,OAAO,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,SAAS,eAAe,CAAC,OAAc,EAAE,IAAW;IAClD,OAAO,CACL,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;QAChD,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;QACxB,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;QAC1B,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAY;IAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IACE,CAAC,KAAK,CAAC,GAAG,KAAK,gBAAgB,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC;QAC7D,KAAK,CAAC,SAAS,YAAY,IAAI,EAC/B,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAExB,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAY;IACxC,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,OAAO,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC;IAChE,CAAC;IAED,IACE,CAAC,KAAK,CAAC,GAAG,KAAK,gBAAgB,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC;QAC7D,KAAK,CAAC,SAAS,YAAY,IAAI,EAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAExB,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,OAA0B;IACjD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC7B,MAAM,cAAc,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;IAEjD,IACE,KAAK,KAAK,SAAS;QACnB,cAAc,KAAK,SAAS;QAC5B,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAC5B,oBAAoB,CAAC,cAAc,CAAC,EACpC,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAY;IAC9C,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;IACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe,CACtB,KAAY,EACZ,MAAkB,EAClB,SAAkB,EAClB,IAAY,EACZ,UAAyB,EAAE;IAE3B,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;QAE7B,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;QAEhC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IACE,KAAK,CAAC,eAAe,KAAK,IAAI;YAC9B,KAAK,CAAC,KAAK,KAAK,OAAO;YACvB,KAAK,CAAC,YAAY,KAAK,OAAO;YAC9B,KAAK,CAAC,oBAAoB,KAAK,IAAI;YACnC,KAAK,CAAC,gBAAgB,KAAK,IAAI;YAC/B,KAAK,CAAC,uBAAuB,KAAK,IAAI,EACtC,CAAC;YACD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;YACzC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,YAAuC,CAAC;QAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAoD,CAAC;QACjF,MAAM,eAAe,GACnB,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;YACzD,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,sBAAsB,GAC1B,eAAe,KAAK,SAAS;YAC7B,6BAA6B,CAAC,KAAK,CAAC,aAAa,CAAC;YAClD,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,iBAAiB,GACrB,KAAK,CAAC,eAAe,KAAK,IAAI;YAC9B,CAAC,sBAAsB;YACvB,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,oBAAoB,GACxB,sBAAsB;YACtB,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI;gBAC7B,wBAAwB,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC7C,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,iBAAiB,GACrB,CAAC,iBAAiB;YAClB,CAAC,oBAAoB;YACrB,KAAK,CAAC,eAAe,KAAK,IAAI;YAC9B,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAElD,IAAI,YAAY,IAAI,CAAC,iBAAiB,IAAI,CAAC,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACtF,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC/B,GAAG,OAAO;gBACV,SAAS;gBACT,2BAA2B,EAAE,KAAK,CAAC,eAAe;aACnD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAC/D,gCAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;aAAM,IACL,KAAK,CAAC,oBAAoB;YAC1B,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,uBAAuB;YAC7B,KAAK,CAAC,eAAe,KAAK,IAAI;YAC9B,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,OAAO,EAC5C,CAAC;YACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7F,IACE,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpF,CAAC,CAAC,YAAY,IAAI,qCAAqC,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EACpF,CAAC;gBACD,cAAc,CAAC,OAAqB,EAAE,UAAU,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YAC1C,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,YAAY,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC;QACD,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC7B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;QACvF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC7B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9F,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;QAChC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5F,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC7B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;QACvF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,EAAE,CAAC;QAClC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;QACxF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,EAAE,CAAC;QACzE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC;QACzF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACvC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;QACxF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;QAChC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;QACxF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1F,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1F,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACnC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;QACxF,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;QACpC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3F,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,SAAS,YAAY,OAAO,EAAE,CAAC;YACjC,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzC,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,eAAe,GACnB,SAAS,YAAY,OAAO,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtF,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,YAAY,OAAO;gBAC9B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,kBAAkB,CACnC,KAAK,CAAC,KAAK,EACX,SAAuB,EACvB,eAAe,EACf,GAAG,IAAI,SAAS,EAChB,aAAa,CACd,CAAC;QACF,MAAM,aAAa,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClF,mBAAmB,CAAC,SAAuB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QACxE,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC;QACjC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAY;IACxC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IACtB,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA4B,CAAC,IAAI,YAAY,IAAI,EAClD,CAAC;QACD,OAAQ,KAA6B,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAc,EACd,IAAkB;IAElB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,OAAO,GAAI,KAA+B,CAAC,OAAO,CAAC;IAEzD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;QACT,KAA+B,CAAC,OAAO,GAAG,SAAS,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAY;IACxC,OAAO,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,uBAAuB,CAAC;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,QAAiB,EAAE,IAA6B;IACtE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,QAAmC,CAAC;IAC1D,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,aAAa,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACnC,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,KAAK,SAAS,CAAC;AACrC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB,EAAE,IAA6B;IACzE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,QAAmC,CAAC;IAE1D,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACnE,SAAS;QACX,CAAC;QACD,aAAa,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACzD,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,KAAK,SAAS,CAAC;AACrC,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAiB,EAAE,IAA6B;IAClF,MAAM,YAAY,GAAG,sBAAsB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,IAAI,YAAY,KAAK,QAAQ,CAAC;AAC7F,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAiB,EAAE,IAA6B;IAC5E,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEnC,IAAI,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,sBAAsB,CAAC,gBAAgB,CAAC,KAAK,SAAS;QACtD,sBAAsB,CAAC,YAAY,CAAC,KAAK,SAAS,EAClD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAiB,EAAE,IAAa;IAC3D,OAAO,CACL,oBAAoB,CAAC,QAAQ,CAAC;QAC9B,oBAAoB,CAAC,IAAI,CAAC;QAC1B,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;QACzB,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB,EAAE,IAAa;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,CACL,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACjD,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;YAChD,GAAG,KAAK,UAAU,EAClB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAoD,CACnD,6BAA6B,CAC9B,KAAK,IAAI,CACX,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAiB,EAAE,IAA6B;IAC3E,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,QAAmC,CAAC;IAC1D,MAAM,YAAY,GAAG,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,CACL,YAAY,KAAK,SAAS;QAC1B,QAAQ,KAAK,SAAS;QACtB,YAAY,KAAK,QAAQ;QACzB,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAChD,CAAC,CAAE,KAAgC,CAAC,QAAQ;QAC5C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAiB;IAC/C,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QACjE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,sFAAsF;AACtF,qDAAqD;AACrD,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ,CAAC;AACtE,CAAC;AAQD,MAAM,gBAAgB,GAAqB,CAAC,GAAG,EAAE;IAC/C,IAAI,CAAC;QACH,qEAAqE;QACrE,sEAAsE;QACtE,uEAAuE;QACvE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,qEAAqE;QACrE,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,SAAS,4BAA4B;IACnC,IAAI,gBAAgB,KAAK,aAAa,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,mEAAmE;IACnE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAC/C,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB,EAAE,IAAY;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAI,UAAU,YAAY,IAAI,IAAI,UAAU,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAClE,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAC3B,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAE1C,IAAI,CAAC,CAAC,cAAc,YAAY,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,gCAAgC,CACvC,KAA8B,EAC9B,IAAU;IAEV,4BAA4B,CACzB,KAAsC,CAAC,0BAA0B,CAAC,EACnE,IAAI,CACL,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAC5C,OAAgB,EAChB,KAA8B,EAC9B,UAA2B;IAE3B,KAAK,UAAU,CAAC;IAEhB,IACE,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACxC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,OAAO,EACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,OAAO,CACL,QAAQ,KAAK,SAAS;QACtB,QAAQ,KAAK,IAAI;QACjB,QAAQ,KAAK,KAAK;QAClB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAA0B,EAC1B,OAA2B,EAC3B,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE;IAEnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACxC,8BAA8B,CAC5B,OAAO,EACP,IAAI,EACJ,QAAQ,CAAC,WAAW,CAAC,OAAO,EAC5B,QAAQ,CAAC,WAAW,CAAC,cAAc,CACpC,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,2BAA2B,EAAE,GAAG,OAAO,CAAC;IAClF,MAAM,eAAe,GACnB,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;YAClC,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS;gBACpC,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE;YACzD,CAAC,CAAC,2BAA2B,CAAC;IACpC,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC1D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,0BAA0B,IAAI,CAAC,CAAC;QAChC,IAAI,WAAiC,CAAC;QAEtC,IAAI,CAAC;YACH,WAAW,GAAG,kBAAkB,CAC9B,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACvD,OAAO,CAAC,KAAK,CAAC,QAA2B,EACzC,OAAO,EACP,GAAG,IAAI,IAAI,EACX,eAAe,CAChB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,0BAA0B,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,KAAK,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,KAAK,EAA+B,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CACR,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EACxB,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CACzB,CAAC;QACF,MAAM,cAAc,GAAG,kBAAkB,CACvC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACvD,OAAO,CAAC,KAAK,CAAC,QAA2B,EACzC,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,eAAe,CAChB,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QACnC,KAAK,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,IAAI,EAA+B,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA0B,EAC1B,OAA2B,EAC3B,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE;IAEnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC7D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,+BAA+B,CAC3F,OAAO,EACP,GAAG,EAAE,CACH,kBAAkB,CAChB,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC1D,OAAO,CAAC,KAAK,CAAC,QAA2B,EACzC,OAAO,EACP,GAAG,IAAI,SAAS,EAChB,OAAO,CACR,CACJ,CAAC;IACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAEhC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,sBAAsB,CACpB,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,GAAG,EAAE,CACH,kBAAkB,CAChB,KAAK,EACL,WAAW,CAAC,KAAK,EACjB,OAAO,CAAC,KAAK,CAAC,QAA2B,EACzC,OAAO,EACP,GAAG,IAAI,SAAS,EAChB,OAAO,CAAC,aAAa,KAAK,SAAS;YACjC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CACtC,CACJ,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAA0B,EAC1B,OAA2B,EAC3B,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE;IAEnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,eAAe,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC/D,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAA2B,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;IAE9C,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,6BAA6B,CAC/C,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC5D,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,KAAK,CAAC,aAAa,GAAG;YACpB,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;SACd,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;SAAM,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,8BAA8B,CAChD,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC5D,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,KAAK,CAAC,aAAa,GAAG;YACpB,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;SACd,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC5D,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,KAAK,EACZ,OAAO,CACR,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,KAAK,CAAC,aAAa,GAAG;YACpB,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;SACd,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,MAAa,EACb,iBAAoC,EACpC,QAAoC,EACpC,OAAoB,EACpB,IAAY,EACZ,UAAiC,EAAE;IAEnC,IAAI,KAAwB,CAAC;IAC7B,IAAI,QAA2B,CAAC;IAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,YAAY,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;IACnE,IAAI,cAAc,GAAG,iBAAiB,CAAC;IAEvC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,YAAY,GAChB,OAAO,CAAC,aAAa,KAAK,SAAS;YACjC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,eAAe,CAC5B,MAAM,EACN,OAAO,EACP,KAAK,EACL,GAAG,EACH,OAAO,EACP,GAAG,IAAI,OAAO,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAChD,YAAY,CACb,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,cAAc,GAAG,cAAc,EAAE,OAAO,CAAC;QAC3C,CAAC;QACD,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,QAAQ,GAAG,KAAK,CAAC;QAEjB,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,8BAA8B,CACrC,MAAa,EACb,iBAAoC,EACpC,QAAoC,EACpC,OAAoB,EACpB,IAAY,EACZ,UAAiC,EAAE;IAEnC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;IACnE,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAoB,CAAC;QACjD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAC5B,MAAM,EACN,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EACrD,KAAK,EACL,GAAG,EACH,OAAO,EACP,GAAG,IAAI,OAAO,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAChD,OAAO,CAAC,aAAa,KAAK,SAAS;YACjC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CACzE,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtB,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAwB;IACjD,IAAI,QAA2B,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAwB;IACjD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAwB;IACpD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAA0B,EAC1B,IAAqB,EACrB,OAAgC,EAChC,IAAY,EACZ,OAA8B,EAC9B,oBAAoB,GAAG,IAAI;IAE3B,IACE,OAAO,EAAE,GAAG,KAAK,MAAM;QACvB,OAAO,KAAK,SAAS;QACrB,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC1B,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACtB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAA2C,CAAC;IAC9E,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC;IAEhC,IACE,iBAAiB,KAAK,SAAS;QAC/B,CACE,gCAAgC,CAAC,iBAAiB,CAAC;YACnD,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,CACpE;QACD,CACE,yBAAyB,CAAC,iBAAiB,CAAC;YAC5C,+BAA+B,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC,CACzE;QACD,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,gCAAgC,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxD,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,GACT,oBAAoB;QACpB,OAAO,CAAC,aAAa,KAAK,IAAI;QAC9B,OAAO,CAAC,sBAAsB,KAAK,IAAI;QACvC,OAAO,CAAC,eAAe,KAAK,IAAI;QAC9B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QAC/B,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACjC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACxC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,aAAa,GAAG,iBAAiB,CAAC;IACxC,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,OAA0B,EAC1B,IAAqB,EACrB,OAAgC,EAChC,OAA8B,EAC9B,oBAA6B;IAE7B,IACE,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,OAAO,EAAE,GAAG,KAAK,MAAM;QACvB,OAAO,KAAK,SAAS;QACrB,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC1B,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACtB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAA2C,CAAC;IAE9E,IACE,iBAAiB,KAAK,SAAS;QAC/B,iBAAiB,CAAC,4BAA4B,KAAK,KAAK;QACxD,iBAAiB,CAAC,8BAA8B,KAAK,KAAK;QAC1D,iBAAiB,CAAC,+BAA+B,KAAK,KAAK;QAC3D,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,mBAAmB,CAC/B,OAAO,EACP,OAAO,EACP,IAAI,CAAC,KAAK,EACV,iBAAiB,EACjB,oBAAoB,CACrB,CAAC;IACF,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,aAAa,GAAG,iBAAiB,CAAC;IACxC,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;AACvE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAY;IAC5C,OAAO,CACL,KAAK,CAAC,GAAG,KAAK,UAAU;QACvB,KAAK,CAAC,aAAgD,EAAE,UAAU,KAAK,IAAI,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,aAA8B;IAE9B,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAExE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC;YAEX,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAY,CAAC;gBACnD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAA0B;oBACtC,QAAQ,EAAE,KAAK,GAAG,UAAU,GAAG,CAAC;oBAChC,GAAG,4BAA4B,CAAC,KAAK,EAAE,aAAa,CAAC;iBACtD,CAAC;gBAEF,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7C,QAAQ,CAAC,aAAa,GAAG,kCAAkC,CAAC,KAAK,CAAC;wBAChE,CAAC,CAAC,kCAAkC,CAAC,aAAa,CAAC;wBACnD,CAAC,CAAC,aAAa,CAAC;gBACpB,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAsB;IACzD,OAAO,IAAI,YAAY,OAAO,IAAI,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kCAAkC,CAAC,IAAa;IACvD,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,gCAAgC,CAAC,IAAa;IACrD,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAsB;IACvD,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAsB;IAChE,MAAM,CAAC,SAAS,EAAE,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;IAE7C,OAAO,SAAS,YAAY,mBAAmB;QAC7C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9D,SAAS,4BAA4B,CACnC,KAAc,EACd,aAA8B;IAE9B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,OAAO,GACX,QAAQ,YAAY,mBAAmB;QACrC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,cAAc,GAClB,QAAQ,YAAY,mBAAmB;QACrC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;QACpC,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,WAAW,EAAE;YACX,OAAO,EAAE,OAAO,IAAI,wCAAwC;YAC5D,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;SACvD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAa,EACb,OAA0B,EAC1B,MAAyB,EACzB,GAAuB,EACvB,OAAgC,EAChC,IAAY,EACZ,UAAiC,EAAE;IAEnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,KAAK,GACT,OAAO,EAAE,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;QACjE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;QAChD,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClD,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,WAAW,GAAG,kBAAkB,CACpC,KAAK,EACL,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACrD,MAAM,CAAC,QAAQ,EACf,OAAO,EACP,GAAG,IAAI,SAAS,EAChB;QACE,GAAG,OAAO;QACV,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;QAC3C,SAAS,EAAE,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC;KACzD,CACF,CAAC;IACF,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAChC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAqB;IAC9C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,OAA8B;IACpD,OAAO,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CAAC,WAA0C;IACpE,IAAI,gBAAgB,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACxF,OAAO,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,0BAA0B,CACjC,UAA6B;IAE7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,IAAI,MAAM,GAAG,UAAU,CAAC;IAExB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAAqB;IACvC,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,QAAoC;IACzD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAqB,EAAE,KAAa;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,IAAqB,EACrB,KAAa,EACb,OAA8B;IAE9B,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAqB,EACrB,OAA8B;IAE9B,IACE,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,OAAO,CAAC,SAAS,EAAE,kBAAkB,KAAK,SAAS;QACnD,OAAO,CAAC,QAAQ,KAAK,SAAS,EAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,gCAAgC,CAAC,IAAqB;IAC7D,OAAO,CACL,oBAAoB,CAAC,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,CAC1D,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,OAAO,OAAO,CAAC,SAAS,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;AACtF,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,OAAe;IACnD,OAAO,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAA8B,EAC9B,SAAmB;IAEnB,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS;QACpC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAmB;IAC3C,OAAO,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAe;IAC7C,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAc;IAKd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgC,CAAC,QAAQ,KAAK,gBAAgB,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,KAAc;IASd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgC,CAAC,QAAQ,KAAK,SAAS,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,KAAc;IASd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgC,CAAC,QAAQ,KAAK,SAAS,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAoB,EAAE,MAAc;IAC/D,OAAO,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAoB,EAAE,MAAc;IACnE,OAAO,iCAAiC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,SAAS;QACrE,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;QACtC,CAAC,CAAC,iBAAiB,CAAC;AACxB,CAAC;AAED,SAAS,iCAAiC,CACxC,OAAoB,EACpB,MAAc;IAEd,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEtD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAoC,CAAC;IAElF,IACE,QAAQ,KAAK,SAAS;QACtB,QAAQ,CAAC,mBAAmB,KAAK,SAAS;QAC1C,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAC3D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAoB,EAAE,IAAuB;IAC3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAgBD,SAAS,gCAAgC,CAAC,KAAqB;IAC7D,OAAO,KAAK,CAAC,4BAA4B,KAAK,KAAK,CAAC;AACtD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAqB;IACtD,OAAO,KAAK,CAAC,8BAA8B,KAAK,KAAK,CAAC;AACxD,CAAC;AAED,SAAS,gCAAgC,CAAC,KAAqB;IAC7D,OAAO,KAAK,CAAC,+BAA+B,KAAK,KAAK,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAoB,EACpB,OAAc,EACd,YAAqB,EACrB,KAAqB,EACrB,oBAA6B;IAE7B,IAAI,gCAAgC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,oBAAoB,IAAI,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;QACpC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QAC/B,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACjC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACxC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAc,EAAE,KAAqB;IACrE,OAAO,CACL,KAAK,CAAC,+BAA+B,KAAK,KAAK;QAC/C,OAAO,CAAC,aAAa,KAAK,IAAI;QAC9B,OAAO,CAAC,sBAAsB,KAAK,IAAI;QACvC,OAAO,CAAC,eAAe,KAAK,IAAI,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,OAAoB,EACpB,IAAuB;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAoC,CAAC;QAE/E,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CACtC,OAAoB,EACpB,IAAuB;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAoC,CAAC;QAE/E,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAqC;IACnE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,KAAK;QACnB,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,QAAQ,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,OAAoB,EACpB,IAAuB;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAoC,CAAC;QAE/E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAwB;IAC3D,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAgC,EAChC,IAAuB,EACvB,MAAe;IAEf,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,CACX,CAAC,GAAG,EAAE,EAAE,CACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAqC,EAAE,KAAK,KAAK,IAAI,CAClF,EAAE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,yEAAyE;IACzE,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEjE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,IACG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAqC,EAAE,KAAK;gBACtE,IAAI,EACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAoB,EAAE,IAAuB;IACpF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAE7B,CAAC;QAEd,OAAO,QAAQ,EAAE,KAAK,EAAE,IAAI,CAC1B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,EAAE,IAAI,KAAK,QAAQ;YACvB,IAAI,CAAC,QAAQ,KAAK,IAAI;YACtB,IAAI,CAAC,OAAO,KAAK,IAAI,CACxB,KAAK,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAa;IAC3C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,CAAC;QACV,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QAC/D,GAA4B,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,WAAoB,EAAE,OAAgB,EAAE,IAAa;IAC5E,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACtC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,IAAa;IACrD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,0BAA0B;IACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QACpC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAEjB,CAAC;IACF,OAAO,CACL,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU;QAC3C,OAAO,SAAS,CAAC,YAAY,KAAK,UAAU;QAC5C,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU;QAC3C,OAAO,SAAS,CAAC,aAAa,EAAE,aAAa,KAAK,UAAU,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAsB,EACtB,SAAqB;IAErB,MAAM,SAAS,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,aAAa,GAAI,SAAyC,CAAC,aAAa,CAAC;IAC/E,IACE,OAAO,aAAa,KAAK,QAAQ;QACjC,aAAa,KAAK,IAAI;QACtB,OAAQ,aAA6C,CAAC,aAAa,KAAK,UAAU,EAClF,CAAC;QACD,OAAO;YACL,GAAG,OAAO;YACV,WAAW,EAAE,aAA8C;YAC3D,SAAS;SACV,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAqB;IACxD,IAAI,SAAS,YAAY,UAAU,IAAI,SAAS,CAAC,SAAS,KAAK,eAAe,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC","sourcesContent":["import {\n Activity,\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Fragment,\n HOST_CHILDREN_ONLY_PROPS_META,\n LAZY_TYPE,\n MEMO_TYPE,\n Profiler,\n REACTIVE_DOM_BLOCK_TYPE,\n REACTIVE_TEXT_BINDING_META,\n STRICT_MODE_TYPE,\n Suspense,\n SuspenseList,\n type MemoType,\n type ReactCompatElement,\n type ReactCompatPortal,\n type ReactiveDomBlockProps,\n type ReactiveDomBlockResult,\n isReactCompatElement,\n isReactCompatPortal,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n batchReactivePropCellUpdates,\n createReactivePropCell,\n createReactivePropProxy,\n setReactivePropCell,\n type ReactiveDomBlockState,\n} from \"./reactive-prop-cell.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport { applyPostChildFormProps, applyProps } from \"./dom-props.js\";\nimport { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from \"./dom-children.js\";\nimport { setLogicalEventParent } from \"./host-event-binder.js\";\nimport { ChildDeletion, NoFlags, Placement, Update } from \"./fiber-flags.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isDomHostElement,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type CustomHostDocument,\n type HostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\nimport { createFiber, createWorkInProgress, type Fiber, type FiberRoot } from \"./fiber.js\";\nimport {\n renderWithRootRuntime,\n renderWithProfiler,\n renderWithStrictModeMemoCapture,\n renderStrictModeReplay,\n runWithHostCommit,\n restoreRuntimeSnapshot,\n takeRuntimeSnapshot,\n getDevToolsHookState,\n collectRuntimeInstanceKeys,\n hasContextDependency,\n hasChangedContextDependency,\n subscribeReactiveTextBinding,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { isThenable } from \"./thenable.js\";\nimport {\n hasDirtyClassUpdate,\n isClassComponentType,\n recoverClassComponentError,\n renderClassComponentWithRuntime,\n type ClassComponentInstance,\n} from \"./class-component.js\";\nimport { areMemoPropsEqual, getPendingProps, shallowEqual } from \"./prop-comparison.js\";\nimport {\n reportElementTextMismatch,\n reportExtraHydrationNodes,\n reportHydrationNodeTypeMismatch,\n reportMissingHydrationNode,\n reportReactSuspenseServerError,\n reportRecoverable,\n type HydrationScope,\n type RenderOptions,\n withHydrationComponentStack,\n} from \"./hydration.js\";\n\ninterface MemoFiberState {\n props: Record<string, unknown>;\n instanceKeys: string[];\n hasDirtyInstanceDependencies: boolean;\n hasUnflushedEffectDependencies: boolean;\n hasRetainedInstanceDependencies: boolean;\n}\n\ninterface FunctionFiberState {\n element: ReactCompatElement;\n props: Record<string, unknown>;\n instanceKeys: string[];\n hasContextDependencies: boolean;\n}\n\ninterface SuspenseFiberState {\n didSuspend: boolean;\n}\n\nconst committedPortalContainers = new Set<Element>();\nconst pendingHostRefUpdates: { ref: unknown; node: unknown }[] = [];\nconst emptyInstanceKeys: string[] = [];\n\ninterface FiberHydrationOptions extends RenderOptions {\n previousNodes?: readonly Node[];\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n namespace?: HostNamespace;\n documentRef?: Document | CustomHostDocument;\n}\n\nconst SKIP_COMMIT_PATH = \"\\0\";\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\ninterface FiberReconcileResult {\n fiber: Fiber | undefined;\n consumed: number;\n}\n\ninterface AppendSuffixCommitHint {\n fiber: Fiber;\n index: number;\n}\n\ninterface ReactSuspenseBoundary {\n previousNodes?: Node[];\n consumed: number;\n serverError?: {\n message: string;\n componentStack?: string;\n };\n}\n\nlet suspensePrimaryRenderDepth = 0;\n\nexport function canRenderHostFiber(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canRenderHostFiber);\n }\n\n if (isReactCompatPortal(node)) {\n return canRenderHostFiber(node.children);\n }\n\n if (!isReactCompatElement(node)) {\n return false;\n }\n\n if (\n node.type === Fragment ||\n node.type === Profiler ||\n node.type === STRICT_MODE_TYPE\n ) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Activity) {\n return (node.props as { mode?: unknown }).mode === \"hidden\"\n ? true\n : canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Suspense || node.type === SuspenseList) {\n return true;\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n return true;\n }\n\n if (node.type === REACTIVE_DOM_BLOCK_TYPE) {\n return true;\n }\n\n if (isReactCompatProvider(node.type)) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatConsumer(node.type)) {\n return true;\n }\n\n if (isForwardRefType(node.type)) {\n return true;\n }\n\n if (isMemoType(node.type)) {\n return true;\n }\n\n if (isLazyType(node.type)) {\n return true;\n }\n\n if (isClassComponentType(node.type)) {\n return true;\n }\n\n return (\n typeof node.type === \"string\" &&\n canRenderHostFiber(node.props.children as ReactCompatNode)\n ) || isFunctionComponentType(node.type);\n}\n\nexport function renderHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime?: RootRuntime,\n options: FiberHydrationOptions = {},\n): Fiber {\n const workInProgress = createWorkInProgress(root.current, { children: element });\n const rootDocument = root.container.ownerDocument;\n const result = batchReactivePropCellUpdates(() =>\n reconcileHostChild(\n workInProgress,\n root.current.child,\n element,\n runtime,\n options.previousNodes === undefined ? \"0\" : \"\",\n {\n ...options,\n documentRef: options.documentRef ?? rootDocument,\n },\n ),\n );\n workInProgress.child = result.fiber;\n workInProgress.memoizedProps = { children: element };\n root.refCleanupKnown = true;\n return workInProgress;\n}\n\nexport function renderHydratingHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime: RootRuntime,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): Fiber {\n root.hydrationState = {\n parent: scope.parent,\n nextHydratableNode: scope.previousNodes[0] ?? null,\n before: scope.before,\n after: scope.after,\n ...(options.resumeId === undefined ? {} : { resumeId: options.resumeId }),\n };\n return renderHostFiberRoot(root, element, runtime, {\n ...options,\n previousNodes: scope.previousNodes,\n });\n}\n\nexport function commitHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n options: RenderOptions = {},\n): void {\n runWithHostCommit(() => {\n let committed = false;\n try {\n committedPortalContainers.clear();\n pendingHostRefUpdates.length = 0;\n const commitPath = getRootCommitPath(options);\n if (!hasChildListMutation(finishedWork)) {\n commitHostDirtyChildrenOf(\n finishedWork,\n finishedWork.child,\n root.container,\n root.container,\n commitPath,\n options,\n );\n committed = true;\n return;\n }\n\n if (\n finishedWork.childListChanged &&\n commitHostKeyedChildListMutationFiber(\n finishedWork,\n root.container,\n root.container,\n commitPath,\n options,\n )\n ) {\n committed = true;\n return;\n }\n\n if (\n !finishedWork.childListChanged &&\n finishedWork.subtreeChildListChanged &&\n commitHostKeyedChildListMutation(finishedWork.child, root.container, root.container, commitPath, options)\n ) {\n committed = true;\n return;\n }\n\n const nodes = commitHostChildren(finishedWork.child, root.container, root.container, commitPath, options);\n syncChildNodes(root.container, nodes);\n committed = true;\n } finally {\n if (committed) {\n flushPendingHostRefUpdates();\n } else {\n pendingHostRefUpdates.length = 0;\n }\n committedPortalContainers.clear();\n }\n });\n}\n\nexport function commitHydratingHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): void {\n runWithHostCommit(() => {\n let committed = false;\n try {\n committedPortalContainers.clear();\n pendingHostRefUpdates.length = 0;\n const eventRoot = root.container;\n const nodes = commitHostChildren(finishedWork.child, scope.parent, eventRoot, \"\", options);\n syncScopedChildNodes(scope.parent, scope.before, scope.after, nodes);\n committed = true;\n } finally {\n if (committed) {\n flushPendingHostRefUpdates();\n } else {\n pendingHostRefUpdates.length = 0;\n }\n committedPortalContainers.clear();\n }\n });\n\n if (options.consumeResumeMarkers === true) {\n scope.before?.parentNode?.removeChild(scope.before);\n scope.after?.parentNode?.removeChild(scope.after);\n }\n}\n\nexport function disposeHostFiberResources(fiber: Fiber | undefined): void {\n if (fiber === undefined || fiber.hasDisposableResources !== true) {\n return;\n }\n\n // Dispose this fiber and its SUBTREE only — not its siblings. This is called\n // once per deleted fiber, and deleted siblings are disposed by their own\n // calls; walking siblings here re-walked the whole deleted list per deletion\n // (O(n^2) on a cleared 1k-row reactive list). The dedupe set is allocated\n // once for the subtree walk.\n const seen = new Set<unknown>();\n if (fiber.tag === \"reactive-dom-block\") {\n disposeReactiveDomBlockState(fiber.stateNode, seen);\n }\n disposeHostFiberChildResources(fiber.child, seen);\n}\n\nexport function disposeUnretainedHostFiberResources(\n fiber: Fiber | undefined,\n retained: ReadonlySet<Fiber>,\n): void {\n if (fiber === undefined || fiber.hasDisposableResources !== true || retained.has(fiber)) {\n return;\n }\n\n const seen = new Set<unknown>();\n disposeUnretainedHostFiberSubtreeResources(fiber, seen, retained);\n}\n\nfunction disposeHostFiberChildResources(\n fiber: Fiber | undefined,\n seen: Set<unknown>,\n): void {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (cursor.hasDisposableResources === true) {\n if (cursor.tag === \"reactive-dom-block\") {\n disposeReactiveDomBlockState(cursor.stateNode, seen);\n }\n\n disposeHostFiberChildResources(cursor.child, seen);\n }\n\n cursor = cursor.sibling;\n }\n}\n\nfunction disposeUnretainedHostFiberSubtreeResources(\n fiber: Fiber | undefined,\n seen: Set<unknown>,\n retained: ReadonlySet<Fiber>,\n): void {\n if (fiber === undefined || retained.has(fiber) || fiber.hasDisposableResources !== true) {\n return;\n }\n\n if (fiber.tag === \"reactive-dom-block\") {\n disposeReactiveDomBlockState(fiber.stateNode, seen);\n }\n\n let child = fiber.child;\n while (child !== undefined) {\n disposeUnretainedHostFiberSubtreeResources(child, seen, retained);\n child = child.sibling;\n }\n}\n\nfunction reconcileHostChild(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n resetFiberRefSubtree(parent);\n parent.subtreeFlags = NoFlags;\n parent.childListChanged = false;\n parent.subtreeChildListChanged = false;\n\n if (node === null || node === undefined || typeof node === \"boolean\") {\n parent.childListChanged = currentFirstChild !== undefined;\n if (currentFirstChild !== undefined) {\n markOptimizedChildrenForDeletion(parent, currentFirstChild);\n }\n return { fiber: undefined, consumed: 0 };\n }\n\n const children = Array.isArray(node) ? node : undefined;\n const rowResult =\n children === undefined\n ? undefined\n : reconcileKeyedRowHostChildren(parent, currentFirstChild, children, options) ??\n reconcileKeyedMemoRowHostChildren(\n parent,\n currentFirstChild,\n children,\n runtime,\n path,\n options,\n );\n if (rowResult !== undefined) {\n return rowResult;\n }\n\n const childCount = children === undefined ? 1 : children.length;\n const hasKeyedChildren = children !== undefined && hasKeyedChild(children);\n const canReuseCurrentFibersInList = !hasKeyedChildren || currentFirstChild === undefined;\n let existingByKey: Map<string, Fiber> | undefined;\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let currentUnkeyed = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n let skipRemainingKeyedLookup = false;\n let sequentialCurrentCursor = currentFirstChild;\n let childListOrderChanged = false;\n let dirtyChildren: Fiber[] | undefined;\n let usedCurrentChildren =\n currentFirstChild === undefined || hasKeyedChildren ? undefined : new Set<Fiber>();\n const ensureUsedCurrentChildren = (): Set<Fiber> => {\n if (usedCurrentChildren === undefined) {\n usedCurrentChildren = new Set<Fiber>();\n let cursor = currentFirstChild;\n\n while (cursor !== undefined && cursor !== sequentialCurrentCursor) {\n usedCurrentChildren.add(cursor);\n cursor = cursor.sibling;\n }\n }\n\n return usedCurrentChildren;\n };\n\n for (let index = 0; index < childCount; index += 1) {\n const child = children === undefined ? node : children[index];\n const key = getNodeKey(child);\n let matchedCurrent: Fiber | undefined;\n let canReuseMatchedCurrentFiber = canReuseCurrentFibersInList;\n\n if (key === undefined) {\n if (hasKeyedChildren && currentUnkeyed !== undefined) {\n childListOrderChanged = true;\n ensureUsedCurrentChildren();\n }\n matchedCurrent = currentUnkeyed;\n } else if (skipRemainingKeyedLookup) {\n childListOrderChanged = true;\n matchedCurrent = undefined;\n } else if (existingByKey !== undefined) {\n childListOrderChanged = true;\n matchedCurrent = existingByKey.get(key);\n canReuseMatchedCurrentFiber = matchedCurrent === undefined;\n } else if (currentKeyed?.key === key) {\n matchedCurrent = currentKeyed;\n canReuseMatchedCurrentFiber = true;\n currentKeyed = currentKeyed.sibling;\n sequentialCurrentCursor = currentKeyed;\n } else if (\n children !== undefined &&\n currentKeyed?.sibling?.key === key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n const deleted = currentKeyed;\n const matched = currentKeyed.sibling;\n const suffixResult = tryReuseDependencyFreeMemoRemovalSuffix(\n parent,\n children,\n index,\n deleted,\n matched,\n runtime,\n options,\n first,\n previous,\n consumed,\n );\n if (suffixResult !== undefined) {\n return suffixResult;\n }\n childListOrderChanged = true;\n ensureUsedCurrentChildren();\n matchedCurrent = matched;\n canReuseMatchedCurrentFiber = false;\n currentKeyed = matched.sibling;\n } else {\n if (\n children !== undefined &&\n hasKeyedChildren &&\n canSkipRemainingKeyedLookup(currentKeyed, children, index)\n ) {\n childListOrderChanged = true;\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n } else if (hasKeyedChildren) {\n childListOrderChanged = true;\n ensureUsedCurrentChildren();\n existingByKey = collectExistingKeyedFibers(currentKeyed);\n matchedCurrent = existingByKey.get(key);\n canReuseMatchedCurrentFiber = matchedCurrent === undefined;\n }\n }\n\n const memoBailout = tryReuseDependencyFreeMemoBailout(\n matchedCurrent,\n child,\n runtime,\n options,\n canReuseMatchedCurrentFiber,\n );\n const previousNodes =\n memoBailout !== undefined || options.previousNodes === undefined\n ? undefined\n : options.previousNodes.slice(consumed);\n const result = memoBailout ?? createHostFiber(\n parent,\n matchedCurrent,\n child,\n key,\n runtime,\n getReconcileChildPath(path, child, index, options),\n previousNodes === undefined ? options : { ...options, previousNodes },\n canReuseMatchedCurrentFiber,\n );\n const fiber = result.fiber;\n\n if (fiber === undefined) {\n if (matchedCurrent !== undefined) {\n usedCurrentChildren?.add(matchedCurrent);\n markOptimizedChildForDeletion(parent, matchedCurrent);\n }\n continue;\n }\n\n if (matchedCurrent !== undefined) {\n usedCurrentChildren?.add(matchedCurrent);\n if (fiber !== matchedCurrent && fiber.alternate !== matchedCurrent) {\n markOptimizedChildForDeletion(parent, matchedCurrent);\n }\n }\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n if (\n fiber.tag !== \"memo\" &&\n fiber.tag !== \"function-component\" &&\n fiber.tag !== \"forward-ref\" &&\n fiber.tag !== \"profiler\" &&\n fiber.tag !== \"suspense\" &&\n fiber.tag !== \"suspense-list\"\n && fiber.memoizedState === undefined\n ) {\n fiber.memoizedState = index;\n } else if (\n fiber.tag === \"memo\" &&\n (fiber.stateNode === undefined || typeof fiber.stateNode === \"number\")\n ) {\n fiber.stateNode = index;\n }\n if (hasHostCommitWork(fiber)) {\n (dirtyChildren ??= []).push(fiber);\n }\n previous = fiber;\n }\n\n if (usedCurrentChildren === undefined && hasKeyedChildren && currentKeyed !== undefined) {\n markOptimizedChildrenForDeletion(parent, currentKeyed);\n } else {\n markUnusedCurrentChildrenForDeletion(parent, currentFirstChild, usedCurrentChildren);\n }\n parent.childListChanged =\n childListOrderChanged || childFiberListShapeChanged(currentFirstChild, first);\n recordDirtyChildCommitHints(parent, dirtyChildren);\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileKeyedRowHostChildren(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n children.length === 0 ||\n currentFirstChild === undefined ||\n options.previousNodes !== undefined ||\n !isKeyedRowHostElementCandidate(children[0]) ||\n !shouldUseDirectHostTextChild()\n ) {\n return undefined;\n }\n\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let listShapeChanged = currentFirstChild === undefined;\n let skipRemainingKeyedLookup = false;\n let subtreeFlags = NoFlags;\n let subtreeChildListChanged = false;\n let hasRefSubtree = false;\n let hasDisposableResources = false;\n let appendSuffix: AppendSuffixCommitHint | undefined;\n const canReuseUnchangedRows = hasSameKeyOrderPrefix(currentFirstChild, children);\n const row = createKeyedRowHostElementScratch();\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (!readKeyedRowHostElement(child, row)) {\n return undefined;\n }\n\n let matchedCurrent: Fiber | undefined;\n let matchedByAppendSuffix = false;\n\n if (skipRemainingKeyedLookup) {\n matchedCurrent = undefined;\n } else if (currentKeyed === undefined) {\n listShapeChanged = true;\n skipRemainingKeyedLookup = true;\n matchedByAppendSuffix = true;\n matchedCurrent = undefined;\n } else if (currentKeyed?.key === row.key) {\n matchedCurrent = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n } else if (\n currentKeyed?.sibling?.key === row.key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n const deleted = currentKeyed;\n const matched = currentKeyed.sibling;\n listShapeChanged = true;\n markOptimizedChildForDeletion(parent, deleted);\n matchedCurrent = matched;\n currentKeyed = matched.sibling;\n } else if (canSkipRemainingKeyedLookup(currentKeyed, children, index)) {\n listShapeChanged = true;\n markOptimizedChildrenForDeletion(parent, currentKeyed);\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n matchedCurrent = undefined;\n } else {\n return undefined;\n }\n\n const fiber =\n matchedCurrent === undefined\n ? createKeyedRowHostFiber(parent, undefined, row, options)\n : (canReuseUnchangedRows ? getReusableKeyedRowHostFiber(matchedCurrent, row) : undefined) ??\n createKeyedRowHostFiber(parent, matchedCurrent, row, options);\n\n if (matchedByAppendSuffix && appendSuffix === undefined) {\n appendSuffix = { fiber, index };\n }\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n if (fiber.hasRefSubtree) {\n hasRefSubtree = true;\n }\n if (fiber.hasDisposableResources) {\n hasDisposableResources = true;\n }\n subtreeFlags |= fiber.flags | fiber.subtreeFlags;\n subtreeChildListChanged =\n subtreeChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged;\n if (fiber.memoizedState === undefined) {\n fiber.memoizedState = index;\n }\n previous = fiber;\n }\n\n if (currentKeyed !== undefined) {\n listShapeChanged = true;\n markOptimizedChildrenForDeletion(parent, currentKeyed);\n }\n\n parent.hasRefSubtree = hasRefSubtree;\n parent.hasDisposableResources = hasDisposableResources;\n parent.subtreeFlags = subtreeFlags;\n parent.subtreeChildListChanged = subtreeChildListChanged;\n parent.childListChanged = listShapeChanged;\n if (appendSuffix !== undefined && canStoreAppendSuffixCommitHint(parent)) {\n parent.memoizedState = appendSuffix;\n }\n return { fiber: first, consumed: 0 };\n}\n\nfunction isKeyedMemoRowCandidate(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n node.key !== null &&\n node.ref === null &&\n isMemoType(node.type)\n );\n}\n\n// Marker the compiler stamps on a lowered host-only component that returns its\n// props verbatim as a reactive block (`createReactiveDomBlock(render, props)`).\n// Such a component is pure and structurally static, so on a props change the\n// reconciler can drive its committed block straight through the prop cell instead\n// of re-invoking the component (the block's bound DOM updates via subscriptions).\nconst STATIC_REACTIVE_BLOCK_MARKER = \"__mreactStaticBlock\";\nconst MEMO_COMPARE_PROPS_MARKER = \"__mreactMemoCompareProps\";\n\nfunction isStaticReactiveBlockComponent(type: unknown): boolean {\n return (\n typeof type === \"function\" &&\n (type as unknown as Record<string, unknown>)[STATIC_REACTIVE_BLOCK_MARKER] === true\n );\n}\n\nfunction areCompilerMemoComparePropsEqual(\n memoType: MemoType<Record<string, unknown>>,\n previousProps: Record<string, unknown>,\n nextProps: Record<string, unknown>,\n): boolean | undefined {\n const keys = memoType[MEMO_COMPARE_PROPS_MARKER];\n if (keys === undefined) {\n return undefined;\n }\n\n if (keys.length === 1) {\n const key = keys[0] as string;\n return previousProps[key] === nextProps[key];\n }\n\n if (keys.length === 2) {\n const first = keys[0] as string;\n const second = keys[1] as string;\n return previousProps[first] === nextProps[first] &&\n previousProps[second] === nextProps[second];\n }\n\n if (keys.length === 3) {\n const first = keys[0] as string;\n const second = keys[1] as string;\n const third = keys[2] as string;\n return previousProps[first] === nextProps[first] &&\n previousProps[second] === nextProps[second] &&\n previousProps[third] === nextProps[third];\n }\n\n for (const key of keys) {\n if (previousProps[key] !== nextProps[key]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction tryCreateInitialStaticBlockMemoFiber(\n node: ReactCompatElement,\n key: string | undefined,\n memoType: {\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n },\n runtime: RootRuntime,\n memoPath: string,\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n options.previousNodes !== undefined ||\n node.ref !== null ||\n !isStaticReactiveBlockComponent(memoType.type)\n ) {\n return undefined;\n }\n\n const props = node.props as Record<string, unknown>;\n const componentType = memoType.type as (props: Record<string, unknown>) => ReactCompatNode;\n const rendered = componentType(props);\n\n if (!isReactCompatElement(rendered) || rendered.type !== REACTIVE_DOM_BLOCK_TYPE) {\n return undefined;\n }\n\n const memoFiber = createFiber(\"memo\", props, key);\n memoFiber.type = memoType;\n\n const componentFiber = createFiber(\"function-component\", props, key);\n componentFiber.type = componentType;\n\n const childResult = createHostFiber(\n componentFiber,\n undefined,\n rendered,\n key,\n runtime,\n `${memoPath}.0`,\n options,\n );\n componentFiber.child = childResult.fiber;\n if (componentFiber.child !== undefined) {\n componentFiber.child.return = componentFiber;\n componentFiber.child.sibling = undefined;\n bubbleHostChild(componentFiber, componentFiber.child);\n }\n componentFiber.stateNode = {\n element: node,\n props,\n instanceKeys: emptyInstanceKeys,\n hasContextDependencies: false,\n } satisfies FunctionFiberState;\n\n memoFiber.child = componentFiber;\n componentFiber.return = memoFiber;\n bubbleHostChild(memoFiber, componentFiber);\n memoFiber.memoizedState = {\n props,\n instanceKeys: emptyInstanceKeys,\n hasDirtyInstanceDependencies: false,\n hasUnflushedEffectDependencies: false,\n hasRetainedInstanceDependencies: false,\n } satisfies MemoFiberState;\n\n return { fiber: memoFiber, consumed: childResult.consumed };\n}\n\n// In-place bailout for a keyed memo row whose props are unchanged and which has\n// no hook/context/effect dependencies. The caller has proven the key order is\n// unchanged (hasSameKeyOrderPrefix), so the fiber keeps its position and can be\n// reused WITHOUT createWorkInProgress — no allocation, and the retained subtree\n// (including any reactive-dom-block subscriptions) is left untouched. Returns\n// undefined when the row must re-render or has dependencies (handled by the\n// general per-child path instead). Mirrors tryReuseDependencyFreeMemoBailout +\n// getMemoBailoutFiber's in-place branch, but is safe to reuse a fiber with\n// disposable resources because a stable position means nothing is disposed.\nfunction tryReuseDependencyFreeKeyedMemoRow(\n matched: Fiber,\n child: ReactCompatElement,\n): Fiber | undefined {\n if (\n matched.tag !== \"memo\" ||\n matched.type !== child.type ||\n matched.hasRefSubtree === true ||\n matched.hydrateExisting === true\n ) {\n return undefined;\n }\n\n const state = matched.memoizedState as MemoFiberState | undefined;\n\n if (\n state === undefined ||\n state.hasDirtyInstanceDependencies !== false ||\n state.hasUnflushedEffectDependencies !== false ||\n state.hasRetainedInstanceDependencies !== false\n ) {\n return undefined;\n }\n\n const memoType = child.type as MemoType<Record<string, unknown>>;\n const nextProps = child.props as Record<string, unknown>;\n const propsEqual =\n areCompilerMemoComparePropsEqual(memoType, state.props, nextProps) ??\n areMemoPropsEqual(memoType, state.props, nextProps);\n\n if (!propsEqual) {\n return undefined;\n }\n\n matched.pendingProps = child.props;\n matched.flags = NoFlags;\n matched.subtreeFlags = NoFlags;\n matched.childListChanged = false;\n matched.subtreeChildListChanged = false;\n matched.hostChildListChanged = false;\n matched.child = getSkippedChild(matched);\n return matched;\n}\n\n// In-place CHANGED-row update for a keyed memo row whose inner component is a\n// compiler-marked static reactive block (returns its props verbatim as the block\n// props). Instead of re-invoking the component to rebuild a throwaway block\n// element, push the new props straight into the committed block's prop cell — the\n// bound DOM updates via subscriptions, exactly as the normal block re-render path\n// would, but without the memo/component render machinery. Same-order is proven by\n// the caller, so the fiber is reused in place. Returns undefined when this is not\n// a marked, dependency-free, single-block memo row (the general path handles it).\nfunction tryCellUpdateStaticBlockMemoRow(\n matched: Fiber,\n child: ReactCompatElement,\n): Fiber | undefined {\n if (\n matched.tag !== \"memo\" ||\n matched.type !== child.type ||\n matched.hasRefSubtree === true ||\n matched.hydrateExisting === true ||\n !isStaticReactiveBlockComponent((matched.type as { type?: unknown }).type)\n ) {\n return undefined;\n }\n\n const state = matched.memoizedState as MemoFiberState | undefined;\n\n if (\n state === undefined ||\n state.hasDirtyInstanceDependencies !== false ||\n state.hasUnflushedEffectDependencies !== false ||\n state.hasRetainedInstanceDependencies !== false\n ) {\n return undefined;\n }\n\n // Navigate memo -> component fiber -> reactive-dom-block fiber. The marked\n // component renders exactly one static block, so anything else is unexpected.\n const componentFiber = matched.child;\n if (componentFiber === undefined || componentFiber.sibling !== undefined) {\n return undefined;\n }\n\n const blockFiber = componentFiber.child;\n if (\n blockFiber === undefined ||\n blockFiber.tag !== \"reactive-dom-block\" ||\n blockFiber.sibling !== undefined\n ) {\n return undefined;\n }\n\n const blockState = blockFiber.stateNode as ReactiveDomBlockState | undefined;\n if (blockState?.propCell === undefined) {\n return undefined;\n }\n\n // Drive the bound DOM through the prop cell (the marker guarantees the block's\n // props are the component's props verbatim), then reuse the memo fiber in place.\n const nextProps = child.props as Record<string, unknown>;\n setReactivePropCell(blockState.propCell, nextProps);\n state.props = nextProps;\n matched.memoizedState = state;\n matched.pendingProps = child.props;\n matched.flags = NoFlags;\n matched.subtreeFlags = NoFlags;\n matched.childListChanged = false;\n matched.subtreeChildListChanged = false;\n matched.hostChildListChanged = false;\n matched.child = getSkippedChild(matched);\n return matched;\n}\n\n// Fast path for a keyed list of memo-wrapped rows (e.g. `<RowMemo key={id} />`)\n// whose key order is UNCHANGED, append-only, or a single deletion between\n// renders — the js-framework-benchmark \"select row\", \"partial update\",\n// \"append rows\", and \"remove row\" shapes. Walks current fibers and new children\n// in lockstep: unchanged rows bail in place (no allocation, no general\n// keyed-reconcile machinery), changed rows cell-update through the proven\n// per-child path, appended rows are created as a suffix, and a single deleted\n// row is removed while the suffix is retained. Any reorder / insert /\n// multi-delete / non-memo child makes it return undefined so the general\n// reconcile takes over.\nfunction reconcileKeyedMemoRowHostChildren(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n children.length === 0 ||\n currentFirstChild === undefined ||\n runtime === undefined ||\n options.previousNodes !== undefined ||\n !isKeyedMemoRowCandidate(children[0])\n ) {\n return undefined;\n }\n\n const memoRowType = (children[0] as ReactCompatElement).type;\n if (!hasSameAppendOrSingleDeleteKeyOrder(currentFirstChild, children, memoRowType)) {\n return undefined;\n }\n\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let subtreeFlags = NoFlags;\n let subtreeChildListChanged = false;\n let hasRefSubtree = false;\n let hasDisposableResources = false;\n let listShapeChanged = false;\n let appendSuffix: AppendSuffixCommitHint | undefined;\n let removedFiber: Fiber | undefined;\n let dirtyChildren: Fiber[] | undefined;\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index] as ReactCompatElement;\n const childElement = child;\n let matched: Fiber | undefined = currentKeyed;\n\n if (matched === undefined) {\n // append-only suffix\n } else if (matched.key === childElement.key) {\n currentKeyed = matched.sibling;\n } else if (\n removedFiber === undefined &&\n matched.sibling?.key === childElement.key &&\n canSkipSingleDeletedKeyedFiber(children, index, matched.sibling)\n ) {\n removedFiber = matched;\n matched = matched.sibling;\n currentKeyed = matched.sibling;\n listShapeChanged = true;\n } else {\n return undefined;\n }\n\n let fiber =\n matched === undefined\n ? undefined\n : tryReuseDependencyFreeKeyedMemoRow(matched, childElement) ??\n tryCellUpdateStaticBlockMemoRow(matched, childElement);\n if (fiber === undefined) {\n const result = createHostFiber(\n parent,\n matched,\n child,\n childElement.key ?? undefined,\n runtime,\n getReconcileChildPath(path, child, index, options),\n options,\n false,\n );\n fiber = result.fiber;\n\n if (fiber === undefined) {\n return undefined;\n }\n\n if (matched !== undefined && fiber !== matched && fiber.alternate !== matched) {\n markOptimizedChildForDeletion(parent, matched);\n }\n }\n\n if (matched === undefined) {\n listShapeChanged = true;\n appendSuffix ??= { fiber, index };\n }\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n if (fiber.hasRefSubtree) {\n hasRefSubtree = true;\n }\n if (fiber.hasDisposableResources) {\n hasDisposableResources = true;\n }\n subtreeFlags |= fiber.flags | fiber.subtreeFlags;\n subtreeChildListChanged =\n subtreeChildListChanged || fiber.childListChanged || fiber.subtreeChildListChanged;\n if (\n fiber.tag === \"memo\" &&\n (fiber.stateNode === undefined || typeof fiber.stateNode === \"number\")\n ) {\n fiber.stateNode = index;\n }\n if (hasHostCommitWork(fiber)) {\n (dirtyChildren ??= []).push(fiber);\n }\n previous = fiber;\n }\n\n if (currentKeyed !== undefined) {\n if (removedFiber !== undefined || currentKeyed.sibling !== undefined) {\n return undefined;\n }\n removedFiber = currentKeyed;\n listShapeChanged = true;\n }\n\n parent.hasRefSubtree = hasRefSubtree;\n parent.hasDisposableResources = hasDisposableResources;\n parent.subtreeFlags = subtreeFlags;\n parent.subtreeChildListChanged = subtreeChildListChanged;\n parent.childListChanged = listShapeChanged;\n if (appendSuffix !== undefined && canStoreAppendSuffixCommitHint(parent)) {\n parent.memoizedState = appendSuffix;\n }\n if (removedFiber !== undefined) {\n parent.deletions = [removedFiber];\n markOptimizedChildForDeletion(parent, removedFiber);\n }\n recordDirtyChildCommitHints(parent, dirtyChildren);\n return { fiber: first, consumed: 0 };\n}\n\nfunction hasSameAppendOrSingleDeleteKeyOrder(\n currentFirstChild: Fiber,\n children: readonly ReactCompatNode[],\n expectedType: ReactCompatElement[\"type\"],\n): boolean {\n let current: Fiber | undefined = currentFirstChild;\n let skippedDeletion = false;\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n if (!isSameKeyedMemoRowCandidate(child, expectedType)) {\n return false;\n }\n\n const key = (child as ReactCompatElement).key;\n\n if (current === undefined) {\n return true;\n }\n\n if (current.key === key) {\n current = current.sibling;\n continue;\n }\n\n const sibling = current.sibling;\n if (\n !skippedDeletion &&\n sibling !== undefined &&\n sibling.key === key &&\n canSkipSingleDeletedKeyedFiber(children, index, sibling)\n ) {\n skippedDeletion = true;\n current = sibling.sibling;\n continue;\n }\n\n return false;\n }\n\n return current === undefined || (!skippedDeletion && current.sibling === undefined);\n}\n\nfunction isSameKeyedMemoRowCandidate(\n node: ReactCompatNode,\n expectedType: ReactCompatElement[\"type\"],\n): boolean {\n return (\n isReactCompatElement(node) &&\n node.key !== null &&\n node.ref === null &&\n node.type === expectedType\n );\n}\n\nfunction canReuseDependencyFreeMemoAtKey(\n current: Fiber | undefined,\n node: ReactCompatElement,\n key: string,\n): boolean {\n return (\n current !== undefined &&\n current.key === key &&\n current.tag === \"memo\" &&\n current.type === node.type &&\n current.hasRefSubtree !== true &&\n current.hasDisposableResources !== true &&\n current.hydrateExisting !== true &&\n isMemoType(node.type)\n );\n}\n\nfunction tryReuseDependencyFreeMemoRemovalSuffix(\n parent: Fiber,\n children: readonly ReactCompatNode[],\n startIndex: number,\n removed: Fiber,\n matchedCurrent: Fiber,\n runtime: RootRuntime | undefined,\n options: FiberHydrationOptions,\n prefixFirst: Fiber | undefined,\n prefixPrevious: Fiber | undefined,\n consumed: number,\n): FiberReconcileResult | undefined {\n if (\n runtime === undefined ||\n options.previousNodes !== undefined ||\n removed.hasRefSubtree\n ) {\n return undefined;\n }\n\n const suffix: Fiber[] = [];\n let current: Fiber | undefined = matchedCurrent;\n\n for (let index = startIndex; index < children.length; index += 1) {\n const child = children[index];\n const key = getNodeKey(child);\n\n if (key === undefined || !isReactCompatElement(child) || !isMemoType(child.type)) {\n return undefined;\n }\n\n if (!canReuseDependencyFreeMemoAtKey(current, child, key)) {\n return undefined;\n }\n\n if (current === undefined) {\n return undefined;\n }\n\n const matched: Fiber = current;\n const fiber = reuseDependencyFreeMemoFiber(matched, child);\n\n if (fiber === undefined) {\n return undefined;\n }\n\n suffix.push(fiber);\n current = matched.sibling;\n }\n\n if (current !== undefined) {\n return undefined;\n }\n\n let first = prefixFirst;\n let previous = prefixPrevious;\n\n for (const fiber of suffix) {\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n previous = fiber;\n }\n\n parent.childListChanged = true;\n parent.deletions = [removed];\n markOptimizedChildForDeletion(parent, removed);\n return { fiber: first, consumed };\n}\n\nfunction reuseDependencyFreeMemoFiber(\n current: Fiber,\n node: ReactCompatElement,\n): Fiber | undefined {\n if (!isMemoType(node.type)) {\n return undefined;\n }\n\n const previousMemoState = current.memoizedState as MemoFiberState | undefined;\n\n if (\n previousMemoState === undefined ||\n previousMemoState.hasDirtyInstanceDependencies !== false ||\n previousMemoState.hasUnflushedEffectDependencies !== false ||\n previousMemoState.hasRetainedInstanceDependencies !== false ||\n !areMemoPropsEqual(node.type, previousMemoState.props, node.props)\n ) {\n return undefined;\n }\n\n current.pendingProps = node.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n current.type = node.type;\n current.child = getSkippedChild(current);\n current.memoizedState = previousMemoState;\n return current;\n}\n\nfunction canStoreAppendSuffixCommitHint(parent: Fiber): boolean {\n return (\n parent.tag === \"fragment\" ||\n parent.tag === \"host-component\" ||\n parent.tag === \"host-root\"\n );\n}\n\nfunction markOptimizedChildForDeletion(parent: Fiber, _child: Fiber): void {\n parent.flags |= ChildDeletion;\n}\n\nfunction markOptimizedChildrenForDeletion(parent: Fiber, _firstChild: Fiber): void {\n parent.flags |= ChildDeletion;\n}\n\nfunction markUnusedCurrentChildrenForDeletion(\n parent: Fiber,\n firstChild: Fiber | undefined,\n used: ReadonlySet<Fiber> | undefined,\n): void {\n if (firstChild === undefined || used === undefined) {\n return;\n }\n\n let cursor: Fiber | undefined = firstChild;\n\n while (cursor !== undefined) {\n if (!used.has(cursor)) {\n parent.flags |= ChildDeletion;\n return;\n }\n cursor = cursor.sibling;\n }\n}\n\nfunction hasSameKeyOrderPrefix(\n currentFirstChild: Fiber,\n children: readonly ReactCompatNode[],\n): boolean {\n let current: Fiber | undefined = currentFirstChild;\n\n for (let index = 0; index < children.length; index += 1) {\n if (current === undefined) {\n return true;\n }\n\n if (current.key !== getNodeKey(children[index])) {\n return false;\n }\n\n current = current.sibling;\n }\n\n return current === undefined;\n}\n\nfunction getReusableKeyedRowHostFiber(\n current: Fiber,\n row: KeyedRowHostElement,\n): Fiber | undefined {\n if (\n current.tag !== \"host-component\" ||\n current.type !== row.type ||\n current.hydrateExisting ||\n current.child !== undefined ||\n !isHostElement(current.stateNode)\n ) {\n return undefined;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n\n if (typeof previousProps !== \"object\" || previousProps === null) {\n return undefined;\n }\n\n const previousRecord = previousProps as Record<string, unknown>;\n\n if (\n getDirectHostTextChild(previousRecord.children) !== row.text ||\n !hostOwnPropsEqual(previousRecord, row.element.props)\n ) {\n return undefined;\n }\n\n current.pendingProps = row.element.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n current.hasRefSubtree = false;\n current.hasDisposableResources = false;\n return current;\n}\n\ninterface KeyedRowHostElement {\n element: ReactCompatElement;\n key: string;\n type: string;\n text: string;\n}\n\nfunction createKeyedRowHostElementScratch(): KeyedRowHostElement {\n return {\n element: undefined as unknown as ReactCompatElement,\n key: \"\",\n type: \"\",\n text: \"\",\n };\n}\n\nfunction isKeyedRowHostElementCandidate(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n typeof node.type === \"string\" &&\n node.key !== null &&\n node.ref === null\n );\n}\n\nfunction readKeyedRowHostElement(\n node: ReactCompatNode,\n row: KeyedRowHostElement,\n): boolean {\n if (\n !isReactCompatElement(node) ||\n typeof node.type !== \"string\" ||\n node.key === null ||\n node.ref !== null\n ) {\n return false;\n }\n\n // Any keyed host row whose children collapse to a single text value\n // qualifies; row props are compared per reuse with hostOwnPropsEqual.\n const text = getDirectHostTextChild((node.props as Record<string, unknown>).children);\n\n if (text === undefined) {\n return false;\n }\n\n row.element = node;\n row.key = node.key;\n row.type = node.type;\n row.text = text;\n return true;\n}\n\nfunction createKeyedRowHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n row: KeyedRowHostElement,\n options: FiberHydrationOptions,\n): Fiber {\n const node = row.element;\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", row.type);\n const fiber =\n current?.tag === \"host-component\" && current.type === row.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"host-component\", node.props, row.key);\n\n fiber.type = row.type;\n fiber.stateNode =\n current?.tag === \"host-component\" &&\n current.type === row.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, row.type, elementNamespace)\n ? current.stateNode\n : createHostElement(getDocumentRef(options), row.type, options.namespace ?? \"html\");\n fiber.child = undefined;\n fiber.pendingProps = node.props;\n fiber.hostChildListChanged = false;\n fiber.hasRefSubtree = false;\n fiber.hasDisposableResources = false;\n\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return fiber;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previousProps));\n\n if (previousText !== row.text || !hostOwnPropsEqual(previousProps, row.element.props)) {\n fiber.flags |= Update;\n }\n\n return fiber;\n}\n\nfunction canReuseStaticHostSubtree(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (\n cursor.tag !== \"host-component\" &&\n cursor.tag !== \"host-text\" &&\n cursor.tag !== \"fragment\" &&\n cursor.tag !== \"strict-mode\"\n ) {\n return false;\n }\n\n if (cursor.child !== undefined && !canReuseStaticHostSubtree(cursor.child)) {\n return false;\n }\n\n cursor = cursor.sibling;\n }\n\n return true;\n}\n\nfunction canSkipSingleDeletedKeyedFiber(\n children: readonly ReactCompatNode[],\n index: number,\n matched: Fiber,\n): boolean {\n const nextKey = index + 1 < children.length ? getNodeKey(children[index + 1]) : undefined;\n const afterMatched = matched.sibling;\n\n return nextKey === undefined ? afterMatched === undefined : afterMatched?.key === nextKey;\n}\n\nfunction canSkipRemainingKeyedLookup(\n current: Fiber | undefined,\n children: readonly ReactCompatNode[],\n startIndex: number,\n): boolean {\n const currentRange = readContiguousNumericFiberKeyRange(current);\n\n if (currentRange === undefined) {\n return false;\n }\n\n const nextRange = readContiguousNumericNodeKeyRange(children, startIndex);\n\n if (nextRange === undefined) {\n return false;\n }\n\n return (\n currentRange.end < nextRange.start ||\n nextRange.end < currentRange.start\n );\n}\n\nfunction readContiguousNumericFiberKeyRange(\n fiber: Fiber | undefined,\n): { start: number; end: number } | undefined {\n let cursor = fiber;\n let start: number | undefined;\n let previous: number | undefined;\n\n while (cursor !== undefined) {\n const value = parseNumericKey(cursor.key);\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n cursor = cursor.sibling;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction readContiguousNumericNodeKeyRange(\n children: readonly ReactCompatNode[],\n startIndex: number,\n): { start: number; end: number } | undefined {\n let start: number | undefined;\n let previous: number | undefined;\n\n for (let index = startIndex; index < children.length; index += 1) {\n const value = parseNumericKey(getNodeKey(children[index]));\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction parseNumericKey(key: string | undefined): number | undefined {\n if (key === undefined || key.length === 0) {\n return undefined;\n }\n\n const value = Number(key);\n\n return Number.isSafeInteger(value) && String(value) === key ? value : undefined;\n}\n\nfunction childFiberListShapeChanged(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): boolean {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n const isSameSlot =\n nextCursor === currentCursor ||\n nextCursor.alternate === currentCursor;\n\n if (\n !isSameSlot ||\n currentCursor.tag !== nextCursor.tag ||\n currentCursor.type !== nextCursor.type ||\n currentCursor.key !== nextCursor.key\n ) {\n return true;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor !== undefined || nextCursor !== undefined;\n}\n\nfunction bubbleHostChild(parent: Fiber, child: Fiber): void {\n if (child.hasRefSubtree) {\n parent.hasRefSubtree = true;\n }\n if (child.hasDisposableResources) {\n parent.hasDisposableResources = true;\n }\n parent.subtreeFlags |= child.flags | child.subtreeFlags;\n parent.subtreeChildListChanged =\n parent.subtreeChildListChanged ||\n child.childListChanged ||\n child.subtreeChildListChanged;\n}\n\nfunction recordDirtyChildCommitHints(\n parent: Fiber,\n dirtyChildren: Fiber[] | undefined,\n): void {\n if (parent.childListChanged || dirtyChildren === undefined || dirtyChildren.length === 0) {\n return;\n }\n\n // Reuse the effect-list slot only when there are no child-list deletions.\n parent.deletions = dirtyChildren;\n}\n\nfunction resetFiberRefSubtree(fiber: Fiber): void {\n fiber.hasRefSubtree = false;\n fiber.hasDisposableResources = false;\n}\n\nfunction includeNodeRef(fiber: Fiber, node: ReactCompatNode): void {\n fiber.hasRefSubtree =\n fiber.hasRefSubtree ||\n (isReactCompatElement(node) && node.ref !== null);\n}\n\nfunction markHostFiberEffects(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n): void {\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return;\n }\n\n if (fiber.tag === \"host-text\") {\n if (!Object.is(current.memoizedProps ?? current.pendingProps, fiber.pendingProps)) {\n fiber.flags |= Update;\n }\n return;\n }\n\n if (fiber.tag !== \"host-component\") {\n return;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const nextProps = fiber.pendingProps as Record<string, unknown>;\n\n fiber.hostChildListChanged = hostChildListChanged(previousProps, nextProps);\n\n if (!hostOwnPropsEqual(previousProps, nextProps) || hostDirectTextChildChanged(previousProps, nextProps)) {\n fiber.flags |= Update;\n }\n\n if (isReactCompatElement(node) && node.ref !== null) {\n fiber.flags |= Update;\n }\n}\n\nfunction createHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n canReuseCurrentFiber = true,\n): FiberReconcileResult {\n const result = createHostFiberImpl(\n parent,\n current,\n node,\n key,\n runtime,\n path,\n options,\n canReuseCurrentFiber,\n );\n\n if (result.fiber !== undefined) {\n if (canFinalizeNewHostFiber(result.fiber, current, node, options)) {\n result.fiber.flags |= Placement;\n result.fiber.hostChildListChanged = true;\n return result;\n }\n\n result.fiber.pendingProps = getPendingProps(node);\n includeNodeRef(result.fiber, node);\n markHostFiberEffects(result.fiber, current, node);\n }\n\n return result;\n}\n\nfunction canFinalizeNewHostFiber(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n return (\n current === undefined &&\n options.previousNodes === undefined &&\n fiber.tag === \"host-component\" &&\n isReactCompatElement(node) &&\n node.ref === null &&\n typeof node.type === \"string\"\n );\n}\n\nfunction createHostFiberImpl(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n canReuseCurrentFiber = true,\n): FiberReconcileResult {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const existing = options.previousNodes?.[0];\n const fiber =\n current?.tag === \"host-text\"\n ? createWorkInProgress(current, String(node))\n : createFiber(\"host-text\", String(node), key);\n if (existing === undefined && options.previousNodes !== undefined) {\n reportMissingHydrationNode(options, path);\n } else if (existing !== undefined && !(existing instanceof Text)) {\n reportHydrationNodeTypeMismatch(options, path, \"text\", existing);\n }\n fiber.stateNode =\n existing instanceof Text\n ? existing\n : current?.tag === \"host-text\" && current.stateNode instanceof Text\n ? current.stateNode\n : createHostTextNode(getDocumentRef(options));\n\n if (existing instanceof Text && existing.data !== String(node)) {\n reportRecoverable(\n options,\n \"text\",\n path,\n new Error(\"Hydration text mismatch.\"),\n );\n }\n\n return { fiber, consumed: existing instanceof Text ? 1 : 0 };\n }\n\n if (Array.isArray(node)) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node)\n : createFiber(\"fragment\", node, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n const memoBailout = tryReuseMemoBailout(\n current,\n node,\n runtime,\n path,\n options,\n canReuseCurrentFiber,\n );\n if (memoBailout !== undefined) {\n return memoBailout;\n }\n\n if (!isReactCompatElement(node)) {\n if (isReactCompatPortal(node)) {\n return createPortalFiber(parent, current, node, key, runtime, path, options);\n }\n\n return { fiber: undefined, consumed: 0 };\n }\n\n // Host elements (string type) are by far the most common node. Dispatch them\n // before the component-type checks below, none of which a string can match,\n // so each reconciled host element skips ~12 type comparisons / probes.\n if (typeof node.type === \"string\") {\n return createHostComponentFiber(parent, current, node, key, runtime, path, options);\n }\n\n if (node.type === Fragment) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node.props.children)\n : createFiber(\"fragment\", node.props.children, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.f`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Activity) {\n const children =\n (node.props as { mode?: unknown }).mode === \"hidden\"\n ? null\n : node.props.children;\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, children)\n : createFiber(\"fragment\", children, key);\n fiber.type = node.type;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"fragment\" ? current.child : undefined,\n children as ReactCompatNode,\n runtime,\n `${path}.activity`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Profiler) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"profiler\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"profiler\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithProfiler(\n runtime,\n `${path}.profiler`,\n node.props,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"profiler\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.profiler`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === STRICT_MODE_TYPE) {\n return createStrictModeFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === Suspense) {\n return createSuspenseFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === SuspenseList) {\n return createSuspenseListFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n const fiber =\n current?.tag === \"error-boundary\"\n ? createWorkInProgress(current, node.props)\n : createFiber(\"error-boundary\", node.props, key);\n fiber.type = node.type;\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.eb`,\n options,\n );\n fiber.child = childResult.fiber;\n } catch (error) {\n if (isThenable(error)) {\n throw error;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const onError = node.props.onError;\n\n if (typeof onError === \"function\") {\n (onError as (error: Error) => void)(normalizedError);\n }\n\n const fallback = node.props.fallback;\n const fallbackNode =\n typeof fallback === \"function\"\n ? (fallback as (error: Error) => ReactCompatNode)(normalizedError)\n : null;\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.eb.fallback`,\n options,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (node.type === REACTIVE_DOM_BLOCK_TYPE) {\n const blockProps = (node.props as unknown as ReactiveDomBlockProps).blockProps;\n if (current?.tag === \"reactive-dom-block\") {\n // Re-render: reuse the committed DOM/subscriptions and push the new props\n // into the prop cell instead of re-running render(). Bound text/attributes\n // update via their reactive subscriptions; the subtree is never reconciled.\n const fiber = createWorkInProgress(current, node.props);\n fiber.type = node.type;\n fiber.hasDisposableResources = true;\n const previousState = current.stateNode as ReactiveDomBlockState | undefined;\n if (previousState?.propCell !== undefined && blockProps !== undefined) {\n setReactivePropCell(previousState.propCell, blockProps);\n }\n fiber.stateNode = previousState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const fiber = createFiber(\"reactive-dom-block\", node.props, key);\n fiber.type = node.type;\n fiber.hasDisposableResources = true;\n const render = (node.props as unknown as ReactiveDomBlockProps).render;\n if (blockProps !== undefined) {\n const propCell = createReactivePropCell(blockProps);\n const result = render(createReactivePropProxy(propCell));\n fiber.stateNode = { node: result.node, dispose: result.dispose, propCell };\n } else {\n fiber.stateNode = (render as () => ReactiveDomBlockResult)();\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isReactCompatProvider(node.type)) {\n const fiber =\n current?.tag === \"context-provider\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-provider\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithContextProvider(node.type, node.props.value, () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"context-provider\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.provider`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isReactCompatConsumer(node.type)) {\n const fiber =\n current?.tag === \"context-consumer\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-consumer\", node.props, key);\n fiber.type = node.type;\n const children = node.props.children;\n const render =\n typeof children === \"function\"\n ? (children as (value: unknown) => ReactCompatNode)\n : () => null;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"context-consumer\" ? current.child : undefined,\n render(useContext(consumerContext(node.type))),\n runtime,\n `${path}.consumer`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isForwardRefType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const forwardRefType = node.type;\n const fiber =\n current?.tag === \"forward-ref\" && current.type === forwardRefType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"forward-ref\", node.props, key);\n fiber.type = forwardRefType;\n const rendered = renderWithRootRuntime(runtime, path, () =>\n forwardRefType.render(node.props, node.ref),\n forwardRefType,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = getHydrationChildOptions(options, forwardRefType.render);\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"forward-ref\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.forwardRef`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isMemoType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const memoType = node.type;\n const memoPath = `${path}.memo`;\n const previousMemoFiber =\n current?.tag === \"memo\" && current.type === memoType ? current : undefined;\n const initialStaticBlockMemoFiber =\n previousMemoFiber === undefined\n ? tryCreateInitialStaticBlockMemoFiber(\n node,\n key,\n memoType,\n runtime,\n memoPath,\n options,\n )\n : undefined;\n\n if (initialStaticBlockMemoFiber !== undefined) {\n return initialStaticBlockMemoFiber;\n }\n\n const previousMemoState =\n previousMemoFiber !== undefined\n ? (previousMemoFiber.memoizedState as MemoFiberState | undefined)\n : undefined;\n\n if (\n previousMemoFiber !== undefined &&\n previousMemoState !== undefined &&\n !(\n memoStateNeedsDirtyInstanceCheck(previousMemoState) &&\n hasDirtyInstance(runtime, previousMemoState.instanceKeys, memoPath)\n ) &&\n !(\n memoStateNeedsEffectCheck(previousMemoState) &&\n hasUnflushedMountEffectInstance(runtime, previousMemoState.instanceKeys)\n ) &&\n areMemoPropsEqual(memoType, previousMemoState.props, node.props)\n ) {\n const fiber = getMemoBailoutFiber(\n runtime,\n previousMemoFiber,\n node.props,\n previousMemoState,\n canReuseCurrentFiber,\n );\n fiber.child = getSkippedChild(previousMemoFiber);\n fiber.memoizedState = previousMemoState;\n return {\n fiber,\n consumed: options.previousNodes?.length ?? 0,\n };\n }\n\n const fiber =\n previousMemoFiber !== undefined\n ? createWorkInProgress(previousMemoFiber, node.props)\n : createFiber(\"memo\", node.props, key);\n fiber.type = memoType;\n\n const renderedElement: ReactCompatElement = {\n $$typeof: node.$$typeof,\n type: memoType.type,\n key: node.key,\n ref: node.ref,\n props: node.props,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"memo\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n memoPath,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n const instanceKeys = collectMemoInstanceKeys(runtime, memoPath);\n const hasClassDescendant = hasClassComponentDescendant(fiber.child);\n fiber.memoizedState = {\n props: node.props as Record<string, unknown>,\n instanceKeys,\n hasDirtyInstanceDependencies:\n hasDirtyInstanceDependencies(runtime, instanceKeys) || hasClassDescendant,\n hasUnflushedEffectDependencies: hasUnflushedEffectDependencies(\n runtime,\n instanceKeys,\n ),\n hasRetainedInstanceDependencies:\n hasRetainedInstanceDependencies(runtime, instanceKeys) || hasClassDescendant,\n };\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isLazyType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const lazyType = node.type;\n const fiber =\n current?.tag === \"lazy\" && current.type === lazyType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"lazy\", node.props, key);\n fiber.type = lazyType;\n\n if (lazyType.status === \"resolved\" && lazyType.resolved !== undefined) {\n const renderedElement: ReactCompatElement = {\n $$typeof: node.$$typeof,\n type: lazyType.resolved,\n key: node.key,\n ref: node.ref,\n props: node.props,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"lazy\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n `${path}.lazy`,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n return { fiber, consumed: childResult.consumed };\n }\n\n if (lazyType.status === \"rejected\") {\n throw lazyType.error;\n }\n\n if (lazyType.status === \"uninitialized\") {\n lazyType.status = \"pending\";\n lazyType.promise = lazyType\n .load()\n .then((module) => {\n lazyType.status = \"resolved\";\n lazyType.resolved = module.default;\n runtime.rerender();\n })\n .catch((error: unknown) => {\n lazyType.status = \"rejected\";\n lazyType.error = error;\n runtime.rerender();\n });\n }\n\n if (suspensePrimaryRenderDepth > 0) {\n throw lazyType.promise;\n }\n\n fiber.child = undefined;\n return { fiber, consumed: 0 };\n }\n\n if (isClassComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const classType = node.type;\n const fiber =\n current?.tag === \"class-component\" && current.type === classType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"class-component\", node.props, key);\n fiber.type = classType;\n const previousClassChildKeys = collectInstanceKeys(runtime, `${path}.class`);\n const currentClassInstance =\n current?.tag === \"class-component\" && current.type === classType\n ? (current.stateNode as ClassComponentInstance)\n : undefined;\n const hasCurrentClassFiber =\n current?.tag === \"class-component\" && current.type === classType;\n const rendered = renderClassComponentWithRuntime(\n classType,\n node.props,\n runtime,\n path,\n {\n ...(currentClassInstance === undefined\n ? {}\n : { currentInstance: currentClassInstance }),\n hasDirtyDescendant: hasDirtyInstance(\n runtime,\n previousClassChildKeys,\n `${path}.class`,\n ),\n allowSkip: hasCurrentClassFiber,\n },\n );\n applyRef(node.ref, rendered.kind === \"skip\" ? current?.stateNode : rendered.instance);\n\n if (rendered.kind === \"skip\") {\n fiber.child = getSkippedChild(current);\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const childOptions = getHydrationChildOptions(options, classType);\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n rendered.node,\n runtime,\n `${path}.class`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n fiber.stateNode = rendered.instance;\n } catch (error) {\n const fallbackNode = recoverClassComponentError(\n rendered.type,\n rendered.instance,\n error,\n );\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.class.fallback`,\n childOptions,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isFunctionComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const previousFunctionState =\n current?.tag === \"function-component\"\n ? (current.stateNode as FunctionFiberState | undefined)\n : undefined;\n const fiber =\n current?.tag === \"function-component\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"function-component\", node.props, key);\n fiber.type = node.type;\n\n const canReuseSameElement =\n previousFunctionState !== undefined &&\n previousFunctionState.hasContextDependencies !== true &&\n previousFunctionState.element === node;\n const canReuseExternalStoreSnapshot =\n previousFunctionState !== undefined &&\n runtime.externalStoreUpdate &&\n shallowEqual(previousFunctionState.props, node.props) &&\n !hasChangedContextDependency(runtime, previousFunctionState.instanceKeys);\n\n if (\n runtime.strictReplayDepth === 0 &&\n previousFunctionState !== undefined &&\n (canReuseSameElement || canReuseExternalStoreSnapshot) &&\n !hasDirtyInstance(runtime, previousFunctionState.instanceKeys, path) &&\n !hasUnflushedMountEffectInstance(runtime, previousFunctionState.instanceKeys) &&\n !hasPendingAsyncChild(current?.child)\n ) {\n markActiveInstanceKeys(runtime, previousFunctionState.instanceKeys);\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = current?.memoizedState;\n fiber.stateNode = previousFunctionState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const rendered = renderWithRootRuntime(runtime, path, () =>\n (node.type as (props: Record<string, unknown>) => ReactCompatNode)(node.props),\n node.type,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = getHydrationChildOptions(options, node.type as Function);\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"function-component\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.0`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n const instanceKeys = collectInstanceKeys(runtime, path);\n fiber.stateNode = {\n element: node,\n props: node.props as Record<string, unknown>,\n instanceKeys,\n hasContextDependencies: hasContextDependency(runtime, instanceKeys),\n } satisfies FunctionFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n\n return { fiber: undefined, consumed: 0 };\n}\n\n// The host-component reconcile, split out of createHostFiberImpl so host\n// elements can be dispatched before the component-type checks. Only called with\n// a string element type.\nfunction createHostComponentFiber(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions,\n): FiberReconcileResult {\n if (typeof node.type !== \"string\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n const initialHostOnlyFiber = tryCreateInitialHostOnlyFiber(\n current,\n node,\n key,\n options,\n );\n if (initialHostOnlyFiber !== undefined) {\n return { fiber: initialHostOnlyFiber, consumed: 0 };\n }\n\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", node.type);\n const childNamespace = namespaceForHostChildren(elementNamespace, node.type);\n const reusableCurrent =\n current?.tag === \"host-component\" && current.type === node.type ? current : undefined;\n const fiber =\n reusableCurrent !== undefined\n ? createWorkInProgress(reusableCurrent, node.props)\n : createFiber(\"host-component\", node.props, key);\n // The hydration node bookkeeping only matters when hydrating. Skipping it for\n // the common (non-hydration) render avoids an isHostElement(undefined) probe\n // and the mismatch checks on every reconciled element.\n const existing = options.previousNodes?.[0];\n let existingElement: HostElement | undefined;\n let tagMatches = false;\n if (options.previousNodes !== undefined) {\n existingElement = isHostElement(existing) ? existing : undefined;\n tagMatches =\n existingElement !== undefined &&\n hostElementMatches(existingElement, node.type, elementNamespace);\n\n if (existing === undefined) {\n reportMissingHydrationNode(options, path);\n } else if (!isHostElement(existing)) {\n reportHydrationNodeTypeMismatch(options, path, `<${node.type}>`, existing);\n }\n\n if (existingElement !== undefined && !tagMatches) {\n reportRecoverable(\n options,\n \"tag\",\n path,\n new Error(\n `Hydration tag mismatch: expected <${node.type}> but found <${existingElement.tagName.toLowerCase()}>.`,\n ),\n );\n reportElementTextMismatch(options, `${path}.c`, existingElement, node.props.children);\n }\n }\n\n fiber.type = node.type;\n // When reusing a same-type current fiber, its stateNode was created for this\n // exact tag and namespace (same tree position), so the hostElementMatches\n // re-check (localName + namespaceURI reads) is redundant.\n fiber.stateNode =\n tagMatches\n ? existingElement\n : reusableCurrent !== undefined && isHostElement(reusableCurrent.stateNode)\n ? reusableCurrent.stateNode\n : createHostElement(getDocumentRef(options), node.type, options.namespace ?? \"html\");\n fiber.hydrateExisting = tagMatches;\n const previousChildNodes =\n tagMatches && existingElement !== undefined\n ? Array.from((existingElement as Element).childNodes)\n : undefined;\n const directTextChild =\n shouldUseDirectHostTextChild() && previousChildNodes === undefined\n ? getDirectHostTextChild(node.props.children)\n : undefined;\n if (\n previousChildNodes === undefined &&\n current?.tag === \"host-component\" &&\n current.type === node.type &&\n Object.is(hostFiberChildrenProp(current.memoizedProps), node.props.children) &&\n !hasDirtyInstance(runtime, [], `${path}.c`) &&\n canReuseStaticHostSubtree(current.child)\n ) {\n fiber.child = current.child;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n if (directTextChild !== undefined) {\n fiber.child = undefined;\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"host-component\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.c`,\n getHostChildFiberOptions(options, childNamespace, previousChildNodes),\n );\n fiber.child = childResult.fiber;\n if (previousChildNodes !== undefined) {\n reportExtraHydrationNodes(options, `${path}.c`, previousChildNodes, childResult.consumed);\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n}\n\nfunction isFunctionComponentType(value: unknown): value is (\n props: Record<string, unknown>,\n) => ReactCompatNode {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render !==\n \"function\"\n );\n}\n\nfunction tryCreateInitialHostOnlyFiber(\n current: Fiber | undefined,\n node: ReactCompatElement,\n key: string | undefined,\n options: FiberHydrationOptions,\n): Fiber | undefined {\n if (\n current !== undefined ||\n options.previousNodes !== undefined ||\n !shouldUseDirectHostTextChild() ||\n typeof node.type !== \"string\" ||\n !canCreateInitialHostOnlyNode(node)\n ) {\n return undefined;\n }\n\n return createInitialHostOnlyElementFiber(\n node,\n key,\n options.namespace ?? \"html\",\n getDocumentRef(options),\n );\n}\n\nfunction createInitialHostOnlyElementFiber(\n node: ReactCompatElement,\n key: string | undefined,\n namespace: HostNamespace,\n documentRef: Document | CustomHostDocument,\n): Fiber {\n const elementType = node.type as string;\n const elementNamespace = namespaceForHostElement(namespace, elementType);\n const childNamespace = namespaceForHostChildren(elementNamespace, elementType);\n const fiber = createFiber(\"host-component\", node.props, key);\n fiber.type = elementType;\n fiber.stateNode = createHostElement(documentRef, elementType, namespace);\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n\n if (getDirectHostTextChild(node.props.children) === undefined) {\n fiber.child = createInitialHostOnlyChildList(\n fiber,\n node.props.children as ReactCompatNode,\n childNamespace,\n documentRef,\n );\n }\n\n return fiber;\n}\n\nfunction createInitialHostOnlyChildList(\n parent: Fiber,\n children: ReactCompatNode,\n namespace: HostNamespace,\n documentRef: Document | CustomHostDocument,\n): Fiber | undefined {\n const normalized = normalizeChildren(children);\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n\n for (let index = 0; index < normalized.length; index += 1) {\n const child = normalized[index];\n const fiber = createInitialHostOnlyChildFiber(child, namespace, documentRef);\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.memoizedState = index;\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n bubbleHostChild(parent, fiber);\n previous = fiber;\n }\n\n return first;\n}\n\nfunction createInitialHostOnlyChildFiber(\n node: ReactCompatNode,\n namespace: HostNamespace,\n documentRef: Document | CustomHostDocument,\n): Fiber | undefined {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return undefined;\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const fiber = createFiber(\"host-text\", String(node));\n fiber.stateNode = createHostTextNode(documentRef);\n fiber.flags |= Placement;\n return fiber;\n }\n\n if (Array.isArray(node)) {\n const fiber = createFiber(\"fragment\", node);\n fiber.child = createInitialHostOnlyChildList(fiber, node, namespace, documentRef);\n return fiber.child === undefined ? undefined : fiber;\n }\n\n if (!isReactCompatElement(node) || typeof node.type !== \"string\") {\n return undefined;\n }\n\n return createInitialHostOnlyElementFiber(\n node,\n node.key === null ? undefined : node.key,\n namespace,\n documentRef,\n );\n}\n\nfunction canCreateInitialHostOnlyNode(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canCreateInitialHostOnlyNode);\n }\n\n if (\n !isReactCompatElement(node) ||\n typeof node.type !== \"string\" ||\n node.ref !== null ||\n hasInitialHostOnlyExcludedProps(node.props)\n ) {\n return false;\n }\n\n return canCreateInitialHostOnlyNode(node.props.children as ReactCompatNode);\n}\n\nfunction hasInitialHostOnlyExcludedProps(props: Record<string, unknown>): boolean {\n return (\n hasOwnProperty.call(props, REACTIVE_TEXT_BINDING_META) ||\n props.dangerouslySetInnerHTML !== undefined ||\n props.contentEditable === true ||\n props.suppressContentEditableWarning === true ||\n props.value !== undefined ||\n props.defaultValue !== undefined ||\n props.checked !== undefined ||\n props.defaultChecked !== undefined\n );\n}\n\nfunction getHostChildFiberOptions(\n options: FiberHydrationOptions,\n namespace: HostNamespace,\n previousNodes: readonly Node[] | undefined,\n): FiberHydrationOptions {\n const namespaceUnchanged =\n options.namespace === namespace ||\n (options.namespace === undefined && namespace === \"html\");\n\n if (previousNodes === undefined && namespaceUnchanged) {\n return options;\n }\n\n return {\n ...options,\n namespace,\n ...(previousNodes === undefined ? {} : { previousNodes }),\n };\n}\n\nfunction commitHostChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n const nodes: Node[] = [];\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options)) {\n nodes.push(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return nodes;\n}\n\nfunction commitHostDirtyChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n if (hasHostCommitWork(cursor)) {\n commitHostDirtyFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n}\n\nfunction commitHostDirtyChildrenOf(\n owner: Fiber,\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n const dirtyChildren = readDirtyChildCommitHints(owner);\n\n if (dirtyChildren === undefined) {\n commitHostDirtyChildren(fiber, parent, eventRoot, path, options);\n return;\n }\n\n for (let index = 0; index < dirtyChildren.length; index += 1) {\n const dirtyChild = dirtyChildren[index];\n\n if (dirtyChild !== undefined && hasHostCommitWork(dirtyChild)) {\n commitHostDirtyFiber(\n dirtyChild,\n parent,\n eventRoot,\n joinCommitPath(path, String(getDirtyChildCommitIndex(dirtyChild, index))),\n options,\n );\n }\n }\n owner.deletions = undefined;\n}\n\nfunction readDirtyChildCommitHints(fiber: Fiber): Fiber[] | undefined {\n return fiber.childListChanged ? undefined : fiber.deletions;\n}\n\nfunction getDirtyChildCommitIndex(fiber: Fiber, fallback: number): number {\n if (typeof fiber.memoizedState === \"number\") {\n return fiber.memoizedState;\n }\n\n return typeof fiber.stateNode === \"number\" ? fiber.stateNode : fallback;\n}\n\nfunction commitHostDirtyFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n if (fiber.tag === \"host-text\") {\n commitHostFiber(fiber, parent, eventRoot, path, options);\n return;\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return;\n }\n\n const isDomElement = isDomHostElement(element);\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (isDomElement && !propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n }\n\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(isDomElement && childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !(isDomElement && shouldPreserveContentEditableChildren(element, props, childNodes))\n ) {\n syncChildNodes(element as ParentNode, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildrenOf(fiber, fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n if (isDomElement && isFormHostType(fiber.type)) {\n applyPostChildFormProps(element, props, previousProps);\n }\n applyChangedRef(previousProps?.ref, props.ref, element);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (isPortalHostContainer(container)) {\n if (container instanceof Element) {\n setLogicalEventParent(container, parent);\n }\n const portalEventRoot =\n container instanceof Element && eventRoot !== container && eventRoot.contains(container)\n ? eventRoot\n : container instanceof Element\n ? container\n : eventRoot;\n const portalOptions = withPortalHostOptions(options, container);\n\n if (\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n (fiber.subtreeFlags & Placement) !== NoFlags\n ) {\n const childNodes = commitHostChildren(\n fiber.child,\n container as ParentNode,\n portalEventRoot,\n `${path}.portal`,\n portalOptions,\n );\n const previousNodes = committedHostNodesFromState(fiber.alternate?.memoizedState);\n syncOwnedChildNodes(container as ParentNode, previousNodes, childNodes);\n fiber.memoizedState = childNodes;\n } else {\n commitHostDirtyChildrenOf(\n fiber,\n fiber.child,\n container as ParentNode,\n portalEventRoot,\n `${path}.portal`,\n portalOptions,\n );\n }\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.tag === \"reactive-dom-block\") {\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildrenOf(fiber, fiber.child, parent, eventRoot, path, options);\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction hasHostCommitWork(fiber: Fiber): boolean {\n return (\n fiber.flags !== NoFlags ||\n fiber.subtreeFlags !== NoFlags ||\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting\n );\n}\n\nfunction commitHostKeyedChildListMutation(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n let cursor = fiber;\n let index = 0;\n let committed = false;\n\n while (cursor !== undefined) {\n if (!hasHostCommitWork(cursor)) {\n cursor = cursor.sibling;\n index += 1;\n continue;\n }\n\n const childPath = joinCommitPath(path, String(index));\n const didCommit = commitHostKeyedChildListMutationFiber(\n cursor,\n parent,\n eventRoot,\n childPath,\n options,\n );\n\n if (!didCommit) {\n return false;\n }\n\n committed = true;\n cursor = cursor.sibling;\n index += 1;\n }\n\n return committed;\n}\n\nfunction commitHostKeyedChildListMutationFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n if (fiber.tag === \"portal\") {\n commitHostDirtyFiber(fiber, parent, eventRoot, path, options);\n return true;\n }\n\n if (fiber.childListChanged) {\n const mutationParent =\n fiber.tag === \"host-component\" && isHostElement(fiber.stateNode)\n ? fiber.stateNode\n : parent;\n\n if (fiber.tag === \"host-component\" && !isHostElement(fiber.stateNode)) {\n return false;\n }\n\n if (commitHostAppendSuffix(fiber, mutationParent, eventRoot, path, options)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (commitHostSingleRemoval(fiber, mutationParent)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n return false;\n }\n\n if (fiber.subtreeChildListChanged) {\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n return false;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, element, eventRoot, `${path}.c`, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, parent, eventRoot, path, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n commitHostDirtyFiber(fiber, parent, eventRoot, path, options);\n return true;\n}\n\nfunction commitHostAppendSuffix(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions,\n): boolean {\n const appendHint = readAppendSuffixCommitHint(fiber.memoizedState);\n const append = appendHint ?? getAppendSuffix(fiber.alternate?.child, fiber.child);\n\n if (append === undefined) {\n return false;\n }\n\n if (appendHint !== undefined) {\n fiber.memoizedState = undefined;\n }\n\n let cursor: Fiber | undefined = append.fiber;\n let index = append.index;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(\n cursor,\n parent,\n eventRoot,\n joinCommitPath(path, String(index)),\n options,\n )) {\n parent.appendChild(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return true;\n}\n\nfunction readAppendSuffixCommitHint(value: unknown): AppendSuffixCommitHint | undefined {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const candidate = value as Partial<AppendSuffixCommitHint>;\n return candidate.fiber !== undefined && typeof candidate.index === \"number\"\n ? { fiber: candidate.fiber, index: candidate.index }\n : undefined;\n}\n\nfunction commitHostSingleRemoval(fiber: Fiber, parent: ParentNode): boolean {\n const removed =\n fiber.deletions?.length === 1\n ? fiber.deletions[0]\n : getSingleRemovedFiber(fiber.alternate?.child, fiber.child);\n\n if (removed === undefined) {\n return false;\n }\n\n let removedAny = false;\n\n for (const node of collectCommittedHostNodes(removed)) {\n if (node.parentNode !== parent) {\n return false;\n }\n\n parent.removeChild(node);\n removedAny = true;\n }\n\n if (removedAny) {\n disposeHostFiberResources(removed);\n fiber.deletions = undefined;\n }\n\n return removedAny;\n}\n\nfunction getAppendSuffix(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): { fiber: Fiber; index: number } | undefined {\n let currentCursor = current;\n let nextCursor = next;\n let index = 0;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n index += 1;\n }\n\n if (currentCursor !== undefined || nextCursor === undefined) {\n return undefined;\n }\n\n return { fiber: nextCursor, index };\n}\n\nfunction getSingleRemovedFiber(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): Fiber | undefined {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor)) {\n break;\n }\n\n if (hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n if (currentCursor === undefined) {\n return undefined;\n }\n\n const removed = currentCursor;\n currentCursor = currentCursor.sibling;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor === undefined && nextCursor === undefined ? removed : undefined;\n}\n\nfunction isSameFiberSlot(current: Fiber, next: Fiber): boolean {\n return (\n (next === current || next.alternate === current) &&\n current.tag === next.tag &&\n current.type === next.type &&\n current.key === next.key\n );\n}\n\nfunction collectCommittedHostNodes(fiber: Fiber): Node[] {\n if (fiber.tag === \"reactive-dom-block\") {\n const node = getReactiveDomBlockNode(fiber.stateNode);\n return node === undefined ? [] : [node];\n }\n\n if (\n (fiber.tag === \"host-component\" || fiber.tag === \"host-text\") &&\n fiber.stateNode instanceof Node\n ) {\n return [fiber.stateNode];\n }\n\n const nodes: Node[] = [];\n let child = fiber.child;\n\n while (child !== undefined) {\n nodes.push(...collectCommittedHostNodes(child));\n child = child.sibling;\n }\n\n return nodes;\n}\n\nfunction hasCommittedHostNode(fiber: Fiber): boolean {\n if (fiber.tag === \"reactive-dom-block\") {\n return getReactiveDomBlockNode(fiber.stateNode) !== undefined;\n }\n\n if (\n (fiber.tag === \"host-component\" || fiber.tag === \"host-text\") &&\n fiber.stateNode instanceof Node\n ) {\n return true;\n }\n\n let child = fiber.child;\n\n while (child !== undefined) {\n if (hasCommittedHostNode(child)) {\n return true;\n }\n child = child.sibling;\n }\n\n return false;\n}\n\nfunction getSkippedChild(current: Fiber | undefined): Fiber | undefined {\n const child = current?.child;\n const alternateChild = current?.alternate?.child;\n\n if (\n child !== undefined &&\n alternateChild !== undefined &&\n !hasCommittedHostNode(child) &&\n hasCommittedHostNode(alternateChild)\n ) {\n return alternateChild;\n }\n\n return child;\n}\n\nfunction finishHostPassthroughFiber(fiber: Fiber): void {\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction commitHostFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n if (fiber.tag === \"host-text\") {\n const text = fiber.stateNode;\n\n if (!(text instanceof Text)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n const nextText = String(fiber.pendingProps);\n if (text.data !== nextText) {\n text.data = nextText;\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [text];\n }\n\n if (fiber.tag === \"reactive-dom-block\") {\n const node = getReactiveDomBlockNode(fiber.stateNode);\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return node === undefined ? [] : [node];\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n if (\n fiber.hydrateExisting !== true &&\n fiber.flags === NoFlags &&\n fiber.subtreeFlags === NoFlags &&\n fiber.hostChildListChanged !== true &&\n fiber.childListChanged !== true &&\n fiber.subtreeChildListChanged !== true\n ) {\n fiber.memoizedProps = fiber.pendingProps;\n return [element];\n }\n\n const isDomElement = isDomHostElement(element);\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (isDomElement && !propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n }\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting === true ||\n (fiber.subtreeFlags & Placement) !== NoFlags\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(isDomElement && childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !(isDomElement && shouldPreserveContentEditableChildren(element, props, childNodes))\n ) {\n syncChildNodes(element as ParentNode, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n if (isDomElement && isFormHostType(fiber.type)) {\n applyPostChildFormProps(element, props, previousProps);\n }\n applyChangedRef(previousProps?.ref, props.ref, element);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return [element];\n }\n\n if (fiber.tag === \"fragment\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.f`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"profiler\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.profiler`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"strict-mode\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.strict`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.s`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense-list\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.sl`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"context-provider\" || fiber.tag === \"context-consumer\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.ctx`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"function-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fc`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"forward-ref\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fr`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"memo\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.memo`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"lazy\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.lazy`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"error-boundary\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.eb`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"class-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.class`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (!isPortalHostContainer(container)) {\n return [];\n }\n\n if (container instanceof Element) {\n setLogicalEventParent(container, parent);\n committedPortalContainers.add(container);\n }\n const portalEventRoot =\n container instanceof Element && eventRoot !== container && eventRoot.contains(container)\n ? eventRoot\n : container instanceof Element\n ? container\n : eventRoot;\n const portalOptions = withPortalHostOptions(options, container);\n const childNodes = commitHostChildren(\n fiber.child,\n container as ParentNode,\n portalEventRoot,\n `${path}.portal`,\n portalOptions,\n );\n const previousNodes = committedHostNodesFromState(fiber.alternate?.memoizedState);\n syncOwnedChildNodes(container as ParentNode, previousNodes, childNodes);\n fiber.memoizedState = childNodes;\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [];\n }\n\n finishCommittedFiber(fiber);\n return [];\n}\n\nfunction finishCommittedFiber(fiber: Fiber): void {\n fiber.flags = NoFlags;\n fiber.subtreeFlags = NoFlags;\n fiber.childListChanged = false;\n fiber.subtreeChildListChanged = false;\n fiber.hostChildListChanged = false;\n}\n\nfunction getReactiveDomBlockNode(state: unknown): ChildNode | undefined {\n if (\n typeof state === \"object\" &&\n state !== null &&\n \"node\" in state &&\n (state as { node?: unknown }).node instanceof Node\n ) {\n return (state as { node: ChildNode }).node;\n }\n\n return undefined;\n}\n\nfunction disposeReactiveDomBlockState(\n state: unknown,\n seen: Set<unknown>,\n): void {\n if (typeof state !== \"object\" || state === null || seen.has(state)) {\n return;\n }\n\n seen.add(state);\n const dispose = (state as { dispose?: unknown }).dispose;\n\n if (typeof dispose === \"function\") {\n dispose();\n (state as { dispose?: unknown }).dispose = undefined;\n }\n}\n\nfunction hasChildListMutation(fiber: Fiber): boolean {\n return fiber.childListChanged || fiber.subtreeChildListChanged;\n}\n\nfunction hostPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key)) {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key)) {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostOwnPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key) || key === \"children\") {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key) && key !== \"children\") {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostDirectTextChildChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previous));\n const nextText = getDirectHostTextChild(next.children);\n\n return (previousText !== undefined || nextText !== undefined) && previousText !== nextText;\n}\n\nfunction hostChildListChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousChildren = hostFiberChildrenProp(previous);\n const nextChildren = next.children;\n\n if (Object.is(previousChildren, nextChildren)) {\n return false;\n }\n\n if (\n getDirectHostTextChild(previousChildren) !== undefined ||\n getDirectHostTextChild(nextChildren) !== undefined\n ) {\n return false;\n }\n\n if (sameSingleHostChild(previousChildren, nextChildren)) {\n return false;\n }\n\n if (sameHostChildList(previousChildren, nextChildren)) {\n return false;\n }\n\n return true;\n}\n\nfunction sameSingleHostChild(previous: unknown, next: unknown): boolean {\n return (\n isReactCompatElement(previous) &&\n isReactCompatElement(next) &&\n previous.key === next.key &&\n previous.type === next.type\n );\n}\n\nfunction sameHostChildList(previous: unknown, next: unknown): boolean {\n if (!Array.isArray(previous) || !Array.isArray(next) || previous.length !== next.length) {\n return false;\n }\n\n for (let index = 0; index < previous.length; index += 1) {\n const previousChild = previous[index];\n const nextChild = next[index];\n\n if (Object.is(previousChild, nextChild)) {\n continue;\n }\n\n if (!sameSingleHostChild(previousChild, nextChild)) {\n return false;\n }\n }\n\n return (\n previous.length > 0 ||\n (Array.isArray(previous) && Array.isArray(next))\n );\n}\n\nfunction hostPropsAreChildrenOnly(props: unknown): boolean {\n if (typeof props !== \"object\" || props === null) {\n return false;\n }\n\n for (const key in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, key) &&\n key !== \"children\"\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction hostPropsAreKnownChildrenOnly(props: unknown): boolean {\n return (\n typeof props === \"object\" &&\n props !== null &&\n (props as { [HOST_CHILDREN_ONLY_PROPS_META]?: true })[\n HOST_CHILDREN_ONLY_PROPS_META\n ] === true\n );\n}\n\nfunction isRowTextOnlyUpdate(previous: unknown, next: Record<string, unknown>): boolean {\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n const previousText = getDirectHostTextChild(previousProps.children);\n const nextText = getDirectHostTextChild(next.children);\n\n return (\n previousText !== undefined &&\n nextText !== undefined &&\n previousText !== nextText &&\n hostOwnPropsEqual(previousProps, next)\n );\n}\n\nfunction hostFiberChildrenProp(props: unknown): unknown {\n return typeof props === \"object\" && props !== null\n ? (props as { children?: unknown }).children\n : undefined;\n}\n\nfunction getDirectHostTextChild(children: unknown): string | undefined {\n return typeof children === \"string\" || typeof children === \"number\"\n ? String(children)\n : undefined;\n}\n\n// Only these host tags carry post-child form value/checked semantics. Gating on\n// the (cheap, already-known) type string lets the commit skip applyPostChildFormProps\n// and its instanceof probes for every other element.\nfunction isFormHostType(type: unknown): boolean {\n return type === \"input\" || type === \"textarea\" || type === \"select\";\n}\n\n// This package has no Node type dependency; declare the minimal process\n// shape needed for the literal process.env.NODE_ENV expression below.\ndeclare const process: { env: Record<string, string | undefined> };\n\ntype HostFastPathMode = \"static-fast\" | \"dynamic\";\n\nconst hostFastPathMode: HostFastPathMode = (() => {\n try {\n // The literal process.env.NODE_ENV member expression is what bundler\n // define rewriting matches; a globalThis.process indirection is never\n // rewritten and leaves deployed browser bundles without any fast path.\n return process.env.NODE_ENV === \"production\" ? \"static-fast\" : \"dynamic\";\n } catch {\n // No process global at all: an unbundled browser runtime. Treat it as\n // production rather than running every host update on the slow path.\n return \"static-fast\";\n }\n})();\n\nfunction shouldUseDirectHostTextChild(): boolean {\n if (hostFastPathMode === \"static-fast\") {\n return true;\n }\n\n // Node dev/test environments keep the per-call env read so test harnesses\n // can flip NODE_ENV (vi.stubEnv) without re-importing this module.\n return process.env.NODE_ENV === \"production\";\n}\n\nfunction syncDirectHostTextChild(element: Element, text: string): Text {\n const firstChild = element.firstChild;\n\n if (firstChild instanceof Text && firstChild.nextSibling === null) {\n if (firstChild.data !== text) {\n firstChild.data = text;\n }\n return firstChild;\n }\n\n element.textContent = text;\n const nextFirstChild = element.firstChild;\n\n if (!(nextFirstChild instanceof Text)) {\n const textNode = document.createTextNode(text);\n element.replaceChildren(textNode);\n return textNode;\n }\n\n return nextFirstChild;\n}\n\nfunction subscribeReactiveHostTextBinding(\n props: Record<string, unknown>,\n text: Text,\n): void {\n subscribeReactiveTextBinding(\n (props as Record<PropertyKey, unknown>)[REACTIVE_TEXT_BINDING_META],\n text,\n );\n}\n\nfunction shouldPreserveContentEditableChildren(\n element: Element,\n props: Record<string, unknown>,\n childNodes: readonly Node[],\n): boolean {\n void childNodes;\n\n if (\n !element.hasAttribute(\"contenteditable\") ||\n element.getAttribute(\"contenteditable\") === \"false\"\n ) {\n return false;\n }\n\n const children = props.children;\n return (\n children === undefined ||\n children === null ||\n children === false ||\n (Array.isArray(children) && children.length === 0)\n );\n}\n\nfunction createSuspenseFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const boundary = findReactSuspenseBoundary(options.previousNodes ?? []);\n if (boundary?.serverError !== undefined) {\n reportReactSuspenseServerError(\n options,\n path,\n boundary.serverError.message,\n boundary.serverError.componentStack,\n );\n }\n const { previousNodes: _previousNodes, ...optionsWithoutPreviousNodes } = options;\n const boundaryOptions =\n boundary === undefined\n ? options\n : boundary.serverError === undefined\n ? boundary.previousNodes === undefined\n ? optionsWithoutPreviousNodes\n : { ...options, previousNodes: boundary.previousNodes }\n : optionsWithoutPreviousNodes;\n const fiber =\n current?.tag === \"suspense\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense\", element.props, key);\n fiber.type = element.type;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n\n try {\n suspensePrimaryRenderDepth += 1;\n let childResult: FiberReconcileResult;\n\n try {\n childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.s`,\n boundaryOptions,\n );\n } finally {\n suspensePrimaryRenderDepth -= 1;\n }\n\n fiber.child = childResult.fiber;\n fiber.memoizedState = { didSuspend: false } satisfies SuspenseFiberState;\n } catch (error) {\n if (!isThenable(error)) {\n throw error;\n }\n\n restoreRuntimeSnapshot(runtime, snapshot);\n error.then(\n () => runtime.rerender(),\n () => runtime.rerender(),\n );\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.fallback as ReactCompatNode,\n runtime,\n `${path}.fallback`,\n boundaryOptions,\n );\n fiber.child = fallbackResult.fiber;\n fiber.memoizedState = { didSuspend: true } satisfies SuspenseFiberState;\n }\n\n return {\n fiber,\n consumed: boundary?.consumed ?? options.previousNodes?.length ?? 0,\n };\n}\n\nfunction createStrictModeFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"strict-mode\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"strict-mode\", element.props, key);\n fiber.type = element.type;\n\n const { result: childResult, memoValues, memoValuesByHook } = renderWithStrictModeMemoCapture(\n runtime,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"strict-mode\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n try {\n renderStrictModeReplay(\n runtime,\n memoValues,\n memoValuesByHook,\n () =>\n reconcileHostChild(\n fiber,\n childResult.fiber,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: [] },\n ),\n );\n } finally {\n restoreRuntimeSnapshot(runtime, snapshot);\n }\n\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction createSuspenseListFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"suspense-list\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense-list\", element.props, key);\n fiber.type = element.type;\n const children = normalizeChildren(element.props.children as ReactCompatNode);\n const revealOrder = element.props.revealOrder;\n\n if (revealOrder === \"forwards\") {\n const childResult = reconcileSuspenseListForwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else if (revealOrder === \"backwards\") {\n const childResult = reconcileSuspenseListBackwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n `${path}.sl`,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n}\n\nfunction reconcileSuspenseListForwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let currentUnkeyed = currentFirstChild;\n\n for (const [index, child] of children.entries()) {\n const key = getNodeKey(child);\n const current = key === undefined ? currentUnkeyed : currentByKey.get(key);\n const childOptions =\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) };\n const result = createHostFiber(\n parent,\n current,\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n childOptions,\n );\n const fiber = result.fiber;\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n previous = fiber;\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileSuspenseListBackwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n const fibers: Fiber[] = [];\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let consumed = 0;\n\n for (let index = children.length - 1; index >= 0; index -= 1) {\n const child = children[index] as ReactCompatNode;\n const key = getNodeKey(child);\n const result = createHostFiber(\n parent,\n key === undefined ? undefined : currentByKey.get(key),\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) },\n );\n const fiber = result.fiber;\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n fibers.unshift(fiber);\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: linkFiberSiblings(fibers), consumed };\n}\n\nfunction linkFiberSiblings(fibers: readonly Fiber[]): Fiber | undefined {\n let previous: Fiber | undefined;\n\n for (const fiber of fibers) {\n if (previous !== undefined) {\n previous.sibling = fiber;\n }\n previous = fiber;\n }\n\n return fibers[0];\n}\n\nfunction hasSuspendedChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction hasPendingAsyncChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isPendingLazyFiber(cursor) || isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n if (cursor.child !== undefined && hasPendingAsyncChild(cursor.child)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction tryReuseMemoBailout(\n current: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions,\n canReuseCurrentFiber = true,\n): FiberReconcileResult | undefined {\n if (\n current?.tag !== \"memo\" ||\n runtime === undefined ||\n !isReactCompatElement(node) ||\n node.type !== current.type ||\n !isMemoType(node.type)\n ) {\n return undefined;\n }\n\n const previousMemoState = current.memoizedState as MemoFiberState | undefined;\n const memoPath = `${path}.memo`;\n\n if (\n previousMemoState === undefined ||\n (\n memoStateNeedsDirtyInstanceCheck(previousMemoState) &&\n hasDirtyInstance(runtime, previousMemoState.instanceKeys, memoPath)\n ) ||\n (\n memoStateNeedsEffectCheck(previousMemoState) &&\n hasUnflushedMountEffectInstance(runtime, previousMemoState.instanceKeys)\n ) ||\n !areMemoPropsEqual(node.type, previousMemoState.props, node.props)\n ) {\n return undefined;\n }\n\n if (memoStateNeedsActiveInstanceMark(previousMemoState)) {\n markActiveInstanceKeys(runtime, previousMemoState.instanceKeys);\n }\n\n const fiber =\n canReuseCurrentFiber &&\n current.hasRefSubtree !== true &&\n current.hasDisposableResources !== true &&\n current.hydrateExisting !== true\n ? current\n : createWorkInProgress(current, node.props);\n\n if (fiber === current) {\n current.pendingProps = node.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n }\n fiber.type = node.type;\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = previousMemoState;\n return {\n fiber,\n consumed: options.previousNodes?.length ?? 0,\n };\n}\n\nfunction tryReuseDependencyFreeMemoBailout(\n current: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n options: FiberHydrationOptions,\n canReuseCurrentFiber: boolean,\n): FiberReconcileResult | undefined {\n if (\n options.previousNodes !== undefined ||\n current?.tag !== \"memo\" ||\n runtime === undefined ||\n !isReactCompatElement(node) ||\n node.type !== current.type ||\n !isMemoType(node.type)\n ) {\n return undefined;\n }\n\n const previousMemoState = current.memoizedState as MemoFiberState | undefined;\n\n if (\n previousMemoState === undefined ||\n previousMemoState.hasDirtyInstanceDependencies !== false ||\n previousMemoState.hasUnflushedEffectDependencies !== false ||\n previousMemoState.hasRetainedInstanceDependencies !== false ||\n !areMemoPropsEqual(node.type, previousMemoState.props, node.props)\n ) {\n return undefined;\n }\n\n const fiber = getMemoBailoutFiber(\n runtime,\n current,\n node.props,\n previousMemoState,\n canReuseCurrentFiber,\n );\n fiber.type = node.type;\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = previousMemoState;\n return {\n fiber,\n consumed: 0,\n };\n}\n\nfunction isPendingLazyFiber(fiber: Fiber): boolean {\n if (fiber.tag !== \"lazy\" || !isLazyType(fiber.type)) {\n return false;\n }\n\n return fiber.type.status !== \"resolved\" || fiber.child === undefined;\n}\n\nfunction isSuspendedSuspenseFiber(fiber: Fiber): boolean {\n return (\n fiber.tag === \"suspense\" &&\n (fiber.memoizedState as SuspenseFiberState | undefined)?.didSuspend === true\n );\n}\n\nfunction findReactSuspenseBoundary(\n previousNodes: readonly Node[],\n): ReactSuspenseBoundary | undefined {\n const startIndex = previousNodes.findIndex(isReactSuspenseStartComment);\n\n if (startIndex < 0) {\n return undefined;\n }\n\n let depth = 0;\n\n for (let index = startIndex; index < previousNodes.length; index += 1) {\n const node = previousNodes[index];\n\n if (isReactSuspenseStartComment(node)) {\n depth += 1;\n continue;\n }\n\n if (isReactSuspenseEndComment(node)) {\n depth -= 1;\n\n if (depth === 0) {\n const start = previousNodes[startIndex] as Comment;\n const boundaryNodes = previousNodes.slice(startIndex + 1, index);\n const boundary: ReactSuspenseBoundary = {\n consumed: index - startIndex + 1,\n ...readReactSuspenseServerError(start, boundaryNodes),\n };\n\n if (!isReactSuspenseErrorStartComment(start)) {\n boundary.previousNodes = isReactSuspensePendingStartComment(start)\n ? removeReactSuspensePendingTemplate(boundaryNodes)\n : boundaryNodes;\n }\n\n return boundary;\n }\n }\n }\n\n return undefined;\n}\n\nfunction isReactSuspenseStartComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && reactSuspenseStartComments.has(node.data);\n}\n\nfunction isReactSuspensePendingStartComment(node: Comment): boolean {\n return node.data === \"$?\" || node.data === \"$!\";\n}\n\nfunction isReactSuspenseErrorStartComment(node: Comment): boolean {\n return node.data === \"$!\";\n}\n\nfunction isReactSuspenseEndComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && node.data === \"/$\";\n}\n\nfunction removeReactSuspensePendingTemplate(nodes: readonly Node[]): Node[] {\n const [firstNode, ...remainingNodes] = nodes;\n\n return firstNode instanceof HTMLTemplateElement\n ? remainingNodes\n : [...nodes];\n}\n\nconst reactSuspenseStartComments = new Set([\"$\", \"$?\", \"$!\"]);\n\nfunction readReactSuspenseServerError(\n start: Comment,\n boundaryNodes: readonly Node[],\n): { serverError: { message: string; componentStack?: string } } | {} {\n if (start.data !== \"$!\") {\n return {};\n }\n\n const template = boundaryNodes[0];\n const message =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-msg\")\n : null;\n const componentStack =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-stck\")\n : null;\n\n return {\n serverError: {\n message: message ?? \"React Suspense server rendering error.\",\n ...(componentStack === null ? {} : { componentStack }),\n },\n };\n}\n\nfunction createPortalFiber(\n parent: Fiber,\n current: Fiber | undefined,\n portal: ReactCompatPortal,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n runtime.portalContainers.add(portal.container);\n const fiber =\n current?.tag === \"portal\" && current.stateNode === portal.container\n ? createWorkInProgress(current, portal.children)\n : createFiber(\"portal\", portal.children, key);\n fiber.stateNode = portal.container;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"portal\" ? current.child : undefined,\n portal.children,\n runtime,\n `${path}.portal`,\n {\n ...options,\n documentRef: portal.container.ownerDocument,\n namespace: namespaceForPortalContainer(portal.container),\n },\n );\n fiber.child = childResult.fiber;\n fiber.return = parent;\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction normalizeChildren(node: ReactCompatNode): ReactCompatNode[] {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return [];\n }\n\n return Array.isArray(node) ? node : [node];\n}\n\nfunction getDocumentRef(options: FiberHydrationOptions): Document | CustomHostDocument {\n return options.documentRef ?? document;\n}\n\nfunction createHostTextNode(documentRef: Document | CustomHostDocument): Text {\n if (\"createTextNode\" in documentRef && typeof documentRef.createTextNode === \"function\") {\n return documentRef.createTextNode(\"\");\n }\n\n return document.createTextNode(\"\");\n}\n\nfunction collectExistingKeyedFibers(\n firstChild: Fiber | undefined,\n): Map<string, Fiber> {\n const keyed = new Map<string, Fiber>();\n let cursor = firstChild;\n\n while (cursor !== undefined) {\n if (cursor.key !== undefined) {\n keyed.set(cursor.key, cursor);\n }\n\n cursor = cursor.sibling;\n }\n\n return keyed;\n}\n\nfunction getNodeKey(node: ReactCompatNode): string | undefined {\n return isReactCompatElement(node) && node.key !== null ? node.key : undefined;\n}\n\nfunction hasKeyedChild(children: readonly ReactCompatNode[]): boolean {\n for (const child of children) {\n if (getNodeKey(child) !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getNodePathSegment(node: ReactCompatNode, index: number): string {\n const key = getNodeKey(node);\n return key === undefined ? String(index) : `k:${key}`;\n}\n\nfunction getReconcileChildPath(\n path: string,\n node: ReactCompatNode,\n index: number,\n options: FiberHydrationOptions,\n): string {\n if (!shouldTrackReconcilePath(node, options)) {\n return \"\";\n }\n\n return joinPath(path, getNodePathSegment(node, index));\n}\n\nfunction shouldTrackReconcilePath(\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n if (\n options.previousNodes !== undefined ||\n options.hydration?.onRecoverableError !== undefined ||\n options.resumeId !== undefined\n ) {\n return true;\n }\n\n return !isHostElementWithDirectTextChild(node);\n}\n\nfunction isHostElementWithDirectTextChild(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n typeof node.type === \"string\" &&\n getDirectHostTextChild(node.props.children) !== undefined\n );\n}\n\nfunction getRootCommitPath(options: RenderOptions): string {\n return options.hydration?.onRecoverableError === undefined ? SKIP_COMMIT_PATH : \"0\";\n}\n\nfunction joinCommitPath(path: string, segment: string): string {\n return path === SKIP_COMMIT_PATH ? \"\" : joinPath(path, segment);\n}\n\nfunction getHydrationChildOptions(\n options: FiberHydrationOptions,\n component: Function,\n): FiberHydrationOptions {\n return options.hydration === undefined\n ? options\n : withHydrationComponentStack(options, getComponentName(component));\n}\n\nfunction getComponentName(component: Function): string {\n return component.name === \"\" ? \"Anonymous\" : component.name;\n}\n\nfunction joinPath(path: string, segment: string): string {\n return path === \"\" ? segment : `${path}.${segment}`;\n}\n\nfunction isForwardRefType(\n value: unknown,\n): value is {\n $$typeof: typeof FORWARD_REF_TYPE;\n render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n value: unknown,\n): value is {\n $$typeof: typeof MEMO_TYPE;\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction isLazyType(\n value: unknown,\n): value is {\n $$typeof: typeof LAZY_TYPE;\n load: () => Promise<{ default: ReactCompatElement[\"type\"] }>;\n status: \"uninitialized\" | \"pending\" | \"resolved\" | \"rejected\";\n promise?: Promise<void>;\n resolved?: ReactCompatElement[\"type\"];\n error?: unknown;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction collectInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return collectRuntimeInstanceKeys(runtime, prefix);\n}\n\nfunction collectMemoInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return readDependencyFreeMemoInstanceKey(runtime, prefix) === undefined\n ? collectInstanceKeys(runtime, prefix)\n : emptyInstanceKeys;\n}\n\nfunction readDependencyFreeMemoInstanceKey(\n runtime: RootRuntime,\n prefix: string,\n): string | undefined {\n const keys = runtime.instanceKeysByPrefix.get(prefix);\n\n if (keys === undefined || keys.size !== 1 || !keys.has(prefix)) {\n return undefined;\n }\n\n const instance = runtime.instances.get(prefix) as RuntimeInstanceLike | undefined;\n\n if (\n instance === undefined ||\n instance.contextDependencies !== undefined ||\n (instance.hooks !== undefined && instance.hooks.length > 0)\n ) {\n return undefined;\n }\n\n return prefix;\n}\n\nfunction markActiveInstanceKeys(runtime: RootRuntime, keys: readonly string[]): void {\n for (const key of keys) {\n runtime.activeInstanceKeys?.add(key);\n }\n}\n\ntype RuntimeHookSlotLike = {\n kind?: string;\n};\n\ntype RuntimeEffectHookSlotLike = RuntimeHookSlotLike & {\n mounted?: boolean;\n disposed?: boolean;\n};\n\ninterface RuntimeInstanceLike {\n hooks?: readonly (RuntimeHookSlotLike | undefined)[];\n contextDependencies?: unknown;\n}\n\nfunction memoStateNeedsDirtyInstanceCheck(state: MemoFiberState): boolean {\n return state.hasDirtyInstanceDependencies !== false;\n}\n\nfunction memoStateNeedsEffectCheck(state: MemoFiberState): boolean {\n return state.hasUnflushedEffectDependencies !== false;\n}\n\nfunction memoStateNeedsActiveInstanceMark(state: MemoFiberState): boolean {\n return state.hasRetainedInstanceDependencies !== false;\n}\n\nfunction getMemoBailoutFiber(\n runtime: RootRuntime,\n current: Fiber,\n pendingProps: unknown,\n state: MemoFiberState,\n canReuseCurrentFiber: boolean,\n): Fiber {\n if (memoStateNeedsActiveInstanceMark(state)) {\n markActiveInstanceKeys(runtime, state.instanceKeys);\n }\n\n if (canReuseCurrentFiber && canReuseMemoBailoutFiber(current, state)) {\n current.pendingProps = pendingProps;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n return current;\n }\n\n const fiber = createWorkInProgress(current, pendingProps);\n return fiber;\n}\n\nfunction canReuseMemoBailoutFiber(current: Fiber, state: MemoFiberState): boolean {\n return (\n state.hasRetainedInstanceDependencies === false &&\n current.hasRefSubtree !== true &&\n current.hasDisposableResources !== true &&\n current.hydrateExisting !== true\n );\n}\n\nfunction hasDirtyInstanceDependencies(\n runtime: RootRuntime,\n keys: readonly string[],\n): boolean {\n for (const key of keys) {\n const instance = runtime.instances.get(key) as RuntimeInstanceLike | undefined;\n\n if (instance === undefined || instance.contextDependencies !== undefined) {\n return true;\n }\n\n if (instance.hooks?.some(isDirtyCapableHookSlot) === true) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasRetainedInstanceDependencies(\n runtime: RootRuntime,\n keys: readonly string[],\n): boolean {\n for (const key of keys) {\n const instance = runtime.instances.get(key) as RuntimeInstanceLike | undefined;\n\n if (instance === undefined || instance.contextDependencies !== undefined) {\n return true;\n }\n\n if (instance.hooks !== undefined && instance.hooks.length > 0) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isDirtyCapableHookSlot(slot: RuntimeHookSlotLike | undefined): boolean {\n if (slot === undefined) {\n return false;\n }\n\n return (\n slot.kind !== \"ref\" &&\n slot.kind !== \"memo\" &&\n slot.kind !== \"debug\" &&\n slot.kind !== \"effect\"\n );\n}\n\nfunction hasUnflushedEffectDependencies(\n runtime: RootRuntime,\n keys: readonly string[],\n): boolean {\n for (const key of keys) {\n const instance = runtime.instances.get(key) as RuntimeInstanceLike | undefined;\n\n if (instance === undefined) {\n return true;\n }\n\n if (instance.hooks?.some((slot) => slot?.kind === \"effect\") === true) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasClassComponentDescendant(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (cursor.tag === \"class-component\") {\n return true;\n }\n\n if (hasClassComponentDescendant(cursor.child)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction hasDirtyInstance(\n runtime: RootRuntime | undefined,\n keys: readonly string[],\n prefix?: string,\n): boolean {\n if (runtime === undefined) {\n return false;\n }\n\n if (hasDirtyClassUpdate(runtime, keys, prefix)) {\n return true;\n }\n\n if (keys.length === 0) {\n return false;\n }\n\n if (keys.some(\n (key) =>\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty === true,\n )) {\n return true;\n }\n\n if (prefix === undefined) {\n return false;\n }\n\n // Resolve dirty descendants through the prefix index instead of scanning\n // every runtime instance. The previous full-map scan made memo/function\n // bailout O(total instances) per node, i.e. O(n^2) for large keyed lists\n // (js-framework-benchmark update-every-10th / select). The index is the same\n // source of truth used by collectRuntimeInstanceKeys.\n const keysUnderPrefix = runtime.instanceKeysByPrefix.get(prefix);\n\n if (keysUnderPrefix !== undefined) {\n for (const key of keysUnderPrefix) {\n if (\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty ===\n true\n ) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction hasUnflushedMountEffectInstance(runtime: RootRuntime, keys: readonly string[]): boolean {\n return keys.some((key) => {\n const instance = runtime.instances.get(key) as\n | { hooks?: readonly (RuntimeEffectHookSlotLike | undefined)[] }\n | undefined;\n\n return instance?.hooks?.some(\n (slot) =>\n slot?.kind === \"effect\" &&\n slot.disposed !== true &&\n slot.mounted !== true,\n ) === true;\n });\n}\n\nfunction applyRef(ref: unknown, node: unknown): void {\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = node;\n }\n}\n\nfunction applyChangedRef(previousRef: unknown, nextRef: unknown, node: unknown): void {\n if (Object.is(previousRef, nextRef)) {\n return;\n }\n\n queueHostRefUpdate(previousRef, null);\n queueHostRefUpdate(nextRef, node);\n}\n\nfunction queueHostRefUpdate(ref: unknown, node: unknown): void {\n if (ref === null || ref === undefined) {\n return;\n }\n\n pendingHostRefUpdates.push({ ref, node });\n}\n\nfunction flushPendingHostRefUpdates(): void {\n const pending = pendingHostRefUpdates.splice(0);\n for (const { ref, node } of pending) {\n applyRef(ref, node);\n }\n}\n\nfunction isPortalHostContainer(value: unknown): value is ParentNode {\n if (value instanceof Element) {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as Partial<ParentNode> & {\n ownerDocument?: { createElement?: unknown };\n };\n return (\n typeof candidate.appendChild === \"function\" &&\n typeof candidate.insertBefore === \"function\" &&\n typeof candidate.removeChild === \"function\" &&\n typeof candidate.ownerDocument?.createElement === \"function\"\n );\n}\n\nfunction withPortalHostOptions(\n options: RenderOptions,\n container: ParentNode,\n): RenderOptions & { documentRef?: Document | CustomHostDocument; namespace: HostNamespace } {\n const namespace = namespaceForPortalContainer(container);\n const ownerDocument = (container as { ownerDocument?: unknown }).ownerDocument;\n if (\n typeof ownerDocument === \"object\" &&\n ownerDocument !== null &&\n typeof (ownerDocument as { createElement?: unknown }).createElement === \"function\"\n ) {\n return {\n ...options,\n documentRef: ownerDocument as Document | CustomHostDocument,\n namespace,\n };\n }\n\n return { ...options, namespace };\n}\n\nfunction namespaceForPortalContainer(container: ParentNode): HostNamespace {\n if (container instanceof SVGElement && container.localName !== \"foreignObject\") {\n return \"svg\";\n }\n\n return \"html\";\n}\n\nfunction committedHostNodesFromState(state: unknown): Node[] {\n return Array.isArray(state) ? state as Node[] : [];\n}\n"]}