uidl-runtime 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +175 -0
- package/bin/validate.mjs +44 -0
- package/dist/actions/eventBus.d.ts +7 -0
- package/dist/actions/index.d.ts +5 -0
- package/dist/actions/interpreter.d.ts +54 -0
- package/dist/compiler/dashboard.d.ts +10 -0
- package/dist/compiler/form.d.ts +22 -0
- package/dist/compiler/index.d.ts +16 -0
- package/dist/compiler/list.d.ts +20 -0
- package/dist/compiler/report.d.ts +10 -0
- package/dist/compiler/settings.d.ts +10 -0
- package/dist/compiler/tree.d.ts +10 -0
- package/dist/compiler/types.d.ts +315 -0
- package/dist/compiler/wizard.d.ts +10 -0
- package/dist/components/BarcodeAndQRCode.d.ts +29 -0
- package/dist/components/charts.d.ts +66 -0
- package/dist/components/iconPaths.d.ts +5 -0
- package/dist/components/icons.d.ts +31 -0
- package/dist/components/primitives.d.ts +411 -0
- package/dist/data/adapters/http.d.ts +37 -0
- package/dist/data/adapters/inMemory.d.ts +62 -0
- package/dist/data/errors.d.ts +15 -0
- package/dist/data/index.d.ts +7 -0
- package/dist/data/testing/mockHttpServer.d.ts +16 -0
- package/dist/data/types.d.ts +74 -0
- package/dist/editor/Canvas.d.ts +22 -0
- package/dist/editor/Editor.d.ts +18 -0
- package/dist/editor/LayerTree.d.ts +12 -0
- package/dist/editor/PropertyPanel.d.ts +7 -0
- package/dist/editor/StylePanel.d.ts +7 -0
- package/dist/editor/ValidationStatus.d.ts +9 -0
- package/dist/editor/WidgetPalette.d.ts +6 -0
- package/dist/editor/document.d.ts +10 -0
- package/dist/editor/index.d.ts +2 -0
- package/dist/editor/store.d.ts +46 -0
- package/dist/expr/evaluate.d.ts +51 -0
- package/dist/hooks/useElementWidth.d.ts +14 -0
- package/dist/index.d.ts +61 -0
- package/dist/registry/defaults.d.ts +2 -0
- package/dist/registry/registry.d.ts +4 -0
- package/dist/renderer/RenderNode.d.ts +16 -0
- package/dist/renderer/UIDocumentRenderer.d.ts +13 -0
- package/dist/renderer/instantiateComponent.d.ts +18 -0
- package/dist/renderer/renderDocument.d.ts +63 -0
- package/dist/schema/action.schema.json +515 -0
- package/dist/schema/design-tokens.schema.json +51 -0
- package/dist/schema/jsonSchema.d.ts +11 -0
- package/dist/schema/theme-presets.schema.json +952 -0
- package/dist/schema/uidl-document.schema.json +187 -0
- package/dist/schemas/actions.d.ts +5 -0
- package/dist/schemas/document.d.ts +35 -0
- package/dist/schemas/theme.d.ts +260 -0
- package/dist/services/aiPromptGenerator.d.ts +11 -0
- package/dist/state/createDocumentState.d.ts +18 -0
- package/dist/state/dataSources.d.ts +58 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/style.css +2 -0
- package/dist/theme/engine.d.ts +9 -0
- package/dist/theme/index.d.ts +7 -0
- package/dist/theme/meridianPreset.d.ts +5 -0
- package/dist/theme/presets.d.ts +5 -0
- package/dist/theme/registry.d.ts +15 -0
- package/dist/theme/serialize.d.ts +5 -0
- package/dist/theme/tailwind.d.ts +11 -0
- package/dist/types/actions.d.ts +116 -0
- package/dist/types/editor.d.ts +45 -0
- package/dist/types/index.d.ts +82 -0
- package/dist/types/theme.d.ts +95 -0
- package/dist/uidl-runtime.js +98 -0
- package/dist/uidl-runtime.js.map +1 -0
- package/dist/uidl-runtime.mjs +17779 -0
- package/dist/uidl-runtime.mjs.map +1 -0
- package/dist/utils/chart.d.ts +12 -0
- package/dist/utils/cn.d.ts +1 -0
- package/dist/utils/formLayout.d.ts +93 -0
- package/dist/utils/i18n.d.ts +132 -0
- package/dist/utils/listCell.d.ts +21 -0
- package/dist/utils/responsive.d.ts +3 -0
- package/dist/utils/tailwind.d.ts +23 -0
- package/dist/validate/validateResponsive.d.ts +7 -0
- package/dist/version.d.ts +10 -0
- package/package.json +109 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uidl-runtime.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../packages/core/src/utils/cn.ts","../packages/core/src/utils/listCell.ts","../packages/core/src/components/iconPaths.ts","../packages/core/src/components/icons.tsx","../packages/core/src/hooks/useElementWidth.ts","../packages/core/src/utils/chart.ts","../packages/core/src/components/charts.tsx","../packages/core/src/components/primitives.tsx","../packages/core/src/components/BarcodeAndQRCode.tsx","../packages/core/src/registry/defaults.ts","../packages/core/src/registry/registry.ts","../packages/core/src/theme/engine.ts","../packages/core/src/utils/responsive.ts","../packages/core/src/utils/tailwind.ts","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../packages/core/src/state/createDocumentState.ts","../packages/core/src/expr/evaluate.ts","../packages/core/src/renderer/instantiateComponent.ts","../packages/core/src/renderer/RenderNode.tsx","../node_modules/zod/v4/core/core.js","../node_modules/zod/v4/core/util.js","../node_modules/zod/v4/core/errors.js","../node_modules/zod/v4/core/parse.js","../node_modules/zod/v4/core/regexes.js","../node_modules/zod/v4/core/checks.js","../node_modules/zod/v4/core/doc.js","../node_modules/zod/v4/core/versions.js","../node_modules/zod/v4/core/schemas.js","../node_modules/zod/v4/core/registries.js","../node_modules/zod/v4/core/api.js","../node_modules/zod/v4/core/to-json-schema.js","../node_modules/zod/v4/core/json-schema-processors.js","../node_modules/zod/v4/classic/iso.js","../node_modules/zod/v4/classic/errors.js","../node_modules/zod/v4/classic/parse.js","../node_modules/zod/v4/classic/schemas.js","../packages/core/src/schemas/theme.ts","../packages/core/src/theme/registry.ts","../packages/core/src/theme/tailwind.ts","../packages/core/src/data/errors.ts","../packages/core/src/state/dataSources.ts","../packages/core/src/actions/eventBus.ts","../packages/core/src/actions/interpreter.ts","../packages/core/src/renderer/renderDocument.ts","../packages/core/src/renderer/UIDocumentRenderer.tsx","../packages/core/src/version.ts","../packages/core/src/schemas/document.ts","../packages/core/src/schemas/actions.ts","../packages/core/src/schema/jsonSchema.ts","../packages/core/src/theme/presets.ts","../packages/core/src/theme/meridianPreset.ts","../packages/core/src/theme/serialize.ts","../packages/core/src/validate/validateResponsive.ts","../packages/core/src/data/adapters/inMemory.ts","../packages/core/src/data/adapters/http.ts","../packages/core/src/editor/document.ts","../packages/core/src/editor/store.ts","../packages/core/src/editor/Canvas.tsx","../packages/core/src/editor/WidgetPalette.tsx","../node_modules/@dnd-kit/utilities/dist/utilities.esm.js","../node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js","../node_modules/@dnd-kit/core/dist/core.esm.js","../node_modules/@dnd-kit/sortable/dist/sortable.esm.js","../packages/core/src/editor/LayerTree.tsx","../packages/core/src/editor/PropertyPanel.tsx","../packages/core/src/editor/StylePanel.tsx","../packages/core/src/editor/ValidationStatus.tsx","../packages/core/src/editor/Editor.tsx","../packages/core/src/utils/i18n.ts","../packages/core/src/services/aiPromptGenerator.ts","../packages/core/src/compiler/types.ts","../packages/core/src/compiler/list.ts","../packages/core/src/utils/formLayout.ts","../packages/core/src/compiler/form.ts","../packages/core/src/compiler/report.ts","../packages/core/src/compiler/dashboard.ts","../packages/core/src/compiler/settings.ts","../packages/core/src/compiler/tree.ts","../packages/core/src/compiler/wizard.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),\n ...createClassGroupUtils(config)\n});\nconst createPostfixLookupClassGroupIds = config => {\n const lookup = Object.create(null);\n const classGroupIds = config.postfixLookupClassGroups;\n if (classGroupIds) {\n for (let i = 0; i < classGroupIds.length; i++) {\n lookup[classGroupIds[i]] = true;\n }\n }\n return lookup;\n};\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers,\n postfixLookupClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId;\n if (hasPostfixModifier) {\n const baseClassNameWithoutPostfix = baseClassName.substring(0, maybePostfixModifierPosition);\n classGroupId = getClassGroupId(baseClassNameWithoutPostfix);\n const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : undefined;\n if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n classGroupId = classGroupIdWithPostfix;\n hasPostfixModifier = false;\n }\n } else {\n classGroupId = getClassGroupId(baseClassName);\n }\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isNamedContainerQuery = value => value.startsWith('@container') && (value[10] === '/' && value[11] !== undefined || value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10) || value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10));\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNamedContainerQuery,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Container Type\n * @see https://tailwindcss.com/docs/responsive-design#container-queries\n */\n 'container-type': [{\n '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Container Name\n * @see https://tailwindcss.com/docs/responsive-design#named-containers\n */\n 'container-named': [isNamedContainerQuery],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Tab Size\n * @see https://tailwindcss.com/docs/tab-size\n */\n 'tab-size': [{\n tab: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n /**\n * Zoom\n * @see https://tailwindcss.com/docs/zoom\n */\n zoom: [{\n zoom: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scrollbar Thumb Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-thumb-color': [{\n 'scrollbar-thumb': scaleColor()\n }],\n /**\n * Scrollbar Track Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-track-color': [{\n 'scrollbar-track': scaleColor()\n }],\n /**\n * Scrollbar Gutter\n * @see https://tailwindcss.com/docs/scrollbar-gutter\n */\n 'scrollbar-gutter': [{\n 'scrollbar-gutter': ['auto', 'stable', 'both']\n }],\n /**\n * Scrollbar Width\n * @see https://tailwindcss.com/docs/scrollbar-width\n */\n 'scrollbar-w': [{\n scrollbar: ['auto', 'thin', 'none']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n 'container-named': ['container-type'],\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n postfixLookupClassGroups: ['container-type'],\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups');\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n/**\n * Meridian's row metrics are custom utilities (`h-row-mid`, `h-row-large`, `w-form`, …), not\n * Tailwind's own, so stock tailwind-merge does not know they conflict with each other — it kept\n * both and let stylesheet order decide. A widget's default height then beat the height the\n * document asked for: a Navbar defaulting to `h-row-largest` (4rem) rendered a form header the\n * document had declared as `h-row-large` (3.5rem) at 4rem, since `.h-row-largest` happens to be\n * defined later in the sheet.\n *\n * Registering them in the same groups as their Tailwind counterparts restores the rule every\n * other utility already follows: the last class wins, so a document can always override a\n * widget default.\n */\nconst ROW_HEIGHTS = [\"row-smallest\", \"row-small\", \"row-mid\", \"row-large\", \"row-largest\"];\nconst MERIDIAN_WIDTHS = [\"form\", \"app\", \"sidebar\", \"desk\", \"desk-fixed\", \"quick-edit\", \"dialog\", \"toast\", \"scrollbar\"];\n\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n h: [{ h: ROW_HEIGHTS }],\n \"min-h\": [{ \"min-h\": ROW_HEIGHTS }],\n \"max-h\": [{ \"max-h\": ROW_HEIGHTS }],\n w: [{ w: MERIDIAN_WIDTHS }],\n \"min-w\": [{ \"min-w\": MERIDIAN_WIDTHS }],\n \"max-w\": [{ \"max-w\": MERIDIAN_WIDTHS }],\n },\n },\n});\n\nexport function cn(...classes: (string | undefined | false | null)[]) {\n return twMerge(clsx(classes));\n}\n","/*\n * ListCell's cell semantics, as pure functions.\n *\n * Meridian renders a list cell through its column format rule and right-aligns it when\n * `isNumeric(column.fieldtype)` (ListCell + src/utils.ts).\n * Status columns are the exception: they go through a `render` that returns a StatusPill\n * (StatusPill, `statusColorMap`).\n *\n * The static Meridian reference reproduced that in `templates/src/meridian/meridianLayout.ts` by baking\n * formatted strings into the document at build time. A list driven by a live `$query` has no\n * build step to bake into, so the same rules have to live in the widget — which is what this\n * file gives it. Keeping them here (not in the widget file) keeps them testable without React\n * and lets the static path import the very same status map instead of keeping a second copy.\n */\n\n/** StatusPill — `statusColorMap`. */\nconst STATUS_COLORS: Record<string, string> = {\n draft: \"gray\",\n cancelled: \"red\",\n outstanding: \"orange\",\n \"not transferred\": \"orange\",\n \"not saved\": \"orange\",\n \"not submitted\": \"orange\",\n paid: \"green\",\n lunas: \"green\",\n saved: \"blue\",\n submitted: \"blue\",\n return: \"gray\",\n \"return issued\": \"gray\",\n unpaid: \"red\",\n \"belum bayar\": \"red\",\n overdue: \"red\",\n \"partly paid\": \"yellow\",\n \"partially paid\": \"yellow\",\n pending: \"yellow\",\n expired: \"red\",\n active: \"green\",\n maxed: \"orange\",\n // Order/quotation lifecycle labels the Meridian map has no entry for, coloured on the same\n // logic it uses elsewhere: open work is blue, a completed outcome green, a dead one red.\n open: \"blue\",\n won: \"green\",\n lost: \"red\",\n fulfilled: \"green\",\n closed: \"gray\",\n archived: \"gray\",\n};\n\nexport function statusColor(status: string): string {\n return STATUS_COLORS[status.trim().toLowerCase()] ?? \"gray\";\n}\n\n/**\n * How a column's values are printed. Mirrors the `fieldtype` distinctions Meridian's formatter\n * actually branches on, not the full widget list — `text` is everything with no special rule.\n */\nexport type CellFormat = \"text\" | \"currency\" | \"number\" | \"integer\" | \"date\" | \"status\" | \"check\";\n\n/** `isNumeric` in utils.ts — the fieldtypes Meridian right-aligns. */\nexport function isNumericFormat(format: CellFormat | undefined): boolean {\n return format === \"currency\" || format === \"number\" || format === \"integer\";\n}\n\nexport interface CellFormatOptions {\n /** BCP 47 tag for number/date formatting. Meridian uses the instance's locale. */\n locale?: string;\n /** ISO 4217 code. When set, `currency` columns print with the symbol. */\n currency?: string;\n /** Decimal places for `number` columns — SystemSettings.displayPrecision upstream. */\n precision?: number;\n}\n\n/**\n * fyo/utils/format.ts branches per fieldtype, and only Currency gets a symbol:\n *\n * Float `Number(value).toFixed(displayPrecision)` — a plain decimal, no grouping\n * Int `Math.trunc(Number(value)).toString()` — no grouping either\n * Currency `formatCurrency(...)` — symbol + locale grouping\n *\n * The distinction matters beyond cosmetics: a \"Rate %\" column is a Float, and formatting it\n * as Currency printed `IDR 2` for a 2% withholding rate.\n */\nfunction formatNumeric(value: number, format: CellFormat, options: CellFormatOptions): string {\n if (format === \"currency\") {\n const locale = options.locale ?? \"en-US\";\n // Meridian prints money with the company currency and its own precision. Zero-decimal\n // currencies (IDR, JPY) would otherwise render a misleading \",00\" tail, so the fraction\n // digits are left to Intl's per-currency default rather than pinned here.\n return options.currency\n ? new Intl.NumberFormat(locale, { style: \"currency\", currency: options.currency }).format(value)\n : new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(value);\n }\n if (format === \"integer\") return String(Math.trunc(value));\n return value.toFixed(options.precision ?? DEFAULT_DISPLAY_PRECISION);\n}\n\n/** SystemSettings.displayPrecision — Meridian ships 2. */\nconst DEFAULT_DISPLAY_PRECISION = 2;\n\n/**\n * Returns the printable text for a cell, or `null` when the caller should render a status pill\n * instead (the one case Meridian does not render as text).\n */\nexport function formatCellValue(\n value: unknown,\n format: CellFormat | undefined,\n options: CellFormatOptions = {},\n): string {\n if (value === undefined || value === null) return \"\";\n\n // fyo/utils/format.ts: `titleCase(Boolean(value).toString())`.\n if (format === \"check\") return value ? \"True\" : \"False\";\n\n if (format === \"date\") {\n // A value that is not a real date must survive as itself — a half-typed filter value or a\n // free-text column mistagged as a date should not silently print \"Invalid Date\".\n const date = value instanceof Date ? value : new Date(String(value));\n if (Number.isNaN(date.getTime())) return String(value);\n return new Intl.DateTimeFormat(options.locale ?? \"en-US\", { dateStyle: \"medium\" }).format(date);\n }\n\n if (isNumericFormat(format)) {\n const numeric = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(numeric)) return String(value);\n return formatNumeric(numeric, format as CellFormat, options);\n }\n\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return JSON.stringify(value);\n}\n","/*\n * GENERATED FILE — do not edit by hand. Run `node scripts/generate-icon-set.mjs` instead.\n *\n * Outline icon paths transcribed from Heroicons v2 (https://heroicons.com), MIT licensed,\n * Copyright (c) Tailwind Labs, Inc. Only the 24x24 *outline* set is used: one stroke weight,\n * one visual language, no solid variants to keep in sync.\n *\n * The paths are inlined rather than imported so the published package carries no icon\n * dependency, and so a JSON document can name an icon (`props.iconName: \"printer\"`) without the\n * host application having to register anything.\n */\n\n/** Every icon name a document or the demo chrome may reference. */\nexport const ICON_PATHS: Record<string, string[]> = {\n \"academic-cap\": [\n \"M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5\",\n ],\n \"adjustments\": [\n \"M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75\",\n ],\n \"archive\": [\n \"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z\",\n ],\n \"arrow-down\": [\n \"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3\",\n ],\n \"arrow-left\": [\n \"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18\",\n ],\n \"arrow-long-down\": [\n \"M15.75 17.25 12 21m0 0-3.75-3.75M12 21V3\",\n ],\n \"arrow-long-up\": [\n \"M8.25 6.75 12 3m0 0 3.75 3.75M12 3v18\",\n ],\n \"arrow-right\": [\n \"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\",\n ],\n \"arrow-turn-down-left\": [\n \"m7.49 12-3.75 3.75m0 0 3.75 3.75m-3.75-3.75h16.5V4.499\",\n ],\n \"arrow-up\": [\n \"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18\",\n ],\n \"arrow-uturn-left\": [\n \"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3\",\n ],\n \"arrows-right-left\": [\n \"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5\",\n ],\n \"banknotes\": [\n \"M2.25 18.75a60.07 60.07 0 0 1 15.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 0 1 3 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 0 0-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 0 1-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 0 0 3 15h-.75M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm3 0h.008v.008H18V10.5Zm-12 0h.008v.008H6V10.5Z\",\n ],\n \"beaker\": [\n \"M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5\",\n ],\n \"bell\": [\n \"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0\",\n ],\n \"bell-alert\": [\n \"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5\",\n ],\n \"bolt\": [\n \"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z\",\n ],\n \"book-open\": [\n \"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25\",\n ],\n \"bookmark\": [\n \"M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0Z\",\n ],\n \"briefcase\": [\n \"M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 0 0 .75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 0 0-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A23.978 23.978 0 0 1 12 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 0 1-.673-.38m0 0A2.18 2.18 0 0 1 3 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 0 1 3.413-.387m7.5 0V5.25A2.25 2.25 0 0 0 13.5 3h-3a2.25 2.25 0 0 0-2.25 2.25v.894m7.5 0a48.667 48.667 0 0 0-7.5 0M12 12.75h.008v.008H12v-.008Z\",\n ],\n \"building-library\": [\n \"M12 21v-8.25M15.75 21v-8.25M8.25 21v-8.25M3 9l9-6 9 6m-1.5 12V10.332A48.36 48.36 0 0 0 12 9.75c-2.551 0-5.056.2-7.5.582V21M3 21h18M12 6.75h.008v.008H12V6.75Z\",\n ],\n \"building-office\": [\n \"M2.25 21h19.5m-18-18v18m10.5-18v18m6-13.5V21M6.75 6.75h.75m-.75 3h.75m-.75 3h.75m3-6h.75m-.75 3h.75m-.75 3h.75M6.75 21v-3.375c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21M3 3h12m-.75 4.5H21m-3.75 3.75h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Z\",\n ],\n \"calculator\": [\n \"M15.75 15.75V18m-7.5-6.75h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V13.5Zm0 2.25h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V18Zm2.498-6.75h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V13.5Zm0 2.25h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V18Zm2.504-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5Zm0 2.25h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V18Zm2.498-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5ZM8.25 6h7.5v2.25h-7.5V6ZM12 2.25c-1.892 0-3.758.11-5.593.322C5.307 2.7 4.5 3.65 4.5 4.757V19.5a2.25 2.25 0 0 0 2.25 2.25h10.5a2.25 2.25 0 0 0 2.25-2.25V4.757c0-1.108-.806-2.057-1.907-2.185A48.507 48.507 0 0 0 12 2.25Z\",\n ],\n \"calendar\": [\n \"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008ZM12 15h.008v.008H12V15Zm0 2.25h.008v.008H12v-.008ZM9.75 15h.008v.008H9.75V15Zm0 2.25h.008v.008H9.75v-.008ZM7.5 15h.008v.008H7.5V15Zm0 2.25h.008v.008H7.5v-.008Zm6.75-4.5h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V15Zm0 2.25h.008v.008h-.008v-.008Zm2.25-4.5h.008v.008H16.5v-.008Zm0 2.25h.008v.008H16.5V15Z\",\n ],\n \"calendar-range\": [\n \"M6.75 2.994v2.25m10.5-2.25v2.25m-14.252 13.5V7.491a2.25 2.25 0 0 1 2.25-2.25h13.5a2.25 2.25 0 0 1 2.25 2.25v11.251m-18 0a2.25 2.25 0 0 0 2.25 2.25h13.5a2.25 2.25 0 0 0 2.25-2.25m-18 0v-7.5a2.25 2.25 0 0 1 2.25-2.25h13.5a2.25 2.25 0 0 1 2.25 2.25v7.5m-6.75-6h2.25m-9 2.25h4.5m.002-2.25h.005v.006H12v-.006Zm-.001 4.5h.006v.006h-.006v-.005Zm-2.25.001h.005v.006H9.75v-.006Zm-2.25 0h.005v.005h-.006v-.005Zm6.75-2.247h.005v.005h-.005v-.005Zm0 2.247h.006v.006h-.006v-.006Zm2.25-2.248h.006V15H16.5v-.005Z\",\n ],\n \"chart-bar\": [\n \"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\",\n ],\n \"chart-bar-square\": [\n \"M7.5 14.25v2.25m3-4.5v4.5m3-6.75v6.75m3-9v9M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z\",\n ],\n \"chart-line\": [\n \"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0 1 16.5 7.605\",\n ],\n \"chart-pie\": [\n \"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z\",\n \"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z\",\n ],\n \"chat-bubble\": [\n \"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155\",\n ],\n \"check\": [\n \"m4.5 12.75 6 6 9-13.5\",\n ],\n \"check-badge\": [\n \"M9 12.75 11.25 15 15 9.75M21 12c0 1.268-.63 2.39-1.593 3.068a3.745 3.745 0 0 1-1.043 3.296 3.745 3.745 0 0 1-3.296 1.043A3.745 3.745 0 0 1 12 21c-1.268 0-2.39-.63-3.068-1.593a3.746 3.746 0 0 1-3.296-1.043 3.745 3.745 0 0 1-1.043-3.296A3.745 3.745 0 0 1 3 12c0-1.268.63-2.39 1.593-3.068a3.745 3.745 0 0 1 1.043-3.296 3.746 3.746 0 0 1 3.296-1.043A3.746 3.746 0 0 1 12 3c1.268 0 2.39.63 3.068 1.593a3.746 3.746 0 0 1 3.296 1.043 3.746 3.746 0 0 1 1.043 3.296A3.745 3.745 0 0 1 21 12Z\",\n ],\n \"check-circle\": [\n \"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\",\n ],\n \"chevron-down\": [\n \"m19.5 8.25-7.5 7.5-7.5-7.5\",\n ],\n \"chevron-left\": [\n \"M15.75 19.5 8.25 12l7.5-7.5\",\n ],\n \"chevron-right\": [\n \"m8.25 4.5 7.5 7.5-7.5 7.5\",\n ],\n \"chevron-up\": [\n \"m4.5 15.75 7.5-7.5 7.5 7.5\",\n ],\n \"chevron-up-down\": [\n \"M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9\",\n ],\n \"chevrons-left\": [\n \"m18.75 4.5-7.5 7.5 7.5 7.5m-6-15L5.25 12l7.5 7.5\",\n ],\n \"chevrons-right\": [\n \"m5.25 4.5 7.5 7.5-7.5 7.5m6-15 7.5 7.5-7.5 7.5\",\n ],\n \"circle-stack\": [\n \"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\",\n ],\n \"clipboard\": [\n \"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184\",\n ],\n \"clipboard-check\": [\n \"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75\",\n ],\n \"clipboard-copy\": [\n \"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z\",\n ],\n \"clipboard-list\": [\n \"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z\",\n ],\n \"clock\": [\n \"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\",\n ],\n \"close\": [\n \"M6 18 18 6M6 6l12 12\",\n ],\n \"code\": [\n \"M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5\",\n ],\n \"cog\": [\n \"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\",\n \"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",\n ],\n \"command-line\": [\n \"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z\",\n ],\n \"computer-desktop\": [\n \"M9 17.25v1.007a3 3 0 0 1-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0 1 15 18.257V17.25m6-12V15a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 15V5.25m18 0A2.25 2.25 0 0 0 18.75 3H5.25A2.25 2.25 0 0 0 3 5.25m18 0V12a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 12V5.25\",\n ],\n \"cpu-chip\": [\n \"M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z\",\n ],\n \"credit-card\": [\n \"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z\",\n ],\n \"cube\": [\n \"m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9\",\n ],\n \"cube-transparent\": [\n \"m21 7.5-2.25-1.313M21 7.5v2.25m0-2.25-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3 2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75 2.25-1.313M12 21.75V19.5m0 2.25-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25\",\n ],\n \"currency-dollar\": [\n \"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\",\n ],\n \"cursor-arrow\": [\n \"M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672ZM12 2.25V4.5m5.834.166-1.591 1.591M20.25 10.5H18M7.757 14.743l-1.59 1.59M6 10.5H3.75m4.007-4.243-1.59-1.59\",\n ],\n \"device-phone\": [\n \"M10.5 1.5H8.25A2.25 2.25 0 0 0 6 3.75v16.5a2.25 2.25 0 0 0 2.25 2.25h7.5A2.25 2.25 0 0 0 18 20.25V3.75a2.25 2.25 0 0 0-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18.75h3\",\n ],\n \"document\": [\n \"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\",\n ],\n \"document-chart\": [\n \"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\",\n ],\n \"document-check\": [\n \"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375M9 15l2.25 2.25L15 12\",\n ],\n \"document-plus\": [\n \"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v6m3-3H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\",\n ],\n \"document-search\": [\n \"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m5.231 13.481L15 17.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v16.5c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Zm3.75 11.625a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z\",\n ],\n \"document-text\": [\n \"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\",\n ],\n \"download\": [\n \"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\",\n ],\n \"duplicate\": [\n \"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75\",\n ],\n \"ellipsis\": [\n \"M6.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM18.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z\",\n ],\n \"envelope\": [\n \"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75\",\n ],\n \"exclamation-circle\": [\n \"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z\",\n ],\n \"exclamation-triangle\": [\n \"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\",\n ],\n \"external-link\": [\n \"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\",\n ],\n \"eye\": [\n \"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\",\n \"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",\n ],\n \"face-smile\": [\n \"M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z\",\n ],\n \"film\": [\n \"M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h1.5C5.496 19.5 6 18.996 6 18.375m-3.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-1.5A1.125 1.125 0 0 1 18 18.375M20.625 4.5H3.375m17.25 0c.621 0 1.125.504 1.125 1.125M20.625 4.5h-1.5C18.504 4.5 18 5.004 18 5.625m3.75 0v1.5c0 .621-.504 1.125-1.125 1.125M3.375 4.5c-.621 0-1.125.504-1.125 1.125M3.375 4.5h1.5C5.496 4.5 6 5.004 6 5.625m-3.75 0v1.5c0 .621.504 1.125 1.125 1.125m0 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m1.5-3.75C5.496 8.25 6 7.746 6 7.125v-1.5M4.875 8.25C5.496 8.25 6 8.754 6 9.375v1.5m0-5.25v5.25m0-5.25C6 5.004 6.504 4.5 7.125 4.5h9.75c.621 0 1.125.504 1.125 1.125m1.125 2.625h1.5m-1.5 0A1.125 1.125 0 0 1 18 7.125v-1.5m1.125 2.625c-.621 0-1.125.504-1.125 1.125v1.5m2.625-2.625c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125M18 5.625v5.25M7.125 12h9.75m-9.75 0A1.125 1.125 0 0 1 6 10.875M7.125 12C6.504 12 6 12.504 6 13.125m0-2.25C6 11.496 5.496 12 4.875 12M18 10.875c0 .621-.504 1.125-1.125 1.125M18 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m-12 5.25v-5.25m0 5.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125m-12 0v-1.5c0-.621-.504-1.125-1.125-1.125M18 18.375v-5.25m0 5.25v-1.5c0-.621.504-1.125 1.125-1.125M18 13.125v1.5c0 .621.504 1.125 1.125 1.125M18 13.125c0-.621.504-1.125 1.125-1.125M6 13.125v1.5c0 .621-.504 1.125-1.125 1.125M6 13.125C6 12.504 5.496 12 4.875 12m-1.5 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M19.125 12h1.5m0 0c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h1.5m14.25 0h1.5\",\n ],\n \"filter\": [\n \"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z\",\n ],\n \"fingerprint\": [\n \"M7.864 4.243A7.5 7.5 0 0 1 19.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 0 0 4.5 10.5a7.464 7.464 0 0 1-1.15 3.993m1.989 3.559A11.209 11.209 0 0 0 8.25 10.5a3.75 3.75 0 1 1 7.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 0 1-3.6 9.75m6.633-4.596a18.666 18.666 0 0 1-2.485 5.33\",\n ],\n \"fire\": [\n \"M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z\",\n \"M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z\",\n ],\n \"flag\": [\n \"M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5\",\n ],\n \"folder\": [\n \"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\",\n ],\n \"folder-open\": [\n \"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 0 0-1.883 2.542l.857 6a2.25 2.25 0 0 0 2.227 1.932H19.05a2.25 2.25 0 0 0 2.227-1.932l.857-6a2.25 2.25 0 0 0-1.883-2.542m-16.5 0V6A2.25 2.25 0 0 1 6 3.75h3.879a1.5 1.5 0 0 1 1.06.44l2.122 2.12a1.5 1.5 0 0 0 1.06.44H18A2.25 2.25 0 0 1 20.25 9v.776\",\n ],\n \"gift\": [\n \"M21 11.25v8.25a1.5 1.5 0 0 1-1.5 1.5H5.25a1.5 1.5 0 0 1-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 1 0 9.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1 1 14.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z\",\n ],\n \"globe\": [\n \"M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418\",\n ],\n \"hand-raised\": [\n \"M10.05 4.575a1.575 1.575 0 1 0-3.15 0v3m3.15-3v-1.5a1.575 1.575 0 0 1 3.15 0v1.5m-3.15 0 .075 5.925m3.075.75V4.575m0 0a1.575 1.575 0 0 1 3.15 0V15M6.9 7.575a1.575 1.575 0 1 0-3.15 0v8.175a6.75 6.75 0 0 0 6.75 6.75h2.018a5.25 5.25 0 0 0 3.712-1.538l1.732-1.732a5.25 5.25 0 0 0 1.538-3.712l.003-2.024a.668.668 0 0 1 .198-.471 1.575 1.575 0 1 0-2.228-2.228 3.818 3.818 0 0 0-1.12 2.687M6.9 7.575V12m6.27 4.318A4.49 4.49 0 0 1 16.35 15m.002 0h-.002\",\n ],\n \"hashtag\": [\n \"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5-3.9 19.5m-2.1-19.5-3.9 19.5\",\n ],\n \"heart\": [\n \"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z\",\n ],\n \"home\": [\n \"m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\",\n ],\n \"identification\": [\n \"M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Zm6-10.125a1.875 1.875 0 1 1-3.75 0 1.875 1.875 0 0 1 3.75 0Zm1.294 6.336a6.721 6.721 0 0 1-3.17.789 6.721 6.721 0 0 1-3.168-.789 3.376 3.376 0 0 1 6.338 0Z\",\n ],\n \"inbox\": [\n \"M9 3.75H6.912a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H15M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859M12 3v8.25m0 0-3-3m3 3 3-3\",\n ],\n \"inbox-stack\": [\n \"m7.875 14.25 1.214 1.942a2.25 2.25 0 0 0 1.908 1.058h2.006c.776 0 1.497-.4 1.908-1.058l1.214-1.942M2.41 9h4.636a2.25 2.25 0 0 1 1.872 1.002l.164.246a2.25 2.25 0 0 0 1.872 1.002h2.092a2.25 2.25 0 0 0 1.872-1.002l.164-.246A2.25 2.25 0 0 1 16.954 9h4.636M2.41 9a2.25 2.25 0 0 0-.16.832V12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 12V9.832c0-.287-.055-.57-.16-.832M2.41 9a2.25 2.25 0 0 1 .382-.632l3.285-3.832a2.25 2.25 0 0 1 1.708-.786h8.43c.657 0 1.281.287 1.709.786l3.284 3.832c.163.19.291.404.382.632M4.5 20.25h15A2.25 2.25 0 0 0 21.75 18v-2.625c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125V18a2.25 2.25 0 0 0 2.25 2.25Z\",\n ],\n \"information-circle\": [\n \"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\",\n ],\n \"key\": [\n \"M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z\",\n ],\n \"language\": [\n \"m10.5 21 5.25-11.25L21 21m-9-3h7.5M3 5.621a48.474 48.474 0 0 1 6-.371m0 0c1.12 0 2.233.038 3.334.114M9 5.25V3m3.334 2.364C11.176 10.658 7.69 15.08 3 17.502m9.334-12.138c.896.061 1.785.147 2.666.257m-4.589 8.495a18.023 18.023 0 0 1-3.827-5.802\",\n ],\n \"lifebuoy\": [\n \"M16.712 4.33a9.027 9.027 0 0 1 1.652 1.306c.51.51.944 1.064 1.306 1.652M16.712 4.33l-3.448 4.138m3.448-4.138a9.014 9.014 0 0 0-9.424 0M19.67 7.288l-4.138 3.448m4.138-3.448a9.014 9.014 0 0 1 0 9.424m-4.138-5.976a3.736 3.736 0 0 0-.88-1.388 3.737 3.737 0 0 0-1.388-.88m2.268 2.268a3.765 3.765 0 0 1 0 2.528m-2.268-4.796a3.765 3.765 0 0 0-2.528 0m4.796 4.796c-.181.506-.475.982-.88 1.388a3.736 3.736 0 0 1-1.388.88m2.268-2.268 4.138 3.448m0 0a9.027 9.027 0 0 1-1.306 1.652c-.51.51-1.064.944-1.652 1.306m0 0-3.448-4.138m3.448 4.138a9.014 9.014 0 0 1-9.424 0m5.976-4.138a3.765 3.765 0 0 1-2.528 0m0 0a3.736 3.736 0 0 1-1.388-.88 3.737 3.737 0 0 1-.88-1.388m2.268 2.268L7.288 19.67m0 0a9.024 9.024 0 0 1-1.652-1.306 9.027 9.027 0 0 1-1.306-1.652m0 0 4.138-3.448M4.33 16.712a9.014 9.014 0 0 1 0-9.424m4.138 5.976a3.765 3.765 0 0 1 0-2.528m0 0c.181-.506.475-.982.88-1.388a3.736 3.736 0 0 1 1.388-.88m-2.268 2.268L4.33 7.288m6.406 1.18L7.288 4.33m0 0a9.024 9.024 0 0 0-1.652 1.306A9.025 9.025 0 0 0 4.33 7.288\",\n ],\n \"light-bulb\": [\n \"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\",\n ],\n \"link\": [\n \"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\",\n ],\n \"list-bullet\": [\n \"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\",\n ],\n \"lock-closed\": [\n \"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\",\n ],\n \"lock-open\": [\n \"M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\",\n ],\n \"map\": [\n \"M9 6.75V15m6-6v8.25m.503 3.498 4.875-2.437c.381-.19.622-.58.622-1.006V4.82c0-.836-.88-1.38-1.628-1.006l-3.869 1.934c-.317.159-.69.159-1.006 0L9.503 3.252a1.125 1.125 0 0 0-1.006 0L3.622 5.689C3.24 5.88 3 6.27 3 6.695V19.18c0 .836.88 1.38 1.628 1.006l3.869-1.934c.317-.159.69-.159 1.006 0l4.994 2.497c.317.158.69.158 1.006 0Z\",\n ],\n \"map-pin\": [\n \"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",\n \"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z\",\n ],\n \"megaphone\": [\n \"M10.34 15.84c-.688-.06-1.386-.09-2.09-.09H7.5a4.5 4.5 0 1 1 0-9h.75c.704 0 1.402-.03 2.09-.09m0 9.18c.253.962.584 1.892.985 2.783.247.55.06 1.21-.463 1.511l-.657.38c-.551.318-1.26.117-1.527-.461a20.845 20.845 0 0 1-1.44-4.282m3.102.069a18.03 18.03 0 0 1-.59-4.59c0-1.586.205-3.124.59-4.59m0 9.18a23.848 23.848 0 0 1 8.835 2.535M10.34 6.66a23.847 23.847 0 0 0 8.835-2.535m0 0A23.74 23.74 0 0 0 18.795 3m.38 1.125a23.91 23.91 0 0 1 1.014 5.395m-1.014 8.855c-.118.38-.245.754-.38 1.125m.38-1.125a23.91 23.91 0 0 0 1.014-5.395m0-3.46c.495.413.811 1.035.811 1.73 0 .695-.316 1.317-.811 1.73m0-3.46a24.347 24.347 0 0 1 0 3.46\",\n ],\n \"menu\": [\n \"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\",\n ],\n \"minus\": [\n \"M5 12h14\",\n ],\n \"moon\": [\n \"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\",\n ],\n \"newspaper\": [\n \"M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 0 1-2.25 2.25M16.5 7.5V18a2.25 2.25 0 0 0 2.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 0 0 2.25 2.25h13.5M6 7.5h3v3H6v-3Z\",\n ],\n \"no-symbol\": [\n \"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636\",\n ],\n \"numbered-list\": [\n \"M8.242 5.992h12m-12 6.003H20.24m-12 5.999h12M4.117 7.495v-3.75H2.99m1.125 3.75H2.99m1.125 0H5.24m-1.92 2.577a1.125 1.125 0 1 1 1.591 1.59l-1.83 1.83h2.16M2.99 15.745h1.125a1.125 1.125 0 0 1 0 2.25H3.74m0-.002h.375a1.125 1.125 0 0 1 0 2.25H2.99\",\n ],\n \"paint-brush\": [\n \"M9.53 16.122a3 3 0 0 0-5.78 1.128 2.25 2.25 0 0 1-2.4 2.245 4.5 4.5 0 0 0 8.4-2.245c0-.399-.078-.78-.22-1.128Zm0 0a15.998 15.998 0 0 0 3.388-1.62m-5.043-.025a15.994 15.994 0 0 1 1.622-3.395m3.42 3.42a15.995 15.995 0 0 0 4.764-4.648l3.876-5.814a1.151 1.151 0 0 0-1.597-1.597L14.146 6.32a15.996 15.996 0 0 0-4.649 4.763m3.42 3.42a6.776 6.776 0 0 0-3.42-3.42\",\n ],\n \"pause\": [\n \"M14.25 9v6m-4.5 0V9M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\",\n ],\n \"pencil\": [\n \"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10\",\n ],\n \"percent-badge\": [\n \"m8.99 14.993 6-6m6 3.001c0 1.268-.63 2.39-1.593 3.069a3.746 3.746 0 0 1-1.043 3.296 3.745 3.745 0 0 1-3.296 1.043 3.745 3.745 0 0 1-3.068 1.593c-1.268 0-2.39-.63-3.068-1.593a3.745 3.745 0 0 1-3.296-1.043 3.746 3.746 0 0 1-1.043-3.297 3.746 3.746 0 0 1-1.593-3.068c0-1.268.63-2.39 1.593-3.068a3.746 3.746 0 0 1 1.043-3.297 3.745 3.745 0 0 1 3.296-1.042 3.745 3.745 0 0 1 3.068-1.594c1.268 0 2.39.63 3.068 1.593a3.745 3.745 0 0 1 3.296 1.043 3.746 3.746 0 0 1 1.043 3.297 3.746 3.746 0 0 1 1.593 3.068ZM9.74 9.743h.008v.007H9.74v-.007Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm4.125 4.5h.008v.008h-.008v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\",\n ],\n \"phone\": [\n \"M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z\",\n ],\n \"photo\": [\n \"m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\",\n ],\n \"play\": [\n \"M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\",\n \"M15.91 11.672a.375.375 0 0 1 0 .656l-5.603 3.113a.375.375 0 0 1-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112Z\",\n ],\n \"plus\": [\n \"M12 4.5v15m7.5-7.5h-15\",\n ],\n \"presentation-chart\": [\n \"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6\",\n ],\n \"printer\": [\n \"M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z\",\n ],\n \"puzzle-piece\": [\n \"M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.96.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z\",\n ],\n \"qr-code\": [\n \"M3.75 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 3.75 9.375v-4.5ZM3.75 14.625c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5a1.125 1.125 0 0 1-1.125-1.125v-4.5ZM13.5 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 13.5 9.375v-4.5Z\",\n \"M6.75 6.75h.75v.75h-.75v-.75ZM6.75 16.5h.75v.75h-.75v-.75ZM16.5 6.75h.75v.75h-.75v-.75ZM13.5 13.5h.75v.75h-.75v-.75ZM13.5 19.5h.75v.75h-.75v-.75ZM19.5 13.5h.75v.75h-.75v-.75ZM19.5 19.5h.75v.75h-.75v-.75ZM16.5 16.5h.75v.75h-.75v-.75Z\",\n ],\n \"question-circle\": [\n \"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\",\n ],\n \"queue-list\": [\n \"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z\",\n ],\n \"receipt-percent\": [\n \"m9 14.25 6-6m4.5-3.493V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185ZM9.75 9h.008v.008H9.75V9Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm4.125 4.5h.008v.008h-.008V13.5Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\",\n ],\n \"receipt-refund\": [\n \"M8.25 9.75h4.875a2.625 2.625 0 0 1 0 5.25H12M8.25 9.75 10.5 7.5M8.25 9.75 10.5 12m9-7.243V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185Z\",\n ],\n \"rectangle-group\": [\n \"M2.25 7.125C2.25 6.504 2.754 6 3.375 6h6c.621 0 1.125.504 1.125 1.125v3.75c0 .621-.504 1.125-1.125 1.125h-6a1.125 1.125 0 0 1-1.125-1.125v-3.75ZM14.25 8.625c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v8.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-8.25ZM3.75 16.125c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-2.25Z\",\n ],\n \"rectangle-stack\": [\n \"M6 6.878V6a2.25 2.25 0 0 1 2.25-2.25h7.5A2.25 2.25 0 0 1 18 6v.878m-12 0c.235-.083.487-.128.75-.128h10.5c.263 0 .515.045.75.128m-12 0A2.25 2.25 0 0 0 4.5 9v.878m13.5-3A2.25 2.25 0 0 1 19.5 9v.878m0 0a2.246 2.246 0 0 0-.75-.128H5.25c-.263 0-.515.045-.75.128m15 0A2.25 2.25 0 0 1 21 12v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6c0-.98.626-1.813 1.5-2.122\",\n ],\n \"refresh\": [\n \"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\",\n ],\n \"rocket-launch\": [\n \"M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\",\n ],\n \"scale\": [\n \"M12 3v17.25m0 0c-1.472 0-2.882.265-4.185.75M12 20.25c1.472 0 2.882.265 4.185.75M18.75 4.97A48.416 48.416 0 0 0 12 4.5c-2.291 0-4.545.16-6.75.47m13.5 0c1.01.143 2.01.317 3 .52m-3-.52 2.62 10.726c.122.499-.106 1.028-.589 1.202a5.988 5.988 0 0 1-2.031.352 5.988 5.988 0 0 1-2.031-.352c-.483-.174-.711-.703-.59-1.202L18.75 4.971Zm-16.5.52c.99-.203 1.99-.377 3-.52m0 0 2.62 10.726c.122.499-.106 1.028-.589 1.202a5.989 5.989 0 0 1-2.031.352 5.989 5.989 0 0 1-2.031-.352c-.483-.174-.711-.703-.59-1.202L5.25 4.971Z\",\n ],\n \"scissors\": [\n \"m7.848 8.25 1.536.887M7.848 8.25a3 3 0 1 1-5.196-3 3 3 0 0 1 5.196 3Zm1.536.887a2.165 2.165 0 0 1 1.083 1.839c.005.351.054.695.14 1.024M9.384 9.137l2.077 1.199M7.848 15.75l1.536-.887m-1.536.887a3 3 0 1 1-5.196 3 3 3 0 0 1 5.196-3Zm1.536-.887a2.165 2.165 0 0 0 1.083-1.838c.005-.352.054-.695.14-1.025m-1.223 2.863 2.077-1.199m0-3.328a4.323 4.323 0 0 1 2.068-1.379l5.325-1.628a4.5 4.5 0 0 1 2.48-.044l.803.215-7.794 4.5m-2.882-1.664A4.33 4.33 0 0 0 10.607 12m3.736 0 7.794 4.5-.802.215a4.5 4.5 0 0 1-2.48-.043l-5.326-1.629a4.324 4.324 0 0 1-2.068-1.379M14.343 12l-2.882 1.664\",\n ],\n \"search\": [\n \"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\",\n ],\n \"send\": [\n \"M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5\",\n ],\n \"server\": [\n \"M5.25 14.25h13.5m-13.5 0a3 3 0 0 1-3-3m3 3a3 3 0 1 0 0 6h13.5a3 3 0 1 0 0-6m-16.5-3a3 3 0 0 1 3-3h13.5a3 3 0 0 1 3 3m-19.5 0a4.5 4.5 0 0 1 .9-2.7L5.737 5.1a3.375 3.375 0 0 1 2.7-1.35h7.126c1.062 0 2.062.5 2.7 1.35l2.587 3.45a4.5 4.5 0 0 1 .9 2.7m0 0a3 3 0 0 1-3 3m0 3h.008v.008h-.008v-.008Zm0-6h.008v.008h-.008v-.008Zm-3 6h.008v.008h-.008v-.008Zm0-6h.008v.008h-.008v-.008Z\",\n ],\n \"share\": [\n \"M7.217 10.907a2.25 2.25 0 1 0 0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186 9.566-5.314m-9.566 7.5 9.566 5.314m0 0a2.25 2.25 0 1 0 3.935 2.186 2.25 2.25 0 0 0-3.935-2.186Zm0-12.814a2.25 2.25 0 1 0 3.933-2.185 2.25 2.25 0 0 0-3.933 2.185Z\",\n ],\n \"shield-check\": [\n \"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\",\n ],\n \"shield-exclamation\": [\n \"M12 9v3.75m0-10.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.75c0 5.592 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.57-.598-3.75h-.152c-3.196 0-6.1-1.25-8.25-3.286Zm0 13.036h.008v.008H12v-.008Z\",\n ],\n \"shopping-bag\": [\n \"M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\",\n ],\n \"shopping-cart\": [\n \"M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z\",\n ],\n \"sort\": [\n \"M3 7.5 7.5 3m0 0L12 7.5M7.5 3v13.5m13.5 0L16.5 21m0 0L12 16.5m4.5 4.5V7.5\",\n ],\n \"sparkles\": [\n \"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z\",\n ],\n \"square-3-stack\": [\n \"M6.429 9.75 2.25 12l4.179 2.25m0-4.5 5.571 3 5.571-3m-11.142 0L2.25 7.5 12 2.25l9.75 5.25-4.179 2.25m0 0L21.75 12l-4.179 2.25m0 0 4.179 2.25L12 21.75 2.25 16.5l4.179-2.25m11.142 0-5.571 3-5.571-3\",\n ],\n \"squares\": [\n \"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z\",\n ],\n \"squares-plus\": [\n \"M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 0 0 2.25-2.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v2.25A2.25 2.25 0 0 0 6 10.5Zm0 9.75h2.25A2.25 2.25 0 0 0 10.5 18v-2.25a2.25 2.25 0 0 0-2.25-2.25H6a2.25 2.25 0 0 0-2.25 2.25V18A2.25 2.25 0 0 0 6 20.25Zm9.75-9.75H18a2.25 2.25 0 0 0 2.25-2.25V6A2.25 2.25 0 0 0 18 3.75h-2.25A2.25 2.25 0 0 0 13.5 6v2.25a2.25 2.25 0 0 0 2.25 2.25Z\",\n ],\n \"star\": [\n \"M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z\",\n ],\n \"storefront\": [\n \"M13.5 21v-7.5a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 .75.75V21m-4.5 0H2.36m11.14 0H18m0 0h3.64m-1.39 0V9.349M3.75 21V9.349m0 0a3.001 3.001 0 0 0 3.75-.615A2.993 2.993 0 0 0 9.75 9.75c.896 0 1.7-.393 2.25-1.016a2.993 2.993 0 0 0 2.25 1.016c.896 0 1.7-.393 2.25-1.015a3.001 3.001 0 0 0 3.75.614m-16.5 0a3.004 3.004 0 0 1-.621-4.72l1.189-1.19A1.5 1.5 0 0 1 5.378 3h13.243a1.5 1.5 0 0 1 1.06.44l1.19 1.189a3 3 0 0 1-.621 4.72M6.75 18h3.75a.75.75 0 0 0 .75-.75V13.5a.75.75 0 0 0-.75-.75H6.75a.75.75 0 0 0-.75.75v3.75c0 .414.336.75.75.75Z\",\n ],\n \"sun\": [\n \"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\",\n ],\n \"swatch\": [\n \"M4.098 19.902a3.75 3.75 0 0 0 5.304 0l6.401-6.402M6.75 21A3.75 3.75 0 0 1 3 17.25V4.125C3 3.504 3.504 3 4.125 3h5.25c.621 0 1.125.504 1.125 1.125v4.072M6.75 21a3.75 3.75 0 0 0 3.75-3.75V8.197M6.75 21h13.125c.621 0 1.125-.504 1.125-1.125v-5.25c0-.621-.504-1.125-1.125-1.125h-4.072M10.5 8.197l2.88-2.88c.438-.439 1.15-.439 1.59 0l3.712 3.713c.44.44.44 1.152 0 1.59l-2.879 2.88M6.75 17.25h.008v.008H6.75v-.008Z\",\n ],\n \"table-cells\": [\n \"M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h7.5c.621 0 1.125-.504 1.125-1.125m-9.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-7.5A1.125 1.125 0 0 1 12 18.375m9.75-12.75c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125m19.5 0v1.5c0 .621-.504 1.125-1.125 1.125M2.25 5.625v1.5c0 .621.504 1.125 1.125 1.125m0 0h17.25m-17.25 0h7.5c.621 0 1.125.504 1.125 1.125M3.375 8.25c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m17.25-3.75h-7.5c-.621 0-1.125.504-1.125 1.125m8.625-1.125c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M12 10.875v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125M13.125 12h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125M20.625 12c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5M12 14.625v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 14.625c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m0 1.5v-1.5m0 0c0-.621.504-1.125 1.125-1.125m0 0h7.5\",\n ],\n \"tag\": [\n \"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z\",\n \"M6 6h.008v.008H6V6Z\",\n ],\n \"thumb-up\": [\n \"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\",\n ],\n \"ticket\": [\n \"M16.5 6v.75m0 3v.75m0 3v.75m0 3V18m-9-5.25h5.25M7.5 15h3M3.375 5.25c-.621 0-1.125.504-1.125 1.125v3.026a2.999 2.999 0 0 1 0 5.198v3.026c0 .621.504 1.125 1.125 1.125h17.25c.621 0 1.125-.504 1.125-1.125v-3.026a2.999 2.999 0 0 1 0-5.198V6.375c0-.621-.504-1.125-1.125-1.125H3.375Z\",\n ],\n \"trash\": [\n \"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\",\n ],\n \"trending-down\": [\n \"M2.25 6 9 12.75l4.286-4.286a11.948 11.948 0 0 1 4.306 6.43l.776 2.898m0 0 3.182-5.511m-3.182 5.51-5.511-3.181\",\n ],\n \"trending-up\": [\n \"M2.25 18 9 11.25l4.306 4.306a11.95 11.95 0 0 1 5.814-5.518l2.74-1.22m0 0-5.94-2.281m5.94 2.28-2.28 5.941\",\n ],\n \"trophy\": [\n \"M16.5 18.75h-9m9 0a3 3 0 0 1 3 3h-15a3 3 0 0 1 3-3m9 0v-3.375c0-.621-.503-1.125-1.125-1.125h-.871M7.5 18.75v-3.375c0-.621.504-1.125 1.125-1.125h.872m5.007 0H9.497m5.007 0a7.454 7.454 0 0 1-.982-3.172M9.497 14.25a7.454 7.454 0 0 0 .981-3.172M5.25 4.236c-.982.143-1.954.317-2.916.52A6.003 6.003 0 0 0 7.73 9.728M5.25 4.236V4.5c0 2.108.966 3.99 2.48 5.228M5.25 4.236V2.721C7.456 2.41 9.71 2.25 12 2.25c2.291 0 4.545.16 6.75.47v1.516M7.73 9.728a6.726 6.726 0 0 0 2.748 1.35m8.272-6.842V4.5c0 2.108-.966 3.99-2.48 5.228m2.48-5.492a46.32 46.32 0 0 1 2.916.52 6.003 6.003 0 0 1-5.395 4.972m0 0a6.726 6.726 0 0 1-2.749 1.35m0 0a6.772 6.772 0 0 1-3.044 0\",\n ],\n \"truck\": [\n \"M8.25 18.75a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 0 1-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 0 0-3.213-9.193 2.056 2.056 0 0 0-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 0 0-10.026 0 1.106 1.106 0 0 0-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12\",\n ],\n \"upload\": [\n \"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5\",\n ],\n \"user\": [\n \"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\",\n ],\n \"user-circle\": [\n \"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",\n ],\n \"user-group\": [\n \"M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z\",\n ],\n \"user-plus\": [\n \"M18 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0ZM3 19.235v-.11a6.375 6.375 0 0 1 12.75 0v.109A12.318 12.318 0 0 1 9.374 21c-2.331 0-4.512-.645-6.374-1.766Z\",\n ],\n \"users\": [\n \"M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z\",\n ],\n \"variable\": [\n \"M4.745 3A23.933 23.933 0 0 0 3 12c0 3.183.62 6.22 1.745 9M19.5 3c.967 2.78 1.5 5.817 1.5 9s-.533 6.22-1.5 9M8.25 8.885l1.444-.89a.75.75 0 0 1 1.105.402l2.402 7.206a.75.75 0 0 0 1.104.401l1.445-.889m-8.25.75.213.09a1.687 1.687 0 0 0 2.062-.617l4.45-6.676a1.688 1.688 0 0 1 2.062-.618l.213.09\",\n ],\n \"view-columns\": [\n \"M9 4.5v15m6-15v15m-10.875 0h15.75c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H4.125C3.504 4.5 3 5.004 3 5.625v12.75c0 .621.504 1.125 1.125 1.125Z\",\n ],\n \"wallet\": [\n \"M21 12a2.25 2.25 0 0 0-2.25-2.25H15a3 3 0 1 1-6 0H5.25A2.25 2.25 0 0 0 3 12m18 0v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6m18 0V9M3 12V9m18 0a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 9m18 0V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v3\",\n ],\n \"window\": [\n \"M3 8.25V18a2.25 2.25 0 0 0 2.25 2.25h13.5A2.25 2.25 0 0 0 21 18V8.25m-18 0V6a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 6v2.25m-18 0h18M5.25 6h.008v.008H5.25V6ZM7.5 6h.008v.008H7.5V6Zm2.25 0h.008v.008H9.75V6Z\",\n ],\n \"wrench\": [\n \"M11.42 15.17 17.25 21A2.652 2.652 0 0 0 21 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 1 1-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 0 0 4.486-6.336l-3.276 3.277a3.004 3.004 0 0 1-2.25-2.25l3.276-3.276a4.5 4.5 0 0 0-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437 1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008Z\",\n ],\n \"x-circle\": [\n \"m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\",\n ],\n};\n\nexport type IconName = keyof typeof ICON_PATHS;\n\nexport const ICON_NAMES = Object.keys(ICON_PATHS) as IconName[];\n\nexport function hasIcon(name: string): boolean {\n return Object.prototype.hasOwnProperty.call(ICON_PATHS, name);\n}\n","/*\n * The icon layer.\n *\n * Meridian draws its own chrome with `feather-icons` SVGs at a single stroke weight; this\n * package does the same with Heroicons v2 outline paths, inlined by\n * `scripts/generate-icon-set.mjs` (see `iconPaths.ts`). Outline only — an active row is marked\n * by Meridian's 4px inset bar and a darker label, never by swapping the icon to a filled variant.\n *\n * Two consumers:\n * - React code (the demo shell, widgets) uses `<Icon name=\"printer\" />`\n * - JSON documents use the registered `Icon` widget, or `iconName` on `Button`\n */\nimport type { CSSProperties } from \"react\";\nimport { ICON_PATHS, ICON_NAMES, hasIcon, type IconName } from \"./iconPaths\";\n\nexport { ICON_PATHS, ICON_NAMES, hasIcon };\nexport type { IconName };\n\nexport interface IconProps {\n /** A name from `ICON_NAMES`. An unknown name renders nothing rather than a broken glyph. */\n name: string;\n /** Tailwind sizing/colour classes. Defaults to Meridian's sidebar icon size. */\n className?: string;\n style?: CSSProperties;\n /** Give the icon an accessible name; without one it stays `aria-hidden`. */\n title?: string;\n /** Meridian strokes its chrome icons at 1.5; 2 reads better below 16px. */\n strokeWidth?: number;\n}\n\n/**\n * One outline glyph. `currentColor` on the stroke means an icon inherits the text colour of the\n * row it sits in, which is what keeps the sidebar's active/inactive states in one place.\n */\nexport function Icon({ name, className, style, title, strokeWidth = 1.5 }: IconProps) {\n const paths = ICON_PATHS[name];\n if (!paths) return null;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className ?? \"h-4 w-4 flex-shrink-0\"}\n style={style}\n role={title ? \"img\" : undefined}\n aria-label={title}\n aria-hidden={title ? undefined : \"true\"}\n data-icon={name}\n >\n {paths.map((d) => (\n <path key={d} d={d} />\n ))}\n </svg>\n );\n}\n\n/**\n * The registry widget. Sized in `em` so an icon dropped next to text in a document tracks that\n * text's size instead of needing a class of its own.\n */\nexport function IconWidget({\n name,\n size,\n title,\n className,\n strokeWidth,\n}: {\n name?: string;\n size?: number | string;\n title?: string;\n className?: string;\n strokeWidth?: number;\n}) {\n if (!name) return null;\n const resolved = size ?? \"1.15em\";\n return (\n <Icon\n name={name}\n title={title}\n strokeWidth={strokeWidth}\n className={className ?? \"inline-block flex-shrink-0 align-[-0.15em]\"}\n style={{ width: typeof resolved === \"number\" ? `${resolved}px` : resolved, height: typeof resolved === \"number\" ? `${resolved}px` : resolved }}\n />\n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Tracks an element's rendered width.\n *\n * Charts need it because Meridian sizes its SVGs by *aspect ratio*, and picks a different\n * ratio at every call site so that the drawn height still lands around 235px — 4.15 for the\n * full-width Cashflow line, 2.05 for the half-width Profit and Loss bars. A reusable widget\n * has no such fixed call site, so it measures instead and derives the ratio from the width it\n * actually got, which keeps the chart the same height in a narrow column and a wide page.\n *\n * Returns 0 until the first measurement (and in environments without ResizeObserver, such as\n * jsdom), which callers must treat as \"not measured yet\" rather than \"zero wide\".\n */\nexport function useElementWidth<T extends HTMLElement>(): [RefObject<T | null>, number] {\n const ref = useRef<T>(null);\n const [width, setWidth] = useState(0);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n setWidth(element.getBoundingClientRect().width);\n\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n setWidth(entry.contentRect.width);\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, []);\n\n return [ref, width];\n}\n","/*\n * Chart helpers shared by the chart components — shared by the Meridian surfaces.\n *\n * Kept out of components/charts.tsx so that module exports components only (the palettes and\n * the formatter are plain values, and mixing them in breaks React Fast Refresh).\n */\n\n/** utils/chart.ts — y-axis labels as \"1 K\" / \"12 M\" / \"3 B\". */\nexport function prefixFormat(value: number): string {\n if (Math.abs(value) < 1) {\n return Math.round(value).toString();\n }\n const ten = Math.floor(Math.log10(Math.abs(value)));\n const three = Math.floor(ten / 3);\n const num = Math.round(value / Math.pow(10, three * 3));\n const suffix = [\"\", \"K\", \"M\", \"B\", \"T\", \"Q\", \"P\"][three] ?? \"\";\n return `${num} ${suffix}`.trim();\n}\n\n/**\n * Meridian's Expenses donut ramp: a single-hue pink scale, darkest first. Kept as a named\n * export so a document that supplies no per-series colors still lands on the app's palette\n * instead of an ad-hoc rainbow.\n */\nexport const MERIDIAN_DONUT_COLORS = [\"#df9eb8\", \"#e9c4da\", \"#f2d4e6\", \"#f8e2f0\", \"#feeef8\"];\n\n/** Meridian's two-series dashboard palette (Cashflow inflow/outflow, P&L positive/negative). */\nexport const MERIDIAN_SERIES_COLORS = [\"#33a1ff\", \"#df9eb8\", \"#59ba8b\", \"#f2d14b\", \"#9c45e3\", \"#36baad\"];\n\nexport const MERIDIAN_CHART_GRID_COLOR = \"rgba(0, 0, 0, 0.2)\";\nexport const MERIDIAN_CHART_FONT_COLOR = \"#7c7c7c\";\n","/*\n * The Meridian chart family.\n *\n * Source: {BarChart,LineChart,DonutChart}.\n * These are hand-rolled SVGs, not a charting library — which is exactly why they have to\n * be ported rather than approximated: every visual trait people recognise as \"the Meridian\n * look\" is a specific number in there (bars 28 units wide with a 17-unit corner radius on\n * a 500-unit-tall viewBox, four horizontal grid divisions and no vertical ones, no axis\n * lines, y labels prefix-formatted to \"12 M\", a gradient fade under each line).\n *\n * Prop defaults below are Meridian's prop defaults, kept even where they look arbitrary.\n * The one intentional divergence: `skipXLabel` defaults to 1 (label every point) instead\n * of 2, because Meridian's dashboards pass 12 monthly points where our demo series are short\n * enough that dropping every other label just loses information.\n */\n\nimport { useMemo } from \"react\";\nimport { prefixFormat } from \"../utils/chart\";\n\nexport interface ChartGeometryProps {\n /** One array per series; each inner array is that series' y values. */\n points: number[][];\n xLabels?: string[];\n colors?: string[];\n viewBoxHeight?: number;\n aspectRatio?: number;\n axisPadding?: number;\n pointsPadding?: number;\n xLabelOffset?: number;\n yLabelOffset?: number;\n yLabelDivisions?: number;\n gridColor?: string;\n fontColor?: string;\n fontSize?: number;\n gridThickness?: number;\n left?: number;\n bottom?: number;\n extendGridX?: number;\n yMin?: number | null;\n yMax?: number | null;\n formatY?: (value: number) => string;\n formatX?: (value: string) => string;\n drawXGrid?: boolean;\n drawLabels?: boolean;\n}\n\n/**\n * The scale/grid math shared by BarChart and LineChart — identical in both, down\n * to `hMin`/`hMax` being clamped through zero so a zero line always has a place to sit.\n */\nfunction useChartScale({\n points,\n viewBoxHeight,\n aspectRatio,\n axisPadding,\n pointsPadding,\n left,\n bottom,\n yLabelDivisions,\n extendGridX,\n yMin,\n yMax,\n}: Required<\n Pick<\n ChartGeometryProps,\n | \"points\"\n | \"viewBoxHeight\"\n | \"aspectRatio\"\n | \"axisPadding\"\n | \"pointsPadding\"\n | \"left\"\n | \"bottom\"\n | \"yLabelDivisions\"\n | \"extendGridX\"\n >\n> & { yMin: number | null; yMax: number | null }) {\n return useMemo(() => {\n const viewBoxWidth = aspectRatio * viewBoxHeight;\n const padding = axisPadding + pointsPadding;\n const flat = points.flat();\n const min = flat.length ? Math.min(...flat) : 0;\n const max = flat.length ? Math.max(...flat) : 0;\n const hMin = Math.min(yMin ?? min, 0);\n let hMax = Math.max(yMax ?? max, 0);\n if (hMax === hMin) {\n hMax = hMax + 1000;\n }\n\n const count = Math.max(...points.map((series) => series.length), 0);\n const xs = Array.from({ length: count }, (_, i) =>\n padding + left + (i * (viewBoxWidth - left - 2 * padding)) / (count - 1 || 1),\n );\n\n const getViewBoxY = (value: number) => {\n let percent = 1 - (value - hMin) / (hMax - hMin);\n if (!Number.isFinite(percent)) {\n percent = 0;\n }\n return padding + percent * (viewBoxHeight - 2 * padding - bottom);\n };\n\n const ys = points.map((series) => series.map(getViewBoxY));\n const xy = xs.map((x, i) => [x, ys.map((series) => series[i])] as [number, number[]]);\n const zeroY = getViewBoxY(0);\n\n const yScalerLocation = (i: number) =>\n ((yLabelDivisions - i) * (viewBoxHeight - padding * 2 - bottom)) / yLabelDivisions + padding;\n const yScalerValue = (i: number) => (i * (hMax - hMin)) / yLabelDivisions + hMin;\n\n const l = padding + left;\n const r = viewBoxWidth - padding;\n const gridLeft = l + extendGridX;\n const gridRight = r - extendGridX;\n const xGrid = Array.from({ length: yLabelDivisions + 1 }, (_, i) => yScalerLocation(i))\n .map((y) => `M ${gridLeft} ${y} H ${gridRight}`)\n .join(\" \");\n\n return { viewBoxWidth, padding, count, xs, ys, xy, zeroY, yScalerLocation, yScalerValue, xGrid, gridLeft, gridRight };\n }, [points, viewBoxHeight, aspectRatio, axisPadding, pointsPadding, left, bottom, yLabelDivisions, extendGridX, yMin, yMax]);\n}\n\nexport interface BarChartProps extends ChartGeometryProps {\n className?: string;\n /** Bar width in viewBox units (Meridian: 28). */\n barWidth?: number;\n /** Corner radius in viewBox units (Meridian: 17 — bars are visibly pill-capped). */\n radius?: number;\n skipXLabel?: number;\n drawZeroLine?: boolean;\n zeroLineColor?: string;\n ariaLabel?: string;\n}\n\nexport function MeridianBarChart({\n points,\n xLabels = [],\n colors = [],\n className,\n viewBoxHeight = 500,\n aspectRatio = 2.1,\n axisPadding = 30,\n pointsPadding = 40,\n xLabelOffset = 20,\n yLabelOffset = 0,\n yLabelDivisions = 4,\n gridColor = \"rgba(0, 0, 0, 0.2)\",\n zeroLineColor = \"rgba(0, 0, 0, 0.2)\",\n fontColor = \"#415668\",\n fontSize = 22,\n gridThickness = 0.5,\n left = 65,\n bottom = 0,\n extendGridX = -20,\n barWidth = 28,\n radius = 17,\n skipXLabel = 1,\n yMin = null,\n yMax = null,\n formatY = prefixFormat,\n formatX = (value) => value,\n drawXGrid = true,\n drawLabels = true,\n drawZeroLine = true,\n ariaLabel,\n}: BarChartProps) {\n const scale = useChartScale({\n points,\n viewBoxHeight,\n aspectRatio,\n axisPadding,\n pointsPadding,\n left,\n bottom,\n yLabelDivisions,\n extendGridX,\n yMin,\n yMax,\n });\n\n const seriesCount = points.length;\n const rects = scale.xy.flatMap(([x, seriesYs], xi) =>\n seriesYs.map((y, si) => {\n const isPositive = y <= scale.zeroY;\n return {\n key: `${xi}-${si}`,\n x: x - (barWidth * seriesCount) / 2 + si * barWidth,\n y: isPositive ? y : scale.zeroY - radius,\n // The +radius overshoot is clipped away by the positive/negative clip paths below;\n // that is how Meridian gets rounded caps on the outer end of a bar but a flat foot at\n // the zero line.\n height: Math.abs(y - scale.zeroY) + radius,\n color: colors[si] ?? \"#33A1FF\",\n isPositive,\n };\n }),\n );\n\n const clipId = `meridian-bar-clip-${seriesCount}-${scale.count}`;\n\n return (\n <div className={className}>\n <svg\n viewBox={`0 0 ${scale.viewBoxWidth} ${viewBoxHeight}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label={ariaLabel ?? \"bar chart\"}\n >\n {drawXGrid && (\n <path d={scale.xGrid} stroke={gridColor} strokeWidth={gridThickness} strokeLinecap=\"round\" fill=\"transparent\" />\n )}\n {drawZeroLine && (\n <path\n d={`M ${scale.gridLeft} ${scale.zeroY} H ${scale.gridRight}`}\n stroke={zeroLineColor}\n strokeWidth={gridThickness}\n strokeLinecap=\"round\"\n fill=\"transparent\"\n />\n )}\n\n {drawLabels &&\n xLabels.length > 0 &&\n scale.xs.map((x, i) => (\n <text\n key={`x-${i}`}\n style={{ fontSize, fill: fontColor }}\n y={viewBoxHeight - axisPadding + yLabelOffset + fontSize / 2 - bottom}\n x={x}\n textAnchor=\"middle\"\n >\n {i % skipXLabel === 0 ? formatX(xLabels[i] ?? \"\") : \"\"}\n </text>\n ))}\n\n {drawLabels &&\n yLabelDivisions > 0 &&\n Array.from({ length: yLabelDivisions + 1 }, (_, i) => (\n <text\n key={`y-${i}`}\n style={{ fontSize, fill: fontColor }}\n y={scale.yScalerLocation(i)}\n x={axisPadding - xLabelOffset + left}\n textAnchor=\"end\"\n >\n {formatY(scale.yScalerValue(i))}\n </text>\n ))}\n\n <defs>\n <clipPath id={`${clipId}-pos`}>\n <rect x=\"0\" y=\"0\" width={scale.viewBoxWidth} height={scale.zeroY} />\n </clipPath>\n <clipPath id={`${clipId}-neg`}>\n <rect x=\"0\" y={scale.zeroY} width={scale.viewBoxWidth} height={viewBoxHeight - scale.zeroY} />\n </clipPath>\n </defs>\n\n {rects.map((rect) => (\n <rect\n key={rect.key}\n rx={radius}\n ry={radius}\n x={rect.x}\n y={rect.y}\n width={barWidth}\n height={rect.height}\n fill={rect.color}\n clipPath={`url(#${clipId}-${rect.isPositive ? \"pos\" : \"neg\"})`}\n />\n ))}\n </svg>\n </div>\n );\n}\n\nexport interface LineChartProps extends ChartGeometryProps {\n className?: string;\n /** Stroke width in viewBox units (Meridian: 5). */\n thickness?: number;\n ariaLabel?: string;\n}\n\nexport function MeridianLineChart({\n points,\n xLabels = [],\n colors = [],\n className,\n viewBoxHeight = 500,\n aspectRatio = 4,\n axisPadding = 30,\n pointsPadding = 24,\n xLabelOffset = 20,\n yLabelOffset = 5,\n yLabelDivisions = 4,\n gridColor = \"rgba(0, 0, 0, 0.2)\",\n fontColor = \"#415668\",\n fontSize = 20,\n gridThickness = 0.5,\n thickness = 5,\n left = 55,\n bottom = 0,\n extendGridX = -20,\n yMin = null,\n yMax = null,\n formatY = prefixFormat,\n formatX = (value) => value,\n drawXGrid = true,\n drawLabels = true,\n ariaLabel,\n}: LineChartProps) {\n const scale = useChartScale({\n points,\n viewBoxHeight,\n aspectRatio,\n axisPadding,\n pointsPadding,\n left,\n bottom,\n yLabelDivisions,\n extendGridX,\n yMin,\n yMax,\n });\n\n const gradientId = `meridian-line-grad-${points.length}-${scale.count}`;\n const baseY = viewBoxHeight - scale.padding - bottom;\n\n const line = (i: number) =>\n scale.xy.map(([x, ys], index) => `${index === 0 ? \"M\" : \"L\"} ${x} ${ys[i]} `).join(\"\");\n const gradientLine = (i: number) =>\n `M ${scale.padding + left} ${baseY}` +\n scale.xy.map(([x, ys]) => `L ${x} ${ys[i]} `).join(\"\") +\n ` V ${baseY} Z`;\n\n return (\n <div className={className}>\n <svg\n viewBox={`0 0 ${scale.viewBoxWidth} ${viewBoxHeight}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label={ariaLabel ?? \"line chart\"}\n >\n {drawXGrid && (\n <path d={scale.xGrid} stroke={gridColor} strokeWidth={gridThickness} strokeLinecap=\"round\" fill=\"transparent\" />\n )}\n\n {drawLabels &&\n xLabels.length > 0 &&\n scale.xs.map((x, i) => (\n <text\n key={`x-${i}`}\n style={{ fontSize, fill: fontColor }}\n y={viewBoxHeight - axisPadding + yLabelOffset + fontSize / 2 - bottom}\n x={x}\n textAnchor=\"middle\"\n >\n {formatX(xLabels[i] ?? \"\")}\n </text>\n ))}\n\n {drawLabels &&\n yLabelDivisions > 0 &&\n Array.from({ length: yLabelDivisions + 1 }, (_, i) => (\n <text\n key={`y-${i}`}\n style={{ fontSize, fill: fontColor }}\n y={scale.yScalerLocation(i)}\n x={axisPadding - xLabelOffset + left}\n textAnchor=\"end\"\n >\n {formatY(scale.yScalerValue(i))}\n </text>\n ))}\n\n <defs>\n {/* The white-to-transparent wash Meridian lays under every line. */}\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"85%\">\n <stop offset=\"0%\" stopColor=\"rgba(255, 255, 255, 0.5)\" />\n <stop offset=\"40%\" stopColor=\"rgba(255, 255, 255, 0.1)\" />\n <stop offset=\"70%\" stopColor=\"rgba(255, 255, 255, 0)\" />\n </linearGradient>\n {points.map((_, i) => (\n <mask key={`mask-${i}`} id={`${gradientId}-mask-${i}`}>\n <rect\n x=\"0\"\n y={scale.ys[i]?.length ? Math.min(...scale.ys[i]) : 0}\n height={viewBoxHeight - (scale.ys[i]?.length ? Math.min(...scale.ys[i]) : 0)}\n width=\"100%\"\n fill={`url('#${gradientId}')`}\n />\n </mask>\n ))}\n </defs>\n\n {points.map((_, i) => (\n <g key={`series-${i}`}>\n <path\n strokeLinejoin=\"round\"\n d={gradientLine(i)}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n fill={colors[i] ?? \"#33A1FF\"}\n mask={`url('#${gradientId}-mask-${i}')`}\n />\n <path\n strokeLinejoin=\"round\"\n d={line(i)}\n stroke={colors[i] ?? \"#33A1FF\"}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n fill=\"transparent\"\n />\n </g>\n ))}\n </svg>\n </div>\n );\n}\n\nexport interface DonutSector {\n color: string;\n value: number;\n label?: string;\n}\n\nexport interface DonutChartProps {\n sectors: DonutSector[];\n className?: string;\n totalLabel?: string;\n radius?: number;\n startAngle?: number;\n thickness?: number;\n offsetX?: number;\n offsetY?: number;\n textOffsetX?: number;\n textOffsetY?: number;\n valueFormatter?: (value: number) => string;\n ariaLabel?: string;\n}\n\n/** Meridian's DonutChart: a 100×100 viewBox, arcs stroked onto a clipped hole. */\nexport function MeridianDonutChart({\n sectors,\n className,\n totalLabel = \"Total\",\n radius = 36,\n startAngle = Math.PI,\n thickness = 10,\n offsetX = 0,\n offsetY = 0,\n textOffsetX = 0,\n textOffsetY = 0,\n valueFormatter = (value) => value.toString(),\n ariaLabel,\n}: DonutChartProps) {\n const cx = 50 + offsetX;\n const cy = 50 + offsetY;\n const total = sectors.reduce((sum, sector) => sum + Math.max(sector.value, 0), 0);\n const hasValues = total > 0;\n const clipId = `meridian-donut-hole-${sectors.length}`;\n\n const arcs: Array<{ d: string; color: string; key: number }> = [];\n if (hasValues && sectors.length > 1) {\n let start = startAngle;\n sectors.forEach((sector, i) => {\n const theta = (2 * Math.PI * Math.max(sector.value, 0)) / total;\n if (theta > 0) {\n arcs.push({ key: i, color: sector.color, d: arcPath(cx, cy, radius, start, theta) });\n }\n start += theta;\n });\n }\n\n return (\n <div className={className}>\n <svg viewBox=\"0 0 100 100\" version=\"1.1\" role=\"img\" aria-label={ariaLabel ?? \"donut chart\"}>\n <defs>\n <clipPath id={clipId}>\n <circle cx={cx} cy={cy} r={radius + thickness / 2} fill=\"black\" strokeWidth=\"0\" />\n </clipPath>\n </defs>\n\n {(!hasValues || sectors.length <= 1) && (\n <circle\n clipPath={`url(#${clipId})`}\n cx={cx}\n cy={cy}\n r={radius}\n strokeWidth={thickness}\n stroke={hasValues ? sectors[0]?.color ?? \"#f4f4f6\" : \"#f4f4f6\"}\n fill=\"transparent\"\n />\n )}\n\n {arcs.map((arc) => (\n <path\n key={arc.key}\n clipPath={`url(#${clipId})`}\n d={arc.d}\n stroke={arc.color}\n strokeWidth={thickness}\n fill=\"transparent\"\n />\n ))}\n\n <text x={cx + textOffsetX} y={cy + textOffsetY} textAnchor=\"middle\" style={{ fontSize: 7, fill: \"#7c7c7c\" }}>\n {totalLabel}\n </text>\n <text\n x={cx + textOffsetX}\n y={cy + textOffsetY + 9}\n textAnchor=\"middle\"\n style={{ fontSize: 8, fontWeight: 600, fill: \"#1e293b\" }}\n >\n {valueFormatter(total)}\n </text>\n </svg>\n </div>\n );\n}\n\n/** Meridian's getArcPath — an arc of `theta` radians starting at `start`, drawn clockwise. */\nfunction arcPath(cx: number, cy: number, r: number, start: number, theta: number): string {\n const end = start + theta;\n const x1 = cx + r * Math.cos(start);\n const y1 = cy + r * Math.sin(start);\n const x2 = cx + r * Math.cos(end);\n const y2 = cy + r * Math.sin(end);\n const largeArc = theta > Math.PI ? 1 : 0;\n return `M ${x1} ${y1} A ${r} ${r} 0 ${largeArc} 1 ${x2} ${y2}`;\n}\n\n","import { useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport type React from \"react\";\nimport type {\n ReactNode,\n HTMLAttributes,\n ButtonHTMLAttributes,\n RefObject,\n ChangeEvent,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { formatCellValue, isNumericFormat, statusColor, type CellFormat } from \"../utils/listCell\";\nimport { Icon } from \"./icons\";\nimport { useElementWidth } from \"../hooks/useElementWidth\";\nimport { MeridianBarChart, MeridianDonutChart, MeridianLineChart } from \"./charts\";\nimport { MERIDIAN_DONUT_COLORS, MERIDIAN_SERIES_COLORS } from \"../utils/chart\";\n\n/*\n * Widget styling follows one token vocabulary — the per-component\n * comments name the file each rule set comes from. The palette, 13px type scale and row\n * heights those classes resolve against live in src/meridian-theme.css.\n *\n * Every default here is overridable from a document's `style` intent: RenderNode passes the\n * resolved intent classes in via `className`, and `cn`'s twMerge drops whichever built-in\n * class conflicts.\n */\n\nfunction ErrorText({ error }: { error?: string }) {\n if (!error) {\n return null;\n }\n return <span className=\"text-sm text-red-600 dark:text-red-400\">{error}</span>;\n}\n\n/** Controls/Base — label + input class sets. */\nconst CONTROL_LABEL_CLASS = \"mb-1 text-sm text-gray-600 dark:text-gray-500\";\nconst CONTROL_INPUT_CLASS =\n \"w-full rounded bg-transparent text-base text-gray-900 placeholder-gray-500 focus:outline-none dark:text-gray-100\";\nconst CONTROL_BORDER_CLASS = \"border border-gray-200 bg-gray-25 dark:border-gray-800 dark:bg-gray-875\";\n\nfunction controlSizeClass(size: \"small\" | \"large\"): string {\n return size === \"small\" ? \"px-2 py-1\" : \"px-3 py-2\";\n}\n\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function Container({ children, ...props }: ContainerProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport interface RowProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function Row({ children, ...props }: RowProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport interface ColumnProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function Column({ children, ...props }: ColumnProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function Stack({ children, ...props }: StackProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport type SpacerProps = HTMLAttributes<HTMLDivElement>;\n\nexport function Spacer(props: SpacerProps) {\n return <div {...props} className={cn(\"flex-1\", props.className)} />;\n}\n\nexport type DividerProps = HTMLAttributes<HTMLHRElement>;\n\n/** Meridian separates every list row and dashboard section with a 1px gray-200 rule. */\nexport function Divider({ children: _children, ...props }: DividerProps) {\n return <hr {...props} className={cn(\"border-t border-gray-200 dark:border-gray-800\", props.className)} />;\n}\n\nexport interface TextProps extends HTMLAttributes<HTMLParagraphElement> {\n value?: string;\n /**\n * Render as `<h1>`…`<h6>` instead of `<p>`. Meridian's page and form titles are real headings\n * (PageHeader's `<h1>`, FormHeader's `<h1>`, Sidebar's `<h6>`), and a document\n * that titles a page needs the same landmark rather than a styled paragraph.\n */\n heading?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Print a bound numeric/date value the way a list cell would. A list's summary figures are\n * the same money as the column they total, so they have to read the same way — an aggregate\n * bound straight into a Text otherwise renders the raw `1500000`.\n */\n format?: CellFormat;\n /** BCP 47 tag used when `format` is set. */\n locale?: string;\n /** ISO 4217 code used when `format` is `currency`. */\n currency?: string;\n}\n\nexport function Text({ value, heading, format, locale, currency, ...props }: TextProps) {\n const printed = format\n ? formatCellValue(value, format, {\n ...(locale ? { locale } : {}),\n ...(currency ? { currency } : {}),\n })\n : value;\n if (heading) {\n const Tag = `h${heading}` as \"h1\";\n return <Tag {...props}>{printed}</Tag>;\n }\n return <p {...props}>{printed}</p>;\n}\n\nexport interface ImageProps extends HTMLAttributes<HTMLImageElement> {\n src?: string;\n alt?: string;\n}\n\nexport function Image({ src, alt, children: _children, ...props }: ImageProps) {\n return <img src={src} alt={alt} {...props} />;\n}\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n label?: string;\n /** Meridian's `type` prop, renamed to avoid colliding with the DOM `type` attribute. */\n variant?: \"primary\" | \"secondary\";\n /** Icon-only buttons get the narrower `px-3` instead of `px-6`. */\n icon?: boolean;\n /**\n * Name of an outline icon (see `ICON_NAMES`) drawn beside the label — Meridian's Button\n * keeps an icon slot ahead of its default slot for exactly this.\n */\n iconName?: string;\n /** Which side of the label the icon sits on. */\n iconPosition?: \"start\" | \"end\";\n /** Drop the filled background (and the fixed `h-8`) for a bare text button. */\n background?: boolean;\n /** Drop horizontal padding entirely. */\n padding?: boolean;\n}\n\n/** Button */\nexport function Button({\n label,\n children,\n variant = \"secondary\",\n icon = false,\n iconName,\n iconPosition = \"start\",\n background = true,\n padding = true,\n ...props\n}: ButtonProps) {\n const isPrimary = variant === \"primary\";\n return (\n <button\n type={props.type ?? \"button\"}\n {...props}\n className={cn(\n \"flex items-center justify-center gap-1.5 rounded-md text-sm\",\n background && \"h-8\",\n isPrimary ? \"text-white dark:text-black\" : \"text-gray-700 dark:text-gray-200\",\n background && (isPrimary ? \"bg-black dark:bg-gray-300 dark:font-semibold\" : \"bg-gray-200 dark:bg-gray-900\"),\n padding && (icon ? \"px-3\" : \"px-6\"),\n props.disabled && \"pointer-events-none cursor-not-allowed opacity-50\",\n props.className,\n )}\n >\n {iconName && iconPosition === \"start\" && <Icon name={iconName} className=\"h-4 w-4 flex-shrink-0\" />}\n {label ?? children}\n {iconName && iconPosition === \"end\" && <Icon name={iconName} className=\"h-4 w-4 flex-shrink-0\" />}\n </button>\n );\n}\n\n/**\n * Meridian's status colors — `getBgTextColorClass` in src/utils/colors.ts is\n * `bg-{color}-200 dark:bg-{color}-800` + `text-{color}-700 dark:text-{color}-200`. Written\n * out per color rather than interpolated, because a class assembled at runtime is invisible\n * to Tailwind's scanner (the same reason src/style.css exists at all).\n */\nexport type BadgeColor = \"gray\" | \"orange\" | \"green\" | \"red\" | \"yellow\" | \"blue\" | \"indigo\" | \"pink\" | \"purple\" | \"teal\";\n\nconst BADGE_COLOR_CLASSES: Record<BadgeColor, string> = {\n gray: \"bg-gray-200 dark:bg-gray-800 text-gray-700 dark:text-gray-200\",\n orange: \"bg-orange-200 dark:bg-orange-800 text-orange-700 dark:text-orange-200\",\n green: \"bg-green-200 dark:bg-green-800 text-green-700 dark:text-green-200\",\n red: \"bg-red-200 dark:bg-red-800 text-red-700 dark:text-red-200\",\n yellow: \"bg-yellow-200 dark:bg-yellow-800 text-yellow-700 dark:text-yellow-200\",\n blue: \"bg-blue-200 dark:bg-blue-800 text-blue-700 dark:text-blue-200\",\n indigo: \"bg-indigo-200 dark:bg-indigo-800 text-indigo-700 dark:text-indigo-200\",\n pink: \"bg-pink-200 dark:bg-pink-800 text-pink-700 dark:text-pink-200\",\n purple: \"bg-purple-200 dark:bg-purple-800 text-purple-700 dark:text-purple-200\",\n teal: \"bg-teal-200 dark:bg-teal-800 text-teal-700 dark:text-teal-200\",\n};\n\nfunction badgeColorClass(color?: string): string {\n return BADGE_COLOR_CLASSES[(color as BadgeColor) in BADGE_COLOR_CLASSES ? (color as BadgeColor) : \"gray\"];\n}\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n children?: ReactNode;\n /** One of Meridian's status colors (src/utils/colors.ts). Anything else falls back to gray. */\n color?: string;\n /**\n * `badge` is Meridian's Badge (`px-2 py-1`); `pill` is its StatusPill / `.pill`\n * utility (`py-0.5 px-1.5`, `text-xs`, `font-medium`) used for document statuses.\n */\n variant?: \"badge\" | \"pill\";\n label?: string;\n /** Optional leading outline icon — used for statuses that read better with a mark (\"Balanced\"). */\n iconName?: string;\n}\n\n/** {Badge,StatusPill} */\nexport function Badge({ children, color = \"gray\", variant = \"badge\", label, iconName, ...props }: BadgeProps) {\n return (\n <span\n {...props}\n className={cn(\n variant === \"pill\"\n ? \"pill truncate font-medium select-none\"\n : \"truncate rounded-md px-2 py-1 select-none\",\n iconName ? \"inline-flex items-center gap-1\" : \"inline-block\",\n badgeColorClass(color),\n props.className,\n )}\n >\n {iconName && <Icon name={iconName} className=\"h-3.5 w-3.5 flex-shrink-0\" strokeWidth={2} />}\n {label ?? children}\n </span>\n );\n}\n\nexport interface TextFieldProps extends HTMLAttributes<HTMLInputElement> {\n label?: string;\n value?: string;\n error?: string;\n /** Meridian's Base sizes: `small` = px-2 py-1 (form rows), `large` = px-3 py-2. */\n size?: \"small\" | \"large\";\n /** Meridian draws the box only where the field isn't already inside a bordered form row. */\n border?: boolean;\n placeholder?: string;\n readOnly?: boolean;\n}\n\n/** Controls/{Base,Data} */\nexport function TextField({\n label,\n value,\n error,\n children: _children,\n id,\n size = \"large\",\n border = true,\n ...props\n}: TextFieldProps) {\n const generatedId = useId();\n const fieldId = id ?? generatedId;\n return (\n <div className=\"flex flex-col\">\n {label && (\n <label htmlFor={fieldId} className={CONTROL_LABEL_CLASS}>\n {label}\n </label>\n )}\n <input\n id={fieldId}\n type=\"text\"\n spellCheck={false}\n // A bound field whose stored value is null must still render as a controlled input:\n // React drops to uncontrolled and warns, and the field silently stops tracking state.\n value={value ?? \"\"}\n aria-invalid={error ? true : undefined}\n {...props}\n className={cn(\n CONTROL_INPUT_CLASS,\n controlSizeClass(size),\n border && CONTROL_BORDER_CLASS,\n \"focus:bg-gray-100 dark:focus:bg-gray-850\",\n error && \"border-red-300 dark:border-red-800\",\n props.className,\n )}\n />\n <ErrorText error={error} />\n </div>\n );\n}\n\nexport interface CheckboxProps extends HTMLAttributes<HTMLInputElement> {\n label?: string;\n checked?: boolean;\n}\n\n/**\n * Controls/Check — a 14px box with Meridian's #A1ABB4\n * stroke. Meridian hand-draws the SVG; a native input keeps it keyboard- and\n * screen-reader-operable, with `accent-color` set inline so no arbitrary Tailwind class\n * (which would need safelisting) is involved.\n */\nexport function Checkbox({ label, checked, children: _children, ...props }: CheckboxProps) {\n return (\n <label className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n checked={checked}\n {...props}\n style={{ width: 14, height: 14, accentColor: \"#A1ABB4\", ...(props.style ?? {}) }}\n className={cn(\"cursor-pointer rounded-sm\", props.className)}\n />\n {label && <span className=\"text-base text-gray-600 dark:text-gray-400\">{label}</span>}\n </label>\n );\n}\n\nexport interface SwitchProps extends HTMLAttributes<HTMLDivElement> {\n checked?: boolean;\n}\n\n/** Meridian has no switch control; this follows its blue-500 accent and 4px-radius language. */\nexport function Switch({ checked, ...props }: SwitchProps) {\n return (\n <div\n role=\"switch\"\n aria-checked={checked}\n {...props}\n className={cn(\n \"relative h-5 w-9 rounded-full bg-gray-300 transition-colors dark:bg-gray-700\",\n checked && \"bg-blue-500 dark:bg-blue-600\",\n props.className,\n )}\n >\n <span\n className={cn(\n \"absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-white shadow-button transition-transform\",\n checked && \"translate-x-4\",\n )}\n />\n </div>\n );\n}\n\nexport interface SliderProps extends HTMLAttributes<HTMLInputElement> {\n value?: number;\n min?: number;\n max?: number;\n}\n\nexport function Slider({ value = 0, min = 0, max = 100, children: _children, ...props }: SliderProps) {\n return (\n <input\n type=\"range\"\n value={value}\n min={min}\n max={max}\n {...props}\n style={{ accentColor: \"#33A1FF\", ...(props.style ?? {}) }}\n className={cn(\"vb-slider w-full cursor-pointer\", props.className)}\n />\n );\n}\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends HTMLAttributes<HTMLSelectElement> {\n label?: string;\n value?: string;\n placeholder?: string;\n options?: SelectOption[];\n error?: string;\n size?: \"small\" | \"large\";\n border?: boolean;\n /** Key holding an option's stored value. A lookup binds rows keyed by the target's own id. */\n optionValueKey?: string;\n /** Key holding an option's visible text. */\n optionLabelKey?: string;\n}\n\n/** Controls/Select */\nexport function Select({\n optionValueKey = \"value\",\n optionLabelKey = \"label\",\n label,\n value,\n placeholder,\n options = [],\n error,\n children: _children,\n id,\n size = \"large\",\n border = true,\n ...props\n}: SelectProps) {\n const generatedId = useId();\n const fieldId = id ?? generatedId;\n return (\n <div className=\"flex flex-col\">\n {label && (\n <label htmlFor={fieldId} className={CONTROL_LABEL_CLASS}>\n {label}\n </label>\n )}\n <select\n id={fieldId}\n value={value ?? \"\"}\n aria-invalid={error ? true : undefined}\n {...props}\n className={cn(\n CONTROL_INPUT_CLASS,\n controlSizeClass(size),\n border && CONTROL_BORDER_CLASS,\n \"cursor-pointer appearance-none focus:bg-gray-100 dark:focus:bg-gray-850\",\n error && \"border-red-300 dark:border-red-800\",\n props.className,\n )}\n // Meridian draws its own chevron; on a native <select> the same mark comes from a\n // background image so the control keeps the platform's keyboard behavior.\n style={{\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 10' fill='none' stroke='%23C7C7C7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 2.636L2.636 1l1.637 1.636M1 7.364L2.636 9l1.637-1.636'/%3E%3C/svg%3E\\\")\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"right 0.5rem center\",\n backgroundSize: \"0.5rem 1rem\",\n paddingInlineEnd: \"1.5rem\",\n ...(props.style ?? {}),\n }}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option, index) => {\n // A lookup binds rows straight from a query, and those carry the target's own keys\n // (`id`/`name`), not `value`/`label`. Without a mapping every such option rendered\n // with an undefined value and no text, so a Link field looked empty and the document\n // it belonged to could not be saved.\n const raw = option as unknown as Record<string, unknown>;\n const value = String(raw[optionValueKey] ?? raw.value ?? \"\");\n const label = String(raw[optionLabelKey] ?? raw.label ?? value);\n return (\n <option key={`${value}-${index}`} value={value} disabled={option.disabled}>\n {label}\n </option>\n );\n })}\n </select>\n <ErrorText error={error} />\n </div>\n );\n}\n\nexport interface TextareaProps extends HTMLAttributes<HTMLTextAreaElement> {\n label?: string;\n value?: string;\n rows?: number;\n error?: string;\n size?: \"small\" | \"large\";\n border?: boolean;\n placeholder?: string;\n}\n\n/** Controls/Text */\nexport function Textarea({\n label,\n value,\n rows = 4,\n error,\n children: _children,\n id,\n size = \"large\",\n border = true,\n ...props\n}: TextareaProps) {\n const generatedId = useId();\n const fieldId = id ?? generatedId;\n return (\n <div className=\"flex flex-col\">\n {label && (\n <label htmlFor={fieldId} className={CONTROL_LABEL_CLASS}>\n {label}\n </label>\n )}\n <textarea\n id={fieldId}\n // A bound field whose stored value is null must still render as a controlled input:\n // React drops to uncontrolled and warns, and the field silently stops tracking state.\n value={value ?? \"\"}\n rows={rows}\n aria-invalid={error ? true : undefined}\n {...props}\n className={cn(\n CONTROL_INPUT_CLASS,\n controlSizeClass(size),\n border && CONTROL_BORDER_CLASS,\n \"resize-none focus:bg-gray-100 dark:focus:bg-gray-850\",\n error && \"border-red-300 dark:border-red-800\",\n props.className,\n )}\n />\n <ErrorText error={error} />\n </div>\n );\n}\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n label?: string;\n name?: string;\n value?: string;\n options?: RadioOption[];\n error?: string;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport function RadioGroup({\n label,\n name,\n value,\n options = [],\n error,\n onChange,\n children: _children,\n ...props\n}: RadioGroupProps) {\n const groupName = name ?? label ?? \"radio-group\";\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n aria-invalid={error ? true : undefined}\n {...props}\n className={cn(\"flex flex-col\", props.className)}\n >\n {label && <span className={CONTROL_LABEL_CLASS}>{label}</span>}\n <div className=\"flex flex-col gap-2\">\n {options.map((option) => (\n <label key={option.value} className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={groupName}\n value={option.value}\n checked={value === option.value}\n disabled={option.disabled}\n onChange={onChange}\n style={{ width: 14, height: 14, accentColor: \"#A1ABB4\" }}\n className=\"cursor-pointer\"\n />\n <span className=\"text-base text-gray-600 dark:text-gray-400\">{option.label}</span>\n </label>\n ))}\n </div>\n <ErrorText error={error} />\n </div>\n );\n}\n\nexport interface FormProps extends HTMLAttributes<HTMLFormElement> {\n children?: ReactNode;\n}\n\nexport function Form({ children, onSubmit, ...props }: FormProps) {\n return (\n <form\n {...props}\n onSubmit={(event) => {\n event.preventDefault();\n onSubmit?.(event);\n }}\n >\n {children}\n </form>\n );\n}\n\nexport interface ListViewProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function ListView({ children, ...props }: ListViewProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport interface GridViewProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function GridView({ children, ...props }: GridViewProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport interface DataTableColumn {\n key: string;\n label: string;\n align?: \"left\" | \"center\" | \"right\";\n /**\n * ListCell's its column format rule — how this column's raw value is printed.\n * `status` renders StatusPill's coloured pill instead of text. Numeric formats are\n * right-aligned unless `align` says otherwise, matching Meridian's `isNumeric` rule.\n */\n format?: CellFormat;\n}\n\nexport interface DataTableAction {\n label: string;\n event?: string;\n}\n\nexport interface DataTableProps extends HTMLAttributes<HTMLDivElement> {\n title?: string;\n dataSource?: string;\n columns?: DataTableColumn[];\n rows?: Array<Record<string, unknown>>;\n rowActions?: DataTableAction[];\n emptyMessage?: string;\n /** Meridian numbers every list row in a narrow leading column. */\n showIndex?: boolean;\n /** Meridian's Paginator: page sizes [50, 100, 500, All], first one active. */\n paginate?: boolean;\n pageSizes?: number[];\n /**\n * Fired when a row action button is clicked, with the full row data and which action was\n * clicked (matched by `DataTableAction.event`, the JSON `events` key it maps to — wired by\n * RenderNode.tsx's `resolveEvents`). Not fired for actions with no `event` set.\n */\n onRowAction?: (row: Record<string, unknown>, action: DataTableAction, index: number) => void;\n /**\n * Meridian's List makes the whole row the affordance and has no action\n * column at all. Supplying this turns rows into buttons; `rowActions` stays for callers that\n * genuinely need per-row verbs.\n */\n onRowOpen?: (row: Record<string, unknown>, index: number) => void;\n /** BCP 47 tag used to format date and numeric cells. */\n locale?: string;\n /** ISO 4217 code used to format `currency` columns. */\n currency?: string;\n}\n\n/**\n * {List,ListCell} + components/Row.\n *\n * Meridian's list is not a `<table>` and not a card: it is a stack of CSS-grid rows on the page\n * background, each `h-row-mid` (3rem) tall, separated by 1px `hr`s, with a 1rem grid gap and\n * a `w-8` index gutter. Nothing is boxed, nothing is shadowed, and the only fill in the whole\n * control is `hover:bg-gray-50` on a row. That flatness is the single biggest difference from\n * a conventional bordered data table, so it is reproduced structurally here rather than\n * approximated with table styling.\n */\nexport function DataTable({\n title,\n dataSource: _dataSource,\n columns = [],\n rows = [],\n rowActions = [],\n emptyMessage = \"No entries found\",\n showIndex = true,\n paginate = true,\n pageSizes = [50, 100, 500, -1],\n onRowAction,\n onRowOpen,\n locale,\n currency,\n ...props\n}: DataTableProps) {\n const [pageNo, setPageNo] = useState(1);\n const [pageSize, setPageSize] = useState(pageSizes[0] ?? 50);\n\n const count = pageSize === -1 ? Math.max(rows.length, 1) : pageSize;\n const maxPages = Math.max(Math.ceil(rows.length / count), 1);\n const currentPage = Math.min(pageNo, maxPages);\n const pageStart = (currentPage - 1) * count;\n const visibleRows = paginate ? rows.slice(pageStart, pageStart + count) : rows;\n\n const columnCount = columns.length + (rowActions.length > 0 ? 1 : 0);\n const gridStyle = {\n display: \"grid\",\n gridTemplateColumns: `repeat(${Math.max(columnCount, 1)}, minmax(0, 1fr))`,\n gridGap: \"1rem\",\n } as const;\n\n const isLast = (index: number) => index === columnCount - 1;\n // Meridian right-aligns numeric fieldtypes without the column having to ask (ListCell's\n // `cellClass`), so an explicit `align` is an override rather than the only source.\n const alignOf = (column: DataTableColumn) =>\n column.align ?? (isNumericFormat(column.format) ? \"right\" : undefined);\n const cellOptions = { ...(locale ? { locale } : {}), ...(currency ? { currency } : {}) };\n\n return (\n <section {...props} className={cn(\"flex flex-col overflow-hidden text-base\", props.className)}>\n {title && (\n <>\n {/* SectionHeader's weight, as a real heading so the section is navigable. */}\n <h3 className=\"flex h-row-mid flex-shrink-0 items-center px-4 text-base font-semibold text-gray-900 dark:text-white\">\n {title}\n </h3>\n <hr className=\"border-gray-200 dark:border-gray-800\" />\n </>\n )}\n\n {/* Title Row */}\n <div className=\"flex items-center\">\n {showIndex && <div className=\"me-2 w-8 text-end text-gray-700 dark:text-gray-400\">#</div>}\n <div className=\"h-row-mid flex-1 text-gray-700 dark:text-gray-400\" style={gridStyle}>\n {columns.map((column, index) => (\n // List makes each header cell its own `overflow-x-auto` scroller. Reproduced\n // literally that is a scrollable region no keyboard can reach (axe's\n // `scrollable-region-focusable`, serious) — and making every header cell a tab stop\n // to satisfy the rule would put one stop per column ahead of the actual content.\n // A column label is static text, so it truncates like the body cells below it and\n // keeps the full text in `title`: same appearance, nothing left unreachable.\n <div\n key={column.key}\n title={column.label}\n className={cn(\n \"flex h-full items-center truncate\",\n alignOf(column) === \"right\" && \"justify-end\",\n alignOf(column) === \"center\" && \"justify-center\",\n isLast(index) && \"pe-4\",\n )}\n >\n {column.label}\n </div>\n ))}\n {rowActions.length > 0 && (\n // Meridian has no per-row action column at all (rows navigate on click), so there is\n // no upstream header label to copy — left empty rather than inventing one.\n <div className=\"flex h-full items-center justify-end pe-4\" aria-hidden=\"true\" />\n )}\n </div>\n </div>\n <hr className=\"border-gray-200 dark:border-gray-800\" />\n\n {/* Data Rows */}\n {visibleRows.length > 0 && (\n <div className=\"overflow-y-auto\">\n {visibleRows.map((row, index) => (\n <div key={String(row.id ?? row.name ?? pageStart + index)}>\n {/* DataTable's own rows aren't separate UIDL nodes (RenderNode only stamps\n data-node-id on nodes it renders directly), so a data-row-id here is the only\n stable per-row hook a test or a future \"row click navigates\" affordance has. */}\n <div\n className={cn(\n \"flex items-center hover:bg-gray-50 dark:hover:bg-gray-850\",\n onRowOpen && \"cursor-pointer\",\n )}\n data-row-id={String(row.id ?? row.name ?? pageStart + index)}\n {...(onRowOpen\n ? {\n role: \"button\",\n tabIndex: 0,\n onClick: () => onRowOpen(row, pageStart + index),\n // A div-as-button is only an affordance for a mouse until it answers the\n // keys a real button answers.\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onRowOpen(row, pageStart + index);\n },\n }\n : {})}\n >\n {showIndex && (\n <div className=\"me-2 w-8 text-end text-gray-700 dark:text-gray-400\">{pageStart + index + 1}</div>\n )}\n <div className=\"h-row-mid flex-1 text-gray-900 dark:text-gray-300\" style={gridStyle}>\n {columns.map((column, cellIndex) => {\n const raw = row[column.key];\n const text = formatCellValue(raw, column.format, cellOptions);\n return (\n <div\n key={column.key}\n className={cn(\n \"flex items-center truncate\",\n alignOf(column) === \"right\" && \"justify-end\",\n alignOf(column) === \"center\" && \"justify-center\",\n isLast(cellIndex) && \"pe-4\",\n )}\n >\n {column.format === \"status\" && text ? (\n <Badge label={text} color={statusColor(text)} variant=\"pill\" />\n ) : (\n <span className=\"truncate\">{text}</span>\n )}\n </div>\n );\n })}\n {rowActions.length > 0 && (\n <div className=\"flex items-center justify-end gap-2 pe-4\">\n {rowActions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n onClick={(event) => {\n // The row itself may be an open-affordance; a verb inside it is a\n // different intent and must not also open the document.\n event.stopPropagation();\n onRowAction?.(row, action, pageStart + index);\n }}\n className=\"flex h-row-smallest items-center rounded-md bg-gray-100 px-3 text-sm text-gray-700 hover:bg-gray-200 dark:bg-gray-890 dark:text-gray-200 dark:hover:bg-gray-800\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n {index !== visibleRows.length - 1 && <hr className=\"border-gray-200 dark:border-gray-800\" />}\n </div>\n ))}\n </div>\n )}\n\n {/* Pagination Footer */}\n {rows.length > 0 && paginate && (\n <div className=\"mt-auto\">\n <hr className=\"border-gray-200 dark:border-gray-800\" />\n <Paginator\n itemCount={rows.length}\n pageNo={currentPage}\n count={count}\n maxPages={maxPages}\n pageSizes={pageSizes}\n activePageSize={pageSize}\n onPageNo={(value) => setPageNo(Math.min(Math.max(1, value), maxPages))}\n onPageSize={(value) => {\n setPageNo(1);\n setPageSize(value);\n }}\n />\n </div>\n )}\n\n {/* Empty State */}\n {rows.length === 0 && (\n <div className=\"my-auto flex flex-col items-center justify-center py-8\">\n <p className=\"my-3 text-gray-800 dark:text-gray-200\">{emptyMessage}</p>\n </div>\n )}\n </section>\n );\n}\n\ninterface PaginatorProps {\n itemCount: number;\n pageNo: number;\n count: number;\n maxPages: number;\n pageSizes: number[];\n activePageSize: number;\n onPageNo: (value: number) => void;\n onPageSize: (value: number) => void;\n}\n\n/**\n * Paginator — a 50px-tall three-column grid: range on the\n * start edge, page stepper centered, page-size selector on the end edge. The size selector is\n * hidden until there are more rows than the smallest page size, which is why short demo lists\n * show only \"1 - 3\" and \"1 / 1\".\n */\nfunction Paginator({\n itemCount,\n pageNo,\n count,\n maxPages,\n pageSizes,\n activePageSize,\n onPageNo,\n onPageSize,\n}: PaginatorProps) {\n const visibleSizes = pageSizes.filter((size) =>\n size === -1 ? itemCount >= (pageSizes[0] ?? 50) : itemCount >= size,\n );\n\n return (\n <div\n className=\"grid select-none grid-cols-3 items-center px-4 text-sm text-gray-800 dark:text-gray-100\"\n style={{ height: \"50px\" }}\n >\n <div className=\"justify-self-start\">\n {`${(pageNo - 1) * count + 1} - ${Math.min(pageNo * count, itemCount)}`}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-center\">\n <button\n type=\"button\"\n aria-label=\"Previous page\"\n onClick={() => onPageNo(pageNo - 1)}\n disabled={pageNo <= 1}\n className={cn(\n \"flex h-4 w-4 items-center justify-center\",\n pageNo > 1 ? \"cursor-pointer text-gray-600 dark:text-gray-500\" : \"text-transparent\",\n )}\n >\n <ChevronIcon direction=\"left\" />\n </button>\n <div className=\"flex gap-1 rounded bg-gray-100 px-1 dark:bg-gray-890\">\n <span className=\"w-7 text-end\">{pageNo}</span>\n <span className=\"text-gray-600\">/</span>\n <span className=\"w-7\">{maxPages}</span>\n </div>\n <button\n type=\"button\"\n aria-label=\"Next page\"\n onClick={() => onPageNo(pageNo + 1)}\n disabled={pageNo >= maxPages}\n className={cn(\n \"flex h-4 w-4 items-center justify-center\",\n pageNo < maxPages ? \"cursor-pointer text-gray-600 dark:text-gray-500\" : \"text-transparent\",\n )}\n >\n <ChevronIcon direction=\"right\" />\n </button>\n </div>\n\n {visibleSizes.length > 0 && (\n <div className=\"flex justify-self-end rounded border border-gray-100 dark:border-gray-800\">\n {visibleSizes.map((size) => (\n <button\n key={size}\n type=\"button\"\n onClick={() => onPageSize(size)}\n className={cn(\n \"w-9\",\n (activePageSize === size || (activePageSize === itemCount && size === -1)) &&\n \"rounded bg-gray-100 dark:bg-gray-890\",\n )}\n >\n {size === -1 ? \"All\" : size}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport interface PageBarProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Rows in the whole result, not just the loaded page — a server total. */\n total?: number;\n page?: number;\n pageSize?: number;\n pageSizes?: number[];\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n}\n\n/**\n * Paginator as a document-addressable widget, for lists whose paging happens on the\n * server. DataTable's built-in paginator slices the rows it was handed, which is the wrong\n * answer when the query already returned exactly one page: it would report \"1 - 1 / 1\" no\n * matter how many records exist. This one is told the real total and reports the state the\n * document holds, so a generated list can page for real instead of carrying the fixed\n * \"Displaying records\" caption and Previous/Next buttons that jumped to pages 1 and 2.\n *\n * The arithmetic (page count, clamping, the visible range) lives here because the JSON\n * expression language has no arithmetic — and should not grow any just to count pages.\n */\nexport function PageBar({\n total = 0,\n page = 1,\n pageSize = 20,\n pageSizes = [50, 100, 500, -1],\n onPageChange,\n onPageSizeChange,\n ...props\n}: PageBarProps) {\n const count = pageSize === -1 ? Math.max(total, 1) : pageSize;\n const maxPages = Math.max(Math.ceil(total / count), 1);\n const currentPage = Math.min(Math.max(page, 1), maxPages);\n\n return (\n <div {...props}>\n <Paginator\n itemCount={total}\n pageNo={currentPage}\n count={count}\n maxPages={maxPages}\n pageSizes={pageSizes}\n activePageSize={pageSize}\n onPageNo={(value) => onPageChange?.(Math.min(Math.max(1, value), maxPages))}\n onPageSize={(value) => {\n onPageChange?.(1);\n onPageSizeChange?.(value);\n }}\n />\n </div>\n );\n}\n\nfunction ChevronIcon({ direction }: { direction: \"left\" | \"right\" | \"down\" }) {\n const paths = {\n left: \"M15 18l-6-6 6-6\",\n right: \"M9 18l6-6-6-6\",\n down: \"M6 9l6 6 6-6\",\n } as const;\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n aria-hidden=\"true\"\n >\n <path d={paths[direction]} />\n </svg>\n );\n}\n\nexport interface ChartSeries {\n key: string;\n label?: string;\n color?: string;\n}\n\nexport interface ChartProps extends HTMLAttributes<HTMLDivElement> {\n title?: string;\n dataSource?: string;\n chartType?: \"bar\" | \"line\" | \"donut\" | \"area\";\n rows?: Array<Record<string, unknown>>;\n xKey?: string;\n yKey?: string;\n series?: ChartSeries[];\n emptyMessage?: string;\n /** Meridian's dashboard sections pair the title with a period/filter control on the end edge. */\n action?: ReactNode;\n /** Donut only — the label inside the hole (Meridian: \"Total Spending\"). */\n totalLabel?: string;\n /**\n * Drawn height in px for bar/line charts. Meridian's dashboard charts all land near 235px\n * regardless of column width, because each call site picks an aspect ratio to make that\n * true; here the ratio is derived from the measured width and this height instead.\n */\n height?: number;\n}\n\n/**\n * {Cashflow,ProfitAndLoss,Expenses}.\n *\n * A Meridian dashboard widget is a `p-4` region on the page — no card, no border of its own\n * (the neighbouring section supplies a `border-e`/`hr`) — made of `SectionHeader`\n * (`flex items-baseline justify-between`, `font-semibold text-base`), an optional inline\n * legend, and the SVG chart. Donuts sit beside their legend at half width each, which is how\n * Top Expenses is laid out.\n */\nexport function Chart({\n title,\n dataSource: _dataSource,\n chartType = \"bar\",\n rows = [],\n xKey = \"label\",\n yKey = \"value\",\n series,\n emptyMessage = \"No transactions yet\",\n action,\n totalLabel = \"Total\",\n height = 235,\n ...props\n}: ChartProps) {\n const [containerRef, containerWidth] = useElementWidth<HTMLElement>();\n const activeSeries = useMemo<ChartSeries[]>(\n () => (series?.length ? series : [{ key: yKey, label: title ?? yKey }]),\n [series, yKey, title],\n );\n const isDonut = chartType === \"donut\";\n\n const seriesColors = activeSeries.map(\n (item, index) => item.color ?? MERIDIAN_SERIES_COLORS[index % MERIDIAN_SERIES_COLORS.length],\n );\n const xLabels = rows.map((row) => formatCell(row[xKey]));\n const points = activeSeries.map((item) => rows.map((row) => Number(row[item.key] ?? 0)));\n\n // Fall back to Meridian's Cashflow ratio until the first measurement lands.\n const aspectRatio = containerWidth > 0 ? Math.max(containerWidth / height, 1) : 4.15;\n\n return (\n <section ref={containerRef} {...props} className={cn(\"flex flex-col\", props.className)}>\n {(title || action || (!isDonut && activeSeries.length > 1)) && (\n <div className=\"flex items-baseline justify-between gap-4 text-gray-900 dark:text-white\">\n {title && <span className=\"text-base font-semibold\">{title}</span>}\n {!isDonut && activeSeries.length > 1 && (\n <div className=\"flex gap-8 text-base\">\n {activeSeries.map((item, index) => (\n <div key={item.key} className=\"flex items-center gap-2\">\n <span\n className=\"inline-block h-3 w-3 rounded-sm\"\n style={{ backgroundColor: seriesColors[index] }}\n />\n <span className=\"text-gray-900 dark:text-gray-25\">{item.label ?? item.key}</span>\n </div>\n ))}\n </div>\n )}\n {action}\n </div>\n )}\n\n {rows.length === 0 ? (\n <div className=\"flex-center my-20 h-full w-full flex-1\">\n <span className=\"text-base text-gray-600 dark:text-gray-500\">{emptyMessage}</span>\n </div>\n ) : isDonut ? (\n <div className=\"relative flex\">\n <div className=\"flex w-1/2 flex-col justify-center gap-4 dark:text-gray-25\">\n {rows.map((row, index) => (\n <div key={String(row[xKey] ?? index)} className=\"flex items-center text-sm\">\n <span\n className=\"h-3 w-3 flex-shrink-0 rounded-sm\"\n style={{ backgroundColor: MERIDIAN_DONUT_COLORS[index % MERIDIAN_DONUT_COLORS.length] }}\n />\n <p className=\"no-scrollbar ms-2 w-28 overflow-x-auto whitespace-nowrap\">{formatCell(row[xKey])}</p>\n <p className=\"ms-auto flex-shrink-0 whitespace-nowrap\">{formatCell(row[yKey])}</p>\n </div>\n ))}\n </div>\n <MeridianDonutChart\n className=\"my-auto w-1/2\"\n ariaLabel={title ?? \"donut chart\"}\n totalLabel={totalLabel}\n offsetX={3}\n thickness={10}\n textOffsetX={6.5}\n sectors={rows.map((row, index) => ({\n color: MERIDIAN_DONUT_COLORS[index % MERIDIAN_DONUT_COLORS.length],\n value: Number(row[yKey] ?? 0),\n label: formatCell(row[xKey]),\n }))}\n />\n </div>\n ) : chartType === \"bar\" ? (\n <MeridianBarChart\n className=\"mt-4\"\n ariaLabel={title ?? \"bar chart\"}\n points={points}\n xLabels={xLabels}\n colors={seriesColors}\n aspectRatio={aspectRatio}\n />\n ) : (\n <MeridianLineChart\n className=\"mt-4\"\n ariaLabel={title ?? \"line chart\"}\n points={points}\n xLabels={xLabels}\n colors={seriesColors}\n aspectRatio={aspectRatio}\n />\n )}\n </section>\n );\n}\n\nexport interface KanbanColumn {\n id: string;\n title: string;\n color?: string;\n}\n\nexport interface KanbanCardItem {\n id: string;\n columnId: string;\n title: string;\n subtitle?: string;\n value?: string | number;\n badge?: string;\n route?: string;\n meta?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface KanbanBoardProps extends HTMLAttributes<HTMLDivElement> {\n title?: string;\n dataSource?: string;\n columns?: KanbanColumn[];\n rows?: KanbanCardItem[];\n emptyMessage?: string;\n onCardClick?: (card: KanbanCardItem) => void;\n}\n\nexport function KanbanBoard({\n title,\n dataSource: _dataSource,\n columns = [],\n rows = [],\n emptyMessage = \"No items in this board\",\n onCardClick,\n ...props\n}: KanbanBoardProps) {\n return (\n /*\n * Kanban is a Pipeline CRM surface rather than a Meridian one, so there is no upstream class\n * list to copy — it is rebuilt in the same visual language instead: flat gray-25 columns,\n * hairline gray-200 dividers, `rounded` cards and no drop shadows.\n */\n <section {...props} className={cn(\"flex flex-col p-4\", props.className)}>\n {title && (\n <div className=\"mb-4 flex items-baseline justify-between\">\n <h3 className=\"text-base font-semibold text-gray-900 dark:text-white\">{title}</h3>\n <span className=\"text-sm text-gray-600 dark:text-gray-500\">{rows.length} records</span>\n </div>\n )}\n <div className=\"grid grid-cols-1 gap-4 md:grid-flow-col md:auto-cols-fr\">\n {columns.map((col) => {\n const colCards = rows.filter((r) => r.columnId === col.id);\n return (\n <div key={col.id} className=\"flex flex-col rounded-md border border-gray-200 bg-gray-25 p-3 dark:border-gray-800 dark:bg-gray-890\">\n <div className=\"mb-3 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"h-2.5 w-2.5 rounded-sm\" style={{ backgroundColor: col.color ?? \"#7c7c7c\" }} />\n <span className=\"text-sm font-semibold text-gray-900 dark:text-gray-100\">{col.title}</span>\n </div>\n <span className=\"pill bg-gray-200 text-gray-700 dark:bg-gray-800 dark:text-gray-200\">\n {colCards.length}\n </span>\n </div>\n <div className=\"flex flex-1 flex-col gap-2 overflow-y-auto\">\n {colCards.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-gray-600 dark:text-gray-500\">{emptyMessage}</div>\n ) : (\n colCards.map((card) => (\n <div\n key={card.id}\n onClick={() => onCardClick?.(card)}\n className={cn(\n \"rounded-md border border-gray-200 bg-white p-3 transition-colors hover:bg-gray-50 dark:border-gray-800 dark:bg-gray-875 dark:hover:bg-gray-850\",\n card.route || onCardClick ? \"cursor-pointer\" : \"\"\n )}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <span className=\"text-base font-medium text-gray-900 dark:text-gray-100\">{card.title}</span>\n {card.badge && (\n <span className=\"pill flex-shrink-0 bg-gray-200 font-medium text-gray-700 dark:bg-gray-800 dark:text-gray-200\">\n {card.badge}\n </span>\n )}\n </div>\n {card.subtitle && <p className=\"mt-1 text-sm text-gray-600 dark:text-gray-500\">{card.subtitle}</p>}\n {card.value !== undefined && (\n <p className=\"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-25\">{String(card.value)}</p>\n )}\n </div>\n ))\n )}\n </div>\n </div>\n );\n })}\n </div>\n </section>\n );\n}\n\nexport interface TreeNodeItem {\n id: string;\n label: string;\n value?: string | number;\n badge?: string;\n subtitle?: string;\n defaultExpanded?: boolean;\n children?: TreeNodeItem[];\n route?: string;\n [key: string]: unknown;\n}\n\nexport interface TreeViewProps extends HTMLAttributes<HTMLDivElement> {\n title?: string;\n dataSource?: string;\n items?: TreeNodeItem[];\n rows?: TreeNodeItem[];\n emptyMessage?: string;\n onNodeClick?: (node: TreeNodeItem) => void;\n}\n\nfunction TreeNode({\n node,\n level = 0,\n onNodeClick,\n}: {\n node: TreeNodeItem;\n level?: number;\n onNodeClick?: (node: TreeNodeItem) => void;\n}) {\n const [expanded, setExpanded] = useState(node.defaultExpanded ?? true);\n const hasChildren = Boolean(node.children && node.children.length > 0);\n\n return (\n <div className=\"flex flex-col\">\n <div\n className={cn(\n // pages/ChartOfAccounts: rows are `h-row-mid + 1px` tall,\n // indented by `calc(1rem + 2rem * level)`, divided by a border rather than nested\n // in a bordered box, and the root level is one step larger (`text-lg`).\n \"flex flex-shrink-0 items-center justify-between border-b border-gray-200 pe-4 hover:bg-gray-50 dark:border-gray-800 dark:hover:bg-gray-890\",\n level === 0 ? \"text-lg\" : \"text-base\",\n node.route || onNodeClick ? \"cursor-pointer\" : \"\"\n )}\n style={{ height: \"calc(var(--h-row-mid) + 1px)\", paddingLeft: `calc(1rem + 2rem * ${level})` }}\n onClick={() => {\n if (hasChildren) {\n setExpanded(!expanded);\n }\n onNodeClick?.(node);\n }}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"w-3 text-center text-xs text-gray-500 dark:text-gray-600\">\n {hasChildren ? (expanded ? \"▾\" : \"▸\") : \"\"}\n </span>\n <span className={cn(\"text-gray-900 dark:text-gray-25\", level === 0 && \"font-semibold\")}>{node.label}</span>\n {node.subtitle && <span className=\"text-sm text-gray-600 dark:text-gray-500\">({node.subtitle})</span>}\n </div>\n <div className=\"flex items-center gap-3\">\n {node.badge && (\n <span className=\"pill bg-gray-200 font-medium text-gray-700 dark:bg-gray-800 dark:text-gray-200\">\n {node.badge}\n </span>\n )}\n {node.value !== undefined && (\n <span className=\"text-base text-gray-900 dark:text-gray-25\">{String(node.value)}</span>\n )}\n </div>\n </div>\n {hasChildren && expanded && (\n <div className=\"flex flex-col\">\n {node.children!.map((child) => (\n <TreeNode key={child.id} node={child} level={level + 1} onNodeClick={onNodeClick} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport function TreeView({\n title,\n dataSource: _dataSource,\n items,\n rows,\n emptyMessage = \"No tree data\",\n onNodeClick,\n ...props\n}: TreeViewProps) {\n const treeItems = items ?? rows ?? [];\n\n return (\n <section {...props} className={cn(\"flex flex-col text-base\", props.className)}>\n {title && (\n <h3 className=\"h-row-mid flex flex-shrink-0 items-center border-b border-gray-200 px-4 text-base font-semibold text-gray-900 dark:border-gray-800 dark:text-white\">\n {title}\n </h3>\n )}\n {treeItems.length === 0 ? (\n <div className=\"py-8 text-center text-base text-gray-600 dark:text-gray-500\">{emptyMessage}</div>\n ) : (\n <div className=\"custom-scroll flex flex-col overflow-y-auto\">\n {treeItems.map((item) => (\n <TreeNode key={item.id} node={item} level={0} onNodeClick={onNodeClick} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction formatCell(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return JSON.stringify(value);\n}\n\n/*\n * Chrome widgets (roadmap steps 4–5): Sidebar/Navbar/Toolbar are semantic, styled\n * containers — no behavior/state of their own, same pattern as Row/Column but with\n * a real landmark element and a sensible default layout (overridable via JSON\n * `style`, because `cn`'s twMerge drops conflicting classes). Drawer/Panel (further\n * down in this file) are the state-controlled overlays from roadmap step 5.\n */\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n}\n\n/** Sidebar — 14rem wide, gray-25, 0.5rem vertical inset. */\nexport function Sidebar({ children, ...props }: SidebarProps) {\n return (\n <aside\n {...props}\n className={cn(\"w-sidebar flex h-full flex-col bg-gray-25 py-2 dark:bg-gray-900\", props.className)}\n >\n {children}\n </aside>\n );\n}\n\nexport interface NavbarProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n}\n\n/**\n * PageHeader — the 4rem (`h-row-largest`) page header:\n * `px-4`, title and left slot on the start edge with `gap-4`, actions on the end edge with\n * `gap-2`, one hairline rule underneath.\n */\nexport function Navbar({ children, ...props }: NavbarProps) {\n return (\n <nav\n {...props}\n className={cn(\n \"h-row-largest flex flex-shrink-0 items-center justify-between gap-4 border-b border-gray-200 px-4 dark:border-gray-800 dark:bg-gray-875\",\n props.className,\n )}\n >\n {children}\n </nav>\n );\n}\n\nexport interface ToolbarProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function Toolbar({ children, ...props }: ToolbarProps) {\n return (\n <div {...props} role=\"toolbar\" className={cn(\"flex items-center gap-2\", props.className)}>\n {children}\n </div>\n );\n}\n\n/*\n * Overlay chrome (roadmap step 5): Drawer/Panel are controlled overlays with real behavior —\n * escape-to-close, backdrop-click-to-close, and a minimal focus trap (Tab/Shift+Tab inside\n * the open container, focus moved in on open and restored on close). Deliberately NOT built\n * on the action-triggered Dialog/Snackbar path: per the roadmap, documents control these via\n * props bound to state (`open: { \"$bind\": \"state.overlays.x\" }`) and forward `onClose` to the\n * ActionInterpreter (a `setState` action), so multiple overlays coexist via the state-key\n * naming convention `state.overlays.<name>` (documented in the README).\n */\n\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"textarea:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(\",\");\n\n/**\n * Open overlays, most recently opened last. Escape closes only the top-most one, so several\n * overlays (e.g. a Dialog and a Drawer) can be open at once and one Escape closes just the\n * top one instead of all of them.\n */\nconst openOverlays: Array<{ close: () => void }> = [];\n\n/**\n * Shared overlay behavior for Drawer/Panel: while `open`, moves focus into the container,\n * closes on Escape, traps Tab/Shift+Tab inside the container, and restores focus to the\n * previously-focused element when the overlay closes. Escape closes only the top-most open\n * overlay (see `openOverlays`); the Tab trap is per-overlay and only acts when focus is\n * actually inside its own container, so it doesn't interfere with overlays below.\n */\nfunction useOverlayBehavior(\n open: boolean | undefined,\n onClose: (() => void) | undefined,\n containerRef: RefObject<HTMLDivElement | null>,\n) {\n // Keep the latest onClose without re-running the effect — re-running would pop and re-push\n // this overlay's stack entry, silently re-ordering it above overlays that opened later.\n const closeRef = useRef(onClose);\n useEffect(() => {\n closeRef.current = onClose;\n });\n\n useEffect(() => {\n if (!open) return;\n\n const container = containerRef.current;\n const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n const entry = { close: () => closeRef.current?.() };\n openOverlays.push(entry);\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n // Only the top-most open overlay closes on Escape.\n if (openOverlays[openOverlays.length - 1] === entry) {\n entry.close();\n }\n return;\n }\n if (e.key !== \"Tab\" || !container) return;\n\n const focusables = container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n if (focusables.length === 0) return;\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement;\n\n if (e.shiftKey && (active === first || active === container)) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && (active === last || active === container)) {\n e.preventDefault();\n first.focus();\n }\n };\n\n // Move focus into the overlay so keyboard interaction starts inside it (the container is\n // tabIndex={-1}, so this is programmatic focus — it doesn't add a tab stop).\n container?.focus();\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n const index = openOverlays.indexOf(entry);\n if (index >= 0) openOverlays.splice(index, 1);\n previouslyFocused?.focus();\n };\n }, [open, containerRef]);\n}\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n onClose?: () => void;\n title?: string;\n /** Which screen edge the drawer slides from. Defaults to \"right\". */\n side?: \"left\" | \"right\" | \"top\" | \"bottom\";\n /** Show the dimming backdrop (click-to-close). Defaults to true. */\n backdrop?: boolean;\n children?: ReactNode;\n}\n\n/** Side strip + the one border that joins the panel to the page, as QuickEditForm does. */\nconst DRAWER_SIDE_CLASSES: Record<NonNullable<DrawerProps[\"side\"]>, string> = {\n left: \"inset-y-0 left-0 w-80 border-e\",\n right: \"inset-y-0 right-0 w-80 border-s\",\n top: \"inset-x-0 top-0 h-80 border-b\",\n bottom: \"inset-x-0 bottom-0 h-80 border-t\",\n};\n\n/** Off-screen starting translate per drawer side — the slide always comes from the screen edge. */\nconst DRAWER_START_TRANSLATE: Record<NonNullable<DrawerProps[\"side\"]>, string> = {\n left: \"-translate-x-full\",\n right: \"translate-x-full\",\n top: \"-translate-y-full\",\n bottom: \"translate-y-full\",\n};\n\n/*\n * Motion tokens (per the workspace motion-design skill): entrance 300ms / exit 200ms (exits\n * shorter than entrances), ease-out, transform+opacity only — nothing layout-affecting is\n * animated. prefers-reduced-motion short-circuits useOverlayPresence (instant show/hide), so\n * these classes never matter for reduced-motion users.\n */\nconst OVERLAY_EXIT_MS = 200;\n\n/** Motion classes per phase — the exit transition is deliberately shorter than the entrance. */\nfunction overlayMotionClasses(closing: boolean): { surface: string; fade: string } {\n const duration = closing ? \"duration-200\" : \"duration-300\";\n return {\n surface: `transition-transform ${duration} ease-out`,\n fade: `transition-opacity ${duration} ease-out`,\n };\n}\n\n/*\n * requestAnimationFrame is not universally available (e.g. jsdom without pretendToBeVisual,\n * which is what the vitest suite runs on) — fall back to a 16ms timer so the double-frame\n * sequencing in useOverlayPresence still works there. Real browsers use rAF.\n */\nconst nextFrame =\n typeof requestAnimationFrame === \"function\"\n ? requestAnimationFrame\n : (cb: FrameRequestCallback) => window.setTimeout(() => cb(0), 16);\nconst cancelFrame =\n typeof cancelAnimationFrame === \"function\"\n ? cancelAnimationFrame\n : (id: number) => window.clearTimeout(id);\n\n/**\n * Keeps an overlay mounted through its exit transition: mounts instantly when `open` flips\n * true (start state, then flips to the end state after a double rAF so the browser paints\n * the off-screen state first), and when `open` flips false it stays mounted for\n * `OVERLAY_EXIT_MS` (start state re-applied, CSS transition plays) before unmounting.\n * `closing` tells the renderer which state to apply. Interruptible: re-opening mid-exit\n * cancels the pending unmount timer. Skips the animation entirely under\n * `prefers-reduced-motion` (instant show/hide).\n */\nfunction useOverlayPresence(open: boolean | undefined): { mounted: boolean; closing: boolean; entered: boolean } {\n const [mounted, setMounted] = useState(false);\n const [closing, setClosing] = useState(false);\n const [entered, setEntered] = useState(false);\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n if (!open) return;\n }\n\n /* eslint-disable react-hooks/set-state-in-effect -- presence gating is the documented\n * modal-enter/exit pattern (react.dev/learn/you-might-not-need-an-effect, \"Example:\n * controlling a modal\" does the same synchronous state flip to stay mounted through the\n * exit transition). These flips synchronize React with DOM mount/unmount timing for the\n * CSS transitions — they are not derived data that could be computed during render. */\n const reduced = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\")?.matches ?? false;\n\n if (open) {\n setMounted(true);\n setClosing(false);\n if (reduced) {\n setEntered(true);\n return;\n }\n // Entering: render the start state first, then flip to the end state after the next\n // animation frame so the CSS transition runs cleanly.\n setEntered(false);\n const raf = nextFrame(() => {\n setEntered(true);\n });\n return () => {\n cancelFrame(raf);\n };\n }\n\n // Closing: re-apply the start state, keep mounted until the exit transition finishes.\n setEntered(false);\n setClosing(true);\n if (reduced) {\n setMounted(false);\n setClosing(false);\n return;\n }\n const timer = window.setTimeout(() => {\n setMounted(false);\n setClosing(false);\n }, OVERLAY_EXIT_MS);\n return () => window.clearTimeout(timer);\n /* eslint-enable react-hooks/set-state-in-effect */\n }, [open]);\n\n return { mounted, closing, entered };\n}\n\nexport function Drawer({ open, onClose, title, side = \"right\", backdrop = true, children, ...props }: DrawerProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n // Engage the overlay behavior only while the overlay is actually in the DOM: mounting is\n // deferred by one commit (useOverlayPresence flips `mounted` after the first render), so\n // gating on `open` alone would run the effect before the container ref is attached.\n const { mounted, closing, entered } = useOverlayPresence(open);\n useOverlayBehavior(open && mounted, onClose, containerRef);\n\n if (!mounted) return null;\n\n const motion = overlayMotionClasses(closing);\n const atRest = !closing && entered;\n const translate = atRest ? \"translate-x-0 translate-y-0\" : DRAWER_START_TRANSLATE[side];\n const fade = atRest ? \"opacity-100\" : \"opacity-0\";\n\n return (\n <div className=\"meridian-overlay pointer-events-none fixed inset-0 z-50\">\n {backdrop && (\n <div\n // Meridian's `.backdrop` (src/styles/index.css): 10% black plus a 2px blur, not a scrim.\n // The attribute is the stable hook for tests — the class list is presentation.\n data-overlay-backdrop=\"\"\n className={cn(\"pointer-events-auto absolute inset-0 bg-black/10 backdrop-blur-[2px]\", motion.fade, fade)}\n onClick={onClose}\n />\n )}\n <div\n ref={containerRef}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n {...props}\n className={cn(\n // Meridian's closest equivalent is the quick-edit pane (QuickEditForm): a plain\n // white surface joined to the page by one border, with a `h-row-large` title bar\n // in FormHeader's `text-xl font-semibold` — not a floating card.\n \"pointer-events-auto fixed flex flex-col border-gray-200 bg-white shadow-md outline-none dark:border-gray-800 dark:bg-gray-890\",\n motion.surface,\n DRAWER_SIDE_CLASSES[side],\n translate,\n closing && \"pointer-events-none\",\n props.className,\n )}\n >\n {title && (\n <h3 className=\"h-row-large flex flex-shrink-0 items-center border-b border-gray-200 px-4 text-xl font-semibold dark:border-gray-800 dark:text-gray-25\">\n {title}\n </h3>\n )}\n <div className=\"custom-scroll flex-1 overflow-y-auto p-4 text-base\">{children}</div>\n </div>\n </div>\n );\n}\n\nexport interface PanelProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n onClose?: () => void;\n /** Show the dimming backdrop (click-to-close). Defaults to true. */\n backdrop?: boolean;\n children?: ReactNode;\n}\n\nexport function Panel({ open, onClose, backdrop = true, children, ...props }: PanelProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n // Same deferral handling as Drawer — behavior engages only while the overlay is mounted.\n const { mounted, closing, entered } = useOverlayPresence(open);\n useOverlayBehavior(open && mounted, onClose, containerRef);\n\n if (!mounted) return null;\n\n const motion = overlayMotionClasses(closing);\n const atRest = !closing && entered;\n const fade = atRest ? \"opacity-100\" : \"opacity-0\";\n\n return (\n <div className=\"pointer-events-none fixed inset-0\">\n {backdrop && (\n <div\n // Meridian's `.backdrop` (src/styles/index.css): 10% black plus a 2px blur, not a scrim.\n // The attribute is the stable hook for tests — the class list is presentation.\n data-overlay-backdrop=\"\"\n className={cn(\"pointer-events-auto absolute inset-0 bg-black/10 backdrop-blur-[2px]\", motion.fade, fade)}\n onClick={onClose}\n />\n )}\n <div\n ref={containerRef}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n {...props}\n className={cn(\n \"meridian-overlay pointer-events-auto fixed inset-0 flex items-center justify-center\",\n motion.fade,\n fade,\n closing && \"pointer-events-none\",\n props.className,\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport interface PopoverProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n onClose?: () => void;\n /** Which edge the panel hangs from. Meridian's FilterDropdown is `bottom-end`. */\n align?: \"start\" | \"end\";\n children?: ReactNode;\n}\n\n/**\n * Popover, as Meridian actually uses it: a panel anchored to\n * the control that opened it, not a centred modal.\n *\n * Deliberately *not* portalled. Meridian wraps trigger and panel in one `relative` element and\n * positions the panel absolutely inside it (ListView's FilterDropdown, the Create dropdown),\n * which needs no anchor math and keeps the panel inside the same stacking and shadow-root\n * context as its trigger. A document places this node next to its trigger inside a container\n * styled `position: relative`.\n *\n * Escape and click-outside close it through the same overlay stack the Drawer and Panel use, so\n * a popover opened above a drawer still closes in the right order.\n */\nexport function Popover({ open, onClose, align = \"end\", children, ...props }: PopoverProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n useOverlayBehavior(open, onClose, containerRef);\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: MouseEvent) => {\n const container = containerRef.current;\n if (!container) return;\n const target = event.target as Node | null;\n // The trigger is a sibling, so a click on it must not close-then-reopen: the trigger's\n // own handler toggles state, and closing here first would make it look inert.\n if (target && (container.contains(target) || container.parentElement?.contains(target))) return;\n onClose?.();\n };\n document.addEventListener(\"mousedown\", onPointerDown, true);\n return () => document.removeEventListener(\"mousedown\", onPointerDown, true);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <div\n ref={containerRef}\n role=\"dialog\"\n {...props}\n // The edge offset is an inline style, not a `start-0`/`end-0` utility: those are the only\n // logical-inset classes this bundle would need, Tailwind's scanner never emitted them, and\n // the panel silently fell back to its static position and hung off the right of the page.\n style={{ ...(align === \"end\" ? { insetInlineEnd: 0 } : { insetInlineStart: 0 }), ...props.style }}\n className={cn(\n \"meridian-overlay absolute top-full z-10 mt-1 rounded-md border border-gray-200 bg-white shadow-lg dark:border-gray-800 dark:bg-gray-890\",\n props.className,\n )}\n >\n {children}\n </div>\n );\n}\n\nexport interface SnackbarProps extends HTMLAttributes<HTMLDivElement> {\n message?: string;\n duration?: number;\n onClose?: () => void;\n /** Leading outline icon. Toasts read as confirmations, so a check is the default. */\n iconName?: string;\n}\n\nexport function Snackbar({ message, duration = 3000, onClose, iconName = \"check-circle\", ...props }: SnackbarProps) {\n useEffect(() => {\n if (!message || !onClose) return;\n const timer = setTimeout(onClose, duration);\n return () => clearTimeout(timer);\n }, [message, duration, onClose]);\n\n if (!message) return null;\n\n return (\n <div\n {...props}\n role=\"status\"\n aria-live=\"polite\"\n className={cn(\n // Toast + App's #toast-container: a 24rem\n // white card, bordered and rounded-lg, pinned to the bottom end edge (`mb-3 pe-6`).\n \"w-toast fixed right-6 bottom-3 flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 text-base text-gray-900 shadow-lg dark:border-gray-800 dark:bg-gray-850 dark:text-gray-25\",\n props.className,\n )}\n >\n {iconName && <Icon name={iconName} className=\"h-5 w-5 flex-shrink-0 text-green-500\" />}\n <span className=\"min-w-0 flex-1\">{message}</span>\n </div>\n );\n}\n\nexport interface DialogProps extends Omit<HTMLAttributes<HTMLDivElement>, \"content\"> {\n title?: string;\n content?: ReactNode;\n open?: boolean;\n onClose?: () => void;\n}\n\nexport function Dialog({ title, content, open, onClose, ...props }: DialogProps) {\n // Same presence/motion story as Drawer/Panel: fade in on show, fade out on close. Snackbar\n // stays instant on purpose — it's a transient, timer-managed notification where an exit\n // transition would fight the auto-dismiss timing.\n const { mounted, closing, entered } = useOverlayPresence(open);\n\n if (!mounted) return null;\n\n const motion = overlayMotionClasses(closing);\n const fade = !closing && entered ? \"opacity-100\" : \"opacity-0\";\n\n return (\n /*\n * Modal: the `.backdrop` utility (10% black + a 2px\n * blur, not a 50% scrim), and a bordered `rounded-lg shadow-2xl` surface at `w-dialog`\n * (24rem). The title bar follows FormHeader.\n */\n <div className={cn(\"backdrop meridian-overlay z-50 flex items-center justify-center\", motion.fade, fade)}>\n <div data-overlay-backdrop=\"\" className=\"absolute inset-0\" onClick={onClose} />\n <div\n {...props}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n className={cn(\n \"w-dialog relative z-10 overflow-hidden rounded-lg border border-gray-200 bg-white shadow-2xl dark:border-gray-800 dark:bg-gray-850\",\n props.className,\n )}\n >\n {title && (\n <h3 className=\"h-row-large flex items-center border-b border-gray-200 px-4 text-xl font-semibold dark:border-gray-800 dark:text-gray-25\">\n {title}\n </h3>\n )}\n <div className=\"px-4 py-4 text-base text-gray-900 dark:text-gray-200\">{content}</div>\n <div className=\"flex justify-end border-t border-gray-200 px-4 py-3 dark:border-gray-800\">\n <Button onClick={onClose}>Close</Button>\n </div>\n </div>\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nexport interface QRCodeSVGProps extends SVGProps<SVGSVGElement> {\n value?: string;\n size?: number;\n fgColor?: string;\n bgColor?: string;\n}\n\n/**\n * Deterministic vector QR code SVG generator for verification URLs, DJP e-Faktur, and BMT certificates.\n */\nexport function QRCodeSVG({\n value = \"https://uidl-runtime.dev/verify\",\n size = 128,\n fgColor = \"#000000\",\n bgColor = \"#ffffff\",\n className,\n ...props\n}: QRCodeSVGProps) {\n // Generate a consistent matrix pattern based on hash of string value\n const gridSize = 25; // 25x25 QR Matrix (Version 2)\n const hash = Array.from(value).reduce((acc, char, i) => acc + char.charCodeAt(0) * (i + 1), 0);\n\n const modules: boolean[][] = Array.from({ length: gridSize }, (_, row) =>\n Array.from({ length: gridSize }, (_, col) => {\n // Finder patterns (top-left, top-right, bottom-left 7x7 squares)\n const isTopLeftFinder = row < 7 && col < 7;\n const isTopRightFinder = row < 7 && col >= gridSize - 7;\n const isBottomLeftFinder = row >= gridSize - 7 && col < 7;\n\n if (isTopLeftFinder || isTopRightFinder || isBottomLeftFinder) {\n const r = isBottomLeftFinder ? row - (gridSize - 7) : row;\n const c = isTopRightFinder ? col - (gridSize - 7) : col;\n // 7x7 outer border, 5x5 inner white, 3x3 central black box\n if (r === 0 || r === 6 || c === 0 || c === 6) return true;\n if (r >= 2 && r <= 4 && c >= 2 && c <= 4) return true;\n return false;\n }\n\n // Timing patterns (line at row 6 and col 6)\n if (row === 6 || col === 6) {\n return (row + col) % 2 === 0;\n }\n\n // Pseudo-random deterministic payload bits based on value & coordinates\n const bitIndex = row * gridSize + col;\n const charCode = value.charCodeAt(bitIndex % value.length) || 65;\n return ((charCode * 31 + bitIndex * 17 + hash) % 3) === 0;\n })\n );\n\n const cellSize = size / gridSize;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-label={`QR Code for ${value}`}\n role=\"img\"\n {...props}\n >\n <rect width={size} height={size} fill={bgColor} />\n {modules.flatMap((row, r) =>\n row.map((active, c) =>\n active ? (\n <rect\n key={`${r}-${c}`}\n x={c * cellSize}\n y={r * cellSize}\n width={cellSize + 0.2}\n height={cellSize + 0.2}\n fill={fgColor}\n />\n ) : null\n )\n )}\n </svg>\n );\n}\n\nexport interface BarcodeSVGProps extends SVGProps<SVGSVGElement> {\n value?: string;\n width?: number;\n height?: number;\n showText?: boolean;\n}\n\n/**\n * 1D Barcode SVG generator (Code 128 style) for shipping tracking numbers, Medical Records (RM), and SKU tags.\n */\nexport function BarcodeSVG({\n value = \"1234567890\",\n width = 240,\n height = 64,\n showText = true,\n className,\n ...props\n}: BarcodeSVGProps) {\n // Generate bar sequence based on character codes\n const barPattern: number[] = [2, 1, 1, 2]; // Start pattern\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n barPattern.push((code % 3) + 1, ((code * 3) % 2) + 1, ((code * 7) % 3) + 1, ((code * 5) % 2) + 1);\n }\n barPattern.push(2, 3, 1, 2); // Stop pattern\n\n const totalUnits = barPattern.reduce((a, b) => a + b, 0);\n const unitWidth = width / totalUnits;\n const barHeight = showText ? height - 16 : height;\n\n let currentX = 0;\n\n return (\n <svg\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-label={`Barcode for ${value}`}\n role=\"img\"\n {...props}\n >\n {barPattern.map((barWidth, index) => {\n const isBlack = index % 2 === 0;\n const x = currentX;\n currentX += barWidth * unitWidth;\n if (!isBlack) return null;\n return (\n <rect\n key={index}\n x={x}\n y={0}\n width={barWidth * unitWidth + 0.2}\n height={barHeight}\n fill=\"#000000\"\n />\n );\n })}\n {showText && (\n <text\n x={width / 2}\n y={height - 2}\n textAnchor=\"middle\"\n fontSize=\"11\"\n fontFamily=\"monospace\"\n fontWeight=\"bold\"\n fill=\"#111827\"\n letterSpacing=\"2\"\n >\n {value}\n </text>\n )}\n </svg>\n );\n}\n\nexport interface DataMatrixSVGProps extends SVGProps<SVGSVGElement> {\n value?: string;\n size?: number;\n}\n\n/**\n * 2D DataMatrix SVG generator for ISO 13485 Medical Device UDI (Unique Device Identification).\n */\nexport function DataMatrixSVG({ value = \"UDI-13485\", size = 64, className, ...props }: DataMatrixSVGProps) {\n const gridSize = 16;\n const cellSize = size / gridSize;\n const hash = Array.from(value).reduce((acc, char, i) => acc + char.charCodeAt(0) * (i + 1), 0);\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-label={`UDI DataMatrix for ${value}`}\n role=\"img\"\n {...props}\n >\n <rect width={size} height={size} fill=\"#ffffff\" />\n {/* L-Finder border pattern: Solid left and bottom lines */}\n <rect x={0} y={0} width={cellSize} height={size} fill=\"#000000\" />\n <rect x={0} y={size - cellSize} width={size} height={cellSize} fill=\"#000000\" />\n\n {/* Alternating top and right timing pattern */}\n {Array.from({ length: gridSize }).map((_, i) => {\n if (i % 2 === 0) {\n return (\n <rect key={`top-${i}`} x={i * cellSize} y={0} width={cellSize} height={cellSize} fill=\"#000000\" />\n );\n }\n return null;\n })}\n {Array.from({ length: gridSize }).map((_, i) => {\n if (i % 2 === 0) {\n return (\n <rect key={`right-${i}`} x={size - cellSize} y={i * cellSize} width={cellSize} height={cellSize} fill=\"#000000\" />\n );\n }\n return null;\n })}\n\n {/* Internal data modules */}\n {Array.from({ length: gridSize - 2 }).map((_, r) =>\n Array.from({ length: gridSize - 2 }).map((_, c) => {\n const charCode = value.charCodeAt((r * gridSize + c) % value.length) || 65;\n const active = ((charCode * 19 + r * 11 + c * 7 + hash) % 2) === 0;\n if (!active) return null;\n return (\n <rect\n key={`data-${r}-${c}`}\n x={(c + 1) * cellSize}\n y={(r + 1) * cellSize}\n width={cellSize + 0.1}\n height={cellSize + 0.1}\n fill=\"#000000\"\n />\n );\n })\n )}\n </svg>\n );\n}\n","import type { ComponentEventDescriptor, ComponentPropDescriptor, ComponentPropType, WidgetManifest } from \"../types\";\nimport {\n Container,\n Row,\n Column,\n Stack,\n Spacer,\n Divider,\n Text,\n Image,\n Button,\n Badge,\n TextField,\n Checkbox,\n Switch,\n Slider,\n Select,\n Textarea,\n RadioGroup,\n Form,\n ListView,\n GridView,\n DataTable,\n PageBar,\n Chart,\n KanbanBoard,\n TreeView,\n Sidebar,\n Navbar,\n Toolbar,\n Drawer,\n Panel,\n Popover,\n Dialog,\n Snackbar,\n} from \"../components/primitives\";\nimport { BarcodeSVG, DataMatrixSVG, QRCodeSVG } from \"../components/BarcodeAndQRCode\";\nimport { IconWidget } from \"../components/icons\";\n\nfunction prop(\n name: string,\n type: ComponentPropType,\n description?: string,\n options: Omit<ComponentPropDescriptor, \"name\" | \"type\" | \"description\"> = {},\n): ComponentPropDescriptor {\n return { name, type, ...(description ? { description } : {}), ...options };\n}\n\nfunction event(name: string, payload: ComponentEventDescriptor[\"payload\"], description?: string): ComponentEventDescriptor {\n return { name, payload, ...(description ? { description } : {}) };\n}\n\nconst containerProps = [prop(\"className\", \"string\"), prop(\"style\", \"object\")];\nconst textProps = [\n prop(\"value\", \"string\", \"Visible text content.\", { bindable: true }),\n prop(\"heading\", \"enum\", \"Render as h1-h6 instead of a paragraph.\", { values: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"] }),\n prop(\"format\", \"enum\", \"Print a bound numeric/date value the way a list cell would.\", {\n values: [\"text\", \"currency\", \"number\", \"integer\", \"date\", \"status\", \"check\"],\n }),\n prop(\"locale\", \"string\", \"BCP 47 tag used when `format` is set.\"),\n prop(\"currency\", \"string\", \"ISO 4217 code used when `format` is `currency`.\"),\n];\nconst formControlProps = [\n prop(\"label\", \"string\"),\n prop(\"aria-label\", \"string\", \"Accessible name, for a control whose visible label is a sibling node (TwoColumnForm rows).\"),\n\n prop(\"value\", \"string\", \"Controlled field value.\", { bindable: true }),\n prop(\"placeholder\", \"string\"),\n prop(\"error\", \"string\"),\n prop(\"size\", \"enum\", \"Meridian control density.\", { values: [\"small\", \"large\"] }),\n prop(\"border\", \"boolean\"),\n prop(\"disabled\", \"boolean\"),\n prop(\"readOnly\", \"boolean\"),\n];\nconst optionProps = [prop(\"options\", \"array\", \"Array of { value, label, disabled? } options.\")];\nconst closeEvent = event(\"onClose\", \"close\", \"Fires when the component requests dismissal.\");\n\nexport const defaultWidgets: WidgetManifest[] = [\n {\n type: \"Container\",\n component: Container,\n category: \"layout\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n events: [\"onClick\"],\n eventDescriptors: [event(\"onClick\", \"event\")],\n },\n {\n type: \"Row\",\n component: Row,\n category: \"layout\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"Column\",\n component: Column,\n category: \"layout\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"Stack\",\n component: Stack,\n category: \"layout\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"Spacer\",\n component: Spacer,\n category: \"layout\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"Divider\",\n component: Divider,\n category: \"layout\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"Text\",\n component: Text,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: textProps,\n },\n {\n // An outline glyph addressed by name (see `ICON_NAMES`) — the schema-level replacement for\n // emoji, which do not theme, do not scale with the type ramp and read differently per OS.\n type: \"Icon\",\n component: IconWidget,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: { name: \"document-text\" },\n propDescriptors: [\n prop(\"name\", \"string\", \"Icon name from ICON_NAMES.\"),\n prop(\"size\", \"number\", \"Rendered icon size in px, or pass a CSS size string.\"),\n prop(\"title\", \"string\", \"Accessible icon title.\"),\n prop(\"strokeWidth\", \"number\"),\n prop(\"className\", \"string\"),\n ],\n },\n {\n type: \"Image\",\n component: Image,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"src\", \"string\"), prop(\"alt\", \"string\"), prop(\"className\", \"string\"), prop(\"style\", \"object\")],\n },\n {\n type: \"Button\",\n component: Button,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [\n prop(\"label\", \"string\", \"Button label text.\"),\n prop(\"variant\", \"enum\", \"Meridian button variant.\", { values: [\"primary\", \"secondary\"] }),\n prop(\"icon\", \"boolean\", \"Use compact icon-button padding.\"),\n prop(\"iconName\", \"string\", \"Optional leading or trailing icon from ICON_NAMES.\"),\n prop(\"iconPosition\", \"enum\", \"Icon placement.\", { values: [\"start\", \"end\"] }),\n prop(\"background\", \"boolean\"),\n prop(\"padding\", \"boolean\"),\n prop(\"disabled\", \"boolean\"),\n ],\n events: [\"onClick\"],\n eventDescriptors: [event(\"onClick\", \"event\")],\n },\n {\n type: \"Badge\",\n component: Badge,\n category: \"base\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: [\n prop(\"label\", \"string\"),\n prop(\"color\", \"enum\", \"Meridian status color.\", { values: [\"gray\", \"orange\", \"green\", \"red\", \"yellow\", \"blue\", \"indigo\", \"pink\", \"purple\", \"teal\"] }),\n prop(\"variant\", \"enum\", \"Badge size/style.\", { values: [\"badge\", \"pill\"] }),\n prop(\"iconName\", \"string\"),\n ],\n },\n {\n type: \"TextField\",\n component: TextField,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: formControlProps,\n events: [\"onChange\", \"onBlur\", \"onFocus\"],\n eventDescriptors: [event(\"onChange\", \"value\"), event(\"onBlur\", \"event\"), event(\"onFocus\", \"event\")],\n },\n {\n type: \"Checkbox\",\n component: Checkbox,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"label\", \"string\"), prop(\"aria-label\", \"string\"), prop(\"checked\", \"boolean\", \"Controlled checked state.\", { bindable: true }), prop(\"disabled\", \"boolean\")],\n events: [\"onChange\"],\n eventDescriptors: [event(\"onChange\", \"value\")],\n },\n {\n type: \"Switch\",\n component: Switch,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"checked\", \"boolean\", \"Controlled checked state.\", { bindable: true }), prop(\"aria-label\", \"string\")],\n events: [\"onChange\"],\n eventDescriptors: [event(\"onChange\", \"value\")],\n },\n {\n type: \"Slider\",\n component: Slider,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"value\", \"number\", \"Controlled numeric value.\", { bindable: true }), prop(\"min\", \"number\"), prop(\"max\", \"number\"), prop(\"disabled\", \"boolean\"), prop(\"aria-label\", \"string\")],\n events: [\"onChange\"],\n eventDescriptors: [event(\"onChange\", \"value\")],\n },\n {\n type: \"Select\",\n component: Select,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [\n ...formControlProps,\n ...optionProps,\n prop(\"optionValueKey\", \"string\", \"Key holding an option's stored value; lookup rows carry the target's own id.\"),\n prop(\"optionLabelKey\", \"string\", \"Key holding an option's visible text.\"),\n ],\n events: [\"onChange\", \"onBlur\", \"onFocus\"],\n eventDescriptors: [event(\"onChange\", \"value\"), event(\"onBlur\", \"event\"), event(\"onFocus\", \"event\")],\n },\n {\n type: \"Textarea\",\n component: Textarea,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [...formControlProps, prop(\"rows\", \"number\")],\n events: [\"onChange\", \"onBlur\", \"onFocus\"],\n eventDescriptors: [event(\"onChange\", \"value\"), event(\"onBlur\", \"event\"), event(\"onFocus\", \"event\")],\n },\n {\n type: \"RadioGroup\",\n component: RadioGroup,\n category: \"form\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"label\", \"string\"), prop(\"name\", \"string\"), prop(\"value\", \"string\", \"Controlled selected value.\", { bindable: true }), ...optionProps, prop(\"error\", \"string\")],\n events: [\"onChange\"],\n eventDescriptors: [event(\"onChange\", \"value\")],\n },\n {\n type: \"Form\",\n component: Form,\n category: \"form\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n events: [\"onSubmit\"],\n eventDescriptors: [event(\"onSubmit\", \"submit\")],\n },\n {\n type: \"ListView\",\n component: ListView,\n category: \"data\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"GridView\",\n component: GridView,\n category: \"data\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n },\n {\n type: \"DataTable\",\n component: DataTable,\n category: \"data\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [\n prop(\"title\", \"string\"),\n prop(\"dataSource\", \"string\", \"Name of a document data source resolved to rows.\"),\n prop(\n \"columns\",\n \"array\",\n \"Array of { key, label, align?, format? } columns. `format` is one of text | currency | number | integer | date | status | check and drives how the value is printed (status renders a coloured pill; numeric formats right-align).\",\n ),\n prop(\"rows\", \"array\", \"Static row objects. Prefer dataSource for adapter-backed data.\"),\n prop(\"rowActions\", \"array\", \"Array of { label, event? } row actions. Omit for a Meridian-style list where the row itself opens the record.\"),\n prop(\"emptyMessage\", \"string\"),\n prop(\"showIndex\", \"boolean\"),\n prop(\"paginate\", \"boolean\"),\n prop(\"pageSizes\", \"array\"),\n prop(\"locale\", \"string\", \"BCP 47 tag used to format date and numeric cells.\"),\n prop(\"currency\", \"string\", \"ISO 4217 code used to format `currency` columns.\"),\n ],\n events: [\"onRowAction\", \"onOpen\"],\n eventDescriptors: [\n event(\"onRowAction\", \"rowAction\", \"Fires for row action buttons; named row action events are also supported.\"),\n event(\"onOpen\", \"rowAction\", \"Fires when a row is activated (click or Enter/Space), with that row's data.\"),\n ],\n hideFromPalette: true,\n },\n {\n type: \"PageBar\",\n component: PageBar,\n category: \"navigation\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [\n prop(\"total\", \"number\", \"Rows in the whole result — a server total, not the loaded page.\", { bindable: true }),\n prop(\"page\", \"number\", \"Current 1-based page.\", { bindable: true }),\n prop(\"pageSize\", \"number\", \"Rows per page; -1 means all.\", { bindable: true }),\n prop(\"pageSizes\", \"array\", \"Selectable page sizes. Meridian uses [50, 100, 500, -1].\"),\n ],\n events: [\"onPageChange\", \"onPageSizeChange\"],\n eventDescriptors: [\n event(\"onPageChange\", \"value\", \"Fires with the new 1-based page number.\"),\n event(\"onPageSizeChange\", \"value\", \"Fires with the new page size (-1 for all).\"),\n ],\n hideFromPalette: true,\n },\n {\n type: \"Chart\",\n component: Chart,\n category: \"data\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [\n prop(\"title\", \"string\"),\n prop(\"dataSource\", \"string\"),\n prop(\"chartType\", \"enum\", \"Chart visual type.\", { values: [\"bar\", \"line\", \"donut\", \"area\"] }),\n prop(\"rows\", \"array\"),\n prop(\"xKey\", \"string\"),\n prop(\"yKey\", \"string\"),\n prop(\"series\", \"array\", \"Array of { key, label?, color? } series.\"),\n prop(\"emptyMessage\", \"string\"),\n prop(\"totalLabel\", \"string\"),\n prop(\"height\", \"number\"),\n ],\n hideFromPalette: true,\n },\n {\n type: \"KanbanBoard\",\n component: KanbanBoard,\n category: \"data\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"title\", \"string\"), prop(\"dataSource\", \"string\"), prop(\"columns\", \"array\"), prop(\"rows\", \"array\"), prop(\"emptyMessage\", \"string\")],\n events: [\"onCardClick\"],\n eventDescriptors: [event(\"onCardClick\", \"card\")],\n hideFromPalette: true,\n },\n {\n type: \"TreeView\",\n component: TreeView,\n category: \"data\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"title\", \"string\"), prop(\"dataSource\", \"string\"), prop(\"items\", \"array\"), prop(\"rows\", \"array\"), prop(\"emptyMessage\", \"string\")],\n events: [\"onNodeClick\"],\n eventDescriptors: [event(\"onNodeClick\", \"node\")],\n hideFromPalette: true,\n },\n {\n // Chrome widgets (roadmap step 4): semantic containers only — `<aside>`/`<nav>`/\n // `div[role=\"toolbar\"]` with a sensible default layout, no behavior of their own.\n // Registering here is the whole story — no WidgetPalette code change is needed or\n // made (the palette derives its list from the registry; see notes.md BATASAN TEGAS).\n type: \"Sidebar\",\n component: Sidebar,\n category: \"navigation\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n hideFromPalette: true,\n },\n {\n type: \"Navbar\",\n component: Navbar,\n category: \"navigation\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n hideFromPalette: true,\n },\n {\n type: \"Toolbar\",\n component: Toolbar,\n category: \"navigation\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: containerProps,\n hideFromPalette: true,\n },\n {\n // Overlay chrome (roadmap step 5): state-controlled overlays. Documents drive them via\n // props bound to state (`open: { \"$bind\": \"state.overlays.<name>\" }`) and forward\n // `onClose` to a setState action — NOT action-triggered like Dialog/Snackbar. Escape,\n // backdrop-click close, and a focus trap live in the components themselves.\n type: \"Drawer\",\n component: Drawer,\n category: \"advanced\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: [prop(\"open\", \"boolean\", \"Controls drawer visibility.\", { bindable: true }), prop(\"title\", \"string\"), prop(\"side\", \"enum\", \"Screen edge the drawer slides from.\", { values: [\"left\", \"right\", \"top\", \"bottom\"] }), prop(\"backdrop\", \"boolean\")],\n events: [\"onClose\"],\n eventDescriptors: [closeEvent],\n hideFromPalette: true,\n },\n {\n type: \"Panel\",\n component: Panel,\n category: \"advanced\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: [prop(\"open\", \"boolean\", \"Controls panel visibility.\", { bindable: true }), prop(\"backdrop\", \"boolean\")],\n events: [\"onClose\"],\n eventDescriptors: [closeEvent],\n hideFromPalette: true,\n },\n {\n type: \"Popover\",\n component: Popover,\n category: \"navigation\",\n acceptsChildren: true,\n defaultProps: {},\n propDescriptors: [\n prop(\"open\", \"boolean\", \"Controlled visibility.\", { bindable: true }),\n prop(\"align\", \"enum\", \"Which edge the panel hangs from.\", { values: [\"start\", \"end\"] }),\n prop(\"className\", \"string\"),\n ],\n events: [\"onClose\"],\n eventDescriptors: [closeEvent],\n hideFromPalette: true,\n },\n {\n // Not typically placed directly in a document tree — normally shown via a `showDialog`\n // action (see UIDocumentRenderer, which listens for it). Registered so `type: \"Dialog\"`\n // is still valid if a document ever wants to control one explicitly via bindings.\n type: \"Dialog\",\n component: Dialog,\n category: \"advanced\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"open\", \"boolean\", \"Controls dialog visibility.\", { bindable: true }), prop(\"title\", \"string\"), prop(\"content\", \"node\")],\n events: [\"onClose\"],\n eventDescriptors: [closeEvent],\n hideFromPalette: true,\n },\n {\n // Same as Dialog — normally shown via a `showSnackbar` action, registered for explicit use.\n type: \"Snackbar\",\n component: Snackbar,\n category: \"advanced\",\n acceptsChildren: false,\n defaultProps: {},\n propDescriptors: [prop(\"message\", \"string\"), prop(\"duration\", \"number\"), prop(\"iconName\", \"string\")],\n events: [\"onClose\"],\n eventDescriptors: [closeEvent],\n hideFromPalette: true,\n },\n {\n type: \"QRCode\",\n component: QRCodeSVG,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: { value: \"https://djp.pajak.go.id/faktur\" },\n propDescriptors: [prop(\"value\", \"string\"), prop(\"size\", \"number\"), prop(\"fgColor\", \"string\"), prop(\"bgColor\", \"string\")],\n hideFromPalette: true,\n },\n {\n type: \"Barcode\",\n component: BarcodeSVG,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: { value: \"1234567890\" },\n propDescriptors: [prop(\"value\", \"string\"), prop(\"width\", \"number\"), prop(\"height\", \"number\"), prop(\"showText\", \"boolean\")],\n hideFromPalette: true,\n },\n {\n type: \"DataMatrix\",\n component: DataMatrixSVG,\n category: \"base\",\n acceptsChildren: false,\n defaultProps: { value: \"UDI-13485\" },\n propDescriptors: [prop(\"value\", \"string\"), prop(\"size\", \"number\")],\n hideFromPalette: true,\n },\n];\n","import type { ComponentRegistry, WidgetManifest } from \"../types\";\nimport { defaultWidgets } from \"./defaults\";\n\nexport function createRegistry(): ComponentRegistry {\n const registry = new Map<string, WidgetManifest>();\n\n for (const widget of defaultWidgets) {\n registry.set(widget.type, widget);\n }\n\n return {\n get(type: string) {\n return registry.get(type);\n },\n register(manifest: WidgetManifest) {\n registry.set(manifest.type, manifest);\n },\n has(type: string) {\n return registry.has(type);\n },\n list() {\n return Array.from(registry.values());\n },\n };\n}\n\nexport const defaultRegistry = createRegistry();\n\nexport function registerComponent(manifest: WidgetManifest) {\n defaultRegistry.register(manifest);\n}\n","import type { Theme, StyleIntent, ComponentVariant, TypographyToken, ResponsiveValue } from \"../types/theme\";\n\nexport interface ThemeEngine {\n resolveToken(path: string): unknown;\n resolveStyleIntent(style: StyleIntent): string;\n resolveInlineStyle(style: StyleIntent): Record<string, string>;\n resolveComponentVariant(type: string, variantName: string): ComponentVariant | undefined;\n resolveTypography(token: TypographyToken): string;\n}\n\nconst CSS_VAR_CATEGORIES = new Set([\"color\", \"spacing\", \"radius\", \"shadow\", \"font\", \"border\"]);\n\n/** Style fields that just pass their (responsive) value straight through as a Tailwind class. */\nconst PASSTHROUGH_STYLE_FIELDS = [\n \"gap\",\n \"padding\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"maxWidth\",\n \"minHeight\",\n \"maxHeight\",\n \"inset\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"background\",\n \"color\",\n \"fontSize\",\n \"lineHeight\",\n \"letterSpacing\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderColor\",\n \"shadow\",\n] as const satisfies readonly (keyof StyleIntent)[];\n\nfunction isTokenRef(value: unknown): value is string {\n return typeof value === \"string\" && value.startsWith(\"{\") && value.endsWith(\"}\");\n}\n\n/** Turns a `{primitives.color.primary}` token reference into `var(--color-primary)`. */\nfunction tokenRefToCssVar(ref: string): string | undefined {\n const path = ref.slice(1, -1);\n const parts = path.split(\".\");\n if (parts[0] !== \"primitives\" || parts.length < 3) return undefined;\n\n const category = parts[1];\n const key = parts.slice(2).join(\"-\");\n if (!CSS_VAR_CATEGORIES.has(category)) return undefined;\n\n return `var(--${category}-${key})`;\n}\n\nfunction getValueByPath(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split(\".\");\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current && typeof current === \"object\" && part in current) {\n current = (current as Record<string, unknown>)[part];\n } else {\n return undefined;\n }\n }\n\n return current;\n}\n\nfunction isResponsiveValue(value: unknown): value is ResponsiveValue<unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nexport function createThemeEngine(theme: Theme): ThemeEngine {\n const primitiveColorMap = new Map(\n Object.entries(theme.primitives.color).map(([key, value]) => [key, value]),\n );\n const primitiveSpacingMap = new Map(\n Object.entries(theme.primitives.spacing).map(([key, value]) => [key, value]),\n );\n const primitiveRadiusMap = new Map(\n Object.entries(theme.primitives.radius).map(([key, value]) => [key, value]),\n );\n const primitiveShadowMap = new Map(\n Object.entries(theme.primitives.shadow).map(([key, value]) => [key, value]),\n );\n const primitiveFontMap = new Map(\n Object.entries(theme.primitives.font).map(([key, value]) => [key, value]),\n );\n const primitiveBorderMap = new Map(\n Object.entries(theme.primitives.border).map(([key, value]) => [key, value]),\n );\n\n const semanticColorMap = new Map(\n Object.entries(theme.semantics.color).map(([key, value]) => [key, value]),\n );\n const semanticSpacingMap = new Map(\n Object.entries(theme.semantics.spacing).map(([key, value]) => [key, value]),\n );\n const semanticRadiusMap = new Map(\n Object.entries(theme.semantics.radius).map(([key, value]) => [key, value]),\n );\n const semanticShadowMap = new Map(\n Object.entries(theme.semantics.shadow).map(([key, value]) => [key, value]),\n );\n\n function resolveToken(path: string): unknown {\n if (path.startsWith(\"primitives.\")) {\n const rest = path.slice(\"primitives.\".length);\n const [category, key] = rest.split(\".\");\n switch (category) {\n case \"color\":\n return primitiveColorMap.get(key);\n case \"spacing\":\n return primitiveSpacingMap.get(key);\n case \"radius\":\n return primitiveRadiusMap.get(key);\n case \"shadow\":\n return primitiveShadowMap.get(key);\n case \"font\":\n return primitiveFontMap.get(key);\n case \"border\":\n return primitiveBorderMap.get(key);\n default:\n return undefined;\n }\n }\n\n if (path.startsWith(\"semantics.\")) {\n const rest = path.slice(\"semantics.\".length);\n const [category, key] = rest.split(\".\");\n switch (category) {\n case \"color\":\n return semanticColorMap.get(key);\n case \"spacing\":\n return semanticSpacingMap.get(key);\n case \"radius\":\n return semanticRadiusMap.get(key);\n case \"shadow\":\n return semanticShadowMap.get(key);\n case \"typography\":\n return theme.semantics.typography[key];\n default:\n return undefined;\n }\n }\n\n return getValueByPath(\n {\n primitives: theme.primitives,\n semantics: theme.semantics,\n } as Record<string, unknown>,\n path,\n );\n }\n\n function resolveValue(value: unknown): string | undefined {\n if (value === undefined || value === null) return undefined;\n // Token references (e.g. \"{primitives.color.primary}\") resolve to CSS custom\n // properties via resolveInlineStyle, not Tailwind classes — never emit them here.\n if (isTokenRef(value)) return undefined;\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\") return String(value);\n return undefined;\n }\n\n function resolveStyleIntent(style: StyleIntent): string {\n const classes: string[] = [];\n\n if (style.display) {\n classes.push(...resolveResponsive(style.display));\n }\n if (style.flexDirection) {\n classes.push(...resolveResponsiveEnum(style.flexDirection, {\n row: \"flex-row\",\n \"row-reverse\": \"flex-row-reverse\",\n column: \"flex-col\",\n \"column-reverse\": \"flex-col-reverse\",\n }));\n }\n if (style.justifyContent) {\n classes.push(...resolveResponsiveEnum(style.justifyContent, {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n \"space-between\": \"justify-between\",\n \"space-around\": \"justify-around\",\n \"space-evenly\": \"justify-evenly\",\n }));\n }\n if (style.alignItems) {\n classes.push(...resolveResponsiveEnum(style.alignItems, {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n }));\n }\n if (style.position) {\n classes.push(...resolveResponsiveEnum(style.position, {\n static: \"static\",\n relative: \"relative\",\n absolute: \"absolute\",\n fixed: \"fixed\",\n sticky: \"sticky\",\n }));\n }\n for (const field of PASSTHROUGH_STYLE_FIELDS) {\n const value = style[field];\n if (value) classes.push(...resolveResponsive(value).filter(Boolean));\n }\n if (style.opacity !== undefined) {\n classes.push(...resolveResponsiveSuffix(style.opacity, \"opacity-\").filter(Boolean));\n }\n if (style.zIndex !== undefined) {\n classes.push(...resolveResponsiveSuffix(style.zIndex, \"z-\").filter(Boolean));\n }\n if (style.typography) {\n const token = resolveTypographyToken(style.typography);\n if (token) classes.push(resolveTypography(token));\n }\n\n return classes.join(\" \");\n }\n\n const INLINE_STYLE_PROPERTIES: Record<string, string> = {\n background: \"backgroundColor\",\n color: \"color\",\n borderColor: \"borderColor\",\n borderRadius: \"borderRadius\",\n borderWidth: \"borderWidth\",\n shadow: \"boxShadow\",\n };\n\n /**\n * Token-referenced values (e.g. \"{primitives.color.primary}\") can't become responsive\n * Tailwind classes — they're resolved to CSS custom properties (`var(--color-primary)`)\n * and applied as inline styles instead, so consumers never need Tailwind's static scanner\n * to see a runtime-built class name. Numeric fontWeight is always inlined too, since it's\n * effectively unbounded and can't be safelisted as a Tailwind class.\n */\n function resolveInlineStyle(style: StyleIntent): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const [field, cssProperty] of Object.entries(INLINE_STYLE_PROPERTIES)) {\n const raw = (style as Record<string, unknown>)[field];\n const value = isResponsiveValue(raw) ? (raw as Record<string, unknown>).base : raw;\n if (isTokenRef(value)) {\n const cssVar = tokenRefToCssVar(value);\n if (cssVar) result[cssProperty] = cssVar;\n }\n }\n\n if (style.fontWeight !== undefined) {\n const raw = isResponsiveValue(style.fontWeight)\n ? (style.fontWeight as Record<string, unknown>).base\n : style.fontWeight;\n if (raw !== undefined) {\n result.fontWeight = isTokenRef(raw) ? (tokenRefToCssVar(raw) ?? String(raw)) : String(raw);\n }\n }\n\n if (style.typography) {\n const token = resolveTypographyToken(style.typography);\n if (token) Object.assign(result, resolveTypographyInlineStyle(token));\n }\n\n return result;\n }\n\n function resolveResponsiveSuffix<T extends string | number>(\n value: T | ResponsiveValue<T>,\n suffix: string,\n ): string[] {\n if (!isResponsiveValue(value)) {\n return [`${suffix}${resolveValue(value)}`].filter(Boolean);\n }\n\n const responsive = value as Record<string, T | undefined>;\n const classes: string[] = [];\n\n if (responsive.base !== undefined) {\n const resolved = resolveValue(responsive.base);\n if (resolved) classes.push(`${suffix}${resolved}`);\n }\n\n for (const [breakpoint, val] of Object.entries(responsive)) {\n if (breakpoint === \"base\" || val === undefined) continue;\n const resolved = resolveValue(val);\n if (resolved) classes.push(`${breakpoint}:${suffix}${resolved}`);\n }\n\n return classes;\n }\n\n function resolveResponsive<T extends string | number>(\n value: T | ResponsiveValue<T>,\n ): string[] {\n if (!isResponsiveValue(value)) {\n return [resolveValue(value) || \"\"].filter(Boolean);\n }\n\n const responsive = value as Record<string, T | undefined>;\n const classes: string[] = [];\n\n if (responsive.base !== undefined) {\n const resolved = resolveValue(responsive.base);\n if (resolved) classes.push(resolved);\n }\n\n for (const [breakpoint, val] of Object.entries(responsive)) {\n if (breakpoint === \"base\" || val === undefined) continue;\n const prefix = `${breakpoint}:`;\n const resolved = resolveValue(val);\n if (resolved) classes.push(`${prefix}${resolved}`);\n }\n\n return classes;\n }\n\n function resolveResponsiveEnum<T extends string>(\n value: T | ResponsiveValue<T>,\n map: Record<string, string>,\n ): string[] {\n if (!isResponsiveValue(value)) {\n return [map[value] || \"\"].filter(Boolean);\n }\n\n const responsive = value as Record<string, T | undefined>;\n const classes: string[] = [];\n\n if (responsive.base !== undefined) {\n const mapped = map[responsive.base] || \"\";\n if (mapped) classes.push(mapped);\n }\n\n for (const [breakpoint, val] of Object.entries(responsive)) {\n if (breakpoint === \"base\" || val === undefined) continue;\n const mapped = map[val] || \"\";\n if (mapped) classes.push(`${breakpoint}:${mapped}`);\n }\n\n return classes;\n }\n\n function resolveComponentVariant(\n type: string,\n variantName: string,\n ): ComponentVariant | undefined {\n const variants = theme.variants[type.toLowerCase()];\n return variants?.find((variant) => variant.name === variantName);\n }\n\n function resolveTypography(token: TypographyToken): string {\n const classes: string[] = [];\n // fontFamily/fontWeight are handled by resolveTypographyInlineStyle instead when they're\n // token refs (or, for fontWeight, always — see resolveInlineStyle's fontWeight handling).\n if (token.fontFamily && !isTokenRef(token.fontFamily)) classes.push(token.fontFamily);\n if (token.fontSize) classes.push(token.fontSize);\n if (token.lineHeight) classes.push(token.lineHeight);\n if (token.letterSpacing) classes.push(token.letterSpacing);\n return classes.filter(Boolean).join(\" \");\n }\n\n function resolveTypographyInlineStyle(token: TypographyToken): Record<string, string> {\n const result: Record<string, string> = {};\n\n if (token.fontFamily) {\n result.fontFamily = isTokenRef(token.fontFamily)\n ? (tokenRefToCssVar(token.fontFamily) ?? token.fontFamily)\n : token.fontFamily;\n }\n if (token.fontWeight !== undefined) {\n result.fontWeight = isTokenRef(token.fontWeight)\n ? (tokenRefToCssVar(token.fontWeight) ?? String(token.fontWeight))\n : String(token.fontWeight);\n }\n\n return result;\n }\n\n /** Resolves a `style.typography` token reference (e.g. \"{semantics.typography.headline-medium}\"). */\n function resolveTypographyToken(styleTypography: unknown): TypographyToken | undefined {\n if (!isTokenRef(styleTypography)) return undefined;\n const token = resolveToken(styleTypography.slice(1, -1));\n return token && typeof token === \"object\" ? (token as TypographyToken) : undefined;\n }\n\n return {\n resolveToken,\n resolveStyleIntent,\n resolveInlineStyle,\n resolveComponentVariant,\n resolveTypography,\n };\n}\n","import type { UIDLNode } from \"../types\";\n\nexport function flattenResponsive(\n obj: Record<string, unknown> = {},\n breakpoints: string[] = [\"base\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"],\n): string {\n const classes: string[] = [];\n\n for (const [, value] of Object.entries(obj)) {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n const responsive = value as Record<string, unknown>;\n for (const bp of breakpoints) {\n const val = responsive[bp];\n if (val && typeof val === \"string\") {\n const prefix = bp === \"base\" ? \"\" : `${bp}:`;\n classes.push(`${prefix}${val}`);\n }\n }\n } else if (typeof value === \"string\") {\n classes.push(value);\n }\n }\n\n return classes.join(\" \");\n}\n\nexport function normalizeNodeResponsive(node: UIDLNode): UIDLNode {\n if (!node.responsive) return node;\n\n const style = { ...(node.style ?? { }) };\n\n for (const [key, value] of Object.entries(node.responsive)) {\n if (typeof key !== \"string\") continue;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) continue;\n\n const existing = style[key];\n const responsive = value as Record<string, unknown>;\n\n if (existing && typeof existing === \"object\" && !Array.isArray(existing)) {\n style[key] = {\n ...(existing as Record<string, unknown>),\n ...responsive,\n };\n } else {\n const base = existing !== undefined ? existing : undefined;\n const merged: Record<string, unknown> = {};\n if (base !== undefined) merged.base = base;\n Object.assign(merged, responsive);\n style[key] = merged;\n }\n }\n\n return {\n ...node,\n style,\n responsive: undefined,\n };\n}\n","export function resolveFlexDirection(value: unknown): string | undefined {\n if (value === \"row\") return \"flex-row\";\n if (value === \"row-reverse\") return \"flex-row-reverse\";\n if (value === \"column\") return \"flex-col\";\n if (value === \"column-reverse\") return \"flex-col-reverse\";\n return undefined;\n}\n\nexport function resolveJustify(value: unknown): string | undefined {\n const map: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n \"space-between\": \"justify-between\",\n \"space-around\": \"justify-around\",\n \"space-evenly\": \"justify-evenly\",\n };\n return map[value as string];\n}\n\nexport function resolveAlign(value: unknown): string | undefined {\n const map: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n };\n return map[value as string];\n}\n\nexport function resolvePosition(value: unknown): string | undefined {\n const map: Record<string, string> = {\n static: \"static\",\n relative: \"relative\",\n absolute: \"absolute\",\n fixed: \"fixed\",\n sticky: \"sticky\",\n };\n return map[value as string];\n}\n\nexport function resolvePadding(value: unknown): string | undefined {\n if (typeof value === \"string\") return value;\n return undefined;\n}\n\nexport function resolveMargin(value: unknown): string | undefined {\n if (typeof value === \"string\") return value;\n return undefined;\n}\n\nexport function resolveTextStyle(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n return value;\n}\n\nconst VISIBILITY_BREAKPOINT_ORDER = [\"mobile\", \"tablet\", \"desktop\", \"wide\"] as const;\nconst VISIBILITY_BREAKPOINT_PREFIX: Record<(typeof VISIBILITY_BREAKPOINT_ORDER)[number], string> = {\n mobile: \"\",\n tablet: \"md\",\n desktop: \"lg\",\n wide: \"xl\",\n};\n\n/**\n * Turns a `visibility.breakpoints` list (which categories the node should be visible in) into\n * Tailwind `hidden`/`block` classes. Named `resolveBreakpointVisibility` (not `resolveVisibility`)\n * to avoid confusion with `RenderNode.tsx`'s condition-based `resolveVisibility`, which decides\n * whether to render the node at all — this one keeps the node in the DOM and toggles CSS\n * `display` per breakpoint instead.\n *\n * Only emits a class where visibility actually *changes* between adjacent breakpoints, so e.g.\n * `breakpoints: [\"mobile\"]` produces just `\"md:hidden\"` (hidden from md up, no need to also\n * repeat `lg:hidden xl:hidden` — nothing turns it back on) instead of one `hidden`/`block`\n * class per category independently, which could contradict a previous one at the same\n * breakpoint (e.g. both `md:block` and `md:hidden` applying at once, whichever wins depending\n * on unrelated CSS declaration order).\n */\nexport function resolveVisibility(visibility: unknown): string | undefined {\n if (!visibility || typeof visibility !== \"object\") return undefined;\n const vis = visibility as Record<string, unknown>;\n const breakpoints = vis.breakpoints as string[] | undefined;\n if (!breakpoints || breakpoints.length === 0) return undefined;\n\n const visible = VISIBILITY_BREAKPOINT_ORDER.map((bp) => breakpoints.includes(bp));\n\n const classes: string[] = [];\n let state = visible[0];\n if (!state) classes.push(\"hidden\");\n\n for (let i = 1; i < VISIBILITY_BREAKPOINT_ORDER.length; i++) {\n if (visible[i] !== state) {\n state = visible[i];\n const prefix = VISIBILITY_BREAKPOINT_PREFIX[VISIBILITY_BREAKPOINT_ORDER[i]];\n classes.push(`${prefix}:${state ? \"block\" : \"hidden\"}`);\n }\n }\n\n return classes.length > 0 ? classes.join(\" \") : undefined;\n}\n\nconst PASSTHROUGH_STYLE_KEYS = [\n \"gap\",\n \"padding\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"maxWidth\",\n \"minHeight\",\n \"maxHeight\",\n \"inset\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"lineHeight\",\n \"letterSpacing\",\n] as const;\n\nexport function resolveClassName(\n style: Record<string, unknown> = {},\n _responsive: Record<string, unknown> = {},\n): string {\n const classes: string[] = [];\n\n for (const key of PASSTHROUGH_STYLE_KEYS) {\n const value = style[key];\n if (value && typeof value === \"string\") classes.push(value);\n }\n if (style.flexDirection) classes.push(resolveFlexDirection(style.flexDirection) ?? \"\");\n if (style.justifyContent) classes.push(resolveJustify(style.justifyContent) ?? \"\");\n if (style.alignItems) classes.push(resolveAlign(style.alignItems) ?? \"\");\n if (style.position) classes.push(resolvePosition(style.position) ?? \"\");\n if (style.display && typeof style.display === \"string\") classes.push(style.display);\n\n if (style.background && typeof style.background === \"string\") {\n classes.push(style.background.startsWith(\"bg-\") ? style.background : `bg-[${style.background}]`);\n }\n\n return classes.filter(Boolean).join(\" \");\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","import { create } from \"zustand\";\n\nexport interface DocumentStateStore {\n state: Record<string, unknown>;\n setState: (path: string, value: unknown) => void;\n getValue: (path?: string) => unknown;\n resetState: () => void;\n /**\n * Subscribe to state changes (fires after every setState/resetState). Returns an\n * unsubscribe function. Used by UIDocumentRenderer so documents bound to\n * `state.*` re-render when an action (e.g. a `setState` wired to an overlay's\n * `onClose`) mutates the store — without this, state-bound props like\n * `open: { \"$bind\": \"state.overlays.x\" }` would render once and never update.\n */\n subscribe: (listener: () => void) => () => void;\n}\n\nexport function createDocumentState(initialState?: Record<string, unknown>) {\n const snapshot = initialState ?? {};\n const listeners = new Set<() => void>();\n\n return create<DocumentStateStore>()((set, get) => ({\n state: { ...snapshot },\n\n setState: (path, value) => {\n const current = get().state;\n const next = { ...current };\n setByPath(next, path, value);\n set({ state: next });\n listeners.forEach((listener) => listener());\n },\n\n getValue: (path) => {\n if (!path) return get().state;\n return getByPath(get().state, path);\n },\n\n resetState: () => {\n set({ state: { ...snapshot } });\n listeners.forEach((listener) => listener());\n },\n\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n }));\n}\n\nexport type DocumentStateHook = ReturnType<typeof createDocumentState>;\n\nexport function getByPath(obj: Record<string, unknown>, path: string): unknown {\n const keys = path.split(\".\");\n let current: unknown = obj;\n\n for (const key of keys) {\n if (current && typeof current === \"object\" && key in (current as Record<string, unknown>)) {\n current = (current as Record<string, unknown>)[key];\n } else {\n return undefined;\n }\n }\n\n return current;\n}\n\nexport function setByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n const keys = path.split(\".\");\n const lastKey = keys.pop()!;\n let current = obj;\n\n for (const key of keys) {\n if (!(key in current) || typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n\n current[lastKey] = value;\n}\n","import { getByPath } from \"../state/createDocumentState\";\n\nexport interface RenderScope {\n theme?: unknown;\n local?: Record<string, unknown>;\n state?: Record<string, unknown>;\n session?: Record<string, unknown>;\n route?: Record<string, unknown>;\n data?: Record<string, unknown>;\n index?: number;\n}\n\nexport interface LiteralExpr {\n literal: unknown;\n}\n\nexport interface PathExpr {\n path: string;\n}\n\nexport interface EqExpr {\n \"==\": [Expr, Expr];\n}\n\nexport interface NeqExpr {\n \"!=\": [Expr, Expr];\n}\n\nexport interface AndExpr {\n and: [Expr, Expr];\n}\n\nexport interface OrExpr {\n or: [Expr, Expr];\n}\n\nexport interface NotExpr {\n not: Expr;\n}\n\nexport interface IfExpr {\n if: [Expr, Expr, Expr];\n}\n\nexport interface CoalesceExpr {\n \"??\": [Expr, Expr];\n}\n\n/**\n * Aggregate a numeric field across a collection already in scope.\n *\n * List pages need a real total in their KPI row. Rather than open the evaluator up to\n * arbitrary arithmetic, this stays declarative: name a collection path, a field, and one of\n * three fixed reducers. Non-numeric and missing values are skipped rather than coerced, so a\n * blank cell cannot silently turn a total into NaN.\n */\nexport interface AggExpr {\n agg: \"sum\" | \"count\" | \"avg\";\n over: string;\n field?: string;\n}\n\nexport type Expr =\n | LiteralExpr\n | PathExpr\n | EqExpr\n | NeqExpr\n | AndExpr\n | OrExpr\n | NotExpr\n | IfExpr\n | CoalesceExpr\n | AggExpr;\n\nexport function evaluate(expr: unknown, scope: RenderScope): unknown {\n if (!expr || typeof expr !== \"object\") {\n return expr;\n }\n\n if (\"literal\" in expr) {\n return (expr as LiteralExpr).literal;\n }\n\n if (\"path\" in expr) {\n return resolvePath((expr as PathExpr).path, scope);\n }\n\n if (\"agg\" in expr && \"over\" in expr) {\n return evaluateAgg(expr as AggExpr, scope);\n }\n\n if (\"==\" in expr) {\n const [left, right] = (expr as EqExpr)[\"==\"];\n return evaluate(left, scope) === evaluate(right, scope);\n }\n\n if (\"!=\" in expr) {\n const [left, right] = (expr as NeqExpr)[\"!=\"];\n return evaluate(left, scope) !== evaluate(right, scope);\n }\n\n if (\"and\" in expr) {\n const [left, right] = (expr as AndExpr).and;\n return Boolean(evaluate(left, scope)) && Boolean(evaluate(right, scope));\n }\n\n if (\"or\" in expr) {\n const [left, right] = (expr as OrExpr).or;\n return Boolean(evaluate(left, scope)) || Boolean(evaluate(right, scope));\n }\n\n if (\"not\" in expr) {\n return !evaluate((expr as NotExpr).not, scope);\n }\n\n if (\"if\" in expr) {\n const [cond, trueVal, falseVal] = (expr as IfExpr).if;\n return evaluate(cond, scope) ? evaluate(trueVal, scope) : evaluate(falseVal, scope);\n }\n\n if (\"??\" in expr) {\n const [left, right] = (expr as CoalesceExpr)[\"??\"];\n const leftVal = evaluate(left, scope);\n if (leftVal !== undefined && leftVal !== null) {\n return leftVal;\n }\n return evaluate(right, scope);\n }\n\n return undefined;\n}\n\nfunction evaluateAgg(expr: AggExpr, scope: RenderScope): number {\n const source = resolvePath(expr.over, scope);\n const rows = Array.isArray(source) ? source : [];\n if (expr.agg === \"count\") return rows.length;\n if (!expr.field) return 0;\n\n const values: number[] = [];\n for (const row of rows) {\n if (!row || typeof row !== \"object\") continue;\n const raw = (row as Record<string, unknown>)[expr.field];\n const value = typeof raw === \"string\" && raw.trim() !== \"\" ? Number(raw) : raw;\n if (typeof value === \"number\" && Number.isFinite(value)) values.push(value);\n }\n\n const total = values.reduce((sum, value) => sum + value, 0);\n if (expr.agg === \"sum\") return total;\n return values.length === 0 ? 0 : total / values.length;\n}\n\nfunction resolvePath(path: string, scope: RenderScope): unknown {\n if (path.startsWith(\"local.\") && scope.local) {\n return getByPath(scope.local, path.replace(\"local.\", \"\"));\n }\n if (path.startsWith(\"state.\") && scope.state) {\n return getByPath(scope.state, path.replace(\"state.\", \"\"));\n }\n if (path.startsWith(\"session.\") && scope.session) {\n return getByPath(scope.session, path.replace(\"session.\", \"\"));\n }\n if (path.startsWith(\"route.\") && scope.route) {\n return getByPath(scope.route, path.replace(\"route.\", \"\"));\n }\n if (path.startsWith(\"data.\") && scope.data) {\n return getByPath(scope.data, path.replace(\"data.\", \"\"));\n }\n return undefined;\n}\n","import type { UIDLNode } from \"../types\";\n\n/**\n * Recursively re-namespaces every id in a definition sub-tree so that using the same\n * `componentId` more than once in a document doesn't produce duplicate `data-node-id`s in the\n * DOM. The sub-tree's own root gets the instance's own id (so click-to-select and `data-testid`\n * queries against the instance node keep working); every descendant becomes\n * `${instanceId}__${originalId}` (same separator convention as the `repeat` id scheme in\n * RenderNode.tsx).\n */\nfunction namespaceDefinitionIds(node: UIDLNode, instanceId: string, isRoot: boolean): UIDLNode {\n return {\n ...node,\n id: isRoot ? instanceId : `${instanceId}__${node.id}`,\n children: node.children?.map((child) => namespaceDefinitionIds(child, instanceId, false)),\n slots: node.slots\n ? Object.fromEntries(\n Object.entries(node.slots).map(([slotName, slotNodes]) => [\n slotName,\n slotNodes.map((slotNode) => namespaceDefinitionIds(slotNode, instanceId, false)),\n ]),\n )\n : undefined,\n };\n}\n\n/**\n * Merges an instance node (a node with `componentId` set, plus whatever `props`/`style`/etc it\n * carries) onto its definition (the named sub-tree from `document.definitions`), producing the\n * node to actually render. The instance always wins on conflicts — same \"instance overrides\n * template\" convention as `variant.style`/`node.style` for `themeRef` in RenderNode.tsx.\n *\n * - `props`/`style`/`events`/`bindings`: shallow-merged, instance keys win.\n * - `slots`: shallow-merged by slot name, instance's slot content replaces the definition's\n * default content for that name; slot names the instance doesn't mention keep the\n * definition's own content. (Slots always render after children, in whatever position\n * RenderNode.tsx already renders them — this does not add interleaved/positioned slots.)\n * - `children`: the instance's children *replace* the definition's entirely when the instance\n * provides any; otherwise the definition's own (default/example) children are used.\n * - Everything else the instance doesn't specify (type, responsive, repeat, themeRef, testId,\n * visibility) falls back to the definition's value.\n */\nexport function instantiateComponent(instanceNode: UIDLNode, definition: UIDLNode): UIDLNode {\n const namespaced = namespaceDefinitionIds(definition, instanceNode.id, true);\n\n const slots =\n namespaced.slots || instanceNode.slots\n ? { ...namespaced.slots, ...instanceNode.slots }\n : undefined;\n\n return {\n ...namespaced,\n id: instanceNode.id,\n name: instanceNode.name ?? namespaced.name,\n componentId: undefined,\n props: { ...namespaced.props, ...instanceNode.props },\n style: { ...namespaced.style, ...instanceNode.style },\n events: { ...namespaced.events, ...instanceNode.events },\n bindings: { ...namespaced.bindings, ...instanceNode.bindings },\n responsive: instanceNode.responsive ?? namespaced.responsive,\n visibility: instanceNode.visibility ?? namespaced.visibility,\n repeat: instanceNode.repeat ?? namespaced.repeat,\n themeRef: instanceNode.themeRef ?? namespaced.themeRef,\n testId: instanceNode.testId ?? namespaced.testId,\n children: instanceNode.children ?? namespaced.children,\n slots,\n };\n}\n","import React from \"react\";\nimport type { ComponentRegistry, ComponentVariant, UIDLNode, Theme } from \"../types\";\nimport { defaultRegistry } from \"../registry/registry\";\nimport { createThemeEngine } from \"../theme/engine\";\nimport { normalizeNodeResponsive } from \"../utils/responsive\";\nimport { resolveClassName, resolveVisibility as resolveBreakpointVisibility } from \"../utils/tailwind\";\nimport { cn } from \"../utils/cn\";\nimport { evaluate, type RenderScope as ExprRenderScope } from \"../expr/evaluate\";\nimport type { ActionInterpreter } from \"../actions/interpreter\";\nimport type { Action } from \"../types/actions\";\nimport { instantiateComponent } from \"./instantiateComponent\";\n\ninterface RenderScope extends ExprRenderScope {\n theme?: Theme;\n local?: Record<string, unknown>;\n index?: number;\n actionInterpreter?: ActionInterpreter;\n registry?: ComponentRegistry;\n definitions?: Record<string, UIDLNode>;\n /** componentIds currently being expanded, ancestor-first — used to detect circular references. */\n componentStack?: string[];\n}\n\nconst FORM_WIDGETS = new Set([\"TextField\", \"Checkbox\", \"Switch\", \"Slider\", \"Select\", \"Textarea\", \"RadioGroup\"]);\n\n/**\n * Events whose handler is called with the value itself, not a DOM event. Named rather than\n * inferred from the widget so a document's `{ setState: { value: null } }` keeps one meaning:\n * \"whatever this event carried\".\n */\nconst VALUE_EVENTS = new Set([\"onPageChange\", \"onPageSizeChange\"]);\n\nexport function renderNode(node: UIDLNode, scope: RenderScope = {}): React.ReactNode {\n if (node.componentId) {\n if (scope.componentStack?.includes(node.componentId)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `[uidl-runtime] Circular componentId reference detected: ${[...scope.componentStack, node.componentId].join(\" -> \")}`,\n );\n }\n return null;\n }\n\n const definition = scope.definitions?.[node.componentId];\n if (!definition) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`[uidl-runtime] Unknown componentId: ${node.componentId}`);\n }\n return null;\n }\n\n const instance = instantiateComponent(node, definition);\n return renderNode(instance, {\n ...scope,\n componentStack: [...(scope.componentStack ?? []), node.componentId],\n });\n }\n\n const registry = scope.registry ?? defaultRegistry;\n const entry = registry.get(node.type);\n\n if (!entry) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`[uidl-runtime] Unknown node type: ${node.type}`);\n }\n return null;\n }\n\n const normalized = normalizeNodeResponsive(node);\n\n const visibility = resolveVisibility(normalized, scope);\n if (!visibility) {\n return null;\n }\n\n if (normalized.repeat) {\n let dataSource: unknown[] | undefined;\n\n if (Array.isArray(normalized.repeat.dataSource)) {\n dataSource = normalized.repeat.dataSource;\n } else if (typeof normalized.repeat.dataSource === \"string\" && scope.data) {\n const resolved = scope.data[normalized.repeat.dataSource];\n if (Array.isArray(resolved)) {\n dataSource = resolved;\n }\n }\n\n if (dataSource) {\n const itemName = (normalized.repeat.itemName as string) ?? \"item\";\n return dataSource.map((item, index) => {\n const itemId = `${normalized.id}-repeat-${index}`;\n return (\n <React.Fragment key={itemId}>\n {renderNode(\n {\n ...normalized,\n id: itemId,\n repeat: undefined,\n props: {\n ...normalized.props,\n [itemName]: item,\n },\n },\n {\n ...scope,\n local: { ...scope.local, [itemName]: item, index },\n },\n )}\n </React.Fragment>\n );\n });\n }\n }\n\n const themeEngine = scope.theme ? createThemeEngine(scope.theme) : undefined;\n\n let variant: ComponentVariant | undefined;\n if (normalized.themeRef && themeEngine) {\n variant = themeEngine.resolveComponentVariant(normalized.type, normalized.themeRef);\n }\n\n const mergedStyle = { ...variant?.style, ...(normalized.style ?? {}) };\n const mergedProps = { ...variant?.props, ...(normalized.props ?? {}) };\n\n const props = resolveDataSourceProps(resolveProps(mergedProps, scope), scope);\n const styleClassName = themeEngine\n ? themeEngine.resolveStyleIntent(mergedStyle as never)\n : resolveClassName(mergedStyle);\n const inlineStyle = themeEngine ? themeEngine.resolveInlineStyle(mergedStyle as never) : {};\n const handlers = resolveEvents(normalized.events ?? {}, scope.actionInterpreter, normalized.type);\n\n const breakpointVisibilityClassName = resolveBreakpointVisibility(normalized.visibility);\n\n const className = cn(\n variant?.className,\n styleClassName,\n breakpointVisibilityClassName,\n props.className as string | undefined,\n );\n\n const propsStyle = typeof props.style === \"object\" && props.style !== null ? props.style : undefined;\n const finalStyle = { ...inlineStyle, ...propsStyle };\n\n const Component = entry.component;\n\n return (\n <Component\n {...props}\n data-node-id={normalized.id}\n data-testid={normalized.testId}\n className={className || undefined}\n style={Object.keys(finalStyle).length > 0 ? finalStyle : undefined}\n {...handlers}\n >\n {normalized.children?.map((child) => (\n <React.Fragment key={child.id}>\n {renderNode(child, scope)}\n </React.Fragment>\n ))}\n {normalized.slots &&\n Object.entries(normalized.slots).map(([slotName, slotNodes]) => (\n <React.Fragment key={slotName}>\n {slotNodes.map((slotNode) => (\n <React.Fragment key={slotNode.id}>\n {renderNode(slotNode, scope)}\n </React.Fragment>\n ))}\n </React.Fragment>\n ))}\n </Component>\n );\n}\n\nfunction resolveProps(\n props: Record<string, unknown>,\n scope: RenderScope,\n): Record<string, unknown> {\n const resolved: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(props)) {\n if (value && typeof value === \"object\" && \"$bind\" in value) {\n const bindPath = (value as { $bind: string }).$bind;\n resolved[key] = resolveBinding(bindPath, scope);\n } else if (value && typeof value === \"object\" && \"$expr\" in value) {\n resolved[key] = evaluate((value as { $expr: unknown }).$expr, scope);\n } else {\n resolved[key] = value;\n }\n }\n\n return resolved;\n}\n\nfunction resolveDataSourceProps(\n props: Record<string, unknown>,\n scope: RenderScope,\n): Record<string, unknown> {\n if (typeof props.dataSource !== \"string\" || props.rows !== undefined) {\n return props;\n }\n\n const rows = scope.data?.[props.dataSource];\n if (!Array.isArray(rows)) {\n return props;\n }\n\n return { ...props, rows };\n}\n\nfunction resolveBinding(path: string, scope: RenderScope): unknown {\n if (path.startsWith(\"local.\") && scope.local) {\n const localKey = path.replace(\"local.\", \"\");\n return getByPath(scope.local, localKey);\n }\n if (path.startsWith(\"state.\") && scope.state) {\n const stateKey = path.replace(\"state.\", \"\");\n return getByPath(scope.state, stateKey);\n }\n if (path.startsWith(\"session.\") && scope.session) {\n const sessionKey = path.replace(\"session.\", \"\");\n return getByPath(scope.session, sessionKey);\n }\n if (path.startsWith(\"route.\") && scope.route) {\n const routeKey = path.replace(\"route.\", \"\");\n return getByPath(scope.route, routeKey);\n }\n if (path.startsWith(\"data.\") && scope.data) {\n const dataKey = path.replace(\"data.\", \"\");\n return getByPath(scope.data, dataKey);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`[uidl-runtime] Unrecognized binding prefix in path: ${path}`);\n }\n return undefined;\n}\n\nfunction resolveVisibility(node: UIDLNode, scope: RenderScope): boolean {\n const condition = node.visibility?.condition;\n if (!condition) return true;\n return Boolean(evaluate(condition, scope));\n}\n\nfunction resolveEvents(\n events: Record<string, unknown>,\n interpreter?: ActionInterpreter,\n nodeType?: string,\n): Record<string, unknown> {\n const handlers: Record<string, unknown> = {};\n\n // DataTable row actions are matched by name (DataTableAction.event) against this same `events`\n // map, not by native DOM event name — the generic loop below only understands onClick/onChange/\n // etc. shaped handlers, so DataTable is handled separately and returns early: running the\n // generic loop too would also attach e.g. `handlers.onOpen` as a literal prop, which React\n // warns about as an unrecognized DOM event handler on the underlying <section>.\n if (nodeType === \"DataTable\") {\n if (interpreter) {\n handlers.onRowAction = (row: Record<string, unknown>, action: { label: string; event?: string }) => {\n const eventKey = action.event ?? (events[\"onRowAction\"] ? \"onRowAction\" : action.label);\n const actionPayload = events[eventKey] ?? events[\"onRowAction\"] ?? events[action.label];\n if (!actionPayload) return;\n const sequence = Array.isArray(actionPayload) ? (actionPayload as Action[]) : [actionPayload as Action];\n interpreter.execute({ sequence }, row);\n };\n // Meridian opens a document by clicking its row, not a per-row button, so `onOpen` has to\n // reach the widget as a row handler too — the same event key either affordance fires.\n if (Array.isArray(events[\"onOpen\"])) {\n handlers.onRowOpen = (row: Record<string, unknown>) => {\n interpreter.execute({ sequence: events[\"onOpen\"] as Action[] }, row);\n };\n }\n }\n return handlers;\n }\n\n for (const [event, action] of Object.entries(events)) {\n if (!interpreter || !Array.isArray(action)) {\n continue;\n }\n\n const createHandler = (actionPayload: Action[], extractValue?: (e: React.ChangeEvent) => unknown) => {\n return (e: React.ChangeEvent) => {\n const value = extractValue?.(e);\n interpreter.execute({ sequence: actionPayload }, value);\n };\n };\n\n if (event === \"onChange\" && nodeType && FORM_WIDGETS.has(nodeType)) {\n const extractValue = getValueExtractor(nodeType);\n handlers[event] = createHandler(action, extractValue);\n } else if (VALUE_EVENTS.has(event)) {\n // Widgets that hand their handler a plain value rather than a DOM event — PageBar's\n // page number, for instance. Without this the value never reaches `setState`'s\n // `value: null` (\"use what the event carried\") and the action wrote undefined.\n handlers[event] = createHandler(action, (value) => value as unknown);\n } else {\n handlers[event] = createHandler(action);\n }\n }\n\n return handlers;\n}\n\nfunction getValueExtractor(nodeType: string): ((e: React.ChangeEvent) => unknown) | undefined {\n switch (nodeType) {\n case \"TextField\":\n return (e) => (e.target as HTMLInputElement).value;\n case \"Checkbox\":\n return (e) => (e.target as HTMLInputElement).checked;\n case \"Switch\":\n return () => undefined;\n case \"Slider\":\n return (e) => Number((e.target as HTMLInputElement).value);\n case \"Select\":\n return (e) => (e.target as HTMLSelectElement).value;\n case \"Textarea\":\n return (e) => (e.target as HTMLTextAreaElement).value;\n case \"RadioGroup\":\n return (e) => (e.target as HTMLInputElement).value;\n default:\n return undefined;\n }\n}\n\nfunction getByPath(obj: Record<string, unknown>, path: string): unknown {\n const keys = path.split(\".\");\n let current: unknown = obj;\n\n for (const key of keys) {\n if (current && typeof current === \"object\" && key in (current as Record<string, unknown>)) {\n current = (current as Record<string, unknown>)[key];\n } else {\n return undefined;\n }\n }\n\n return current;\n}\n","var _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n // as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 4,\n patch: 3,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // When normalize is off, require :// for http/https URLs\n // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n if (!/^https?:\\/\\//i.test(trimmed)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n }\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalIn, isOptionalOut) {\n const isPresent = key in input;\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (isOptionalIn && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && !isOptionalIn) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalIn = _catchall.optin === \"optional\";\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n // skip __proto__ so it can't replace the result prototype via the\n // assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalIn = el._zod.optin === \"optional\";\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalIn = schema?._zod?.optin === \"optional\";\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${k} in input;\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n }\n\n if (${id}_present) {\n if (${id}.value === undefined) {\n newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators\n // have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed\n // array. The post-processing in `handleTupleResults` walks them in\n // order so it can decide whether an absent optional-output error can\n // truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((rr) => {\n itemResults[i] = rr;\n }));\n }\n else {\n itemResults[i] = r;\n }\n }\n if (def.rest) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n if (items[i]._zod[key] !== \"optional\")\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional\n // rule, but only after `optoutStart`: the first index where the output\n // tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n payload.fallback = true;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (input === undefined && (result.issues.length || result.fallback)) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const input = payload.value;\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, input));\n return handleOptionalResult(result, input);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this\n // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n // preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n // schemas into $defs — it is not user-facing JSON Schema metadata. Strip it\n // from the output body where it would otherwise leak. The id is preserved\n // implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n if (exMin) {\n if (legacy) {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n else if (typeof minimum === \"number\") {\n json.minimum = minimum;\n }\n if (exMax) {\n if (legacy) {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n else if (typeof maximum === \"number\") {\n json.maximum = maximum;\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n const proto = Object.getPrototypeOf(inst);\n let installed = _installedGroups.get(proto);\n if (!installed) {\n installed = new Set();\n _installedGroups.set(proto, installed);\n }\n if (installed.has(group))\n return;\n installed.add(group);\n for (const key in methods) {\n const fn = methods[key];\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const bound = fn.bind(this);\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: bound,\n });\n return bound;\n },\n set(v) {\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: v,\n });\n },\n });\n }\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // Parse-family is intentionally kept as per-instance closures: these are\n // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n // ~12 closure allocations per schema but get monomorphic call sites and\n // detached usage that \"just works\".\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // All builder methods are placed on the internal prototype as lazy-bind\n // getters. On first access per-instance, a bound thunk is allocated and\n // cached as an own property; subsequent accesses skip the getter. This\n // means: no per-instance allocation for unused methods, full\n // detachability preserved (`const m = schema.optional; m()` works), and\n // shared underlying function references across all instances.\n _installLazyMethods(inst, \"ZodType\", {\n check(...chks) {\n const def = this.def;\n return this.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data)\n // returns a clone with `data` registered. The mapped type picks\n // up the second overload, so we accept variadic any-args and\n // return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn) {\n return fn(this);\n },\n });\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n _installLazyMethods(inst, \"_ZodString\", {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n });\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: core.regexes.httpProtocol,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n _installLazyMethods(inst, \"ZodNumber\", {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n });\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n _installLazyMethods(inst, \"ZodArray\", {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n });\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n _installLazyMethods(inst, \"ZodObject\", {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n return this.clone({ ...this._zod.def, catchall: catchall });\n },\n passthrough() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n loose() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n strict() {\n return this.clone({ ...this._zod.def, catchall: never() });\n },\n strip() {\n return this.clone({ ...this._zod.def, catchall: undefined });\n },\n extend(incoming) {\n return util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return util.safeExtend(this, incoming);\n },\n merge(other) {\n return util.merge(this, other);\n },\n pick(mask) {\n return util.pick(this, mask);\n },\n omit(mask) {\n return util.omit(this, mask);\n },\n partial(...args) {\n return util.partial(ZodOptional, this, args[0]);\n },\n required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\n });\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) — defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...util.normalizeParams(valueType),\n });\n }\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n payload.value = output;\n payload.fallback = true;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport function invertCodec(codec) {\n const def = codec._zod.def;\n return new ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n return new ZodPreprocess({\n type: \"pipe\",\n in: transform(fn),\n out: schema,\n });\n}\n","import { z } from \"zod\";\nimport type { Theme, ThemePreset, PrimitiveTokens, SemanticTokens } from \"../types/theme\";\n\nexport const TypographyTokenSchema = z.object({\n fontFamily: z.string().optional(),\n fontSize: z.string().optional(),\n fontWeight: z.union([z.number(), z.string()]).optional(),\n lineHeight: z.string().optional(),\n letterSpacing: z.string().optional(),\n});\n\nfunction responsiveValueSchema<T>(valueSchema: z.ZodType<T>) {\n return z.union([\n valueSchema,\n z.object({\n base: valueSchema.optional(),\n }).refine((obj) => Object.keys(obj).length > 0, {\n message: \"Responsive value must have at least one breakpoint or base\",\n }),\n ]);\n}\n\nexport const StyleIntentSchema = z.object({\n gap: responsiveValueSchema(z.string()).optional(),\n padding: responsiveValueSchema(z.string()).optional(),\n paddingTop: responsiveValueSchema(z.string()).optional(),\n paddingRight: responsiveValueSchema(z.string()).optional(),\n paddingBottom: responsiveValueSchema(z.string()).optional(),\n paddingLeft: responsiveValueSchema(z.string()).optional(),\n margin: responsiveValueSchema(z.string()).optional(),\n marginTop: responsiveValueSchema(z.string()).optional(),\n marginRight: responsiveValueSchema(z.string()).optional(),\n marginBottom: responsiveValueSchema(z.string()).optional(),\n marginLeft: responsiveValueSchema(z.string()).optional(),\n width: responsiveValueSchema(z.string()).optional(),\n height: responsiveValueSchema(z.string()).optional(),\n minWidth: responsiveValueSchema(z.string()).optional(),\n maxWidth: responsiveValueSchema(z.string()).optional(),\n minHeight: responsiveValueSchema(z.string()).optional(),\n maxHeight: responsiveValueSchema(z.string()).optional(),\n flexDirection: responsiveValueSchema(\n z.enum([\"row\", \"column\", \"row-reverse\", \"column-reverse\"]),\n ).optional(),\n justifyContent: responsiveValueSchema(\n z.enum([\n \"start\",\n \"center\",\n \"end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ]),\n ).optional(),\n alignItems: responsiveValueSchema(\n z.enum([\"start\", \"center\", \"end\", \"stretch\", \"baseline\"]),\n ).optional(),\n display: responsiveValueSchema(z.string()).optional(),\n position: responsiveValueSchema(\n z.enum([\"static\", \"relative\", \"absolute\", \"fixed\", \"sticky\"]),\n ).optional(),\n inset: responsiveValueSchema(z.string()).optional(),\n top: responsiveValueSchema(z.string()).optional(),\n right: responsiveValueSchema(z.string()).optional(),\n bottom: responsiveValueSchema(z.string()).optional(),\n left: responsiveValueSchema(z.string()).optional(),\n zIndex: responsiveValueSchema(z.number()).optional(),\n background: responsiveValueSchema(z.string()).optional(),\n color: responsiveValueSchema(z.string()).optional(),\n fontSize: responsiveValueSchema(z.string()).optional(),\n fontWeight: responsiveValueSchema(z.union([z.number(), z.string()])).optional(),\n lineHeight: responsiveValueSchema(z.string()).optional(),\n letterSpacing: responsiveValueSchema(z.string()).optional(),\n borderRadius: responsiveValueSchema(z.string()).optional(),\n borderWidth: responsiveValueSchema(z.string()).optional(),\n borderColor: responsiveValueSchema(z.string()).optional(),\n shadow: responsiveValueSchema(z.string()).optional(),\n opacity: responsiveValueSchema(z.number()).optional(),\n typography: z.string().optional(),\n});\n\nexport const ComponentVariantSchema = z.object({\n name: z.string(),\n props: z.record(z.string(), z.unknown()).optional(),\n style: StyleIntentSchema.optional(),\n className: z.string().optional(),\n});\n\nexport const PrimitiveTokensSchema: z.ZodType<PrimitiveTokens> = z.object({\n color: z.record(z.string(), z.string()),\n spacing: z.record(z.string(), z.string()),\n radius: z.record(z.string(), z.string()),\n shadow: z.record(z.string(), z.string()),\n font: z.record(z.string(), z.string()),\n border: z.record(z.string(), z.string()),\n});\n\nexport const SemanticTokensSchema: z.ZodType<SemanticTokens> = z.object({\n color: z.record(z.string(), z.string()),\n spacing: z.record(z.string(), z.string()),\n radius: z.record(z.string(), z.string()),\n shadow: z.record(z.string(), z.string()),\n typography: z.record(z.string(), TypographyTokenSchema),\n});\n\nexport const ThemeSchema: z.ZodType<Theme> = z.object({\n id: z.string(),\n name: z.string(),\n mode: z.enum([\"light\", \"dark\"]),\n breakpoints: z.record(z.string(), z.string()),\n primitives: PrimitiveTokensSchema,\n semantics: SemanticTokensSchema,\n variants: z.record(z.string(), z.array(ComponentVariantSchema)),\n});\n\nexport const ThemePresetSchema: z.ZodType<ThemePreset> = z.object({\n id: z.string(),\n label: z.string(),\n mode: z.enum([\"light\", \"dark\"]),\n theme: ThemeSchema,\n});\n\nexport type ThemeInput = z.input<typeof ThemeSchema>;\nexport type ThemePresetInput = z.input<typeof ThemePresetSchema>;\n","import type { Theme, ThemePreset } from \"../types/theme\";\nimport { ThemeSchema, ThemePresetSchema } from \"../schemas/theme\";\n\nconst themeRegistry = new Map<string, Theme>();\nconst presetRegistry = new Map<string, ThemePreset>();\n\nexport function registerTheme(theme: Theme) {\n const parsed = ThemeSchema.parse(theme);\n themeRegistry.set(parsed.id, parsed);\n}\n\nexport function registerThemePreset(preset: ThemePreset) {\n const parsed = ThemePresetSchema.parse(preset);\n presetRegistry.set(parsed.id, parsed);\n themeRegistry.set(parsed.theme.id, parsed.theme);\n}\n\nexport function getTheme(id: string): Theme | undefined {\n return themeRegistry.get(id);\n}\n\nexport function getThemePreset(id: string): ThemePreset | undefined {\n return presetRegistry.get(id);\n}\n\nexport function listThemes(): Theme[] {\n return Array.from(themeRegistry.values());\n}\n\nexport function listPresets(): ThemePreset[] {\n return Array.from(presetRegistry.values());\n}\n\nexport function createThemeRegistry() {\n return {\n registerTheme,\n registerThemePreset,\n getTheme,\n getThemePreset,\n listThemes,\n listPresets,\n };\n}\n","import type { Theme } from \"../types/theme\";\n\n/**\n * Flat `--category-key: value` map (no selector wrapper) for the primitive tokens a theme\n * exposes. Meant to be merged directly onto a React element's inline `style` prop so\n * `var(--color-primary)` references produced by `ThemeEngine.resolveInlineStyle` resolve\n * without requiring a global stylesheet or Tailwind to see anything built at runtime.\n */\nexport function themeToCssVariablesMap(theme: Theme): Record<string, string> {\n const vars: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(theme.primitives.color)) {\n vars[`--color-${key}`] = value;\n }\n for (const [key, value] of Object.entries(theme.primitives.spacing)) {\n vars[`--spacing-${key}`] = value;\n }\n for (const [key, value] of Object.entries(theme.primitives.radius)) {\n vars[`--radius-${key}`] = value;\n }\n for (const [key, value] of Object.entries(theme.primitives.shadow)) {\n vars[`--shadow-${key}`] = value;\n }\n for (const [key, value] of Object.entries(theme.primitives.font)) {\n vars[`--font-${key}`] = value;\n }\n for (const [key, value] of Object.entries(theme.primitives.border)) {\n vars[`--border-${key}`] = value;\n }\n\n return vars;\n}\n\nexport function themeToCssVariables(theme: Theme): string {\n const lines: string[] = [];\n\n if (theme.mode === \"dark\") {\n lines.push(\".dark {\");\n } else {\n lines.push(\":root {\");\n }\n\n for (const [key, value] of Object.entries(theme.primitives.color)) {\n lines.push(` --color-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.spacing)) {\n lines.push(` --spacing-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.radius)) {\n lines.push(` --radius-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.shadow)) {\n lines.push(` --shadow-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.font)) {\n lines.push(` --font-${key}: ${value};`);\n }\n\n lines.push(\"}\");\n\n return lines.join(\"\\n\");\n}\n\nexport function themeToTailwindV4(theme: Theme): string {\n const lines: string[] = [\"@import \\\"tailwindcss\\\";\", \"\"];\n\n lines.push(\"@theme {\");\n\n for (const [key, value] of Object.entries(theme.primitives.color)) {\n lines.push(` --color-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.spacing)) {\n lines.push(` --spacing-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.radius)) {\n lines.push(` --radius-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.shadow)) {\n lines.push(` --shadow-${key}: ${value};`);\n }\n for (const [key, value] of Object.entries(theme.primitives.font)) {\n lines.push(` --font-${key}: ${value};`);\n }\n\n for (const [name, token] of Object.entries(theme.semantics.typography)) {\n if (token.fontFamily) lines.push(` --font-${name}: ${token.fontFamily};`);\n if (token.fontSize) lines.push(` --text-${name}: ${token.fontSize};`);\n }\n\n lines.push(\"}\");\n\n return lines.join(\"\\n\");\n}\n\nexport function themeToTailwindV3(theme: Theme): Record<string, unknown> {\n const extend: Record<string, unknown> = {\n colors: { ...theme.primitives.color },\n spacing: Object.fromEntries(\n Object.entries(theme.primitives.spacing).map(([k, v]) => [k, v]),\n ),\n borderRadius: Object.fromEntries(\n Object.entries(theme.primitives.radius).map(([k, v]) => [k, v]),\n ),\n boxShadow: Object.fromEntries(\n Object.entries(theme.primitives.shadow).map(([k, v]) => [k, v]),\n ),\n fontFamily: Object.fromEntries(\n Object.entries(theme.primitives.font).map(([k, v]) => [k, v]),\n ),\n };\n\n const typography: Record<string, unknown> = {};\n for (const [name, token] of Object.entries(theme.semantics.typography)) {\n typography[name] = {\n fontFamily: token.fontFamily,\n fontSize: token.fontSize,\n fontWeight: token.fontWeight,\n lineHeight: token.lineHeight,\n letterSpacing: token.letterSpacing,\n };\n }\n\n return { extend: { ...extend, typography } };\n}\n","/**\n * A single failure shape both `InMemoryAdapter` and `HttpAdapter` are required to raise for the\n * same situation (record missing, bad input, stale version, no permission, network/timeout, or\n * server fault). A document/host that branches on `.code` behaves identically no matter which\n * adapter is wired in — that's the whole point of the seam: switching mock → HTTP must not\n * surface a failure mode the UI has never seen.\n */\nexport type DataErrorCode =\n | \"not_found\"\n | \"validation\"\n | \"conflict\"\n | \"forbidden\"\n | \"network\"\n | \"timeout\"\n | \"server\";\n\nexport class DataError extends Error {\n readonly code: DataErrorCode;\n /** Per-field messages, e.g. from server-side validation — maps directly to `state.formErrors.*`. */\n readonly fields?: Record<string, string>;\n\n constructor(message: string, code: DataErrorCode, fields?: Record<string, string>) {\n super(message);\n this.name = \"DataError\";\n this.code = code;\n this.fields = fields;\n }\n}\n\nexport function isDataError(value: unknown): value is DataError {\n return value instanceof DataError;\n}\n","import type { DataAdapter, Query } from \"../data/types\";\nimport { DataError } from \"../data/errors\";\nimport { getByPath } from \"./createDocumentState\";\nimport type { DocumentStateStore } from \"./createDocumentState\";\n\nexport interface DataSourceResolver {\n resolve(sourceName: string, config: unknown): unknown;\n}\n\nexport interface DataSourceContext {\n sources: Record<string, unknown>;\n resolver: DataSourceResolver;\n}\n\nexport function createInlineArrayResolver(): DataSourceResolver {\n return {\n resolve(_sourceName: string, config: unknown): unknown {\n if (Array.isArray(config)) {\n return config;\n }\n return undefined;\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// `$query` data sources — the async half. A `dataSources` entry can be an inline array (handled\n// above, synchronously, since forever) or `{ \"$query\": { collection, filters, sort, ... } }`,\n// resolved against a `DataAdapter` by `runDataSources` below. See\n// `.notes/plan/01-arsitektur-target.md` §3 for why this exists: it's the seam that lets a\n// document ask for filtered/sorted/paginated data without knowing whether the answer comes from\n// memory or a real API.\n// ---------------------------------------------------------------------------\n\nexport interface QueryDataSource {\n $query: {\n collection: string;\n filters?: Array<{ field: string; op: string; value: unknown }>;\n sort?: Array<{ field: string; dir: \"asc\" | \"desc\" }>;\n page?: { number?: unknown; size?: unknown };\n search?: unknown;\n fields?: string[];\n };\n}\n\nexport function isQueryDataSource(value: unknown): value is QueryDataSource {\n return !!value && typeof value === \"object\" && \"$query\" in (value as Record<string, unknown>);\n}\n\nexport interface BindScope {\n state?: Record<string, unknown>;\n session?: Record<string, unknown>;\n}\n\n/** Resolves `{\"$bind\": \"state.x\"}`/`{\"$bind\": \"session.x\"}` leaves anywhere inside a `$query`\n * descriptor. Deliberately narrower than `RenderNode`'s render-scope `$bind` (no `local.`/\n * `route.`/`data.`) — a `dataSources` entry is declared at the document level, not inside a\n * repeated node, so state and session are the only scopes that make sense here. */\nfunction resolveBindDeep(value: unknown, scope: BindScope): unknown {\n if (Array.isArray(value)) return value.map((item) => resolveBindDeep(item, scope));\n if (value && typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n if (typeof obj.$bind === \"string\" && Object.keys(obj).length === 1) {\n const path = obj.$bind;\n if (path.startsWith(\"state.\")) return scope.state ? getByPath(scope.state, path.slice(\"state.\".length)) : undefined;\n if (path.startsWith(\"session.\")) return scope.session ? getByPath(scope.session, path.slice(\"session.\".length)) : undefined;\n return undefined;\n }\n const out: Record<string, unknown> = {};\n for (const [key, inner] of Object.entries(obj)) out[key] = resolveBindDeep(inner, scope);\n return out;\n }\n return value;\n}\n\nexport function resolveQueryDescriptor(descriptor: QueryDataSource, scope: BindScope): Query {\n return resolveBindDeep(descriptor.$query, scope) as Query;\n}\n\nexport type DataSourceStatus = \"idle\" | \"loading\" | \"success\" | \"error\";\n\nexport interface RunDataSourcesOptions {\n adapter: DataAdapter;\n stateStore: DocumentStateStore;\n session?: Record<string, unknown>;\n signal?: AbortSignal;\n}\n\n/**\n * Runs every `$query` entry in `dataSources` against `adapter`, writing\n * `state.$data.<name>.{status,rows,total,error}` as each settles. Inline array entries are\n * untouched (they resolve synchronously elsewhere, as they always have). Errors are normalized\n * to `DataError` shape before being written, so a document's `visibility.condition` on\n * `state.$data.<name>.error.code` behaves the same whether the adapter is in-memory or HTTP.\n *\n * A caller that re-invokes this on every state change (as `UIDocumentRenderer` does) must diff\n * the *resolved* query per name against the previous run before calling — this function itself\n * does not debounce or dedupe, so re-running it with an unchanged query re-fetches unconditionally.\n */\nexport async function runDataSources(\n dataSources: Record<string, unknown> | undefined,\n options: RunDataSourcesOptions,\n): Promise<void> {\n if (!dataSources) return;\n\n const entries = Object.entries(dataSources).filter((entry): entry is [string, QueryDataSource] => isQueryDataSource(entry[1]));\n if (entries.length === 0) return;\n\n for (const [name] of entries) {\n options.stateStore.setState(`$data.${name}.status`, \"loading\" satisfies DataSourceStatus);\n }\n\n await Promise.all(\n entries.map(async ([name, descriptor]) => {\n try {\n const query = resolveQueryDescriptor(descriptor, {\n state: options.stateStore.getValue() as Record<string, unknown>,\n session: options.session,\n });\n const result = await options.adapter.query(query, options.signal);\n options.stateStore.setState(`$data.${name}.status`, \"success\" satisfies DataSourceStatus);\n options.stateStore.setState(`$data.${name}.rows`, result.rows);\n options.stateStore.setState(`$data.${name}.total`, result.total);\n options.stateStore.setState(`$data.${name}.error`, null);\n } catch (error) {\n if (error instanceof DOMException && error.name === \"AbortError\") return; // superseded by a newer run, not a real failure\n const dataError = error instanceof DataError ? error : new DataError(String(error), \"server\");\n options.stateStore.setState(`$data.${name}.status`, \"error\" satisfies DataSourceStatus);\n options.stateStore.setState(`$data.${name}.error`, { code: dataError.code, message: dataError.message });\n }\n }),\n );\n}\n\n/** Serializes the resolved (post-`$bind`) query per `$query` data source, for a caller to diff\n * against the previous run and decide which entries actually need re-fetching. */\nexport function serializeResolvedQueries(dataSources: Record<string, unknown> | undefined, scope: BindScope): Record<string, string> {\n if (!dataSources) return {};\n const out: Record<string, string> = {};\n for (const [name, config] of Object.entries(dataSources)) {\n if (isQueryDataSource(config)) out[name] = JSON.stringify(resolveQueryDescriptor(config, scope));\n }\n return out;\n}\n","export type EventBusListener = (payload: unknown) => void;\n\nexport interface EventBus {\n on: (topic: string, listener: EventBusListener) => () => void;\n emit: (topic: string, payload: unknown) => void;\n off: (topic: string, listener: EventBusListener) => void;\n}\n\nexport function createEventBus(): EventBus {\n const listeners = new Map<string, Set<EventBusListener>>();\n\n return {\n on: (topic, listener) => {\n if (!listeners.has(topic)) {\n listeners.set(topic, new Set());\n }\n listeners.get(topic)!.add(listener);\n\n return () => {\n listeners.get(topic)?.delete(listener);\n };\n },\n emit: (topic, payload) => {\n const topicListeners = listeners.get(topic);\n if (topicListeners) {\n for (const listener of topicListeners) {\n listener(payload);\n }\n }\n },\n off: (topic, listener) => {\n listeners.get(topic)?.delete(listener);\n },\n };\n}\n","import type {\n Action,\n CommandActionConfig,\n CommandHandler,\n CommandRequest,\n CommandResponse,\n MutationActionConfig,\n MutationHandler,\n MutationRequest,\n MutationResponse,\n} from \"../types/actions\";\nimport type { DocumentStateStore } from \"../state/createDocumentState\";\nimport { getByPath } from \"../state/createDocumentState\";\nimport { evaluate, type RenderScope } from \"../expr/evaluate\";\nimport { createEventBus } from \"./eventBus\";\n\n/**\n * Resolves `{\"$bind\": \"event\"}` (the whole eventValue) or `{\"$bind\": \"event.<path>\"}` (a field\n * within it) — the mechanism a DataTable row action uses to reach its own row's data, e.g.\n * `{\"navigate\": {\"route\": {\"$bind\": \"event.route\"}}}` where each row carries its own `route`\n * field. Unrelated to the render-time `local.*`/`state.*` bindings in expr/evaluate.ts — those\n * resolve against render scope, this resolves against the second `execute()` argument.\n */\nfunction resolveEventBind(bindPath: string, eventValue: unknown): unknown {\n if (bindPath === \"event\") return eventValue;\n if (bindPath.startsWith(\"event.\") && eventValue && typeof eventValue === \"object\") {\n return getByPath(eventValue as Record<string, unknown>, bindPath.slice(\"event.\".length));\n }\n return undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isBoundActionValue(value: unknown): value is { $bind: string } {\n return isRecord(value) && typeof value.$bind === \"string\";\n}\n\nfunction isExprActionValue(value: unknown): value is { $expr: unknown } {\n return isRecord(value) && \"$expr\" in value;\n}\n\nfunction resolveActionValue(value: unknown, eventValue: unknown, scope: RenderScope): unknown {\n if (isBoundActionValue(value)) {\n return resolveEventBind(value.$bind, eventValue);\n }\n if (isExprActionValue(value)) {\n return evaluate(value.$expr, scope);\n }\n if (Array.isArray(value)) {\n return value.map((item) => resolveActionValue(item, eventValue, scope));\n }\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, item]) => [key, resolveActionValue(item, eventValue, scope)]),\n );\n }\n return value;\n}\n\nfunction requireResolvedString(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`\"${field}\" must resolve to a non-empty string`);\n }\n return value;\n}\n\nfunction optionalResolvedString(value: unknown, field: string): string | undefined {\n if (value === undefined || value === null) return undefined;\n return requireResolvedString(value, field);\n}\n\nfunction optionalResolvedId(value: unknown, field: string): string | number | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"string\") {\n if (value.length === 0) throw new Error(`\"${field}\" must resolve to a non-empty string or number`);\n return value;\n }\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n throw new Error(`\"${field}\" must resolve to a non-empty string or finite number`);\n}\n\nfunction optionalResolvedNumber(value: unknown, field: string): number | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n throw new Error(`\"${field}\" must resolve to a finite number`);\n}\n\nfunction optionalResolvedRecord(value: unknown, field: string): Record<string, unknown> | undefined {\n if (value === undefined || value === null) return undefined;\n if (!isRecord(value)) throw new Error(`\"${field}\" must resolve to an object`);\n return value;\n}\n\nfunction getStringRecord(value: unknown): Record<string, string> | undefined {\n if (!isRecord(value)) return undefined;\n const entries = Object.entries(value);\n if (!entries.every(([, item]) => typeof item === \"string\")) return undefined;\n return Object.fromEntries(entries) as Record<string, string>;\n}\n\nfunction normalizeMutationError(error: unknown): { message: string; code?: string; fields?: Record<string, string> } {\n const message = error instanceof Error ? error.message : \"Mutation failed\";\n if (!isRecord(error)) return { message };\n const code = typeof error.code === \"string\" ? error.code : undefined;\n const fields = getStringRecord(error.fields);\n return { message, code, fields };\n}\n\nconst API_TIMEOUT_MS = 15000;\nconst DEFAULT_API_MAX_RESPONSE_BYTES = 5 * 1024 * 1024; // 5MB\nconst DEFAULT_API_MAX_CONCURRENT_CALLS = 6;\n\n/**\n * A list of allowed hostnames (exact match, or `*.example.com` for subdomains), or a predicate\n * for more advanced matching. `api` actions refuse to run unless this is provided — see\n * `ActionInterpreter`'s `apiAllowlist` handling for why the default is fail-closed, not open.\n */\nexport type ApiAllowlist = string[] | ((url: URL) => boolean);\n\nexport interface ActionContext {\n stateStore?: DocumentStateStore;\n session?: Record<string, unknown>;\n route?: Record<string, unknown>;\n data?: Record<string, unknown>;\n eventBus?: ReturnType<typeof createEventBus>;\n mutationHandler?: MutationHandler;\n commandHandler?: CommandHandler;\n apiAllowlist?: ApiAllowlist;\n /** Max `api` response body size in bytes before the request is aborted. Default 5MB. */\n apiMaxResponseBytes?: number;\n /**\n * Max number of `api` actions this interpreter runs concurrently; further calls fail fast\n * instead of queueing, so a document that fires many `api` actions at once (e.g. one per row\n * of a `repeat`) can't hammer an allowlisted host or exhaust client connections. Default 6.\n */\n apiMaxConcurrentCalls?: number;\n}\n\nfunction isHostAllowed(host: string, allowlist: string[]): boolean {\n return allowlist.some((entry) => {\n if (entry.startsWith(\"*.\")) {\n const suffix = entry.slice(1); // \".example.com\"\n return host === entry.slice(2) || host.endsWith(suffix);\n }\n return host === entry;\n });\n}\n\nexport class ActionInterpreter {\n private stateStore?: DocumentStateStore;\n private route: Record<string, unknown>;\n private session: Record<string, unknown>;\n private data: Record<string, unknown>;\n private eventBus: ReturnType<typeof createEventBus>;\n private mutationHandler?: MutationHandler;\n private commandHandler?: CommandHandler;\n private apiAllowlist?: ApiAllowlist;\n private apiMaxResponseBytes: number;\n private apiMaxConcurrentCalls: number;\n private inFlightApiCalls = 0;\n\n constructor(context: ActionContext = {}) {\n this.stateStore = context.stateStore;\n this.route = context.route ?? {};\n this.session = context.session ?? {};\n this.data = context.data ?? {};\n this.eventBus = context.eventBus ?? createEventBus();\n this.mutationHandler = context.mutationHandler;\n this.commandHandler = context.commandHandler;\n this.apiAllowlist = context.apiAllowlist;\n this.apiMaxResponseBytes = context.apiMaxResponseBytes ?? DEFAULT_API_MAX_RESPONSE_BYTES;\n this.apiMaxConcurrentCalls = context.apiMaxConcurrentCalls ?? DEFAULT_API_MAX_CONCURRENT_CALLS;\n }\n\n getEventBus(): ReturnType<typeof createEventBus> {\n return this.eventBus;\n }\n\n execute(action: Action, eventValue?: unknown): void {\n try {\n this.executeAction(action, eventValue);\n } catch (error) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[uidl-runtime] Action execution failed:\", error, action);\n }\n }\n }\n\n private executeAction(action: Action, eventValue?: unknown): void {\n if (\"sequence\" in action) {\n for (const seqAction of action.sequence) {\n this.executeAction(seqAction, eventValue);\n }\n return;\n }\n\n if (\"if\" in action) {\n const { condition, then: thenAction, else: elseAction } = action.if;\n const scope = this.buildScope();\n const result = Boolean(evaluate(condition, scope));\n if (result && thenAction) {\n this.executeAction(thenAction, eventValue);\n } else if (!result && elseAction) {\n this.executeAction(elseAction, eventValue);\n }\n return;\n }\n\n if (\"setState\" in action) {\n const { path, value } = action.setState;\n const scope = this.buildScope();\n let resolvedValue: unknown;\n\n if (typeof value === \"object\" && value !== null && \"$bind\" in value) {\n resolvedValue = resolveEventBind((value as { $bind: string }).$bind, eventValue);\n } else if (value === null && eventValue !== undefined) {\n // The documented convention for form-widget onChange (README's \"Two-way form binding\"):\n // `value: null` is an explicit placeholder meaning \"use whatever the change event\n // produced.\" A literal, non-null value (e.g. a row action's `value: \"archived\"`) must\n // win over eventValue instead of being silently discarded — eventValue is only an\n // implicit fallback for the null-placeholder convention, not a blanket override.\n resolvedValue = eventValue;\n } else if (typeof value === \"object\" && value !== null && \"$expr\" in value) {\n resolvedValue = evaluate((value as { $expr: unknown }).$expr, scope);\n } else {\n resolvedValue = value;\n }\n\n this.stateStore?.setState(path, resolvedValue);\n return;\n }\n\n if (\"navigate\" in action) {\n const { route: routeValue } = action.navigate;\n let resolvedRoute: unknown;\n if (typeof routeValue === \"object\" && routeValue !== null && \"$bind\" in routeValue) {\n resolvedRoute = resolveEventBind((routeValue as { $bind: string }).$bind, eventValue);\n } else {\n const scope = this.buildScope();\n resolvedRoute = typeof routeValue === \"object\" && routeValue !== null && \"$expr\" in routeValue\n ? evaluate((routeValue as { $expr: unknown }).$expr, scope)\n : routeValue;\n }\n if (typeof resolvedRoute === \"string\") {\n this.eventBus.emit(\"route-change\", resolvedRoute);\n } else if (typeof resolvedRoute === \"object\" && resolvedRoute !== null) {\n this.eventBus.emit(\"route-change\", resolvedRoute);\n }\n return;\n }\n\n if (\"api\" in action) {\n this.executeApi(action.api);\n return;\n }\n\n if (\"mutate\" in action) {\n this.executeMutation(action.mutate, eventValue);\n return;\n }\n\n if (\"command\" in action) {\n this.executeCommand(action.command, eventValue);\n return;\n }\n\n if (\"showSnackbar\" in action) {\n const { message, duration } = action.showSnackbar;\n this.eventBus.emit(\"snackbar\", { message, duration: duration ?? 3000 });\n return;\n }\n\n if (\"showDialog\" in action) {\n this.eventBus.emit(\"dialog\", action.showDialog);\n return;\n }\n\n if (\"validate\" in action) {\n this.eventBus.emit(\"validate\", action.validate);\n return;\n }\n }\n\n private executeMutation(config: MutationActionConfig, eventValue?: unknown): void {\n if (config.statusPath) this.stateStore?.setState(config.statusPath, \"loading\");\n if (config.errorPath) this.stateStore?.setState(config.errorPath, undefined);\n if (config.fieldErrorsPath) this.stateStore?.setState(config.fieldErrorsPath, {});\n void this.runMutation(config, eventValue);\n }\n\n private async runMutation(config: MutationActionConfig, eventValue?: unknown): Promise<void> {\n let request: MutationRequest | undefined;\n try {\n request = this.buildMutationRequest(config, eventValue);\n if (!this.mutationHandler) {\n throw new Error(\n '\"mutate\" actions are disabled by default - pass mutationHandler to ActionInterpreter/renderUIDocument/UIDocumentRenderer to handle business writes',\n );\n }\n\n const data = await this.mutationHandler(request);\n if (config.resultPath) this.stateStore?.setState(config.resultPath, data);\n if (config.errorPath) this.stateStore?.setState(config.errorPath, undefined);\n if (config.fieldErrorsPath) this.stateStore?.setState(config.fieldErrorsPath, {});\n if (config.statusPath) this.stateStore?.setState(config.statusPath, \"success\");\n\n const response: MutationResponse = { success: true, request, data };\n this.eventBus.emit(\"mutation-response\", response);\n if (config.onSuccess) {\n this.executeAction(config.onSuccess, data);\n }\n } catch (error) {\n const normalized = normalizeMutationError(error);\n if (config.statusPath) this.stateStore?.setState(config.statusPath, \"error\");\n if (config.errorPath) this.stateStore?.setState(config.errorPath, normalized.message);\n if (config.fieldErrorsPath) this.stateStore?.setState(config.fieldErrorsPath, normalized.fields ?? {});\n\n const response: MutationResponse = {\n success: false,\n ...(request ? { request } : {}),\n error: normalized.message,\n ...(normalized.code ? { code: normalized.code } : {}),\n ...(normalized.fields ? { fields: normalized.fields } : {}),\n };\n this.eventBus.emit(\"mutation-response\", response);\n this.eventBus.emit(\"snackbar\", { message: normalized.message, duration: 5000 });\n if (config.onError) {\n this.executeAction(config.onError, response);\n }\n }\n }\n\n private buildMutationRequest(config: MutationActionConfig, eventValue?: unknown): MutationRequest {\n const scope = this.buildScope();\n const request: MutationRequest = {\n operation: config.operation,\n collection: requireResolvedString(\n resolveActionValue(config.collection, eventValue, scope),\n \"mutate.collection\",\n ),\n };\n\n const id = optionalResolvedId(resolveActionValue(config.id, eventValue, scope), \"mutate.id\");\n if (id !== undefined) request.id = id;\n\n const payload = optionalResolvedRecord(resolveActionValue(config.payload, eventValue, scope), \"mutate.payload\");\n if (payload !== undefined) request.payload = payload;\n\n const transition = optionalResolvedString(\n resolveActionValue(config.transition, eventValue, scope),\n \"mutate.transition\",\n );\n if (transition !== undefined) request.transition = transition;\n\n const version = optionalResolvedNumber(resolveActionValue(config.version, eventValue, scope), \"mutate.version\");\n if (version !== undefined) request.version = version;\n\n if (\n (config.operation === \"update\" || config.operation === \"delete\" || config.operation === \"transition\") &&\n request.id === undefined\n ) {\n throw new Error(`\"mutate.${config.operation}\" requires an id`);\n }\n if (config.operation === \"transition\" && !request.transition) {\n throw new Error('\"mutate.transition\" actions require a transition name');\n }\n\n return request;\n }\n\n private executeCommand(config: CommandActionConfig, eventValue?: unknown): void {\n if (config.statusPath) this.stateStore?.setState(config.statusPath, \"loading\");\n if (config.errorPath) this.stateStore?.setState(config.errorPath, undefined);\n void this.runCommand(config, eventValue);\n }\n\n private async runCommand(config: CommandActionConfig, eventValue?: unknown): Promise<void> {\n let request: CommandRequest | undefined;\n try {\n request = this.buildCommandRequest(config, eventValue);\n if (!this.commandHandler) {\n throw new Error(\n '\"command\" actions are disabled by default - pass commandHandler to ActionInterpreter/renderUIDocument/UIDocumentRenderer to handle host commands',\n );\n }\n\n const data = await this.commandHandler(request);\n if (config.resultPath) this.stateStore?.setState(config.resultPath, data);\n if (config.errorPath) this.stateStore?.setState(config.errorPath, undefined);\n if (config.statusPath) this.stateStore?.setState(config.statusPath, \"success\");\n\n const response: CommandResponse = { success: true, request, data };\n this.eventBus.emit(\"command-response\", response);\n if (config.onSuccess) {\n this.executeAction(config.onSuccess, data);\n }\n } catch (error) {\n const normalized = normalizeMutationError(error);\n if (config.statusPath) this.stateStore?.setState(config.statusPath, \"error\");\n if (config.errorPath) this.stateStore?.setState(config.errorPath, normalized.message);\n\n const response: CommandResponse = {\n success: false,\n ...(request ? { request } : {}),\n error: normalized.message,\n ...(normalized.code ? { code: normalized.code } : {}),\n ...(normalized.fields ? { fields: normalized.fields } : {}),\n };\n this.eventBus.emit(\"command-response\", response);\n this.eventBus.emit(\"snackbar\", { message: normalized.message, duration: 5000 });\n if (config.onError) {\n this.executeAction(config.onError, response);\n }\n }\n }\n\n private buildCommandRequest(config: CommandActionConfig, eventValue?: unknown): CommandRequest {\n const scope = this.buildScope();\n const request: CommandRequest = {\n name: requireResolvedString(\n resolveActionValue(config.name, eventValue, scope),\n \"command.name\",\n ),\n };\n const payload = optionalResolvedRecord(resolveActionValue(config.payload, eventValue, scope), \"command.payload\");\n if (payload !== undefined) request.payload = payload;\n return request;\n }\n\n private executeApi(config: { url: string; method: string; body?: Record<string, unknown>; dataSource?: string }): void {\n void this.fetchApi(config);\n }\n\n private async fetchApi(config: { url: string; method: string; body?: Record<string, unknown>; dataSource?: string }): Promise<void> {\n if (this.inFlightApiCalls >= this.apiMaxConcurrentCalls) {\n this.eventBus.emit(\"api-response\", {\n success: false,\n error: `Too many concurrent \"api\" actions in flight (limit: ${this.apiMaxConcurrentCalls})`,\n });\n this.eventBus.emit(\"snackbar\", { message: \"Too many API requests in flight\", duration: 5000 });\n return;\n }\n\n this.inFlightApiCalls++;\n try {\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(config.url, typeof window !== \"undefined\" ? window.location.href : undefined);\n } catch {\n throw new Error(`Invalid API URL: ${config.url}`);\n }\n if (parsedUrl.protocol !== \"http:\" && parsedUrl.protocol !== \"https:\") {\n throw new Error(`Unsupported API URL scheme: ${parsedUrl.protocol}`);\n }\n\n if (!this.isApiUrlAllowed(parsedUrl)) {\n throw new Error(\n this.apiAllowlist\n ? `API host \"${parsedUrl.host}\" is not in the configured apiAllowlist`\n : `\"api\" actions are disabled by default — pass apiAllowlist to renderUIDocument/ActionInterpreter to allow specific hosts (e.g. apiAllowlist: [\"api.example.com\"])`,\n );\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), API_TIMEOUT_MS);\n\n let response: Response;\n try {\n response = await fetch(parsedUrl, {\n method: config.method,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: config.body ? JSON.stringify(config.body) : undefined,\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timeout);\n }\n\n if (!response.ok) {\n throw new Error(`API error: ${response.status}`);\n }\n\n const contentType = response.headers?.get?.(\"content-type\");\n if (contentType && !contentType.includes(\"json\")) {\n throw new Error(`API response Content-Type \"${contentType}\" is not JSON`);\n }\n\n const declaredLength = response.headers?.get?.(\"content-length\");\n if (declaredLength && Number(declaredLength) > this.apiMaxResponseBytes) {\n throw new Error(\n `API response too large (${declaredLength} bytes, limit ${this.apiMaxResponseBytes})`,\n );\n }\n\n const text = await response.text();\n const actualBytes = new TextEncoder().encode(text).length;\n if (actualBytes > this.apiMaxResponseBytes) {\n throw new Error(\n `API response too large (${actualBytes} bytes, limit ${this.apiMaxResponseBytes})`,\n );\n }\n\n const data = JSON.parse(text);\n\n if (config.dataSource && this.stateStore) {\n this.stateStore.setState(config.dataSource, data);\n }\n\n this.eventBus.emit(\"api-response\", { success: true, data });\n } catch (error) {\n this.eventBus.emit(\"api-response\", {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\",\n });\n this.eventBus.emit(\"snackbar\", {\n message: error instanceof Error ? error.message : \"API request failed\",\n duration: 5000,\n });\n } finally {\n this.inFlightApiCalls--;\n }\n }\n\n private isApiUrlAllowed(url: URL): boolean {\n if (!this.apiAllowlist) return false;\n if (typeof this.apiAllowlist === \"function\") return this.apiAllowlist(url);\n return isHostAllowed(url.host, this.apiAllowlist);\n }\n\n private buildScope(): RenderScope {\n const stateSnapshot = this.stateStore?.getValue() as Record<string, unknown> | undefined;\n return {\n state: stateSnapshot,\n session: this.session,\n route: this.route,\n data: this.data,\n };\n }\n}\n","import React from \"react\";\nimport type { ComponentRegistry, UIDLDocument, Theme } from \"../types\";\nimport { renderNode } from \"./RenderNode\";\nimport { getTheme } from \"../theme/registry\";\nimport { themeToCssVariablesMap } from \"../theme/tailwind\";\nimport type { DocumentStateStore } from \"../state/createDocumentState\";\nimport { isQueryDataSource } from \"../state/dataSources\";\nimport { createEventBus, type EventBus } from \"../actions/eventBus\";\nimport { ActionInterpreter, type ApiAllowlist } from \"../actions/interpreter\";\nimport type { DataAdapter } from \"../data/types\";\nimport type { CommandHandler, MutationHandler } from \"../types/actions\";\n\nexport interface RenderOptions {\n theme?: Theme;\n stateStore?: DocumentStateStore;\n session?: Record<string, unknown>;\n dataSources?: Record<string, unknown>;\n /**\n * A `DataAdapter` to resolve `{\"$query\": {...}}` entries in `dataSources` against. Only\n * `<UIDocumentRenderer />` actually issues the fetches (it owns the effect loop that reruns a\n * query when its `$bind`-resolved params change); passing this to `renderUIDocument` still\n * lets its single pass render the `state.$data.<name>.status === \"loading\"` placeholder\n * correctly, but nothing will ever resolve it — see the `$query`-without-Renderer warning\n * below.\n */\n dataAdapter?: DataAdapter;\n /**\n * Host-owned handler for UIDL `mutate` actions. Wire this to an adapter-backed domain service\n * in demos, and later to the same HTTP contract, so business writes stay outside components.\n */\n mutationHandler?: MutationHandler;\n /** Host-owned handler for UIDL `command` actions. Unset means commands are disabled. */\n commandHandler?: CommandHandler;\n onRouteChange?: (route: string | Record<string, unknown>) => void;\n registry?: ComponentRegistry;\n /**\n * Hosts a document's `api` actions are allowed to call. `api` actions refuse to run unless\n * this is set — see `ActionInterpreter`'s constructor for why the default is fail-closed.\n */\n apiAllowlist?: ApiAllowlist;\n /** Max `api` response body size in bytes before the request is aborted. Default 5MB. */\n apiMaxResponseBytes?: number;\n /** Max number of `api` actions to run concurrently; further calls fail fast. Default 6. */\n apiMaxConcurrentCalls?: number;\n}\n\nexport interface RenderContext {\n theme: Theme | undefined;\n data: Record<string, unknown>;\n stateSnapshot: Record<string, unknown> | undefined;\n session: Record<string, unknown> | undefined;\n eventBus: EventBus;\n interpreter: ActionInterpreter;\n}\n\n/**\n * Builds everything renderNode needs (theme, resolved data sources, an ActionInterpreter wired\n * to a fresh EventBus) without rendering anything. Shared by `renderUIDocument` (a plain,\n * single-pass function — has no way to react to further events after it returns) and\n * `UIDocumentRenderer` (a real component that stays subscribed to the event bus, so `showDialog`/\n * `showSnackbar` actions can actually show something — see UIDocumentRenderer.tsx).\n */\nexport function createRenderContext(document: UIDLDocument, options: RenderOptions = {}): RenderContext {\n const theme = options.theme ?? getTheme(document.theme ?? \"\");\n const stateStore = options.stateStore;\n const dataSources = options.dataSources ?? document.dataSources;\n\n const data: Record<string, unknown> = {};\n\n if (dataSources) {\n for (const [name, config] of Object.entries(dataSources)) {\n if (Array.isArray(config)) {\n data[name] = config;\n } else if (isQueryDataSource(config)) {\n // The actual fetch is driven by <UIDocumentRenderer />'s effect loop (see\n // runDataSources/serializeResolvedQueries in state/dataSources.ts) — this only surfaces\n // whatever has already landed in state.$data.<name>.rows, or [] before the first\n // resolution, so widgets bound via props.dataSource never see `undefined`.\n const resolvedRows = stateStore?.getValue(`$data.${name}.rows`);\n data[name] = Array.isArray(resolvedRows) ? resolvedRows : [];\n }\n }\n }\n\n const stateSnapshot = stateStore?.getValue() as Record<string, unknown> | undefined;\n\n const eventBus = createEventBus();\n if (options.onRouteChange) {\n eventBus.on(\"route-change\", (route) => {\n options.onRouteChange!(route as string | Record<string, unknown>);\n });\n }\n\n const interpreter = new ActionInterpreter({\n stateStore,\n session: options.session,\n data,\n eventBus,\n mutationHandler: options.mutationHandler,\n commandHandler: options.commandHandler,\n apiAllowlist: options.apiAllowlist,\n apiMaxResponseBytes: options.apiMaxResponseBytes,\n apiMaxConcurrentCalls: options.apiMaxConcurrentCalls,\n });\n\n return { theme, data, stateSnapshot, session: options.session, eventBus, interpreter };\n}\n\n/**\n * Renders a document to React elements once. Does not render anything for `showDialog`/\n * `showSnackbar` actions — those still fire their events on an internal event bus (so\n * `setState`/`navigate`/etc keep working), but nothing is listening to actually show a dialog\n * or snackbar, since this function returns a static tree with no ongoing subscription. Use\n * `UIDocumentRenderer` instead when a document's dialog/snackbar actions need to visibly do\n * something.\n */\nlet warnedAboutUnresolvedQuery = false;\n\n/**\n * `renderUIDocument` is a single pass with no way to react to a promise settling later, so a\n * `$query` data source it encounters will render its `loading` placeholder and then simply never\n * resolve. Warn once (not per document) so this doesn't drown out other console output the same\n * way the existing showDialog/showSnackbar warning does in README.\n */\nfunction warnIfUnresolvedQuery(document: UIDLDocument): void {\n if (warnedAboutUnresolvedQuery || !document.dataSources) return;\n const hasQuery = Object.values(document.dataSources).some(isQueryDataSource);\n if (!hasQuery) return;\n warnedAboutUnresolvedQuery = true;\n console.warn(\n '[uidl-runtime] renderUIDocument() found a \"$query\" dataSource but has no way to resolve it — ' +\n \"it renders a single, static pass and never re-renders when a promise settles. Use \" +\n \"<UIDocumentRenderer document={...} dataAdapter={...} /> instead for any document with a \" +\n '\"$query\" dataSource, the same way it\\'s already required for showDialog/showSnackbar actions.',\n );\n}\n\nexport function renderUIDocument(\n document: UIDLDocument,\n options: RenderOptions = {},\n): React.ReactNode {\n warnIfUnresolvedQuery(document);\n const { theme, data, stateSnapshot, session, interpreter } = createRenderContext(document, options);\n\n const rendered = renderNode(document.root, {\n theme,\n state: stateSnapshot,\n session,\n data,\n actionInterpreter: interpreter,\n registry: options.registry,\n definitions: document.definitions,\n });\n\n return withThemeCssVariables(rendered, theme);\n}\n\n/**\n * CSS custom properties for the theme's tokens are set once on the root element so\n * `var(--color-primary)`-style references (from ThemeEngine.resolveInlineStyle) resolve for\n * every descendant, without needing a global stylesheet or build-time Tailwind support.\n */\nexport function withThemeCssVariables(rendered: React.ReactNode, theme: Theme | undefined): React.ReactNode {\n if (theme && React.isValidElement(rendered)) {\n const cssVariables = themeToCssVariablesMap(theme);\n const existingStyle = (rendered.props as { style?: Record<string, unknown> }).style;\n return React.cloneElement(rendered as React.ReactElement<{ style?: Record<string, unknown> }>, {\n style: { ...cssVariables, ...existingStyle },\n });\n }\n\n return rendered;\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { UIDLDocument } from \"../types\";\nimport type { RenderOptions } from \"./renderDocument\";\nimport { createRenderContext, withThemeCssVariables } from \"./renderDocument\";\nimport { renderNode } from \"./RenderNode\";\nimport { Dialog, Snackbar } from \"../components/primitives\";\nimport { runDataSources, serializeResolvedQueries } from \"../state/dataSources\";\n\nexport interface UIDocumentRendererProps extends RenderOptions {\n document: UIDLDocument;\n}\n\ninterface DialogState {\n title: string;\n content: string;\n}\n\ninterface SnackbarState {\n message: string;\n duration?: number;\n}\n\n/**\n * The stateful counterpart to `renderUIDocument`: a real component that stays subscribed to the\n * document's event bus for its whole lifetime, so `showDialog`/`showSnackbar` actions actually\n * render something instead of firing an event nobody listens to. Use this (not the plain\n * `renderUIDocument` function) whenever a document's actions may include `showDialog` or\n * `showSnackbar`.\n */\nexport function UIDocumentRenderer({\n document,\n theme,\n stateStore,\n session,\n dataSources,\n dataAdapter,\n mutationHandler,\n commandHandler,\n onRouteChange,\n registry,\n apiAllowlist,\n apiMaxResponseBytes,\n apiMaxConcurrentCalls,\n}: UIDocumentRendererProps) {\n // Re-render when the document state store changes, so `state.*` bindings (e.g. an overlay's\n // `open: { \"$bind\": \"state.overlays.x\" }` closed by an onClose setState action) stay live.\n // Without this, state-bound props would resolve once against the initial snapshot and never\n // update — a broken path exactly like the Dialog/Snackbar one round 8 fixed.\n const [stateVersion, setStateVersion] = useState(0);\n\n useEffect(() => {\n if (!stateStore) return;\n return stateStore.subscribe(() => setStateVersion((v) => v + 1));\n }, [stateStore]);\n\n // Drives \"$query\" dataSources (see state/dataSources.ts): re-resolves each entry's $bind\n // params on every state change and only actually refetches the ones whose *resolved* query\n // changed — an unrelated state mutation (opening a Dialog, say) must not abort an in-flight\n // fetch or refire a query whose filters/sort/page didn't move. The subscription is set up once\n // per (adapter, store, dataSources, session) identity, not per stateVersion tick, precisely so\n // an in-flight request only gets aborted when *this* effect decides to supersede it.\n const lastResolvedQueriesRef = useRef<Record<string, string>>({});\n const dataFetchAbortRef = useRef<AbortController | null>(null);\n\n const effectiveDataSources = dataSources ?? document.dataSources;\n\n useEffect(() => {\n if (!dataAdapter || !stateStore || !effectiveDataSources) return;\n\n const maybeRefetch = () => {\n const scope = { state: stateStore.getValue() as Record<string, unknown>, session };\n const resolved = serializeResolvedQueries(effectiveDataSources, scope);\n const changed = Object.keys(resolved).some((name) => lastResolvedQueriesRef.current[name] !== resolved[name]);\n if (!changed) return;\n lastResolvedQueriesRef.current = resolved;\n\n dataFetchAbortRef.current?.abort();\n const controller = new AbortController();\n dataFetchAbortRef.current = controller;\n void runDataSources(effectiveDataSources, { adapter: dataAdapter, stateStore, session, signal: controller.signal });\n };\n\n maybeRefetch();\n const unsubscribe = stateStore.subscribe(maybeRefetch);\n\n return () => {\n unsubscribe();\n dataFetchAbortRef.current?.abort();\n // The abort above cancels whatever fetch is in flight, so the fingerprint recorded for\n // it no longer describes fetched data — forget it. Otherwise React StrictMode's dev-mode\n // mount/cleanup/remount (or any real effect teardown mid-fetch) leaves the remount\n // comparing against a fingerprint for a request that was killed, sees \"unchanged\", and\n // skips refetching — the query is then stuck forever on a fetch that never landed. Only\n // an adapter with non-zero latency exposes this: InMemoryAdapter's default 0ms resolves\n // before cleanup can even run.\n lastResolvedQueriesRef.current = {};\n };\n }, [dataAdapter, stateStore, effectiveDataSources, session]);\n\n const context = useMemo(\n () => {\n // stateVersion is deliberately referenced only as a cache-busting dep: the store's\n // subscribe() bumps it after every setState, forcing this memo to re-read the fresh\n // snapshot inside createRenderContext even though every other dep is unchanged.\n void stateVersion;\n return createRenderContext(document, {\n theme,\n stateStore,\n session,\n dataSources: effectiveDataSources,\n dataAdapter,\n mutationHandler,\n commandHandler,\n onRouteChange,\n registry,\n apiAllowlist,\n apiMaxResponseBytes,\n apiMaxConcurrentCalls,\n });\n },\n [\n document,\n theme,\n stateStore,\n session,\n effectiveDataSources,\n dataAdapter,\n mutationHandler,\n commandHandler,\n onRouteChange,\n registry,\n apiAllowlist,\n apiMaxResponseBytes,\n apiMaxConcurrentCalls,\n stateVersion,\n ],\n );\n\n const [dialog, setDialog] = useState<DialogState | null>(null);\n // A new showSnackbar replaces the current one rather than stacking — Snackbar itself is\n // pinned to a single fixed position (bottom-4 left-1/2), so rendering more than one at once\n // would just overlap. Stacking would need Snackbar to support a vertical offset per instance.\n const [snackbar, setSnackbar] = useState<SnackbarState | null>(null);\n\n useEffect(() => {\n const offDialog = context.eventBus.on(\"dialog\", (payload) => {\n setDialog(payload as DialogState);\n });\n const offSnackbar = context.eventBus.on(\"snackbar\", (payload) => {\n setSnackbar(payload as SnackbarState);\n });\n\n return () => {\n offDialog();\n offSnackbar();\n };\n }, [context.eventBus]);\n\n const rendered = renderNode(document.root, {\n theme: context.theme,\n state: context.stateSnapshot,\n session: context.session,\n data: context.data,\n actionInterpreter: context.interpreter,\n registry,\n definitions: document.definitions,\n });\n\n return (\n <>\n {withThemeCssVariables(rendered, context.theme)}\n <Dialog\n open={dialog !== null}\n title={dialog?.title}\n content={dialog?.content}\n onClose={() => setDialog(null)}\n />\n <Snackbar\n message={snackbar?.message}\n duration={snackbar?.duration}\n onClose={() => setSnackbar(null)}\n />\n </>\n );\n}\n","import { defaultRegistry } from \"./registry/registry\";\n\nexport const UIDL_RUNTIME_VERSION = \"1.1.0\";\n\nexport type RegistryVersion = {\n version: string;\n componentCount: number;\n components: string[];\n};\n\nexport function computeRegistryVersion(): RegistryVersion {\n const widgets = defaultRegistry.list();\n return {\n version: UIDL_RUNTIME_VERSION,\n componentCount: widgets.length,\n components: widgets.map((w) =>\n `${w.type}:${w.propDescriptors?.map((p) => p.name).join(\",\")}:${w.eventDescriptors?.map((e) => e.name).join(\",\")}`,\n ),\n };\n}\n\nexport const REGISTRY_VERSION: RegistryVersion = computeRegistryVersion();\n\nexport function getRegistryVersion(): RegistryVersion {\n return REGISTRY_VERSION;\n}\n\nexport function getRegistryFingerprint(): string {\n return REGISTRY_VERSION.components.join(\"\\n\");\n}\n","import { z } from \"zod\";\nimport type { UIDLNode, DesignTokens } from \"../types\";\nimport { ThemePresetSchema } from \"./theme\";\n\nexport const ResponsiveValueSchema = z.record(z.string(), z.unknown());\n\nexport const VisibilitySchema = z.object({\n condition: z.unknown().optional(),\n breakpoints: z.array(z.enum([\"mobile\", \"tablet\", \"desktop\", \"wide\"])).optional(),\n});\n\nexport const RepeatSchema = z.object({\n dataSource: z.union([z.array(z.unknown()), z.string()]).optional(),\n itemName: z.string().optional(),\n useIndex: z.boolean().optional(),\n});\n\nexport const NodeSchema: z.ZodType<UIDLNode> = z.object({\n id: z.string(),\n type: z.string(),\n name: z.string().optional(),\n props: z.record(z.string(), z.unknown()).optional(),\n style: z.record(z.string(), z.unknown()).optional(),\n children: z.array(z.lazy(() => NodeSchema)).optional(),\n slots: z.record(z.string(), z.array(z.lazy(() => NodeSchema))).optional(),\n responsive: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\"DEPRECATED: responsive overrides are migrating into style values. This field is preserved for backward compatibility only.\"),\n visibility: VisibilitySchema.optional(),\n bindings: z.record(z.string(), z.unknown()).optional(),\n events: z.record(z.string(), z.unknown()).optional(),\n repeat: RepeatSchema.optional(),\n ref: z.string().optional(),\n componentId: z.string().optional(),\n themeRef: z.string().optional(),\n testId: z.string().optional(),\n});\n\nexport const ThemePresetsSchema = z.array(ThemePresetSchema);\n\nexport const DocumentSchema = z.object({\n $schema: z.string().optional(),\n version: z.string(),\n id: z.string(),\n name: z.string(),\n route: z.string().optional(),\n theme: z.string().optional(),\n state: z.record(z.string(), z.unknown()).optional(),\n // Each entry is either an inline array (resolved synchronously, as it always has been) or a\n // `{ \"$query\": { collection, filters, sort, page, search, fields } }` descriptor resolved\n // asynchronously against a DataAdapter by <UIDocumentRenderer />'s effect loop — see\n // state/dataSources.ts and .notes/plan/01-arsitektur-target.md §3. Left as z.unknown() rather\n // than a discriminated union so documents authored before this existed keep validating\n // unchanged; state/dataSources.ts's isQueryDataSource() is the actual runtime discriminator.\n dataSources: z.record(z.string(), z.unknown()).optional(),\n definitions: z.record(z.string(), NodeSchema).optional(),\n root: NodeSchema,\n});\n\nexport const DesignTokensSchema: z.ZodType<DesignTokens> = z.object({\n color: z.record(z.string(), z.string()).optional(),\n font: z.record(z.string(), z.string()).optional(),\n spacing: z.record(z.string(), z.string()).optional(),\n radius: z.record(z.string(), z.string()).optional(),\n shadow: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type DocumentInput = z.input<typeof DocumentSchema>;\nexport type NodeInput = z.input<typeof NodeSchema>;\nexport type ThemePresetsInput = z.input<typeof ThemePresetsSchema>;\n","import { z } from \"zod\";\nimport type { Action } from \"../types/actions\";\n\nconst SetStateActionSchema = z.object({\n setState: z.object({\n path: z.string(),\n value: z.unknown(),\n }),\n});\n\nconst NavigateActionSchema = z.object({\n navigate: z.object({\n route: z.union([z.string(), z.record(z.string(), z.unknown())]),\n }),\n});\n\nconst ApiActionSchema = z.object({\n api: z.object({\n url: z.string(),\n method: z.enum([\"GET\", \"POST\", \"PUT\", \"DELETE\"]),\n body: z.record(z.string(), z.unknown()).optional(),\n dataSource: z.string().optional(),\n }),\n});\n\nconst BoundActionValueSchema = z.object({ $bind: z.string() });\nconst ExprActionValueSchema = z.object({ $expr: z.unknown() });\nconst ResolvableStringSchema = z.union([z.string(), BoundActionValueSchema, ExprActionValueSchema]);\nconst ResolvableIdSchema = z.union([z.string(), z.number(), BoundActionValueSchema, ExprActionValueSchema]);\nconst ResolvableRecordSchema = z.union([\n z.record(z.string(), z.unknown()),\n BoundActionValueSchema,\n ExprActionValueSchema,\n]);\nconst ResolvableNumberSchema = z.union([z.number(), BoundActionValueSchema, ExprActionValueSchema]);\n\nconst MutationActionSchema = z.object({\n mutate: z.object({\n operation: z.enum([\"create\", \"update\", \"delete\", \"transition\"]),\n collection: ResolvableStringSchema,\n id: ResolvableIdSchema.optional(),\n payload: ResolvableRecordSchema.optional(),\n transition: ResolvableStringSchema.optional(),\n version: ResolvableNumberSchema.optional(),\n resultPath: z.string().optional(),\n errorPath: z.string().optional(),\n fieldErrorsPath: z.string().optional(),\n statusPath: z.string().optional(),\n onSuccess: z.lazy(() => ActionSchema).optional(),\n onError: z.lazy(() => ActionSchema).optional(),\n }),\n});\n\nconst CommandActionSchema = z.object({\n command: z.object({\n name: ResolvableStringSchema,\n payload: ResolvableRecordSchema.optional(),\n resultPath: z.string().optional(),\n errorPath: z.string().optional(),\n statusPath: z.string().optional(),\n onSuccess: z.lazy(() => ActionSchema).optional(),\n onError: z.lazy(() => ActionSchema).optional(),\n }),\n});\n\nconst ShowSnackbarActionSchema = z.object({\n showSnackbar: z.object({\n message: z.string(),\n duration: z.number().optional(),\n }),\n});\n\nconst ShowDialogActionSchema = z.object({\n showDialog: z.object({\n title: z.string(),\n content: z.string(),\n }),\n});\n\nconst ValidateActionSchema = z.object({\n validate: z.object({\n fields: z.array(z.string()),\n }),\n});\n\nconst SequenceActionSchema = z.object({\n sequence: z.array(z.lazy(() => ActionSchema)),\n});\n\nconst IfActionSchema = z.object({\n if: z.object({\n condition: z.record(z.string(), z.unknown()),\n then: z.lazy(() => ActionSchema),\n else: z.lazy(() => ActionSchema).optional(),\n }),\n});\n\nexport const ActionSchema: z.ZodType<Action> = z.union([\n SetStateActionSchema,\n NavigateActionSchema,\n ApiActionSchema,\n MutationActionSchema,\n CommandActionSchema,\n ShowSnackbarActionSchema,\n ShowDialogActionSchema,\n ValidateActionSchema,\n SequenceActionSchema,\n IfActionSchema,\n]);\n\nexport const ActionsSchema = z.array(ActionSchema);\n\nexport type ActionInput = z.input<typeof ActionSchema>;\n","import { z } from \"zod\";\nimport { DocumentSchema, DesignTokensSchema, ThemePresetsSchema } from \"../schemas/document\";\nimport { ActionSchema } from \"../schemas/actions\";\n\nexport interface JsonSchemaExport {\n filename: string;\n id: string;\n schema: Record<string, unknown>;\n}\n\nconst SCHEMA_BASE_URL = \"https://uidl-runtime.local/schema\";\n\nfunction toJsonSchema(filename: string, zodSchema: z.ZodType): JsonSchemaExport {\n const id = `${SCHEMA_BASE_URL}/${filename}`;\n const schema = z.toJSONSchema(zodSchema, { target: \"draft-2020-12\" }) as Record<string, unknown>;\n schema.$id = id;\n return { filename, id, schema };\n}\n\n/**\n * Generates standalone JSON Schema (draft 2020-12) documents for every public\n * UIDL contract, so non-TypeScript hosts and AI agents can validate documents\n * without depending on this package's Zod schemas directly.\n */\nexport function generateJsonSchemas(): JsonSchemaExport[] {\n return [\n toJsonSchema(\"uidl-document.schema.json\", DocumentSchema),\n toJsonSchema(\"action.schema.json\", ActionSchema),\n toJsonSchema(\"theme-presets.schema.json\", ThemePresetsSchema),\n toJsonSchema(\"design-tokens.schema.json\", DesignTokensSchema),\n ];\n}\n","import type { ThemePreset, Theme, PrimitiveTokens, SemanticTokens } from \"../types/theme\";\n\nconst lightPrimitives: PrimitiveTokens = {\n color: {\n primary: \"#4B39EF\",\n secondary: \"#39D2C0\",\n tertiary: \"#F9CF58\",\n error: \"#FF5963\",\n success: \"#249689\",\n warning: \"#F9CF58\",\n background: \"#F1F4F8\",\n surface: \"#FFFFFF\",\n \"surface-elevated\": \"#FFFFFF\",\n border: \"#E1E4E8\",\n \"border-hover\": \"#C5C9CD\",\n \"text-primary\": \"#14181B\",\n \"text-secondary\": \"#57636C\",\n \"text-muted\": \"#8B939C\",\n \"text-inverse\": \"#FFFFFF\",\n \"accent\": \"#4B39EF\",\n \"accent-hover\": \"#3D2FB8\",\n \"accent-subtle\": \"#EEECFF\",\n },\n spacing: {\n \"0\": \"0px\",\n \"0.5\": \"0.125rem\",\n \"1\": \"0.25rem\",\n \"2\": \"0.5rem\",\n \"3\": \"0.75rem\",\n \"4\": \"1rem\",\n \"5\": \"1.25rem\",\n \"6\": \"1.5rem\",\n \"8\": \"2rem\",\n \"10\": \"2.5rem\",\n \"12\": \"3rem\",\n \"16\": \"4rem\",\n \"20\": \"5rem\",\n \"24\": \"6rem\",\n },\n radius: {\n none: \"0px\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n full: \"9999px\",\n },\n shadow: {\n none: \"none\",\n sm: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n md: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n lg: \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n xl: \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\",\n },\n font: {\n sans: \"ui-sans-serif, system-ui, sans-serif\",\n serif: \"ui-serif, Georgia, serif\",\n mono: \"ui-monospace, SFMono-Regular, monospace\",\n },\n border: {\n \"width-0\": \"0px\",\n \"width-thin\": \"1px\",\n \"width-medium\": \"2px\",\n \"width-thick\": \"4px\",\n \"style-solid\": \"solid\",\n \"style-dashed\": \"dashed\",\n \"style-dotted\": \"dotted\",\n \"style-none\": \"none\",\n },\n};\n\nconst lightSemantics: SemanticTokens = {\n color: {\n \"bg-primary\": \"{primitives.color.primary}\",\n \"bg-secondary\": \"{primitives.color.secondary}\",\n \"bg-success\": \"{primitives.color.success}\",\n \"bg-error\": \"{primitives.color.error}\",\n \"bg-warning\": \"{primitives.color.warning}\",\n \"bg-background\": \"{primitives.color.background}\",\n \"bg-surface\": \"{primitives.color.surface}\",\n \"bg-surface-elevated\": \"{primitives.color.surface-elevated}\",\n \"bg-border\": \"{primitives.color.border}\",\n \"text-primary\": \"{primitives.color.text-primary}\",\n \"text-secondary\": \"{primitives.color.text-secondary}\",\n \"text-muted\": \"{primitives.color.text-muted}\",\n \"text-inverse\": \"{primitives.color.text-inverse}\",\n \"text-on-primary\": \"{primitives.color.text-inverse}\",\n \"border-default\": \"{primitives.color.border}\",\n \"border-hover\": \"{primitives.color.border-hover}\",\n },\n spacing: {\n xs: \"{primitives.spacing.1}\",\n sm: \"{primitives.spacing.2}\",\n md: \"{primitives.spacing.4}\",\n lg: \"{primitives.spacing.6}\",\n xl: \"{primitives.spacing.8}\",\n \"2xl\": \"{primitives.spacing.12}\",\n },\n radius: {\n sm: \"{primitives.radius.sm}\",\n md: \"{primitives.radius.md}\",\n lg: \"{primitives.radius.lg}\",\n xl: \"{primitives.radius.xl}\",\n full: \"{primitives.radius.full}\",\n },\n shadow: {\n sm: \"{primitives.shadow.sm}\",\n md: \"{primitives.shadow.md}\",\n lg: \"{primitives.shadow.lg}\",\n xl: \"{primitives.shadow.xl}\",\n },\n typography: {\n \"display-large\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-4xl\",\n fontWeight: 700,\n lineHeight: \"leading-tight\",\n letterSpacing: \"tracking-tight\",\n },\n \"headline-medium\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-2xl\",\n fontWeight: 600,\n lineHeight: \"leading-snug\",\n letterSpacing: \"tracking-tight\",\n },\n \"headline-small\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-xl\",\n fontWeight: 600,\n lineHeight: \"leading-snug\",\n letterSpacing: \"tracking-tight\",\n },\n \"title-large\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-lg\",\n fontWeight: 600,\n lineHeight: \"leading-snug\",\n letterSpacing: \"tracking-normal\",\n },\n \"title-medium\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-base\",\n fontWeight: 600,\n lineHeight: \"leading-normal\",\n letterSpacing: \"tracking-normal\",\n },\n \"body-large\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-base\",\n fontWeight: 400,\n lineHeight: \"leading-relaxed\",\n letterSpacing: \"tracking-normal\",\n },\n \"body-medium\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-sm\",\n fontWeight: 400,\n lineHeight: \"leading-normal\",\n letterSpacing: \"tracking-normal\",\n },\n \"label-large\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-sm\",\n fontWeight: 500,\n lineHeight: \"leading-normal\",\n letterSpacing: \"tracking-wide\",\n },\n \"label-medium\": {\n fontFamily: \"{primitives.font.sans}\",\n fontSize: \"text-xs\",\n fontWeight: 500,\n lineHeight: \"leading-normal\",\n letterSpacing: \"tracking-wide\",\n },\n },\n};\n\nexport const defaultLightTheme: Theme = {\n id: \"theme-light\",\n name: \"Light\",\n mode: \"light\",\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n primitives: lightPrimitives,\n semantics: lightSemantics,\n variants: {\n button: [\n {\n name: \"primary\",\n props: { variant: \"primary\" },\n style: {\n background: \"{primitives.color.primary}\",\n color: \"{primitives.color.text-inverse}\",\n padding: \"px-4 py-2\",\n borderRadius: \"{primitives.radius.md}\",\n fontWeight: 500,\n },\n },\n {\n name: \"secondary\",\n props: { variant: \"secondary\" },\n style: {\n background: \"transparent\",\n color: \"{primitives.color.primary}\",\n padding: \"px-4 py-2\",\n borderRadius: \"{primitives.radius.md}\",\n borderWidth: \"{primitives.border.width.thin}\",\n borderColor: \"{primitives.color.border}\",\n fontWeight: 500,\n },\n },\n {\n name: \"ghost\",\n props: { variant: \"ghost\" },\n style: {\n background: \"transparent\",\n color: \"{primitives.color.text-secondary}\",\n padding: \"px-4 py-2\",\n borderRadius: \"{primitives.radius.md}\",\n fontWeight: 500,\n },\n },\n {\n name: \"danger\",\n props: { variant: \"danger\" },\n style: {\n background: \"{primitives.color.error}\",\n color: \"{primitives.color.text-inverse}\",\n padding: \"px-4 py-2\",\n borderRadius: \"{primitives.radius.md}\",\n fontWeight: 500,\n },\n },\n ],\n card: [\n {\n name: \"elevated\",\n props: { variant: \"elevated\" },\n style: {\n background: \"{primitives.color.surface}\",\n padding: \"p-6\",\n borderRadius: \"{primitives.radius.lg}\",\n shadow: \"{primitives.shadow.md}\",\n borderWidth: \"{primitives.border.width.thin}\",\n borderColor: \"{primitives.color.border}\",\n },\n },\n {\n name: \"outlined\",\n props: { variant: \"outlined\" },\n style: {\n background: \"transparent\",\n padding: \"p-6\",\n borderRadius: \"{primitives.radius.lg}\",\n borderWidth: \"{primitives.border.width.thin}\",\n borderColor: \"{primitives.color.border}\",\n },\n },\n ],\n textfield: [\n {\n name: \"default\",\n props: { variant: \"default\" },\n style: {\n padding: \"px-3 py-2\",\n borderRadius: \"{primitives.radius.md}\",\n borderWidth: \"{primitives.border.width.thin}\",\n borderColor: \"{primitives.color.border}\",\n background: \"{primitives.color.surface}\",\n },\n },\n {\n name: \"filled\",\n props: { variant: \"filled\" },\n style: {\n padding: \"px-3 py-2\",\n borderRadius: \"{primitives.radius.md}\",\n background: \"{primitives.color.background}\",\n borderWidth: \"{primitives.border.width.0}\",\n },\n },\n ],\n badge: [\n {\n name: \"solid\",\n props: { variant: \"solid\" },\n style: {\n background: \"{primitives.color.primary}\",\n color: \"{primitives.color.text-inverse}\",\n padding: \"px-2 py-0.5\",\n borderRadius: \"{primitives.radius.full}\",\n fontSize: \"text-xs\",\n fontWeight: 500,\n },\n },\n {\n name: \"subtle\",\n props: { variant: \"subtle\" },\n style: {\n background: \"{primitives.color.accent-subtle}\",\n color: \"{primitives.color.primary}\",\n padding: \"px-2 py-0.5\",\n borderRadius: \"{primitives.radius.full}\",\n fontSize: \"text-xs\",\n fontWeight: 500,\n },\n },\n ],\n },\n};\n\nconst darkPrimitives: PrimitiveTokens = {\n ...lightPrimitives,\n color: {\n primary: \"#8B7DFA\",\n secondary: \"#5CE1D4\",\n tertiary: \"#F9CF58\",\n error: \"#FF6B73\",\n success: \"#3DB8A8\",\n warning: \"#F9CF58\",\n background: \"#0B0F14\",\n surface: \"#151B23\",\n \"surface-elevated\": \"#1C2430\",\n border: \"#2A3441\",\n \"border-hover\": \"#3A4858\",\n \"text-primary\": \"#F9FAFB\",\n \"text-secondary\": \"#A3AEB8\",\n \"text-muted\": \"#6B7885\",\n \"text-inverse\": \"#0B0F14\",\n accent: \"#8B7DFA\",\n \"accent-hover\": \"#A598FB\",\n \"accent-subtle\": \"#1E2540\",\n },\n};\n\nconst darkSemantics: SemanticTokens = {\n ...lightSemantics,\n color: {\n ...lightSemantics.color,\n \"bg-background\": \"{primitives.color.background}\",\n \"bg-surface\": \"{primitives.color.surface}\",\n \"bg-surface-elevated\": \"{primitives.color.surface-elevated}\",\n \"bg-border\": \"{primitives.color.border}\",\n \"text-primary\": \"{primitives.color.text-primary}\",\n \"text-secondary\": \"{primitives.color.text-secondary}\",\n \"text-muted\": \"{primitives.color.text-muted}\",\n \"text-inverse\": \"{primitives.color.text-inverse}\",\n \"text-on-primary\": \"{primitives.color.text-inverse}\",\n \"border-default\": \"{primitives.color.border}\",\n \"border-hover\": \"{primitives.color.border-hover}\",\n },\n};\n\nexport const defaultDarkTheme: Theme = {\n ...defaultLightTheme,\n id: \"theme-dark\",\n name: \"Dark\",\n mode: \"dark\",\n primitives: darkPrimitives,\n semantics: darkSemantics,\n};\n\nexport const defaultLightPreset: ThemePreset = {\n id: \"preset-light\",\n label: \"Light\",\n mode: \"light\",\n theme: defaultLightTheme,\n};\n\nexport const defaultDarkPreset: ThemePreset = {\n id: \"preset-dark\",\n label: \"Dark\",\n mode: \"dark\",\n theme: defaultDarkTheme,\n};\n","/*\n * Meridian as a theme.\n *\n * Documents reference colors indirectly — `{primitives.color.border}`,\n * `{primitives.color.surface}` and so on — and the theme decides what those resolve to. The\n * default light/dark themes resolve them to a generic indigo-accented palette, which is what\n * made a Meridian-shaped document still read as \"some admin panel\". This preset points the same\n * token names at the Meridian palette, so a document written once\n * renders as Meridian without changing a single node.\n *\n * Typography tokens use the same `text-*` class names as the default theme; inside a\n * `.meridian-ui` subtree those classes resolve to Meridian's 11/12/13/14/18/20/24/28px scale\n * (src/meridian-theme.css), so the scale swap needs no separate token vocabulary.\n */\n\nimport type { PrimitiveTokens, SemanticTokens, Theme, ThemePreset } from \"../types/theme\";\nimport { defaultLightTheme } from \"./presets\";\n\n/** colors.json */\nconst gray = {\n 25: \"#FBFBFB\",\n 50: \"#F8F8F8\",\n 100: \"#F3F3F3\",\n 200: \"#EDEDED\",\n 300: \"#E2E2E2\",\n 400: \"#C7C7C7\",\n 500: \"#999999\",\n 600: \"#7C7C7C\",\n 700: \"#525252\",\n 800: \"#383838\",\n 850: \"#282828\",\n 875: \"#212121\",\n 890: \"#1C1C1C\",\n 900: \"#171717\",\n} as const;\n\nconst meridianLightPrimitives: PrimitiveTokens = {\n ...defaultLightTheme.primitives,\n color: {\n // Meridian's \"primary\" is its near-black button fill (Button: `bg-black`), not a hue.\n primary: \"#1E293B\",\n secondary: gray[200],\n tertiary: \"#EDBA13\",\n error: \"#E03636\",\n success: \"#30A66D\",\n warning: \"#EDBA13\",\n // Desk sits on white; the sidebar and form gutters are the gray-25/gray-50 steps.\n background: \"#FFFFFF\",\n surface: gray[25],\n \"surface-elevated\": \"#FFFFFF\",\n border: gray[200],\n \"border-hover\": gray[300],\n \"text-primary\": \"#1E293B\",\n \"text-secondary\": gray[600],\n \"text-muted\": gray[500],\n \"text-inverse\": \"#FFFFFF\",\n accent: \"#33A1FF\",\n \"accent-hover\": \"#007BE0\",\n \"accent-subtle\": \"#EDF6FD\",\n },\n radius: {\n none: \"0px\",\n sm: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n full: \"9999px\",\n },\n shadow: {\n none: \"none\",\n sm: \"0 0.5px 0 0 rgba(0, 0, 0, 0.08)\",\n md: \"0 2px 4px 0 rgba(0, 0, 0, 0.05)\",\n lg: \"0 0 2px 0 rgba(0, 0, 0, 0.10), 0 2px 4px 0 rgba(0, 0, 0, 0.08)\",\n xl: \"0 0 2px 0 rgba(0, 0, 0, 0.10), 0 4px 8px 0 rgba(0, 0, 0, 0.10)\",\n },\n font: {\n ...defaultLightTheme.primitives.font,\n sans: 'Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif',\n },\n};\n\nconst meridianDarkPrimitives: PrimitiveTokens = {\n ...meridianLightPrimitives,\n color: {\n ...meridianLightPrimitives.color,\n primary: gray[300],\n secondary: gray[900],\n background: gray[875],\n surface: gray[900],\n \"surface-elevated\": gray[890],\n border: gray[800],\n \"border-hover\": gray[700],\n \"text-primary\": gray[25],\n \"text-secondary\": gray[400],\n \"text-muted\": gray[500],\n \"text-inverse\": gray[900],\n accent: \"#007BE0\",\n \"accent-hover\": \"#33A1FF\",\n \"accent-subtle\": \"#004880\",\n },\n};\n\n/** Same mapping as the default theme — only the primitives underneath differ. */\nconst meridianSemantics: SemanticTokens = defaultLightTheme.semantics;\n\nexport const meridianLightTheme: Theme = {\n ...defaultLightTheme,\n id: \"theme-meridian-light\",\n name: \"Meridian Light\",\n mode: \"light\",\n primitives: meridianLightPrimitives,\n semantics: meridianSemantics,\n variants: {\n ...defaultLightTheme.variants,\n // Meridian has exactly two button treatments (Button): a near-black primary and a\n // gray-200 secondary, both `h-8 rounded-md text-sm` with `px-6`/`px-3` padding.\n button: [\n {\n name: \"primary\",\n props: { variant: \"primary\" },\n style: { padding: \"px-6\", borderRadius: \"{primitives.radius.md}\", fontSize: \"text-sm\" },\n },\n {\n name: \"secondary\",\n props: { variant: \"secondary\" },\n style: { padding: \"px-6\", borderRadius: \"{primitives.radius.md}\", fontSize: \"text-sm\" },\n },\n {\n name: \"icon\",\n props: { variant: \"secondary\", icon: true },\n style: { padding: \"px-3\", borderRadius: \"{primitives.radius.md}\", fontSize: \"text-sm\" },\n },\n ],\n },\n};\n\nexport const meridianDarkTheme: Theme = {\n ...meridianLightTheme,\n id: \"theme-meridian-dark\",\n name: \"Meridian Dark\",\n mode: \"dark\",\n primitives: meridianDarkPrimitives,\n};\n\nexport const meridianLightPreset: ThemePreset = {\n id: \"preset-meridian-light\",\n label: \"Meridian Light\",\n mode: \"light\",\n theme: meridianLightTheme,\n};\n\nexport const meridianDarkPreset: ThemePreset = {\n id: \"preset-meridian-dark\",\n label: \"Meridian Dark\",\n mode: \"dark\",\n theme: meridianDarkTheme,\n};\n","import type { Theme, ThemePreset } from \"../types/theme\";\n\nexport function serializeTheme(theme: Theme): string {\n return JSON.stringify(theme, null, 2);\n}\n\nexport function serializeThemePreset(preset: ThemePreset): string {\n return JSON.stringify(preset, null, 2);\n}\n\nexport function deserializeTheme(json: string): Theme {\n const parsed = JSON.parse(json);\n return parsed as Theme;\n}\n\nexport function deserializeThemePreset(json: string): ThemePreset {\n const parsed = JSON.parse(json);\n return parsed as ThemePreset;\n}\n","import type { Theme } from \"../types/theme\";\n\nexport interface ResponsiveValidationError {\n path: string;\n message: string;\n}\n\nexport function validateResponsiveValue(\n value: unknown,\n theme: Theme,\n): ResponsiveValidationError[] {\n const errors: ResponsiveValidationError[] = [];\n\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return errors;\n }\n\n const record = value as Record<string, unknown>;\n\n for (const [key, val] of Object.entries(record)) {\n if (key === \"base\") continue;\n\n if (!theme.breakpoints[key]) {\n errors.push({\n path: key,\n message: `Unknown breakpoint \"${key}\". Expected one of: ${Object.keys(theme.breakpoints).join(\", \")}`,\n });\n }\n\n if (val === undefined || val === null) {\n errors.push({\n path: key,\n message: `Responsive value at \"${key}\" is null or undefined`,\n });\n }\n }\n\n return errors;\n}\n\nexport function validateResponsiveStyle(\n style: Record<string, unknown>,\n theme: Theme,\n): ResponsiveValidationError[] {\n const errors: ResponsiveValidationError[] = [];\n\n for (const [key, value] of Object.entries(style)) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) continue;\n\n const responsiveErrors = validateResponsiveValue(value, theme);\n for (const error of responsiveErrors) {\n errors.push({\n path: `${key}.${error.path}`,\n message: error.message,\n });\n }\n }\n\n return errors;\n}\n","import { DataError } from \"../errors\";\nimport type { DataAdapter, Mutation, Query, QueryFilter, QueryResult, RecordMeta } from \"../types\";\n\ninterface StoredRecord {\n data: Record<string, unknown>;\n version: number;\n}\n\nexport interface InMemoryAdapterOptions {\n /** Initial collections, e.g. `{ SalesInvoice: [...] }`. Copied on construction — the caller's\n * array is never mutated. */\n seed?: Record<string, Array<Record<string, unknown>>>;\n /** `\"localStorage\"` persists every mutation and reloads it on construction; `\"none\"` (default\n * in tests) keeps everything in memory only. */\n persist?: \"localStorage\" | \"none\";\n /** Key the store is saved under when `persist: \"localStorage\"`. */\n storageKey?: string;\n /** Artificial delay applied to every call, so loading/skeleton states are actually exercised\n * in mock mode instead of resolving instantly. Default 0. */\n latencyMs?: number;\n /** Fraction (0–1) of calls that fail with a synthetic `DataError(\"server\")`, so error states\n * are exercised in mock mode too. Default 0. */\n failureRate?: number;\n /** Injectable clock/random for deterministic tests. */\n now?: () => number;\n random?: () => number;\n}\n\nfunction matchesFilter(record: Record<string, unknown>, filter: QueryFilter): boolean {\n if (filter.value === undefined || filter.value === null || filter.value === \"\") return true;\n const value = record[filter.field];\n switch (filter.op) {\n case \"eq\":\n return value === filter.value;\n case \"ne\":\n return value !== filter.value;\n case \"in\":\n return Array.isArray(filter.value) && filter.value.includes(value);\n case \"gt\":\n return typeof value === \"number\" && typeof filter.value === \"number\" && value > filter.value;\n case \"gte\":\n return typeof value === \"number\" && typeof filter.value === \"number\" && value >= filter.value;\n case \"lt\":\n return typeof value === \"number\" && typeof filter.value === \"number\" && value < filter.value;\n case \"lte\":\n return typeof value === \"number\" && typeof filter.value === \"number\" && value <= filter.value;\n case \"like\":\n return typeof value === \"string\" && typeof filter.value === \"string\" && value.toLowerCase().includes(filter.value.toLowerCase());\n case \"between\": {\n if (!Array.isArray(filter.value) || filter.value.length !== 2) return false;\n const [lo, hi] = filter.value as [unknown, unknown];\n if (typeof value === \"number\" && typeof lo === \"number\" && typeof hi === \"number\") return value >= lo && value <= hi;\n if (typeof value === \"string\" && typeof lo === \"string\" && typeof hi === \"string\") return value >= lo && value <= hi;\n return false;\n }\n default:\n return true;\n }\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n if (a === b) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n return String(a) < String(b) ? -1 : 1;\n}\n\n/** In-memory `DataAdapter`. Default for demos and tests; every failure it raises is a real\n * `DataError` with the same `.code` an `HttpAdapter` would raise for the same situation — see\n * `src/data/__tests__/contract.test.ts` for the shared case matrix that keeps the two honest. */\nexport class InMemoryAdapter implements DataAdapter {\n private stores = new Map<string, StoredRecord[]>();\n private readonly persist: \"localStorage\" | \"none\";\n private readonly storageKey: string;\n private readonly latencyMs: number;\n private readonly failureRate: number;\n private readonly now: () => number;\n private readonly random: () => number;\n\n constructor(options: InMemoryAdapterOptions = {}) {\n this.persist = options.persist ?? \"none\";\n this.storageKey = options.storageKey ?? \"uidl-runtime-data-adapter\";\n this.latencyMs = options.latencyMs ?? 0;\n this.failureRate = options.failureRate ?? 0;\n this.now = options.now ?? (() => Date.now());\n this.random = options.random ?? (() => Math.random());\n\n const loaded = this.persist === \"localStorage\" ? this.loadFromStorage() : undefined;\n if (loaded) {\n for (const [collection, records] of Object.entries(loaded)) this.stores.set(collection, records);\n } else if (options.seed) {\n for (const [collection, rows] of Object.entries(options.seed)) {\n this.stores.set(\n collection,\n rows.map((data) => ({ data: { ...data }, version: 1 })),\n );\n }\n this.saveToStorage();\n }\n }\n\n private async simulate(signal?: AbortSignal): Promise<void> {\n if (signal?.aborted) throw new DOMException(\"Aborted\", \"AbortError\");\n if (this.latencyMs > 0) {\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(resolve, this.latencyMs);\n signal?.addEventListener(\n \"abort\",\n () => {\n clearTimeout(timer);\n reject(new DOMException(\"Aborted\", \"AbortError\"));\n },\n { once: true },\n );\n });\n }\n if (signal?.aborted) throw new DOMException(\"Aborted\", \"AbortError\");\n if (this.failureRate > 0 && this.random() < this.failureRate) {\n throw new DataError(\"Simulated failure (failureRate)\", \"server\");\n }\n }\n\n private collection(name: string): StoredRecord[] {\n return this.stores.get(name) ?? [];\n }\n\n async query<T = Record<string, unknown>>(query: Query, signal?: AbortSignal): Promise<QueryResult<T>> {\n await this.simulate(signal);\n\n let rows = this.collection(query.collection).map((r) => r.data);\n\n for (const filter of query.filters ?? []) rows = rows.filter((r) => matchesFilter(r, filter));\n\n if (query.search) {\n const q = query.search.toLowerCase();\n rows = rows.filter((r) => Object.values(r).some((v) => typeof v === \"string\" && v.toLowerCase().includes(q)));\n }\n\n for (const sort of [...(query.sort ?? [])].reverse()) {\n const dir = sort.dir === \"desc\" ? -1 : 1;\n rows = [...rows].sort((a, b) => dir * compareValues(a[sort.field], b[sort.field]));\n }\n\n const total = rows.length;\n const pageNumber = query.page?.number ?? 1;\n const pageSize = query.page?.size ?? (total || 1);\n if (query.page) {\n const start = (pageNumber - 1) * pageSize;\n rows = rows.slice(start, start + pageSize);\n }\n\n if (query.fields && query.fields.length > 0) {\n const fields = query.fields;\n rows = rows.map((r) => Object.fromEntries(fields.map((f) => [f, r[f]])));\n }\n\n return { rows: rows as T[], total, page: pageNumber, pageSize };\n }\n\n async get<T = Record<string, unknown>>(\n collection: string,\n id: string,\n signal?: AbortSignal,\n ): Promise<{ record: T; meta: RecordMeta } | undefined> {\n await this.simulate(signal);\n const found = this.collection(collection).find((r) => r.data.id === id);\n if (!found) return undefined;\n return { record: { ...found.data } as T, meta: { version: found.version } };\n }\n\n async create<T = Record<string, unknown>>(mutation: Mutation, signal?: AbortSignal): Promise<{ record: T; meta: RecordMeta }> {\n await this.simulate(signal);\n const list = this.stores.get(mutation.collection) ?? [];\n const id = (mutation.data?.id as string | undefined) ?? this.generateId(mutation.collection);\n if (list.some((r) => r.data.id === id)) {\n throw new DataError(`Record \"${id}\" already exists in \"${mutation.collection}\"`, \"conflict\");\n }\n const record: StoredRecord = { data: { ...mutation.data, id }, version: 1 };\n list.push(record);\n this.stores.set(mutation.collection, list);\n this.saveToStorage();\n return { record: { ...record.data } as T, meta: { version: record.version } };\n }\n\n async update<T = Record<string, unknown>>(mutation: Mutation, signal?: AbortSignal): Promise<{ record: T; meta: RecordMeta }> {\n await this.simulate(signal);\n if (!mutation.id) throw new DataError(\"update requires an id\", \"validation\");\n const list = this.stores.get(mutation.collection) ?? [];\n const index = list.findIndex((r) => r.data.id === mutation.id);\n if (index === -1) throw new DataError(`Record \"${mutation.id}\" not found in \"${mutation.collection}\"`, \"not_found\");\n const existing = list[index];\n if (mutation.version !== undefined && mutation.version !== existing.version) {\n throw new DataError(`Record \"${mutation.id}\" has changed since it was read`, \"conflict\");\n }\n const updated: StoredRecord = { data: { ...existing.data, ...mutation.data }, version: existing.version + 1 };\n list[index] = updated;\n this.stores.set(mutation.collection, list);\n this.saveToStorage();\n return { record: { ...updated.data } as T, meta: { version: updated.version } };\n }\n\n async remove(collection: string, id: string, signal?: AbortSignal): Promise<void> {\n await this.simulate(signal);\n const list = this.stores.get(collection) ?? [];\n const filtered = list.filter((r) => r.data.id !== id);\n if (filtered.length === list.length) throw new DataError(`Record \"${id}\" not found in \"${collection}\"`, \"not_found\");\n this.stores.set(collection, filtered);\n this.saveToStorage();\n }\n\n async transition<T = Record<string, unknown>>(\n mutation: Mutation & { transition: string },\n signal?: AbortSignal,\n ): Promise<{ record: T; meta: RecordMeta }> {\n // The in-memory adapter has no state-machine knowledge of its own — that lives in the\n // demo-layer `documentService` (see `.notes/plan/01-arsitektur-target.md` §7), which calls\n // `update()` with the resulting status after validating the transition. This method exists\n // on the adapter purely so `HttpAdapter` and `InMemoryAdapter` expose the same surface for a\n // host that wants to call a transition endpoint directly.\n return this.update<T>({ ...mutation, data: { ...mutation.data, status: mutation.transition } }, signal);\n }\n\n async report<T = unknown>(_name: string, _params: Record<string, unknown>, signal?: AbortSignal): Promise<T> {\n await this.simulate(signal);\n throw new DataError(\"InMemoryAdapter.report has no registered reports — pass a reportRunner\", \"not_found\");\n }\n\n /** Test/demo-only escape hatch: reseed everything from scratch. Not part of `DataAdapter`. */\n reset(seed?: Record<string, Array<Record<string, unknown>>>): void {\n this.stores.clear();\n if (seed) {\n for (const [collection, rows] of Object.entries(seed)) {\n this.stores.set(\n collection,\n rows.map((data) => ({ data: { ...data }, version: 1 })),\n );\n }\n }\n this.saveToStorage();\n }\n\n private generateId(collection: string): string {\n const prefix = collection.slice(0, 3).toUpperCase();\n return `${prefix}-${this.now().toString(36)}-${Math.floor(this.random() * 1e6).toString(36)}`;\n }\n\n private saveToStorage(): void {\n if (this.persist !== \"localStorage\" || typeof window === \"undefined\") return;\n try {\n const obj: Record<string, StoredRecord[]> = {};\n for (const [k, v] of this.stores.entries()) obj[k] = v;\n window.localStorage.setItem(this.storageKey, JSON.stringify(obj));\n } catch {\n /* storage may be quota exceeded or unavailable */\n }\n }\n\n private loadFromStorage(): Record<string, StoredRecord[]> | undefined {\n if (typeof window === \"undefined\") return undefined;\n try {\n const raw = window.localStorage.getItem(this.storageKey);\n if (!raw) return undefined;\n const parsed = JSON.parse(raw) as Record<string, StoredRecord[]>;\n return parsed;\n } catch {\n return undefined;\n }\n }\n}\n\nexport function createInMemoryAdapter(options?: InMemoryAdapterOptions): InMemoryAdapter {\n return new InMemoryAdapter(options);\n}\n","import { DataError } from \"../errors\";\nimport type { DataAdapter, Mutation, Query, QueryResult, RecordMeta } from \"../types\";\n\nexport interface HttpAdapterOptions {\n baseUrl: string;\n fetchImpl?: typeof fetch;\n headers?: HeadersInit;\n timeoutMs?: number;\n}\n\ninterface ErrorResponse {\n error?: {\n code?: string;\n message?: string;\n fields?: Record<string, string>;\n };\n}\n\nconst STATUS_TO_CODE: Record<number, DataError[\"code\"]> = {\n 400: \"validation\",\n 403: \"forbidden\",\n 404: \"not_found\",\n 409: \"conflict\",\n 408: \"timeout\",\n};\n\nexport class HttpAdapter implements DataAdapter {\n private readonly baseUrl: string;\n private readonly fetchImpl: typeof fetch;\n private readonly headers?: HeadersInit;\n private readonly timeoutMs: number;\n\n constructor(options: HttpAdapterOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/+$/, \"\");\n // Native fetch throws \"Illegal invocation\" in browsers if called detached from its\n // required WindowOrWorkerGlobalScope receiver, so bind rather than reference it bare.\n this.fetchImpl = options.fetchImpl ?? fetch.bind(globalThis);\n this.headers = options.headers;\n this.timeoutMs = options.timeoutMs ?? 15000;\n }\n\n async query<T = Record<string, unknown>>(query: Query, signal?: AbortSignal): Promise<QueryResult<T>> {\n return this.request<QueryResult<T>>(\"/query\", { method: \"POST\", body: query }, signal);\n }\n\n async get<T = Record<string, unknown>>(\n collection: string,\n id: string,\n signal?: AbortSignal,\n ): Promise<{ record: T; meta: RecordMeta } | undefined> {\n return this.request<{ record: T; meta: RecordMeta } | undefined>(\n `/records/${encodeURIComponent(collection)}/${encodeURIComponent(id)}`,\n { method: \"GET\", allowNotFound: true },\n signal,\n );\n }\n\n async create<T = Record<string, unknown>>(mutation: Mutation, signal?: AbortSignal): Promise<{ record: T; meta: RecordMeta }> {\n return this.request<{ record: T; meta: RecordMeta }>(\n `/records/${encodeURIComponent(mutation.collection)}`,\n { method: \"POST\", body: mutation },\n signal,\n );\n }\n\n async update<T = Record<string, unknown>>(mutation: Mutation, signal?: AbortSignal): Promise<{ record: T; meta: RecordMeta }> {\n if (!mutation.id) throw new DataError(\"update requires an id\", \"validation\");\n return this.request<{ record: T; meta: RecordMeta }>(\n `/records/${encodeURIComponent(mutation.collection)}/${encodeURIComponent(mutation.id)}`,\n { method: \"PATCH\", body: mutation },\n signal,\n );\n }\n\n async remove(collection: string, id: string, signal?: AbortSignal): Promise<void> {\n await this.request<void>(`/records/${encodeURIComponent(collection)}/${encodeURIComponent(id)}`, { method: \"DELETE\" }, signal);\n }\n\n async transition<T = Record<string, unknown>>(\n mutation: Mutation & { transition: string },\n signal?: AbortSignal,\n ): Promise<{ record: T; meta: RecordMeta }> {\n if (!mutation.id) throw new DataError(\"transition requires an id\", \"validation\");\n return this.request<{ record: T; meta: RecordMeta }>(\n `/records/${encodeURIComponent(mutation.collection)}/${encodeURIComponent(mutation.id)}/transition`,\n { method: \"POST\", body: mutation },\n signal,\n );\n }\n\n async report<T = unknown>(name: string, params: Record<string, unknown>, signal?: AbortSignal): Promise<T> {\n return this.request<T>(`/reports/${encodeURIComponent(name)}`, { method: \"POST\", body: { params } }, signal);\n }\n\n private async request<T>(\n path: string,\n options: { method: string; body?: unknown; allowNotFound?: boolean },\n signal?: AbortSignal,\n ): Promise<T> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n const abortFromCaller = () => controller.abort();\n signal?.addEventListener(\"abort\", abortFromCaller, { once: true });\n\n try {\n const response = await this.fetchImpl(`${this.baseUrl}${path}`, {\n method: options.method,\n headers: {\n Accept: \"application/json\",\n ...(options.body === undefined ? {} : { \"Content-Type\": \"application/json\" }),\n ...this.headers,\n },\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n signal: controller.signal,\n });\n\n if (options.allowNotFound && response.status === 404) return undefined as T;\n if (!response.ok) throw await toDataError(response);\n if (response.status === 204) return undefined as T;\n return (await response.json()) as T;\n } catch (error) {\n if (error instanceof DataError) throw error;\n if (error instanceof DOMException && error.name === \"AbortError\") {\n throw new DataError(\"HTTP request timed out or was aborted\", signal?.aborted ? \"network\" : \"timeout\");\n }\n throw new DataError(error instanceof Error ? error.message : \"HTTP request failed\", \"network\");\n } finally {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", abortFromCaller);\n }\n }\n}\n\nasync function toDataError(response: Response): Promise<DataError> {\n let parsed: ErrorResponse | undefined;\n try {\n parsed = (await response.json()) as ErrorResponse;\n } catch {\n parsed = undefined;\n }\n const code = STATUS_TO_CODE[response.status] ?? (response.status >= 500 ? \"server\" : \"validation\");\n return new DataError(parsed?.error?.message ?? `HTTP ${response.status}`, parsed?.error?.code === code ? code : code, parsed?.error?.fields);\n}\n\nexport function createHttpAdapter(options: HttpAdapterOptions): HttpAdapter {\n return new HttpAdapter(options);\n}\n","import type { UIDLNode } from \"../types\";\nimport { evaluate, type RenderScope } from \"../expr/evaluate\";\n\nexport function buildFlatNodeMap(root: UIDLNode): Map<string, UIDLNode> {\n const map = new Map<string, UIDLNode>();\n\n function traverse(node: UIDLNode): void {\n map.set(node.id, node);\n\n for (const child of node.children ?? []) {\n traverse(child);\n }\n\n for (const slotNodes of Object.values(node.slots ?? {})) {\n for (const slotNode of slotNodes) {\n traverse(slotNode);\n }\n }\n }\n\n traverse(root);\n return map;\n}\n\nexport function buildNestedTree(flatMap: Map<string, UIDLNode>, rootId: string): UIDLNode {\n const root = flatMap.get(rootId);\n if (!root) {\n throw new Error(`Root node ${rootId} not found in flat map`);\n }\n\n return {\n ...root,\n children: (root.children ?? []).map((child) => buildNestedTree(flatMap, child.id)),\n slots: root.slots\n ? Object.fromEntries(\n Object.entries(root.slots).map(([slotName, slotNodes]) => [\n slotName,\n slotNodes.map((slotNode) => buildNestedTree(flatMap, slotNode.id)),\n ]),\n )\n : undefined,\n };\n}\n\nexport function findNodeById(flatMap: Map<string, UIDLNode>, nodeId: string): UIDLNode | undefined {\n return flatMap.get(nodeId);\n}\n\nexport function findParentId(flatMap: Map<string, UIDLNode>, nodeId: string): string | undefined {\n for (const [id, node] of flatMap.entries()) {\n if ((node.children ?? []).some((child) => child.id === nodeId)) {\n return id;\n }\n if (node.slots) {\n for (const slotNodes of Object.values(node.slots)) {\n if (slotNodes.some((child) => child.id === nodeId)) {\n return id;\n }\n }\n }\n }\n return undefined;\n}\n\nexport function removeChildFromNode(parent: UIDLNode, nodeId: string): UIDLNode {\n if (parent.children?.some((child) => child.id === nodeId)) {\n return {\n ...parent,\n children: parent.children.filter((child) => child.id !== nodeId),\n };\n }\n\n if (parent.slots) {\n for (const [slotName, slotNodes] of Object.entries(parent.slots)) {\n if (slotNodes.some((child) => child.id === nodeId)) {\n return {\n ...parent,\n slots: {\n ...parent.slots,\n [slotName]: slotNodes.filter((child) => child.id !== nodeId),\n },\n };\n }\n }\n }\n\n return parent;\n}\n\nexport function findNodePath(flatMap: Map<string, UIDLNode>, nodeId: string): string[] {\n const path: string[] = [];\n let currentId: string | undefined = nodeId;\n\n while (currentId) {\n path.unshift(currentId);\n const parentId = findParentId(flatMap, currentId);\n currentId = parentId;\n }\n\n return path;\n}\n\nexport function getNodeDepth(flatMap: Map<string, UIDLNode>, nodeId: string): number {\n return findNodePath(flatMap, nodeId).length - 1;\n}\n\nexport function isNodeVisible(node: UIDLNode, scope?: RenderScope): boolean {\n if (!node.visibility) return true;\n const condition = node.visibility.condition;\n if (!condition) return true;\n const result = evaluate(condition, scope ?? {});\n return Boolean(result);\n}\n","import { create } from \"zustand\";\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport { buildFlatNodeMap, findParentId, removeChildFromNode } from \"./document\";\n\nexport interface EditorStore {\n document: UIDLDocument;\n flatNodeMap: Map<string, UIDLNode>;\n history: { past: UIDLDocument[]; future: UIDLDocument[] };\n selectedNodeId: string | null;\n hoveredNodeId: string | null;\n activeBreakpoint: string;\n themeMode: \"light\" | \"dark\";\n panelVisibility: {\n palette: boolean;\n layers: boolean;\n properties: boolean;\n style: boolean;\n };\n validationErrors: Array<{ path: string; message: string; severity: \"error\" | \"warning\" }>;\n isDirty: boolean;\n canUndo: boolean;\n canRedo: boolean;\n\n selectNode: (nodeId: string | null) => void;\n hoverNode: (nodeId: string | null) => void;\n updateNode: (nodeId: string, changes: Partial<UIDLNode>) => void;\n addChild: (parentId: string, childType: string, index?: number) => void;\n deleteNode: (nodeId: string) => void;\n moveNode: (nodeId: string, targetParentId: string, index?: number) => void;\n setBreakpoint: (breakpoint: string) => void;\n setThemeMode: (mode: \"light\" | \"dark\") => void;\n togglePanel: (panel: keyof EditorStore[\"panelVisibility\"]) => void;\n setDocument: (document: UIDLDocument) => void;\n setValidationErrors: (errors: Array<{ path: string; message: string; severity: \"error\" | \"warning\" }>) => void;\n markClean: () => void;\n undo: () => void;\n redo: () => void;\n}\n\nexport function createEditorStore(initialDocument?: UIDLDocument) {\n const initialFlatNodeMap = initialDocument ? buildFlatNodeMap(initialDocument.root) : new Map();\n\n return create<EditorStore>()((set, get) => ({\n document: initialDocument ?? createEmptyDocument(),\n flatNodeMap: initialFlatNodeMap,\n history: { past: [], future: [] },\n selectedNodeId: null,\n hoveredNodeId: null,\n activeBreakpoint: \"base\",\n themeMode: \"light\",\n panelVisibility: {\n palette: true,\n layers: true,\n properties: true,\n style: true,\n },\n validationErrors: [],\n isDirty: false,\n canUndo: false,\n canRedo: false,\n\n selectNode: (nodeId) => set({ selectedNodeId: nodeId }),\n\n hoverNode: (nodeId) => set({ hoveredNodeId: nodeId }),\n\n updateNode: (nodeId, changes) => {\n const { flatNodeMap, document, history } = get();\n const node = flatNodeMap.get(nodeId);\n if (!node) return;\n\n const updatedNode = { ...node, ...changes };\n const newFlatNodeMap = new Map(flatNodeMap);\n newFlatNodeMap.set(nodeId, updatedNode);\n\n const newRoot = updateNodeInTree(document.root, nodeId, updatedNode);\n const newDocument = { ...document, root: newRoot };\n\n set({\n document: newDocument,\n flatNodeMap: newFlatNodeMap,\n history: { past: [...history.past, document], future: [] },\n isDirty: true,\n canUndo: true,\n canRedo: false,\n });\n },\n\n addChild: (parentId, childType, _index) => {\n const { flatNodeMap, document, history } = get();\n const parent = flatNodeMap.get(parentId);\n if (!parent) return;\n\n const newChild: UIDLNode = {\n id: `node-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n type: childType,\n props: {},\n style: {},\n children: [],\n };\n\n const newFlatNodeMap = new Map(flatNodeMap);\n newFlatNodeMap.set(newChild.id, newChild);\n\n const updatedParent = {\n ...parent,\n children: [...(parent.children ?? []), newChild],\n };\n newFlatNodeMap.set(parentId, updatedParent);\n\n const newRoot = updateNodeInTree(document.root, parentId, updatedParent);\n const newDocument = { ...document, root: newRoot };\n\n set({\n document: newDocument,\n flatNodeMap: newFlatNodeMap,\n selectedNodeId: newChild.id,\n history: { past: [...history.past, document], future: [] },\n isDirty: true,\n canUndo: true,\n canRedo: false,\n });\n },\n\n deleteNode: (nodeId) => {\n const { flatNodeMap, document, selectedNodeId, history } = get();\n if (nodeId === document.root.id) return;\n\n const parentId = findParentId(flatNodeMap, nodeId);\n if (!parentId) return;\n\n const parent = flatNodeMap.get(parentId);\n if (!parent) return;\n\n const newFlatNodeMap = new Map(flatNodeMap);\n newFlatNodeMap.delete(nodeId);\n\n const updatedParent = removeChildFromNode(parent, nodeId);\n newFlatNodeMap.set(parentId, updatedParent);\n\n const newRoot = updateNodeInTree(document.root, parentId, updatedParent);\n const newDocument = { ...document, root: newRoot };\n\n set({\n document: newDocument,\n flatNodeMap: newFlatNodeMap,\n selectedNodeId: selectedNodeId === nodeId ? parentId : selectedNodeId,\n history: { past: [...history.past, document], future: [] },\n isDirty: true,\n canUndo: true,\n canRedo: false,\n });\n },\n\n moveNode: (nodeId, targetParentId, _index) => {\n const { flatNodeMap, document, history } = get();\n const node = flatNodeMap.get(nodeId);\n if (!node) return;\n\n const currentParentId = findParentId(flatNodeMap, nodeId);\n if (!currentParentId) return;\n\n const currentParent = flatNodeMap.get(currentParentId);\n const targetParent = flatNodeMap.get(targetParentId);\n if (!currentParent || !targetParent) return;\n\n const newFlatNodeMap = new Map(flatNodeMap);\n\n const updatedCurrentParent = removeChildFromNode(currentParent, nodeId);\n newFlatNodeMap.set(currentParentId, updatedCurrentParent);\n\n const effectiveTargetParent = currentParentId === targetParentId ? updatedCurrentParent : targetParent;\n const targetChildren = [...(effectiveTargetParent.children ?? [])];\n const insertIndex = _index ?? targetChildren.length;\n targetChildren.splice(insertIndex, 0, node);\n const updatedTargetParent = {\n ...effectiveTargetParent,\n children: targetChildren,\n };\n newFlatNodeMap.set(targetParentId, updatedTargetParent);\n\n const newRoot = rebuildTreeFromFlatMap(newFlatNodeMap, document.root.id);\n const newDocument = { ...document, root: newRoot };\n\n set({\n document: newDocument,\n flatNodeMap: newFlatNodeMap,\n history: { past: [...history.past, document], future: [] },\n isDirty: true,\n canUndo: true,\n canRedo: false,\n });\n },\n\n setBreakpoint: (breakpoint) => set({ activeBreakpoint: breakpoint }),\n\n setThemeMode: (mode) => set({ themeMode: mode }),\n\n togglePanel: (panel) =>\n set((state) => ({\n panelVisibility: {\n ...state.panelVisibility,\n [panel]: !state.panelVisibility[panel],\n },\n })),\n\n setDocument: (document) => {\n const flatNodeMap = buildFlatNodeMap(document.root);\n set({\n document,\n flatNodeMap,\n history: { past: [], future: [] },\n isDirty: false,\n selectedNodeId: null,\n canUndo: false,\n canRedo: false,\n });\n },\n\n setValidationErrors: (errors) => set({ validationErrors: errors }),\n\n markClean: () => set({ isDirty: false }),\n\n undo: () => {\n const { history, document } = get();\n const previous = history.past[history.past.length - 1];\n if (!previous) return;\n\n const newPast = history.past.slice(0, -1);\n const newFlatNodeMap = buildFlatNodeMap(previous.root);\n\n set({\n document: previous,\n flatNodeMap: newFlatNodeMap,\n history: { past: newPast, future: [document, ...history.future] },\n selectedNodeId: null,\n isDirty: true,\n canUndo: newPast.length > 0,\n canRedo: true,\n });\n },\n\n redo: () => {\n const { history, document } = get();\n const [next, ...restFuture] = history.future;\n if (!next) return;\n\n const newFlatNodeMap = buildFlatNodeMap(next.root);\n\n set({\n document: next,\n flatNodeMap: newFlatNodeMap,\n history: { past: [...history.past, document], future: restFuture },\n selectedNodeId: null,\n isDirty: true,\n canUndo: true,\n canRedo: restFuture.length > 0,\n });\n },\n }));\n}\n\nfunction createEmptyDocument(): UIDLDocument {\n return {\n version: \"1.0.0\",\n id: \"empty-document\",\n name: \"Untitled\",\n root: {\n id: \"root\",\n type: \"Container\",\n props: {},\n style: {},\n children: [],\n },\n };\n}\n\nfunction updateNodeInTree(node: UIDLNode, targetId: string, updatedNode: UIDLNode): UIDLNode {\n if (node.id === targetId) {\n return updatedNode;\n }\n\n return {\n ...node,\n children: node.children?.map((child) => updateNodeInTree(child, targetId, updatedNode)),\n slots: node.slots\n ? Object.fromEntries(\n Object.entries(node.slots).map(([slotName, slotNodes]) => [\n slotName,\n slotNodes.map((slotNode) => updateNodeInTree(slotNode, targetId, updatedNode)),\n ]),\n )\n : undefined,\n };\n}\n\nfunction rebuildTreeFromFlatMap(flatNodeMap: Map<string, UIDLNode>, rootId: string): UIDLNode {\n const root = flatNodeMap.get(rootId);\n if (!root) throw new Error(`Root node ${rootId} not found`);\n\n return {\n ...root,\n children: (root.children ?? []).map((child) => rebuildTreeFromFlatMap(flatNodeMap, child.id)),\n slots: root.slots\n ? Object.fromEntries(\n Object.entries(root.slots).map(([slotName, slotNodes]) => [\n slotName,\n slotNodes.map((slotNode) => rebuildTreeFromFlatMap(flatNodeMap, slotNode.id)),\n ]),\n )\n : undefined,\n };\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport type { UIDLDocument } from \"../types\";\nimport { UIDocumentRenderer } from \"../renderer/UIDocumentRenderer\";\nimport type { ApiAllowlist } from \"../actions/interpreter\";\nimport { defaultLightTheme, defaultDarkTheme } from \"../theme/presets\";\nimport type { DocumentStateStore } from \"../state/createDocumentState\";\nimport type { CommandHandler, MutationHandler } from \"../types/actions\";\n\nexport interface CanvasProps {\n document: UIDLDocument;\n selectedNodeId: string | null;\n hoveredNodeId: string | null;\n onSelectNode: (nodeId: string | null) => void;\n onHoverNode: (nodeId: string | null) => void;\n themeMode?: \"light\" | \"dark\";\n stateStore?: DocumentStateStore;\n dataSources?: Record<string, unknown>;\n mutationHandler?: MutationHandler;\n commandHandler?: CommandHandler;\n apiAllowlist?: ApiAllowlist;\n apiMaxResponseBytes?: number;\n apiMaxConcurrentCalls?: number;\n className?: string;\n}\n\ninterface RenderErrorBoundaryProps {\n children: React.ReactNode;\n}\n\ninterface RenderErrorBoundaryState {\n error: Error | null;\n}\n\n// A plain try/catch around a function call (the old approach) can't catch errors thrown while\n// rendering a React component — only an error boundary can. Needed now that the document is\n// rendered by <UIDocumentRenderer /> (a real component, for dialog/snackbar support) instead of\n// a single renderUIDocument() call inside useMemo.\nclass RenderErrorBoundary extends React.Component<RenderErrorBoundaryProps, RenderErrorBoundaryState> {\n state: RenderErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): RenderErrorBoundaryState {\n return { error };\n }\n\n componentDidCatch(error: Error) {\n console.error(\"Failed to render document:\", error);\n }\n\n render() {\n if (this.state.error) {\n return (\n <div className=\"p-4 text-red-500\">\n Failed to render document: {this.state.error.message}\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\nexport function Canvas({\n document,\n onSelectNode,\n onHoverNode,\n themeMode = \"light\",\n stateStore,\n dataSources,\n mutationHandler,\n commandHandler,\n apiAllowlist,\n apiMaxResponseBytes,\n apiMaxConcurrentCalls,\n className,\n}: CanvasProps) {\n const theme = useMemo(() => {\n if (themeMode === \"dark\") {\n return defaultDarkTheme;\n }\n return defaultLightTheme;\n }, [themeMode]);\n\n const handleCanvasClick = useCallback(\n (e: React.MouseEvent) => {\n const target = e.target as HTMLElement;\n const nodeId = target.closest(\"[data-node-id]\")?.getAttribute(\"data-node-id\");\n onSelectNode(nodeId ?? null);\n },\n [onSelectNode],\n );\n\n const handleCanvasMouseOver = useCallback(\n (e: React.MouseEvent) => {\n const target = e.target as HTMLElement;\n const nodeId = target.closest(\"[data-node-id]\")?.getAttribute(\"data-node-id\");\n onHoverNode(nodeId ?? null);\n },\n [onHoverNode],\n );\n\n return (\n <div\n className={`relative flex-1 overflow-auto bg-background p-8 ${className ?? \"\"}`}\n onClick={handleCanvasClick}\n onMouseOver={handleCanvasMouseOver}\n >\n <div className=\"mx-auto max-w-4xl\">\n <RenderErrorBoundary key={document.id}>\n <UIDocumentRenderer\n document={document}\n theme={theme}\n stateStore={stateStore}\n dataSources={dataSources}\n mutationHandler={mutationHandler}\n commandHandler={commandHandler}\n apiAllowlist={apiAllowlist}\n apiMaxResponseBytes={apiMaxResponseBytes}\n apiMaxConcurrentCalls={apiMaxConcurrentCalls}\n />\n </RenderErrorBoundary>\n </div>\n </div>\n );\n}\n","import { defaultRegistry } from \"../registry/registry\";\n\nexport interface WidgetPaletteProps {\n onSelectWidget: (widgetType: string) => void;\n selectedNodeId: string | null;\n className?: string;\n}\n\nconst categories = [\n { id: \"layout\", label: \"Layout\" },\n { id: \"base\", label: \"Base\" },\n { id: \"form\", label: \"Form\" },\n { id: \"data\", label: \"Data\" },\n { id: \"navigation\", label: \"Navigation\" },\n { id: \"advanced\", label: \"Advanced\" },\n] as const;\n\nexport function WidgetPalette({\n onSelectWidget,\n selectedNodeId,\n className,\n}: WidgetPaletteProps) {\n const widgets = defaultRegistry.list().filter((widget) => !widget.hideFromPalette);\n\n const grouped = categories.reduce<Record<string, typeof widgets>>((acc, category) => {\n acc[category.id] = widgets.filter((widget) => widget.category === category.id);\n return acc;\n }, {} as Record<string, typeof widgets>);\n\n return (\n <div className={`flex h-full flex-col border-r border-border ${className ?? \"\"}`}>\n <div className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold text-text-primary\">Widgets</h2>\n <p className=\"mt-1 text-xs text-text-secondary\">\n {widgets.length} components available\n </p>\n </div>\n <div className=\"flex-1 overflow-y-auto p-2\">\n {categories.map((category) => {\n const categoryWidgets = grouped[category.id];\n if (categoryWidgets.length === 0) return null;\n\n return (\n <div key={category.id} className=\"mb-4\">\n <h3 className=\"mb-2 px-2 text-xs font-medium uppercase tracking-wider text-text-muted\">\n {category.label}\n </h3>\n <div className=\"grid grid-cols-2 gap-2\">\n {categoryWidgets.map((widget) => (\n <button\n key={widget.type}\n onClick={() => onSelectWidget(widget.type)}\n disabled={!selectedNodeId}\n className=\"rounded-lg border border-border bg-surface p-3 text-left transition-colors hover:border-border-hover hover:bg-surface-hover disabled:cursor-not-allowed disabled:opacity-50\"\n title={widget.type}\n >\n <div className=\"text-sm font-medium text-text-primary\">{widget.type}</div>\n <div className=\"mt-1 text-xs text-text-secondary\">\n {widget.acceptsChildren ? \"Container\" : \"Leaf\"}\n </div>\n </button>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n display: 'none'\n};\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement,\n ariaLiveType = \"assertive\"\n } = _ref;\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n };\n return React.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": ariaLiveType,\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef, memo, useReducer, cloneElement, forwardRef } from 'react';\nimport { createPortal, unstable_batchedUpdates } from 'react-dom';\nimport { useUniqueId, getEventCoordinates, getWindow, isDocument, isHTMLElement, isSVGElement, canUseDOM, isWindow, isNode, getOwnerDocument, add, isKeyboardEvent, subtract, useLazyMemo, useInterval, usePrevious, useLatestValue, useEvent, useIsomorphicLayoutEffect, useNodeRef, findFirstFocusableNode, CSS } from '@dnd-kit/utilities';\nimport { useAnnouncement, HiddenText, LiveRegion } from '@dnd-kit/accessibility';\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n const registerListener = useContext(DndMonitorContext);\n useEffect(() => {\n if (!registerListener) {\n throw new Error('useDndMonitor must be used within a children of <DndContext>');\n }\n\n const unsubscribe = registerListener(listener);\n return unsubscribe;\n }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n const [listeners] = useState(() => new Set());\n const registerListener = useCallback(listener => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }, [listeners]);\n const dispatch = useCallback(_ref => {\n let {\n type,\n event\n } = _ref;\n listeners.forEach(listener => {\n var _listener$type;\n\n return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n });\n }, [listeners]);\n return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n draggable: \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \"\n};\nconst defaultAnnouncements = {\n onDragStart(_ref) {\n let {\n active\n } = _ref;\n return \"Picked up draggable item \" + active.id + \".\";\n },\n\n onDragOver(_ref2) {\n let {\n active,\n over\n } = _ref2;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n }\n\n return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n },\n\n onDragEnd(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n }\n\n return \"Draggable item \" + active.id + \" was dropped.\";\n },\n\n onDragCancel(_ref4) {\n let {\n active\n } = _ref4;\n return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n }\n\n};\n\nfunction Accessibility(_ref) {\n let {\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions\n } = _ref;\n const {\n announce,\n announcement\n } = useAnnouncement();\n const liveRegionId = useUniqueId(\"DndLiveRegion\");\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n useDndMonitor(useMemo(() => ({\n onDragStart(_ref2) {\n let {\n active\n } = _ref2;\n announce(announcements.onDragStart({\n active\n }));\n },\n\n onDragMove(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({\n active,\n over\n }));\n }\n },\n\n onDragOver(_ref4) {\n let {\n active,\n over\n } = _ref4;\n announce(announcements.onDragOver({\n active,\n over\n }));\n },\n\n onDragEnd(_ref5) {\n let {\n active,\n over\n } = _ref5;\n announce(announcements.onDragEnd({\n active,\n over\n }));\n },\n\n onDragCancel(_ref6) {\n let {\n active,\n over\n } = _ref6;\n announce(announcements.onDragCancel({\n active,\n over\n }));\n }\n\n }), [announce, announcements]));\n\n if (!mounted) {\n return null;\n }\n\n const markup = React.createElement(React.Fragment, null, React.createElement(HiddenText, {\n id: hiddenTextDescribedById,\n value: screenReaderInstructions.draggable\n }), React.createElement(LiveRegion, {\n id: liveRegionId,\n announcement: announcement\n }));\n return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n Action[\"DragStart\"] = \"dragStart\";\n Action[\"DragMove\"] = \"dragMove\";\n Action[\"DragEnd\"] = \"dragEnd\";\n Action[\"DragCancel\"] = \"dragCancel\";\n Action[\"DragOver\"] = \"dragOver\";\n Action[\"RegisterDroppable\"] = \"registerDroppable\";\n Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n return useMemo(() => ({\n sensor,\n options: options != null ? options : {}\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]);\n}\n\nfunction useSensors() {\n for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n sensors[_key] = arguments[_key];\n }\n\n return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n x: 0,\n y: 0\n});\n\n/**\r\n * Returns the distance between two points\r\n */\nfunction distanceBetween(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: (eventCoordinates.x - rect.left) / rect.width * 100,\n y: (eventCoordinates.y - rect.top) / rect.height * 100\n };\n return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\nfunction sortCollisionsAsc(_ref, _ref2) {\n let {\n data: {\n value: a\n }\n } = _ref;\n let {\n data: {\n value: b\n }\n } = _ref2;\n return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n let {\n data: {\n value: a\n }\n } = _ref3;\n let {\n data: {\n value: b\n }\n } = _ref4;\n return b - a;\n}\n/**\r\n * Returns the coordinates of the corners of a given rectangle:\r\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\r\n */\n\nfunction cornersOfRectangle(_ref5) {\n let {\n left,\n top,\n height,\n width\n } = _ref5;\n return [{\n x: left,\n y: top\n }, {\n x: left + width,\n y: top\n }, {\n x: left,\n y: top + height\n }, {\n x: left + width,\n y: top + height\n }];\n}\nfunction getFirstCollision(collisions, property) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n return property ? firstCollision[property] : firstCollision;\n}\n\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\nfunction centerOfRectangle(rect, left, top) {\n if (left === void 0) {\n left = rect.left;\n }\n\n if (top === void 0) {\n top = rect.top;\n }\n\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5\n };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: distBetween\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the closest rectangles from an array of rectangles to the corners of\r\n * another rectangle.\r\n */\n\nconst closestCorners = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const corners = cornersOfRectangle(collisionRect);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\nfunction getIntersectionRatio(entry, target) {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\nconst rectIntersection = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: intersectionRatio\n }\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n\n/**\r\n * Check if a given point is contained within a bounding rectangle\r\n */\n\nfunction isPointWithinRect(point, rect) {\n const {\n top,\n left,\n bottom,\n right\n } = rect;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n}\n/**\r\n * Returns the rectangles that the pointer is hovering over\r\n */\n\n\nconst pointerWithin = _ref => {\n let {\n droppableContainers,\n droppableRects,\n pointerCoordinates\n } = _ref;\n\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\r\n * with the pointer coordinates. In order to sort the\r\n * colliding rectangles, we measure the distance between\r\n * the pointer and the corners of the intersecting rectangle\r\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n return { ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n };\n}\n\nfunction getRectDelta(rect1, rect2) {\n return rect1 && rect2 ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top\n } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n return function adjustClientRect(rect) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((acc, adjustment) => ({ ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x\n }), { ...rect\n });\n };\n}\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n\n return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {\n scaleX,\n scaleY,\n x: translateX,\n y: translateY\n } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\nconst defaultOptions = {\n ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n let rect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {\n transform,\n transformOrigin\n } = getWindow(element).getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {\n top,\n left,\n width,\n height,\n bottom,\n right\n } = rect;\n return {\n top,\n left,\n width,\n height,\n bottom,\n right\n };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\nfunction getTransformAgnosticClientRect(element) {\n return getClientRect(element, {\n ignoreTransform: true\n });\n}\n\nfunction getWindowClientRect(element) {\n const width = element.innerWidth;\n const height = element.innerHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\nfunction isFixed(node, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(node).getComputedStyle(node);\n }\n\n return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(element).getComputedStyle(element);\n }\n\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(property => {\n const value = computedStyle[property];\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n\nfunction getScrollableAncestors(element, limit) {\n const scrollParents = [];\n\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n scrollParents.push(node.scrollingElement);\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const computedStyle = getWindow(element).getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n\nfunction getScrollXCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\nfunction getScrollYCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\nfunction getScrollCoordinates(element) {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element)\n };\n}\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n const minScroll = {\n x: 0,\n y: 0\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height\n };\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll\n };\n}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n let {\n top,\n left,\n right,\n bottom\n } = _ref;\n\n if (acceleration === void 0) {\n acceleration = 10;\n }\n\n if (thresholdPercentage === void 0) {\n thresholdPercentage = defaultThreshold;\n }\n\n const {\n isTop,\n isBottom,\n isLeft,\n isRight\n } = getScrollPosition(scrollContainer);\n const direction = {\n x: 0,\n y: 0\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n }\n\n return {\n direction,\n speed\n };\n}\n\nfunction getScrollElementRect(element) {\n if (element === document.scrollingElement) {\n const {\n innerWidth,\n innerHeight\n } = window;\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight\n };\n }\n\n const {\n top,\n left,\n right,\n bottom\n } = element.getBoundingClientRect();\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\nfunction getScrollXOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\nfunction getScrollYOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n if (!element) {\n return;\n }\n\n const {\n top,\n left,\n bottom,\n right\n } = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center'\n });\n }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\nclass Rect {\n constructor(rect, element) {\n this.rect = void 0;\n this.width = void 0;\n this.height = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.right = void 0;\n this.left = void 0;\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n this.rect = { ...rect\n };\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {\n enumerable: false\n });\n }\n\n}\n\nclass Listeners {\n constructor(target) {\n this.target = void 0;\n this.listeners = [];\n\n this.removeAll = () => {\n this.listeners.forEach(listener => {\n var _this$target;\n\n return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n });\n };\n\n this.target = target;\n }\n\n add(eventName, handler, options) {\n var _this$target2;\n\n (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n this.listeners.push([eventName, handler, options]);\n }\n\n}\n\nfunction getEventListenerTarget(target) {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n const {\n EventTarget\n } = getWindow(target);\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n EventName[\"Click\"] = \"click\";\n EventName[\"DragStart\"] = \"dragstart\";\n EventName[\"Keydown\"] = \"keydown\";\n EventName[\"ContextMenu\"] = \"contextmenu\";\n EventName[\"Resize\"] = \"resize\";\n EventName[\"SelectionChange\"] = \"selectionchange\";\n EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n KeyboardCode[\"Space\"] = \"Space\";\n KeyboardCode[\"Down\"] = \"ArrowDown\";\n KeyboardCode[\"Right\"] = \"ArrowRight\";\n KeyboardCode[\"Left\"] = \"ArrowLeft\";\n KeyboardCode[\"Up\"] = \"ArrowUp\";\n KeyboardCode[\"Esc\"] = \"Escape\";\n KeyboardCode[\"Enter\"] = \"Enter\";\n KeyboardCode[\"Tab\"] = \"Tab\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter, KeyboardCode.Tab]\n};\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n let {\n currentCoordinates\n } = _ref;\n\n switch (event.code) {\n case KeyboardCode.Right:\n return { ...currentCoordinates,\n x: currentCoordinates.x + 25\n };\n\n case KeyboardCode.Left:\n return { ...currentCoordinates,\n x: currentCoordinates.x - 25\n };\n\n case KeyboardCode.Down:\n return { ...currentCoordinates,\n y: currentCoordinates.y + 25\n };\n\n case KeyboardCode.Up:\n return { ...currentCoordinates,\n y: currentCoordinates.y - 25\n };\n }\n\n return undefined;\n};\n\nclass KeyboardSensor {\n constructor(props) {\n this.props = void 0;\n this.autoScrollEnabled = false;\n this.referenceCoordinates = void 0;\n this.listeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n const {\n event: {\n target\n }\n } = props;\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.attach();\n }\n\n attach() {\n this.handleStart();\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n handleStart() {\n const {\n activeNode,\n onStart\n } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n handleKeyDown(event) {\n if (isKeyboardEvent(event)) {\n const {\n active,\n context,\n options\n } = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth'\n } = options;\n const {\n code\n } = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {\n collisionRect\n } = context.current;\n const currentCoordinates = collisionRect ? {\n x: collisionRect.left,\n y: collisionRect.top\n } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates\n });\n\n if (newCoordinates) {\n const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n const scrollDelta = {\n x: 0,\n y: 0\n };\n const {\n scrollableAncestors\n } = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {\n isTop,\n isRight,\n isLeft,\n isBottom,\n maxScroll,\n minScroll\n } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n const clampedCoordinates = {\n x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n };\n const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior\n });\n }\n\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior\n });\n }\n\n break;\n }\n }\n\n this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n }\n }\n }\n\n handleMove(event, coordinates) {\n const {\n onMove\n } = this.props;\n event.preventDefault();\n onMove(coordinates);\n }\n\n handleEnd(event) {\n const {\n onEnd\n } = this.props;\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n handleCancel(event) {\n const {\n onCancel\n } = this.props;\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n}\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: (event, _ref, _ref2) => {\n let {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n } = _ref;\n let {\n active\n } = _ref2;\n const {\n code\n } = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n onActivation == null ? void 0 : onActivation({\n event: event.nativeEvent\n });\n return true;\n }\n\n return false;\n }\n}];\n\nfunction isDistanceConstraint(constraint) {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n constructor(props, events, listenerTarget) {\n var _getEventCoordinates;\n\n if (listenerTarget === void 0) {\n listenerTarget = getEventListenerTarget(props.event.target);\n }\n\n this.props = void 0;\n this.events = void 0;\n this.autoScrollEnabled = true;\n this.document = void 0;\n this.activated = false;\n this.initialCoordinates = void 0;\n this.timeoutId = null;\n this.listeners = void 0;\n this.documentListeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n this.events = events;\n const {\n event\n } = props;\n const {\n target\n } = event;\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n this.attach();\n }\n\n attach() {\n const {\n events,\n props: {\n options: {\n activationConstraint,\n bypassActivationConstraint\n }\n }\n } = this;\n this.listeners.add(events.move.name, this.handleMove, {\n passive: false\n });\n this.listeners.add(events.end.name, this.handleEnd);\n\n if (events.cancel) {\n this.listeners.add(events.cancel.name, this.handleCancel);\n }\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (bypassActivationConstraint != null && bypassActivationConstraint({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options\n })) {\n return this.handleStart();\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n this.handlePending(activationConstraint);\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n this.handlePending(activationConstraint);\n return;\n }\n }\n\n this.handleStart();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n handlePending(constraint, offset) {\n const {\n active,\n onPending\n } = this.props;\n onPending(active, constraint, this.initialCoordinates, offset);\n }\n\n handleStart() {\n const {\n initialCoordinates\n } = this;\n const {\n onStart\n } = this.props;\n\n if (initialCoordinates) {\n this.activated = true; // Stop propagation of click events once activation constraints are met\n\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true\n }); // Remove any text selection from the document\n\n this.removeTextSelection(); // Prevent further text selection while dragging\n\n this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n onStart(initialCoordinates);\n }\n }\n\n handleMove(event) {\n var _getEventCoordinates2;\n\n const {\n activated,\n initialCoordinates,\n props\n } = this;\n const {\n onMove,\n options: {\n activationConstraint\n }\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n const delta = subtract(initialCoordinates, coordinates); // Constraint validation\n\n if (!activated && activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n }\n\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n }\n\n this.handlePending(activationConstraint, delta);\n return;\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n handleEnd() {\n const {\n onAbort,\n onEnd\n } = this.props;\n this.detach();\n\n if (!this.activated) {\n onAbort(this.props.active);\n }\n\n onEnd();\n }\n\n handleCancel() {\n const {\n onAbort,\n onCancel\n } = this.props;\n this.detach();\n\n if (!this.activated) {\n onAbort(this.props.active);\n }\n\n onCancel();\n }\n\n handleKeydown(event) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n removeTextSelection() {\n var _this$document$getSel;\n\n (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n }\n\n}\n\nconst events = {\n cancel: {\n name: 'pointercancel'\n },\n move: {\n name: 'pointermove'\n },\n end: {\n name: 'pointerup'\n }\n};\nclass PointerSensor extends AbstractPointerSensor {\n constructor(props) {\n const {\n event\n } = props; // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n\n const listenerTarget = getOwnerDocument(event.target);\n super(props, events, listenerTarget);\n }\n\n}\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$1 = {\n move: {\n name: 'mousemove'\n },\n end: {\n name: 'mouseup'\n }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$1, getOwnerDocument(props.event.target));\n }\n\n}\nMouseSensor.activators = [{\n eventName: 'onMouseDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$2 = {\n cancel: {\n name: 'touchcancel'\n },\n move: {\n name: 'touchmove'\n },\n end: {\n name: 'touchend'\n }\n};\nclass TouchSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$2);\n }\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events$2.move.name, noop, {\n capture: false,\n passive: false\n });\n return function teardown() {\n window.removeEventListener(events$2.move.name, noop);\n }; // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n\n function noop() {}\n }\n\n}\nTouchSensor.activators = [{\n eventName: 'onTouchStart',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n const {\n touches\n } = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n let {\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold\n } = _ref;\n const scrollIntent = useScrollIntent({\n delta,\n disabled: !enabled\n });\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef({\n x: 0,\n y: 0\n });\n const scrollDirection = useRef({\n x: 0,\n y: 0\n });\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x\n } : null;\n\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n useEffect(() => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {\n direction,\n speed\n } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n for (const axis of ['x', 'y']) {\n if (!scrollIntent[axis][direction[axis]]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n return;\n }\n }\n\n scrollSpeed.current = {\n x: 0,\n y: 0\n };\n scrollDirection.current = {\n x: 0,\n y: 0\n };\n clearAutoScrollInterval();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold)]);\n}\nconst defaultScrollIntent = {\n x: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n },\n y: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n }\n};\n\nfunction useScrollIntent(_ref2) {\n let {\n delta,\n disabled\n } = _ref2;\n const previousDelta = usePrevious(delta);\n return useLazyMemo(previousIntent => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y)\n }; // Keep track of the user intent to scroll in each direction for both axis\n\n return {\n x: {\n [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n },\n y: {\n [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n }\n };\n }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n const draggableNode = id != null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n return useLazyMemo(cachedNode => {\n var _ref;\n\n if (id == null) {\n return null;\n } // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n\n\n return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n return useMemo(() => sensors.reduce((accumulator, sensor) => {\n const {\n sensor: Sensor\n } = sensor;\n const sensorActivators = Sensor.activators.map(activator => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor)\n }));\n return [...accumulator, ...sensorActivators];\n }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\nfunction useDroppableMeasuring(containers, _ref) {\n let {\n dragging,\n dependencies,\n config\n } = _ref;\n const [queue, setQueue] = useState(null);\n const {\n frequency,\n measure,\n strategy\n } = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(function (ids) {\n if (ids === void 0) {\n ids = [];\n }\n\n if (disabledRef.current) {\n return;\n }\n\n setQueue(value => {\n if (value === null) {\n return ids;\n }\n\n return value.concat(ids.filter(id => !value.includes(id)));\n });\n }, [disabledRef]);\n const timeoutId = useRef(null);\n const droppableRects = useLazyMemo(previousValue => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || queue != null) {\n const map = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (queue && queue.length > 0 && !queue.includes(container.id) && container.rect.current) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n }, [containers, queue, dragging, disabled, measure]);\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n measureDroppableContainers();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]);\n useEffect(() => {\n if (queue && queue.length > 0) {\n setQueue(null);\n }\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(queue)]);\n useEffect(() => {\n if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]);\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled: queue != null\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n\n default:\n return !dragging;\n }\n }\n}\n\nfunction useInitialValue(value, computeFn) {\n return useLazyMemo(previousValue => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n return useInitialValue(node, measure);\n}\n\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useMutationObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n return undefined;\n }\n\n const {\n MutationObserver\n } = window;\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n useEffect(() => {\n return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }, [mutationObserver]);\n return mutationObserver;\n}\n\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useResizeObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const {\n ResizeObserver\n } = window;\n return new ResizeObserver(handleResize);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]);\n useEffect(() => {\n return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n }, [resizeObserver]);\n return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n if (measure === void 0) {\n measure = defaultMeasure;\n }\n\n const [rect, setRect] = useState(null);\n\n function measureRect() {\n setRect(currentRect => {\n if (!element) {\n return null;\n }\n\n if (element.isConnected === false) {\n var _ref;\n\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n }\n\n const newRect = measure(element);\n\n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n\n return newRect;\n });\n }\n\n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {\n type,\n target\n } = record;\n\n if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n measureRect();\n break;\n }\n }\n }\n\n });\n const resizeObserver = useResizeObserver({\n callback: measureRect\n });\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver == null ? void 0 : resizeObserver.observe(element);\n mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }\n }, [element]);\n return rect;\n}\n\nfunction useRectDelta(rect) {\n const initialRect = useInitialValue(rect);\n return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\nfunction useScrollableAncestors(node) {\n const previousNode = useRef(node);\n const ancestors = useLazyMemo(previousValue => {\n if (!node) {\n return defaultValue$1;\n }\n\n if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n }, [node]);\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n const [scrollCoordinates, setScrollCoordinates] = useState(null);\n const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n const handleScroll = useCallback(event => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates(scrollCoordinates => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n return new Map(scrollCoordinates);\n });\n }, []);\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n const entries = elements.map(element => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return [scrollableElement, getScrollCoordinates(scrollableElement)];\n }\n\n return null;\n }).filter(entry => entry != null);\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements) {\n elements.forEach(element => {\n const scrollableElement = getScrollableElement(element);\n scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n const initialScrollOffsets = useRef(null);\n useEffect(() => {\n initialScrollOffsets.current = null;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies);\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n useEffect(() => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(_ref => {\n let {\n sensor\n } = _ref;\n return sensor.setup == null ? void 0 : sensor.setup();\n });\n return () => {\n for (const teardown of teardownFns) {\n teardown == null ? void 0 : teardown();\n }\n };\n }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(_ref2 => {\n let {\n sensor\n } = _ref2;\n return sensor;\n }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n return useMemo(() => {\n return listeners.reduce((acc, _ref) => {\n let {\n eventName,\n handler\n } = _ref;\n\n acc[eventName] = event => {\n handler(event, id);\n };\n\n return acc;\n }, {});\n }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\nfunction useRects(elements, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n const [firstElement] = elements;\n const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n const [rects, setRects] = useState(defaultValue$2);\n\n function measureRects() {\n setRects(() => {\n if (!elements.length) {\n return defaultValue$2;\n }\n\n return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n });\n }\n\n const resizeObserver = useResizeObserver({\n callback: measureRects\n });\n useIsomorphicLayoutEffect(() => {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n measureRects();\n elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n }, [elements]);\n return rects;\n}\n\nfunction getMeasurableNode(node) {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n\n const firstChild = node.children[0];\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n let {\n measure\n } = _ref;\n const [rect, setRect] = useState(null);\n const handleResize = useCallback(entries => {\n for (const {\n target\n } of entries) {\n if (isHTMLElement(target)) {\n setRect(rect => {\n const newRect = measure(target);\n return rect ? { ...rect,\n width: newRect.width,\n height: newRect.height\n } : newRect;\n });\n break;\n }\n }\n }, [measure]);\n const resizeObserver = useResizeObserver({\n callback: handleResize\n });\n const handleNodeChange = useCallback(element => {\n const node = getMeasurableNode(element);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n if (node) {\n resizeObserver == null ? void 0 : resizeObserver.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n }, [measure, resizeObserver]);\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n return useMemo(() => ({\n nodeRef,\n rect,\n setRef\n }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n sensor: PointerSensor,\n options: {}\n}, {\n sensor: KeyboardSensor,\n options: {}\n}];\nconst defaultData = {\n current: {}\n};\nconst defaultMeasuringConfiguration = {\n draggable: {\n measure: getTransformAgnosticClientRect\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized\n },\n dragOverlay: {\n measure: getClientRect\n }\n};\n\nclass DroppableContainersMap extends Map {\n get(id) {\n var _super$get;\n\n return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n }\n\n toArray() {\n return Array.from(this.values());\n }\n\n getEnabled() {\n return this.toArray().filter(_ref => {\n let {\n disabled\n } = _ref;\n return !disabled;\n });\n }\n\n getNodeFor(id) {\n var _this$get$node$curren, _this$get;\n\n return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n }\n\n}\n\nconst defaultPublicContext = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /*#__PURE__*/new Map(),\n droppableRects: /*#__PURE__*/new Map(),\n droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: noop\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false\n};\nconst defaultInternalContext = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: ''\n },\n dispatch: noop,\n draggableNodes: /*#__PURE__*/new Map(),\n over: null,\n measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new DroppableContainersMap()\n }\n };\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case Action.DragStart:\n return { ...state,\n draggable: { ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active\n }\n };\n\n case Action.DragMove:\n if (state.draggable.active == null) {\n return state;\n }\n\n return { ...state,\n draggable: { ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y\n }\n }\n };\n\n case Action.DragEnd:\n case Action.DragCancel:\n return { ...state,\n draggable: { ...state.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n\n case Action.RegisterDroppable:\n {\n const {\n element\n } = action;\n const {\n id\n } = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.SetDroppableDisabled:\n {\n const {\n id,\n key,\n disabled\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, { ...element,\n disabled\n });\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.UnregisterDroppable:\n {\n const {\n id,\n key\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nfunction RestoreFocus(_ref) {\n let {\n disabled\n } = _ref;\n const {\n active,\n activatorEvent,\n draggableNodes\n } = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n activatorNode,\n node\n } = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n let {\n transform,\n ...args\n } = _ref;\n return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args\n });\n }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n return useMemo(() => ({\n draggable: { ...defaultMeasuringConfiguration.draggable,\n ...(config == null ? void 0 : config.draggable)\n },\n droppable: { ...defaultMeasuringConfiguration.droppable,\n ...(config == null ? void 0 : config.droppable)\n },\n dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n ...(config == null ? void 0 : config.dragOverlay)\n }\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n let {\n activeNode,\n measure,\n initialRect,\n config = true\n } = _ref;\n const initialized = useRef(false);\n const {\n x,\n y\n } = typeof config === 'boolean' ? {\n x: config,\n y: config\n } : config;\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n } // Get the most up to date node ref for the active draggable\n\n\n const node = activeNode == null ? void 0 : activeNode.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n } // Only perform layout shift scroll compensation once\n\n\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n let {\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n } = _ref;\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n const [status, setStatus] = useState(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {\n active: activeId,\n nodes: draggableNodes,\n translate\n },\n droppable: {\n containers: droppableContainers\n }\n } = state;\n const node = activeId != null ? draggableNodes.get(activeId) : null;\n const activeRects = useRef({\n initial: null,\n translated: null\n });\n const active = useMemo(() => {\n var _node$data;\n\n return activeId != null ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n rect: activeRects\n } : null;\n }, [activeId, node]);\n const activeRef = useRef(null);\n const [activeSensor, setActiveSensor] = useState(null);\n const [activatorEvent, setActivatorEvent] = useState(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n } = useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n useLayoutShiftScrollCompensation({\n activeNode: activeId != null ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure\n });\n const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n const sensorContext = useRef({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n });\n const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure\n }); // Use the rect of the drag overlay if it is mounted\n\n const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n });\n const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n const collisions = active && collisionRect ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates\n }) : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n // window scroll delta\n\n const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n const activeSensorRef = useRef(null);\n const instantiateSensor = useCallback((event, _ref2) => {\n let {\n sensor: Sensor,\n options\n } = _ref2;\n\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n\n onAbort(id) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragAbort\n } = latestProps.current;\n const event = {\n id\n };\n onDragAbort == null ? void 0 : onDragAbort(event);\n dispatchMonitorEvent({\n type: 'onDragAbort',\n event\n });\n },\n\n onPending(id, constraint, initialCoordinates, offset) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragPending\n } = latestProps.current;\n const event = {\n id,\n constraint,\n initialCoordinates,\n offset\n };\n onDragPending == null ? void 0 : onDragPending(event);\n dispatchMonitorEvent({\n type: 'onDragPending',\n event\n });\n },\n\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragStart\n } = latestProps.current;\n const event = {\n activatorEvent,\n active: {\n id,\n data: draggableNode.data,\n rect: activeRects\n }\n };\n unstable_batchedUpdates(() => {\n onDragStart == null ? void 0 : onDragStart(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id\n });\n dispatchMonitorEvent({\n type: 'onDragStart',\n event\n });\n setActiveSensor(activeSensorRef.current);\n setActivatorEvent(activatorEvent);\n });\n },\n\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates\n });\n },\n\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel)\n });\n activeSensorRef.current = sensorInstance;\n\n function createHandler(type) {\n return async function handler() {\n const {\n active,\n collisions,\n over,\n scrollAdjustedTranslate\n } = sensorContext.current;\n let event = null;\n\n if (active && scrollAdjustedTranslate) {\n const {\n cancelDrop\n } = latestProps.current;\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n unstable_batchedUpdates(() => {\n dispatch({\n type\n });\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n activeSensorRef.current = null;\n const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n handler == null ? void 0 : handler(event);\n dispatchMonitorEvent({\n type: eventName,\n event\n });\n }\n });\n };\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]);\n const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if ( // Another sensor is already instantiating\n activeRef.current !== null || // No active draggable\n !activeDraggableNode || // Event has already been captured\n nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode\n };\n const shouldActivate = handler(event, sensor.options, activationContext);\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor\n };\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n }, [draggableNodes, instantiateSensor]);\n const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n useSensorSetup(sensors);\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n useEffect(() => {\n const {\n onDragMove\n } = latestProps.current;\n const {\n active,\n activatorEvent,\n collisions,\n over\n } = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n onDragMove == null ? void 0 : onDragMove(event);\n dispatchMonitorEvent({\n type: 'onDragMove',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n useEffect(() => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate\n } = sensorContext.current;\n\n if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n return;\n }\n\n const {\n onDragOver\n } = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over = overContainer && overContainer.rect.current ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled\n } : null;\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver == null ? void 0 : onDragOver(event);\n dispatchMonitorEvent({\n type: 'onDragOver',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]);\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate\n };\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect\n };\n }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n useAutoScroller({ ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects\n });\n const publicContext = useMemo(() => {\n const context = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect\n };\n return context;\n }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n const internalContext = useMemo(() => {\n const context = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers\n };\n return context;\n }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n return React.createElement(DndMonitorContext.Provider, {\n value: registerMonitorListener\n }, React.createElement(InternalContext.Provider, {\n value: internalContext\n }, React.createElement(PublicContext.Provider, {\n value: publicContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: transform\n }, children)), React.createElement(RestoreFocus, {\n disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n })), React.createElement(Accessibility, { ...accessibility,\n hiddenTextDescribedById: draggableDescribedById\n }));\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return { ...autoScroll,\n enabled\n };\n }\n\n return {\n enabled\n };\n }\n});\n\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX = 'Draggable';\nfunction useDraggable(_ref) {\n let {\n id,\n data,\n disabled = false,\n attributes\n } = _ref;\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0\n } = attributes != null ? attributes : {};\n const isDragging = (active == null ? void 0 : active.id) === id;\n const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n useIsomorphicLayoutEffect(() => {\n draggableNodes.set(id, {\n id,\n key,\n node,\n activatorNode,\n data: dataRef\n });\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]);\n const memoizedAttributes = useMemo(() => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable\n }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform\n };\n}\n\nfunction useDndContext() {\n return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n timeout: 25\n};\nfunction useDroppable(_ref) {\n let {\n data,\n disabled = false,\n id,\n resizeObserverConfig\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1);\n const {\n active,\n dispatch,\n over,\n measureDroppableContainers\n } = useContext(InternalContext);\n const previous = useRef({\n disabled\n });\n const resizeObserverConnected = useRef(false);\n const rect = useRef(null);\n const callbackId = useRef(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout\n } = { ...defaultResizeObserverConfig,\n ...resizeObserverConfig\n };\n const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n const handleResize = useCallback(() => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n callbackId.current = null;\n }, resizeObserverTimeout);\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]);\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active\n });\n const handleNodeChange = useCallback((newElement, previousElement) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n }, [resizeObserver]);\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n useEffect(() => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef\n }\n });\n return () => dispatch({\n type: Action.UnregisterDroppable,\n key,\n id\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]);\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled\n });\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n return {\n active,\n rect,\n isOver: (over == null ? void 0 : over.id) === id,\n node: nodeRef,\n over,\n setNodeRef\n };\n}\n\nfunction AnimationManager(_ref) {\n let {\n animation,\n children\n } = _ref;\n const [clonedChildren, setClonedChildren] = useState(null);\n const [element, setElement] = useState(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren == null ? void 0 : clonedChildren.key;\n const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n return React.createElement(React.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n ref: setElement\n }) : null);\n}\n\nconst defaultTransform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction NullifiedContextProvider(_ref) {\n let {\n children\n } = _ref;\n return React.createElement(InternalContext.Provider, {\n value: defaultInternalContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: defaultTransform\n }, children));\n}\n\nconst baseStyles = {\n position: 'fixed',\n touchAction: 'none'\n};\n\nconst defaultTransition = activatorEvent => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition\n } = _ref;\n\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n scaleX: 1,\n scaleY: 1\n };\n const styles = { ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n ...style\n };\n return React.createElement(as, {\n className,\n style: styles,\n ref\n }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n let {\n active,\n dragOverlay\n } = _ref;\n const originalStyles = {};\n const {\n styles,\n className\n } = options;\n\n if (styles != null && styles.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles != null && styles.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className != null && className.active) {\n active.node.classList.add(className.active);\n }\n\n if (className != null && className.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className != null && className.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n let {\n transform: {\n initial,\n final\n }\n } = _ref2;\n return [{\n transform: CSS.Transform.toString(initial)\n }, {\n transform: CSS.Transform.toString(final)\n }];\n};\n\nconst defaultDropAnimationConfiguration = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0'\n }\n }\n })\n};\nfunction useDropAnimation(_ref3) {\n let {\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n } = _ref3;\n return useEvent((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n\n const {\n transform\n } = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode)\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform\n });\n });\n}\n\nfunction createDefaultDropAnimation(options) {\n const {\n duration,\n easing,\n sideEffects,\n keyframes\n } = { ...defaultDropAnimationConfiguration,\n ...options\n };\n return _ref4 => {\n let {\n active,\n dragOverlay,\n transform,\n ...rest\n } = _ref4;\n\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top\n };\n const scale = {\n scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale\n };\n const animationKeyframes = keyframes({ ...rest,\n active,\n dragOverlay,\n transform: {\n initial: transform,\n final: finalTransform\n }\n });\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects == null ? void 0 : sideEffects({\n active,\n dragOverlay,\n ...rest\n });\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards'\n });\n return new Promise(resolve => {\n animation.onfinish = () => {\n cleanup == null ? void 0 : cleanup();\n resolve();\n };\n });\n };\n}\n\nlet key = 0;\nfunction useKey(id) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React.memo(_ref => {\n let {\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999\n } = _ref;\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active == null ? void 0 : active.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n\n const ref = initialRect ? dragOverlay.setRef : undefined;\n return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, {\n animation: dropAnimation\n }, active && key ? React.createElement(PositionedOverlay, {\n key: key,\n id: active.id,\n ref: ref,\n as: wrapperElement,\n activatorEvent: activatorEvent,\n adjustScale: adjustScale,\n className: className,\n transition: transition,\n rect: initialRect,\n style: {\n zIndex,\n ...style\n },\n transform: modifiedTransform\n }, children) : null));\n});\n\nexport { AutoScrollActivator, DndContext, DragOverlay, KeyboardCode, KeyboardSensor, MeasuringFrequency, MeasuringStrategy, MouseSensor, PointerSensor, TouchSensor, TraversalOrder, applyModifiers, closestCenter, closestCorners, defaultAnnouncements, defaultCoordinates, defaultDropAnimationConfiguration as defaultDropAnimation, defaultDropAnimationSideEffects, defaultKeyboardCoordinateGetter, defaultScreenReaderInstructions, getClientRect, getFirstCollision, getScrollableAncestors, pointerWithin, rectIntersection, useDndContext, useDndMonitor, useDraggable, useDroppable, useSensor, useSensors };\n//# sourceMappingURL=core.esm.js.map\n","import React, { useMemo, useRef, useEffect, useState, useContext } from 'react';\nimport { useDndContext, getClientRect, useDroppable, useDraggable, closestCorners, getFirstCollision, getScrollableAncestors, KeyboardCode } from '@dnd-kit/core';\nimport { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs, isKeyboardEvent, subtract } from '@dnd-kit/utilities';\n\n/**\r\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\r\n */\nfunction arrayMove(array, from, to) {\n const newArray = array.slice();\n newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\n\n/**\r\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\r\n */\nfunction arraySwap(array, from, to) {\n const newArray = array.slice();\n newArray[from] = array[to];\n newArray[to] = array[from];\n return newArray;\n}\n\nfunction getSortedRects(items, rects) {\n return items.reduce((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n\nfunction isValidIndex(index) {\n return index !== null && index >= 0;\n}\n\nfunction itemsEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction normalizeDisabled(disabled) {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled\n };\n }\n\n return disabled;\n}\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1\n};\nconst horizontalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x: activeIndex < overIndex ? newIndexRect.left + newIndexRect.width - (activeNodeRect.left + activeNodeRect.width) : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale\n };\n};\n\nfunction getItemGap(rects, index, activeIndex) {\n const currentRect = rects[index];\n const previousRect = rects[index - 1];\n const nextRect = rects[index + 1];\n\n if (!currentRect || !previousRect && !nextRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.left - (previousRect.left + previousRect.width) : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect ? nextRect.left - (currentRect.left + currentRect.width) : currentRect.left - (previousRect.left + previousRect.width);\n}\n\nconst rectSortingStrategy = _ref => {\n let {\n rects,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const newRects = arrayMove(rects, overIndex, activeIndex);\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\nconst rectSwappingStrategy = _ref => {\n let {\n activeIndex,\n index,\n rects,\n overIndex\n } = _ref;\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\n// To-do: We should be calculating scale transformation\nconst defaultScale$1 = {\n scaleX: 1,\n scaleY: 1\n};\nconst verticalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y: activeIndex < overIndex ? overIndexRect.top + overIndexRect.height - (activeNodeRect.top + activeNodeRect.height) : overIndexRect.top - activeNodeRect.top,\n ...defaultScale$1\n };\n }\n\n const itemGap = getItemGap$1(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale$1\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale$1\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale$1\n };\n};\n\nfunction getItemGap$1(clientRects, index, activeIndex) {\n const currentRect = clientRects[index];\n const previousRect = clientRects[index - 1];\n const nextRect = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.top - (previousRect.top + previousRect.height) : nextRect ? nextRect.top - (currentRect.top + currentRect.height) : 0;\n }\n\n return nextRect ? nextRect.top - (currentRect.top + currentRect.height) : previousRect ? currentRect.top - (previousRect.top + previousRect.height) : 0;\n}\n\nconst ID_PREFIX = 'Sortable';\nconst Context = /*#__PURE__*/React.createContext({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false\n }\n});\nfunction SortableContext(_ref) {\n let {\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false\n } = _ref;\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo(() => userDefinedItems.map(item => typeof item === 'object' && 'id' in item ? item.id : item), [userDefinedItems]);\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms = overIndex !== -1 && activeIndex === -1 || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n const contextValue = useMemo(() => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeIndex, containerId, disabled.draggable, disabled.droppable, disableTransforms, items, overIndex, droppableRects, useDragOverlay, strategy]);\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nconst defaultNewIndexGetter = _ref => {\n let {\n id,\n items,\n activeIndex,\n overIndex\n } = _ref;\n return arrayMove(items, activeIndex, overIndex).indexOf(id);\n};\nconst defaultAnimateLayoutChanges = _ref2 => {\n let {\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition\n } = _ref2;\n\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\nconst defaultTransition = {\n duration: 200,\n easing: 'ease'\n};\nconst transitionProperty = 'transform';\nconst disabledTransition = /*#__PURE__*/CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear'\n});\nconst defaultAttributes = {\n roleDescription: 'sortable'\n};\n\n/*\r\n * When the index of an item changes while sorting,\r\n * we need to temporarily disable the transforms\r\n */\n\nfunction useDerivedTransform(_ref) {\n let {\n disabled,\n index,\n node,\n rect\n } = _ref;\n const [derivedTransform, setDerivedtransform] = useState(null);\n const previousIndex = useRef(index);\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true\n });\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n return derivedTransform;\n}\n\nfunction useSortable(_ref) {\n let {\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition\n } = _ref;\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy\n } = useContext(Context);\n const disabled = normalizeLocalDisabled(localDisabled, globalDisabled);\n const index = items.indexOf(id);\n const data = useMemo(() => ({\n sortable: {\n containerId,\n index,\n items\n },\n ...customData\n }), [containerId, customData, index, items]);\n const itemsAfterCurrentSortable = useMemo(() => items.slice(items.indexOf(id)), [items, id]);\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig\n }\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform\n } = useDraggable({\n id,\n data,\n attributes: { ...defaultAttributes,\n ...userDefinedAttributes\n },\n disabled: disabled.draggable\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem = isSorting && !disableTransforms && isValidIndex(activeIndex) && isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement = shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy != null ? localStrategy : globalStrategy;\n const finalTransform = displaceItem ? dragSourceDisplacement != null ? dragSourceDisplacement : strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index\n }) : null;\n const newIndex = isValidIndex(activeIndex) && isValidIndex(overIndex) ? getNewIndex({\n id,\n items,\n activeIndex,\n overIndex\n }) : index;\n const activeId = active == null ? void 0 : active.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null\n });\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect\n });\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId != null && previous.current.activeId == null) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform != null ? derivedTransform : finalTransform,\n transition: getTransition()\n };\n\n function getTransition() {\n if ( // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform || // Or to prevent items jumping to back to their \"new\" position when items change\n itemsHaveChanged && previous.current.newIndex === index) {\n return disabledTransition;\n }\n\n if (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent) || !transition) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({ ...transition,\n property: transitionProperty\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(localDisabled, globalDisabled) {\n var _localDisabled$dragga, _localDisabled$droppa;\n\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false\n };\n }\n\n return {\n draggable: (_localDisabled$dragga = localDisabled == null ? void 0 : localDisabled.draggable) != null ? _localDisabled$dragga : globalDisabled.draggable,\n droppable: (_localDisabled$droppa = localDisabled == null ? void 0 : localDisabled.droppable) != null ? _localDisabled$droppa : globalDisabled.droppable\n };\n}\n\nfunction hasSortableData(entry) {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (data && 'sortable' in data && typeof data.sortable === 'object' && 'containerId' in data.sortable && 'items' in data.sortable && 'index' in data.sortable) {\n return true;\n }\n\n return false;\n}\n\nconst directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];\nconst sortableKeyboardCoordinates = (event, _ref) => {\n let {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors\n }\n } = _ref;\n\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers = [];\n droppableContainers.getEnabled().forEach(entry => {\n if (!entry || entry != null && entry.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n }\n });\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === (over == null ? void 0 : over.id) && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable == null ? void 0 : newDroppable.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some((element, index) => scrollableAncestors[index] !== element);\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset = hasDifferentScrollAncestors || !hasSameContainer ? {\n x: 0,\n y: 0\n } : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top\n };\n const newCoordinates = offset.x && offset.y ? rectCoordinates : subtract(rectCoordinates, offset);\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return a.data.current.sortable.containerId === b.data.current.sortable.containerId;\n}\n\nfunction isAfter(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n\nexport { SortableContext, arrayMove, arraySwap, defaultAnimateLayoutChanges, defaultNewIndexGetter, hasSortableData, horizontalListSortingStrategy, rectSortingStrategy, rectSwappingStrategy, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy };\n//# sourceMappingURL=sortable.esm.js.map\n","import React, { useCallback, useMemo } from \"react\";\nimport { DndContext, DragEndEvent, DragOverlay, DragStartEvent, PointerSensor, KeyboardSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport type { UIDLNode } from \"../types\";\n\nexport interface LayerTreeProps {\n root: UIDLNode;\n selectedNodeId: string | null;\n hoveredNodeId: string | null;\n onSelectNode: (nodeId: string | null) => void;\n onHoverNode: (nodeId: string | null) => void;\n onMoveNode?: (nodeId: string, targetParentId: string, index?: number) => void;\n className?: string;\n}\n\nexport function LayerTree({\n root,\n selectedNodeId,\n hoveredNodeId,\n onSelectNode,\n onHoverNode,\n onMoveNode,\n className,\n}: LayerTreeProps) {\n const [activeId, setActiveId] = React.useState<string | null>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor),\n );\n\n const flattenedNodes = useMemo(() => {\n const nodes: Array<{ id: string; node: UIDLNode; level: number }> = [];\n function traverse(node: UIDLNode, level: number) {\n nodes.push({ id: node.id, node, level });\n for (const child of node.children ?? []) {\n traverse(child, level + 1);\n }\n }\n traverse(root, 0);\n return nodes;\n }, [root]);\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id as string);\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n setActiveId(null);\n\n if (!over || active.id === over.id) return;\n\n const activeItem = flattenedNodes.find((n) => n.id === active.id);\n if (!activeItem) return;\n\n const overItem = flattenedNodes.find((n) => n.id === over.id);\n if (!overItem) return;\n\n const isOverChild = overItem.node.children?.some((child) => child.id === active.id);\n if (isOverChild) return;\n\n const targetParentId = overItem.node.id;\n const targetIndex = overItem.node.children?.length ?? 0;\n\n onMoveNode?.(active.id as string, targetParentId, targetIndex);\n },\n [flattenedNodes, onMoveNode],\n );\n\n return (\n <div className={`flex h-full flex-col border-r border-border ${className ?? \"\"}`}>\n <div className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold text-text-primary\">Layers</h2>\n </div>\n <div className=\"flex-1 overflow-y-auto p-2\">\n <DndContext sensors={sensors} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <SortableContext items={flattenedNodes.map((n) => n.id)} strategy={verticalListSortingStrategy}>\n {flattenedNodes.map(({ id, node, level }) => (\n <SortableTreeNode\n key={id}\n id={id}\n node={node}\n level={level}\n selectedNodeId={selectedNodeId}\n hoveredNodeId={hoveredNodeId}\n onSelectNode={onSelectNode}\n onHoverNode={onHoverNode}\n />\n ))}\n </SortableContext>\n <DragOverlay>\n {activeId ? (\n <div className=\"rounded-md bg-accent/10 px-2 py-1.5 text-sm text-accent\">\n {flattenedNodes.find((n) => n.id === activeId)?.node.type}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n </div>\n </div>\n );\n}\n\ninterface SortableTreeNodeProps {\n id: string;\n node: UIDLNode;\n level: number;\n selectedNodeId: string | null;\n hoveredNodeId: string | null;\n onSelectNode: (nodeId: string | null) => void;\n onHoverNode: (nodeId: string | null) => void;\n}\n\nfunction SortableTreeNode({\n id,\n node,\n level,\n selectedNodeId,\n hoveredNodeId,\n onSelectNode,\n onHoverNode,\n}: SortableTreeNodeProps) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id });\n const isSelected = selectedNodeId === node.id;\n const isHovered = hoveredNodeId === node.id;\n\n const style: React.CSSProperties = {\n paddingLeft: `${level * 16 + 8}px`,\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onSelectNode(node.id);\n },\n [node.id, onSelectNode],\n );\n\n const handleMouseEnter = useCallback(\n () => onHoverNode(node.id),\n [node.id, onHoverNode],\n );\n\n const handleMouseLeave = useCallback(\n () => onHoverNode(null),\n [onHoverNode],\n );\n\n return (\n <div ref={setNodeRef} style={style}>\n <div\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={`\n flex items-center gap-2 rounded-md px-2 py-1.5 cursor-pointer\n transition-colors\n ${isSelected ? \"bg-accent/10 text-accent\" : \"text-text-primary hover:bg-surface-hover\"}\n ${isHovered && !isSelected ? \"bg-surface-hover\" : \"\"}\n `}\n {...attributes}\n {...listeners}\n >\n <span className=\"text-xs text-text-muted\">{node.type}</span>\n {node.name && (\n <span className=\"truncate text-sm text-text-secondary\">{node.name}</span>\n )}\n {!node.name && (\n <span className=\"truncate text-sm text-text-muted\">{node.id}</span>\n )}\n </div>\n </div>\n );\n}\n","import { useCallback } from \"react\";\nimport type { UIDLNode } from \"../types\";\n\nexport interface PropertyPanelProps {\n node: UIDLNode | null;\n onUpdateNode: (nodeId: string, changes: Partial<UIDLNode>) => void;\n className?: string;\n}\n\nexport function PropertyPanel({ node, onUpdateNode, className }: PropertyPanelProps) {\n const handleChange = useCallback(\n (field: keyof UIDLNode, value: unknown) => {\n if (!node) return;\n onUpdateNode(node.id, { [field]: value });\n },\n [node, onUpdateNode],\n );\n\n if (!node) {\n return (\n <div className={`flex h-full flex-col border-r border-border ${className ?? \"\"}`}>\n <div className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold text-text-primary\">Properties</h2>\n </div>\n <div className=\"flex-1 overflow-y-auto p-4\">\n <p className=\"text-sm text-text-secondary\">Select a node to edit its properties.</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className={`flex h-full flex-col border-r border-border ${className ?? \"\"}`}>\n <div className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold text-text-primary\">Properties</h2>\n <p className=\"mt-1 text-xs text-text-secondary\">{node.type}</p>\n </div>\n <div className=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div>\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">ID</label>\n <input\n type=\"text\"\n value={node.id}\n disabled\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-muted\"\n />\n </div>\n\n <div>\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">Type</label>\n <input\n type=\"text\"\n value={node.type}\n disabled\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-muted\"\n />\n </div>\n\n <div>\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">Name</label>\n <input\n type=\"text\"\n value={node.name ?? \"\"}\n onChange={(e) => handleChange(\"name\", e.target.value || undefined)}\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-primary\"\n placeholder=\"Node name\"\n />\n </div>\n\n <div>\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">Theme Ref</label>\n <input\n type=\"text\"\n value={node.themeRef ?? \"\"}\n onChange={(e) => handleChange(\"themeRef\", e.target.value || undefined)}\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-primary\"\n placeholder=\"variant name\"\n />\n </div>\n\n <div>\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">Test ID</label>\n <input\n type=\"text\"\n value={node.testId ?? \"\"}\n onChange={(e) => handleChange(\"testId\", e.target.value || undefined)}\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-primary\"\n placeholder=\"data-testid\"\n />\n </div>\n </div>\n </div>\n );\n}\n","import { useCallback, useMemo } from \"react\";\nimport type { UIDLNode } from \"../types\";\n\nexport interface StylePanelProps {\n node: UIDLNode | null;\n onUpdateNode: (nodeId: string, changes: Partial<UIDLNode>) => void;\n className?: string;\n}\n\nconst STYLE_FIELDS = [\n { key: \"display\", label: \"Display\", type: \"text\" as const },\n { key: \"flexDirection\", label: \"Flex Direction\", type: \"select\" as const, options: [\"row\", \"column\", \"row-reverse\", \"column-reverse\"] },\n { key: \"justifyContent\", label: \"Justify Content\", type: \"select\" as const, options: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\", \"space-evenly\"] },\n { key: \"alignItems\", label: \"Align Items\", type: \"select\" as const, options: [\"start\", \"center\", \"end\", \"stretch\", \"baseline\"] },\n { key: \"gap\", label: \"Gap\", type: \"text\" as const },\n { key: \"padding\", label: \"Padding\", type: \"text\" as const },\n { key: \"margin\", label: \"Margin\", type: \"text\" as const },\n { key: \"width\", label: \"Width\", type: \"text\" as const },\n { key: \"height\", label: \"Height\", type: \"text\" as const },\n { key: \"background\", label: \"Background\", type: \"text\" as const },\n { key: \"color\", label: \"Color\", type: \"text\" as const },\n { key: \"fontSize\", label: \"Font Size\", type: \"text\" as const },\n { key: \"fontWeight\", label: \"Font Weight\", type: \"text\" as const },\n { key: \"borderRadius\", label: \"Border Radius\", type: \"text\" as const },\n { key: \"borderWidth\", label: \"Border Width\", type: \"text\" as const },\n { key: \"borderColor\", label: \"Border Color\", type: \"text\" as const },\n { key: \"shadow\", label: \"Shadow\", type: \"text\" as const },\n { key: \"opacity\", label: \"Opacity\", type: \"text\" as const },\n] as const;\n\nexport function StylePanel({ node, onUpdateNode, className }: StylePanelProps) {\n const style = useMemo(() => node?.style ?? {}, [node?.style]);\n\n const handleChange = useCallback(\n (field: string, value: unknown) => {\n if (!node) return;\n const newStyle = { ...style, [field]: value };\n onUpdateNode(node.id, { style: newStyle });\n },\n [node, style, onUpdateNode],\n );\n\n const handleResponsiveChange = useCallback(\n (field: string, breakpoint: string, value: string) => {\n if (!node) return;\n const currentValue = style[field];\n let newValue: unknown;\n\n if (value === \"\" && breakpoint === \"base\") {\n newValue = undefined;\n } else if (value === \"\") {\n newValue = {\n ...(typeof currentValue === \"object\" && currentValue !== null ? currentValue : {}),\n [breakpoint]: undefined,\n };\n Object.keys(newValue as Record<string, unknown>).forEach((key) => {\n if ((newValue as Record<string, unknown>)[key] === undefined) {\n delete (newValue as Record<string, unknown>)[key];\n }\n });\n if (Object.keys(newValue as Record<string, unknown>).length === 0) {\n newValue = undefined;\n }\n } else if (typeof currentValue === \"object\" && currentValue !== null) {\n newValue = { ...(currentValue as Record<string, string>), [breakpoint]: value };\n } else {\n newValue = { base: currentValue as string | undefined, [breakpoint]: value };\n }\n\n const newStyle = { ...style, [field]: newValue };\n onUpdateNode(node.id, { style: newStyle });\n },\n [node, style, onUpdateNode],\n );\n\n if (!node) {\n return (\n <div className={`flex h-full flex-col border-r border-border ${className ?? \"\"}`}>\n <div className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold text-text-primary\">Style</h2>\n </div>\n <div className=\"flex-1 overflow-y-auto p-4\">\n <p className=\"text-sm text-text-secondary\">Select a node to edit its style.</p>\n </div>\n </div>\n );\n }\n\n const renderFieldValue = (field: string, value: unknown) => {\n if (typeof value === \"object\" && value !== null) {\n const responsive = value as Record<string, string>;\n return (\n <div className=\"space-y-2\">\n {[\"base\", \"sm\", \"md\", \"lg\", \"xl\"].map((bp) => (\n <div key={bp} className=\"flex items-center gap-2\">\n <label className=\"w-12 text-xs text-text-muted\">{bp}</label>\n <input\n type=\"text\"\n value={responsive[bp] ?? \"\"}\n onChange={(e) => handleResponsiveChange(field, bp, e.target.value)}\n className=\"flex-1 rounded-md border border-border bg-surface px-2 py-1 text-xs text-text-primary\"\n placeholder={bp === \"base\" ? \"base value\" : `${bp}:value`}\n />\n </div>\n ))}\n </div>\n );\n }\n\n if (typeof value === \"string\") {\n return (\n <input\n type=\"text\"\n value={value}\n onChange={(e) => handleChange(field, e.target.value || undefined)}\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-primary\"\n />\n );\n }\n\n return (\n <input\n type=\"text\"\n value=\"\"\n onChange={(e) => handleChange(field, e.target.value || undefined)}\n className=\"w-full rounded-md border border-border bg-surface px-3 py-1.5 text-sm text-text-primary\"\n placeholder=\"Enter value\"\n />\n );\n };\n\n return (\n <div className={`flex h-full flex-col border-r border-border ${className ?? \"\"}`}>\n <div className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold text-text-primary\">Style</h2>\n <p className=\"mt-1 text-xs text-text-secondary\">{node.type}</p>\n </div>\n <div className=\"flex-1 overflow-y-auto p-4 space-y-4\">\n {STYLE_FIELDS.map((field) => {\n const value = style[field.key];\n if (value === undefined || value === null || value === \"\") return null;\n\n return (\n <div key={field.key}>\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">\n {field.label}\n </label>\n {renderFieldValue(field.key, value)}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","\n\nexport interface ValidationStatusProps {\n errors: Array<{ path: string; message: string; severity: \"error\" | \"warning\" }>;\n className?: string;\n}\n\nexport function ValidationStatus({ errors, className }: ValidationStatusProps) {\n const errorCount = errors.filter((e) => e.severity === \"error\").length;\n const warningCount = errors.filter((e) => e.severity === \"warning\").length;\n\n if (errors.length === 0) {\n return (\n <div className={`flex items-center gap-2 text-sm text-text-secondary ${className ?? \"\"}`}>\n <span className=\"inline-flex h-2 w-2 rounded-full bg-green-500\" />\n No validation errors\n </div>\n );\n }\n\n return (\n <div className={`flex items-center gap-4 text-sm ${className ?? \"\"}`}>\n {errorCount > 0 && (\n <span className=\"flex items-center gap-1.5 text-red-400\">\n <span className=\"inline-flex h-2 w-2 rounded-full bg-red-500\" />\n {errorCount} error{errorCount !== 1 ? \"s\" : \"\"}\n </span>\n )}\n {warningCount > 0 && (\n <span className=\"flex items-center gap-1.5 text-yellow-400\">\n <span className=\"inline-flex h-2 w-2 rounded-full bg-yellow-500\" />\n {warningCount} warning{warningCount !== 1 ? \"s\" : \"\"}\n </span>\n )}\n </div>\n );\n}\n","import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport type { UIDLDocument } from \"../types\";\nimport { DocumentSchema } from \"../schemas/document\";\nimport { createEditorStore } from \"./store\";\nimport { createDocumentState } from \"../state/createDocumentState\";\nimport { Canvas } from \"./Canvas\";\nimport { WidgetPalette } from \"./WidgetPalette\";\nimport { LayerTree } from \"./LayerTree\";\nimport { PropertyPanel } from \"./PropertyPanel\";\nimport { StylePanel } from \"./StylePanel\";\nimport { ValidationStatus } from \"./ValidationStatus\";\nimport { defaultRegistry } from \"../registry/registry\";\nimport type { ApiAllowlist } from \"../actions/interpreter\";\nimport type { CommandHandler, MutationHandler } from \"../types/actions\";\n\nexport interface EditorProps {\n initialDocument?: UIDLDocument;\n /** Host-owned handler for live-preview `mutate` actions; unset means mutations are disabled. */\n mutationHandler?: MutationHandler;\n /** Host-owned handler for live-preview `command` actions; unset means commands are disabled. */\n commandHandler?: CommandHandler;\n /** Hosts the live preview's `api` actions are allowed to call; unset means they're disabled. */\n apiAllowlist?: ApiAllowlist;\n /** Max `api` response body size in bytes before the request is aborted. Default 5MB. */\n apiMaxResponseBytes?: number;\n /** Max number of `api` actions to run concurrently; further calls fail fast. Default 6. */\n apiMaxConcurrentCalls?: number;\n className?: string;\n}\n\nexport function Editor({\n initialDocument,\n mutationHandler,\n commandHandler,\n apiAllowlist,\n apiMaxResponseBytes,\n apiMaxConcurrentCalls,\n className,\n}: EditorProps) {\n const useStore = useMemo(() => createEditorStore(initialDocument), [initialDocument]);\n const state = useStore();\n const [activeTab, setActiveTab] = useState<\"properties\" | \"style\">(\"properties\");\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const document = state.document;\n const selectedNode = useMemo(() => {\n if (!state.selectedNodeId) return null;\n return state.flatNodeMap.get(state.selectedNodeId) ?? null;\n }, [state.flatNodeMap, state.selectedNodeId]);\n\n const useDocumentState = useMemo(\n () => createDocumentState(document.state),\n [document.state],\n );\n const documentState = useDocumentState();\n\n const validateDocument = useCallback(() => {\n const { document: currentDocument, setValidationErrors } = useStore.getState();\n const result = DocumentSchema.safeParse(currentDocument);\n if (!result.success) {\n const errors = (result.error as { issues: Array<{ path: (string | number)[]; message: string }> }).issues.map((err) => ({\n path: err.path.join(\".\"),\n message: err.message,\n severity: \"error\" as const,\n }));\n setValidationErrors(errors);\n } else {\n setValidationErrors([]);\n }\n }, [useStore]);\n\n useEffect(() => {\n const unsubscribe = useStore.subscribe((current, previous) => {\n if (current.document !== previous.document) {\n validateDocument();\n }\n });\n validateDocument();\n return unsubscribe;\n }, [useStore, validateDocument]);\n\n const handleSelectWidget = useCallback(\n (widgetType: string) => {\n if (!state.selectedNodeId) return;\n const selectedNode = state.flatNodeMap.get(state.selectedNodeId);\n if (!selectedNode) return;\n\n const widget = defaultRegistry.get(selectedNode.type);\n const acceptsChildren = widget?.acceptsChildren ?? true;\n\n if (acceptsChildren) {\n state.addChild(state.selectedNodeId, widgetType);\n }\n },\n [state],\n );\n\n const handleSave = useCallback(() => {\n const json = JSON.stringify(state.document, null, 2);\n const blob = new Blob([json], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = window.document.createElement(\"a\");\n a.href = url;\n a.download = `${state.document.name || \"document\"}.json`;\n a.click();\n URL.revokeObjectURL(url);\n }, [state.document]);\n\n const handleLoad = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = (event) => {\n try {\n const parsed = JSON.parse(event.target?.result as string);\n const result = DocumentSchema.safeParse(parsed);\n if (!result.success) {\n const issues = (result.error as { issues: Array<{ path: (string | number)[]; message: string }> }).issues;\n useStore.getState().setValidationErrors(\n issues.map((err) => ({\n path: err.path.join(\".\"),\n message: err.message,\n severity: \"error\" as const,\n })),\n );\n return;\n }\n useStore.getState().setDocument(result.data);\n } catch {\n useStore.getState().setValidationErrors([\n { path: \"file\", message: \"Invalid JSON file\", severity: \"error\" },\n ]);\n }\n };\n reader.readAsText(file);\n e.target.value = \"\";\n },\n [useStore],\n );\n\n const handleMoveNode = useCallback(\n (nodeId: string, targetParentId: string, index?: number) => {\n state.moveNode(nodeId, targetParentId, index);\n },\n [state],\n );\n\n return (\n <div\n className={`flex h-screen w-full flex-col bg-background text-text-primary ${\n state.themeMode === \"dark\" ? \"dark\" : \"\"\n } ${className ?? \"\"}`}\n >\n <header className=\"flex items-center justify-between border-b border-border px-4 py-2\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-lg font-semibold\">uidl-runtime</h1>\n <span className=\"text-sm text-text-secondary\">Editor</span>\n </div>\n <div className=\"flex items-center gap-4\">\n <ValidationStatus errors={state.validationErrors} />\n <div className=\"flex items-center gap-1\">\n <button\n onClick={state.undo}\n disabled={!state.canUndo}\n className=\"rounded-md border border-border px-2 py-1 text-xs disabled:opacity-50\"\n >\n Undo\n </button>\n <button\n onClick={state.redo}\n disabled={!state.canRedo}\n className=\"rounded-md border border-border px-2 py-1 text-xs disabled:opacity-50\"\n >\n Redo\n </button>\n </div>\n <div className=\"flex items-center gap-1\">\n <button\n onClick={handleSave}\n className=\"rounded-md border border-border px-2 py-1 text-xs\"\n >\n Save\n </button>\n <button\n onClick={() => fileInputRef.current?.click()}\n className=\"rounded-md border border-border px-2 py-1 text-xs\"\n >\n Load\n </button>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"application/json\"\n className=\"hidden\"\n onChange={handleLoad}\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <label className=\"text-xs text-text-secondary\">Breakpoint:</label>\n <select\n value={state.activeBreakpoint}\n onChange={(e) => state.setBreakpoint(e.target.value)}\n className=\"rounded-md border border-border bg-surface px-2 py-1 text-sm text-text-primary\"\n >\n <option value=\"base\">Base</option>\n <option value=\"sm\">SM</option>\n <option value=\"md\">MD</option>\n <option value=\"lg\">LG</option>\n <option value=\"xl\">XL</option>\n <option value=\"2xl\">2XL</option>\n </select>\n </div>\n <div className=\"flex items-center gap-2\">\n <label className=\"text-xs text-text-secondary\">Theme:</label>\n <select\n value={state.themeMode}\n onChange={(e) => state.setThemeMode(e.target.value as \"light\" | \"dark\")}\n className=\"rounded-md border border-border bg-surface px-2 py-1 text-sm text-text-primary\"\n >\n <option value=\"light\">Light</option>\n <option value=\"dark\">Dark</option>\n </select>\n </div>\n </div>\n </header>\n <div className=\"flex flex-1 overflow-hidden\">\n <aside className=\"w-64 flex-shrink-0\">\n <WidgetPalette\n onSelectWidget={handleSelectWidget}\n selectedNodeId={state.selectedNodeId}\n />\n </aside>\n <aside className=\"w-64 flex-shrink-0\">\n <LayerTree\n root={document.root}\n selectedNodeId={state.selectedNodeId}\n hoveredNodeId={state.hoveredNodeId}\n onSelectNode={state.selectNode}\n onHoverNode={state.hoverNode}\n onMoveNode={handleMoveNode}\n />\n </aside>\n <main className=\"flex-1 overflow-hidden\">\n <Canvas\n document={document}\n selectedNodeId={state.selectedNodeId}\n hoveredNodeId={state.hoveredNodeId}\n onSelectNode={state.selectNode}\n onHoverNode={state.hoverNode}\n themeMode={state.themeMode}\n stateStore={documentState}\n dataSources={document.dataSources}\n mutationHandler={mutationHandler}\n commandHandler={commandHandler}\n apiAllowlist={apiAllowlist}\n apiMaxResponseBytes={apiMaxResponseBytes}\n apiMaxConcurrentCalls={apiMaxConcurrentCalls}\n />\n </main>\n <aside className=\"w-80 flex-shrink-0\">\n <div className=\"flex h-full flex-col\">\n <div className=\"flex border-b border-border\">\n <button\n onClick={() => setActiveTab(\"properties\")}\n className={`flex-1 px-4 py-2 text-sm font-medium transition-colors ${\n activeTab === \"properties\"\n ? \"border-b-2 border-accent text-accent\"\n : \"text-text-secondary hover:text-text-primary\"\n }`}\n >\n Properties\n </button>\n <button\n onClick={() => setActiveTab(\"style\")}\n className={`flex-1 px-4 py-2 text-sm font-medium transition-colors ${\n activeTab === \"style\"\n ? \"border-b-2 border-accent text-accent\"\n : \"text-text-secondary hover:text-text-primary\"\n }`}\n >\n Style\n </button>\n </div>\n <div className=\"flex-1 overflow-hidden\">\n {activeTab === \"properties\" ? (\n <PropertyPanel\n node={selectedNode}\n onUpdateNode={state.updateNode}\n />\n ) : (\n <StylePanel\n node={selectedNode}\n onUpdateNode={state.updateNode}\n />\n )}\n </div>\n </div>\n </aside>\n </div>\n </div>\n );\n}\n","export type Language = \"id\" | \"en\";\n\nexport const DICTIONARY = {\n id: {\n // General Navigation\n dashboard: \"Dashboard\",\n operations: \"Operasional\",\n inventory: \"Inventori & Stok\",\n accounting: \"Akuntansi & GL\",\n reports: \"Laporan Finansial\",\n controls: \"Kontrol & Audit\",\n settings: \"Pengaturan\",\n playground: \"Playground UIDL\",\n search: \"Cari...\",\n openConsole: \"Buka Konsol\",\n backToCatalog: \"Kembali ke Katalog\",\n\n // Actions\n create: \"Buat Baru\",\n save: \"Simpan\",\n cancel: \"Batal\",\n print: \"Cetak Dokumen\",\n export: \"Ekspor Data\",\n import: \"Impor Data\",\n format: \"Format Kode\",\n copy: \"Salin\",\n delete: \"Hapus\",\n edit: \"Ubah\",\n detail: \"Detail Record\",\n filter: \"Saring\",\n downloadPdf: \"Download PDF\",\n\n // Financial & ERP Terms\n totalReceivables: \"Total Piutang Usaha\",\n totalPayables: \"Total Hutang Usaha\",\n netProfit: \"Laba Bersih\",\n cashBalance: \"Saldo Kas & Bank\",\n debit: \"Debit\",\n credit: \"Kredit\",\n balance: \"Saldo\",\n taxInvoice: \"Faktur Pajak PPN 11%\",\n salesInvoice: \"Faktur Penjualan\",\n purchaseOrder: \"Surat Pesanan Pembelian\",\n billOfMaterials: \"Struktur Bahan Baku (BOM)\",\n workOrder: \"Perintah Kerja (WO)\",\n deviceHistoryRecord: \"Device History Record (DHR)\",\n prescription: \"Salinan Resep Obat\",\n murabahahAgreement: \"Akad Pembiayaan Murabahah\",\n shippingLabel: \"Label Resi Pengiriman\",\n\n // Labels\n customer: \"Pelanggan / Klien\",\n supplier: \"Pemasok / Vendor\",\n status: \"Status\",\n date: \"Tanggal\",\n dueDate: \"Jatuh Tempo\",\n amount: \"Nominal\",\n qty: \"Kuantitas\",\n price: \"Harga Satuan\",\n subtotal: \"Subtotal\",\n tax: \"PPN (11%)\",\n grandTotal: \"Total Keseluruhan\",\n terbilang: \"Terbilang\",\n },\n en: {\n // General Navigation\n dashboard: \"Dashboard\",\n operations: \"Operations\",\n inventory: \"Inventory & Stock\",\n accounting: \"Accounting & GL\",\n reports: \"Financial Reports\",\n controls: \"Controls & Audit\",\n settings: \"Settings\",\n playground: \"UIDL Playground\",\n search: \"Search...\",\n openConsole: \"Open Console\",\n backToCatalog: \"Back to Catalog\",\n\n // Actions\n create: \"Create New\",\n save: \"Save\",\n cancel: \"Cancel\",\n print: \"Print Document\",\n export: \"Export Data\",\n import: \"Import Data\",\n format: \"Format Code\",\n copy: \"Copy\",\n delete: \"Delete\",\n edit: \"Edit\",\n detail: \"Record Detail\",\n filter: \"Filter\",\n downloadPdf: \"Download PDF\",\n\n // Financial & ERP Terms\n totalReceivables: \"Total Receivables\",\n totalPayables: \"Total Payables\",\n netProfit: \"Net Profit\",\n cashBalance: \"Cash & Bank Balance\",\n debit: \"Debit\",\n credit: \"Credit\",\n balance: \"Balance\",\n taxInvoice: \"VAT Tax Invoice 11%\",\n salesInvoice: \"Sales Invoice\",\n purchaseOrder: \"Purchase Order\",\n billOfMaterials: \"Bill of Materials (BOM)\",\n workOrder: \"Work Order (WO)\",\n deviceHistoryRecord: \"Device History Record (DHR)\",\n prescription: \"Medical Prescription\",\n murabahahAgreement: \"Murabahah Financing Contract\",\n shippingLabel: \"Shipping & Packing Slip\",\n\n // Labels\n customer: \"Customer / Client\",\n supplier: \"Supplier / Vendor\",\n status: \"Status\",\n date: \"Date\",\n dueDate: \"Due Date\",\n amount: \"Amount\",\n qty: \"Quantity\",\n price: \"Unit Price\",\n subtotal: \"Subtotal\",\n tax: \"VAT (11%)\",\n grandTotal: \"Grand Total\",\n terbilang: \"In Words\",\n },\n};\n\nexport function t(key: keyof typeof DICTIONARY[\"id\"] | string, lang: Language = \"id\"): string {\n const dict = DICTIONARY[lang] as Record<string, string> | undefined;\n const idDict = DICTIONARY[\"id\"] as Record<string, string>;\n return dict?.[key] ?? idDict[key] ?? key;\n}\n\n/**\n * Resolves a bilingual label object ({ id: string, en: string }) or plain string according to active language.\n */\nexport function localize(label: { id?: string; en?: string } | string | undefined, lang: Language = \"id\"): string {\n if (!label) return \"\";\n if (typeof label === \"string\") return label;\n return (lang === \"id\" ? label.id ?? label.en : label.en ?? label.id) ?? \"\";\n}\n\n/**\n * Formats a number or numeric string to Indonesian Rupiah currency standard (e.g. Rp 1.500.000).\n */\nexport function formatRupiah(amount: number | string, includePrefix = true): string {\n const numeric = typeof amount === \"string\" ? parseFloat(amount.replace(/[^0-9.-]/g, \"\")) || 0 : amount;\n const formatted = new Intl.NumberFormat(\"id-ID\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(numeric);\n\n return includePrefix ? `Rp ${formatted}` : formatted;\n}\n\nconst MONTH_NAMES_ID = [\n \"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\",\n \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"\n];\n\nconst MONTH_NAMES_EN = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n];\n\n/**\n * Formats date string (YYYY-MM-DD or ISO) into formatted Indonesian or English date text.\n */\nexport function formatIndonesianDate(dateInput: string | Date, lang: Language = \"id\"): string {\n const date = typeof dateInput === \"string\" ? new Date(dateInput) : dateInput;\n if (isNaN(date.getTime())) return String(dateInput);\n\n const day = date.getDate();\n const month = lang === \"id\" ? MONTH_NAMES_ID[date.getMonth()] : MONTH_NAMES_EN[date.getMonth()];\n const year = date.getFullYear();\n\n return `${day} ${month} ${year}`;\n}\n\n/**\n * Converts Indonesian numeric amount into canonical legal words (Terbilang Rupiah).\n * Example: 1540000 -> \"Satu Juta Lima Ratus Empat Puluh Ribu Rupiah\"\n */\nexport function formatTerbilang(amountInput: number | string): string {\n const numeric = Math.floor(\n typeof amountInput === \"string\" ? parseFloat(amountInput.replace(/[^0-9.-]/g, \"\")) || 0 : amountInput\n );\n\n if (numeric === 0) return \"Nol Rupiah\";\n if (numeric < 0) return `Minus ${formatTerbilang(Math.abs(numeric))}`;\n\n const SATUAN = [\"\", \"Satu\", \"Dua\", \"Tiga\", \"Empat\", \"Lima\", \"Enam\", \"Tujuh\", \"Delapan\", \"Sembilan\", \"Sepuluh\", \"Sebelas\"];\n\n function bilang(n: number): string {\n if (n < 12) {\n return SATUAN[n];\n } else if (n < 20) {\n return `${SATUAN[n - 10]} Belas`;\n } else if (n < 100) {\n const sisa = n % 10;\n return `${SATUAN[Math.floor(n / 10)]} Puluh ${sisa > 0 ? SATUAN[sisa] : \"\"}`.trim();\n } else if (n < 200) {\n return `Seratus ${bilang(n - 100)}`.trim();\n } else if (n < 1000) {\n return `${SATUAN[Math.floor(n / 100)]} Ratus ${bilang(n % 100)}`.trim();\n } else if (n < 2000) {\n return `Seribu ${bilang(n - 1000)}`.trim();\n } else if (n < 1000000) {\n return `${bilang(Math.floor(n / 1000))} Ribu ${bilang(n % 1000)}`.trim();\n } else if (n < 1000000000) {\n return `${bilang(Math.floor(n / 1000000))} Juta ${bilang(n % 1000000)}`.trim();\n } else if (n < 1000000000000) {\n return `${bilang(Math.floor(n / 1000000000))} Miliar ${bilang(n % 1000000000)}`.trim();\n } else {\n return `${bilang(Math.floor(n / 1000000000000))} Triliun ${bilang(n % 1000000000000)}`.trim();\n }\n }\n\n return `${bilang(numeric)} Rupiah`;\n}\n","import type { UIDLDocument } from \"../types\";\n\nexport interface AIPromptTemplate {\n id: string;\n name: string;\n category: string;\n document: UIDLDocument;\n}\n\n/**\n * Service that analyzes natural language prompts and generates schema-compliant UIDL documents.\n */\nexport function generateUidlFromPrompt(prompt: string): UIDLDocument {\n const q = prompt.toLowerCase();\n\n if (q.includes(\"rental\") || q.includes(\"mobil\") || q.includes(\"armada\") || q.includes(\"vehicle\")) {\n return {\n version: \"1.0.0\",\n id: \"ai-rental-fleet-console\",\n name: \"Nusantara Car Rental & Fleet Operations\",\n dataSources: {\n fleet: [\n { noPlat: \"B 1024 SKA\", tipe: \"Innova Zenix Hybrid\", status: \"Disewa (Active)\", customer: \"PT Karya Abadi\", tarifHari: \"Rp 850.000\", pengembalian: \"24 Aug 2026\" },\n { noPlat: \"B 2488 WZA\", tipe: \"Avanza Veloz 1.5\", status: \"Tersedia (Ready)\", customer: \"-\", tarifHari: \"Rp 450.000\", pengembalian: \"-\" },\n { noPlat: \"B 9912 TYU\", tipe: \"Fortuner GR Sport\", status: \"Servis Berkala\", customer: \"-\", tarifHari: \"Rp 1.200.000\", pengembalian: \"22 Aug 2026\" },\n ],\n chart: [\n { label: \"Senin\", value: 85 },\n { label: \"Selasa\", value: 92 },\n { label: \"Rabu\", value: 88 },\n { label: \"Kamis\", value: 94 },\n { label: \"Jumat\", value: 100 },\n { label: \"Sabtu\", value: 98 },\n { label: \"Minggu\", value: 90 },\n ],\n },\n root: {\n id: \"root-rental\",\n type: \"Column\",\n style: { gap: \"gap-4\", padding: \"p-6\" },\n children: [\n {\n id: \"header-card\",\n type: \"Column\",\n style: { padding: \"p-4\", borderWidth: \"border\", borderColor: \"{primitives.color.border}\", borderRadius: \"{primitives.radius.md}\", background: \"{primitives.color.surface}\" },\n children: [\n { id: \"title\", type: \"Text\", props: { value: \"Sistem Manajemen Rental Mobil & Armada\", variant: \"heading\" }, style: { fontSize: \"text-xl\", fontWeight: \"font-bold\" } },\n { id: \"desc\", type: \"Text\", props: { value: \"Monitoring ketersediaan unit armada, jadwal sewa, dan utilisasi pendapatan\", variant: \"paragraph\" }, style: { fontSize: \"text-xs\", color: \"{primitives.color.textSecondary}\" } },\n ],\n },\n {\n id: \"fleet-table\",\n type: \"DataTable\",\n style: { width: \"w-full\" },\n props: {\n title: \"Daftar Armada & Status Booking Aktif\",\n dataSource: \"fleet\",\n columns: [\n { key: \"noPlat\", label: \"No. Polisi\" },\n { key: \"tipe\", label: \"Model Kendaraan\" },\n { key: \"status\", label: \"Status Unit\" },\n { key: \"customer\", label: \"Penyewa\" },\n { key: \"tarifHari\", label: \"Tarif / Hari\" },\n { key: \"pengembalian\", label: \"Jadwal Kembali\" },\n ],\n rowActions: [{ label: \"Detail Sewa\" }],\n },\n },\n ],\n },\n };\n }\n\n if (q.includes(\"payroll\") || q.includes(\"gaji\") || q.includes(\"karyawan\") || q.includes(\"bpjs\")) {\n return {\n version: \"1.0.0\",\n id: \"ai-payroll-hr-console\",\n name: \"Sistem Penggajian & Payroll Karyawan (HRIS)\",\n dataSources: {\n payroll: [\n { nik: \"EMP-041\", nama: \"Bambang Sudiro\", divisi: \"Engineering\", gapok: \"Rp 14.000.000\", tunjangan: \"Rp 3.500.000\", bpjs: \"Rp 700.000\", thp: \"Rp 16.800.000\", status: \"Transfer Success\" },\n { nik: \"EMP-042\", nama: \"Dewi Lestari\", divisi: \"Finance & Tax\", gapok: \"Rp 11.500.000\", tunjangan: \"Rp 2.800.000\", bpjs: \"Rp 575.000\", thp: \"Rp 13.725.000\", status: \"Transfer Success\" },\n { nik: \"EMP-043\", nama: \"Rahmat Hidayat\", divisi: \"Supply Chain\", gapok: \"Rp 8.500.000\", tunjangan: \"Rp 2.000.000\", bpjs: \"Rp 425.000\", thp: \"Rp 10.075.000\", status: \"Pending Approval\" },\n ],\n },\n root: {\n id: \"root-payroll\",\n type: \"Column\",\n style: { gap: \"gap-4\", padding: \"p-6\" },\n children: [\n {\n id: \"header-card\",\n type: \"Column\",\n style: { padding: \"p-4\", borderWidth: \"border\", borderColor: \"{primitives.color.border}\", borderRadius: \"{primitives.radius.md}\", background: \"{primitives.color.surface}\" },\n children: [\n { id: \"title\", type: \"Text\", props: { value: \"Slip & Rekapitulasi Gaji Karyawan (Payroll)\", variant: \"heading\" }, style: { fontSize: \"text-xl\", fontWeight: \"font-bold\" } },\n { id: \"desc\", type: \"Text\", props: { value: \"Perhitungan take-home-pay, potongan BPJS Ketenagakerjaan & Kesehatan\", variant: \"paragraph\" }, style: { fontSize: \"text-xs\", color: \"{primitives.color.textSecondary}\" } },\n ],\n },\n {\n id: \"payroll-table\",\n type: \"DataTable\",\n style: { width: \"w-full\" },\n props: {\n title: \"Daftar Payroll Karyawan Periode Aktif\",\n dataSource: \"payroll\",\n columns: [\n { key: \"nik\", label: \"NIK Karyawan\" },\n { key: \"nama\", label: \"Nama Lengkap\" },\n { key: \"divisi\", label: \"Divisi\" },\n { key: \"gapok\", label: \"Gaji Pokok\" },\n { key: \"bpjs\", label: \"Potongan BPJS\" },\n { key: \"thp\", label: \"Take Home Pay (THP)\" },\n { key: \"status\", label: \"Status Slip\" },\n ],\n rowActions: [{ label: \"Slip PDF\" }],\n },\n },\n ],\n },\n };\n }\n\n if (q.includes(\"hotel\") || q.includes(\"kamar\") || q.includes(\"penginapan\") || q.includes(\"occupancy\")) {\n return {\n version: \"1.0.0\",\n id: \"ai-hotel-room-console\",\n name: \"Grand Nusantara Hotel - Room Operations\",\n dataSources: {\n rooms: [\n { noKamar: \"Room 301\", tipe: \"Deluxe King Bed\", status: \"Occupied (In-house)\", tamu: \"Mr. Arthur Pendelton\", tarif: \"Rp 1.450.000\", checkOut: \"23 Aug 2026\" },\n { noKamar: \"Room 302\", tipe: \"Executive Suite\", status: \"Clean & Ready\", tamu: \"-\", tarif: \"Rp 2.800.000\", checkOut: \"-\" },\n { noKamar: \"Room 303\", tipe: \"Deluxe Twin Bed\", status: \"Housekeeping\", tamu: \"-\", tarif: \"Rp 1.350.000\", checkOut: \"Today 12:00\" },\n ],\n },\n root: {\n id: \"root-hotel\",\n type: \"Column\",\n style: { gap: \"gap-4\", padding: \"p-6\" },\n children: [\n {\n id: \"header-card\",\n type: \"Column\",\n style: { padding: \"p-4\", borderWidth: \"border\", borderColor: \"{primitives.color.border}\", borderRadius: \"{primitives.radius.md}\", background: \"{primitives.color.surface}\" },\n children: [\n { id: \"title\", type: \"Text\", props: { value: \"Front Desk & Room Inventory Management\", variant: \"heading\" }, style: { fontSize: \"text-xl\", fontWeight: \"font-bold\" } },\n { id: \"desc\", type: \"Text\", props: { value: \"Status kamar, reservasi tamu, dan kontrol kebersihan housekeeping\", variant: \"paragraph\" }, style: { fontSize: \"text-xs\", color: \"{primitives.color.textSecondary}\" } },\n ],\n },\n {\n id: \"room-table\",\n type: \"DataTable\",\n style: { width: \"w-full\" },\n props: {\n title: \"Status Kamar & Tamu Check-in\",\n dataSource: \"rooms\",\n columns: [\n { key: \"noKamar\", label: \"No. Kamar\" },\n { key: \"tipe\", label: \"Tipe Room\" },\n { key: \"status\", label: \"Status Kamar\" },\n { key: \"tamu\", label: \"Nama Tamu\" },\n { key: \"tarif\", label: \"Tarif / Malam\" },\n { key: \"checkOut\", label: \"Jadwal Check-Out\" },\n ],\n rowActions: [{ label: \"Key Card\" }],\n },\n },\n ],\n },\n };\n }\n\n // Generic fallback synthesizer based on custom user prompt\n const cleanTitle = prompt.length > 3 ? prompt : \"Custom Operational Console\";\n return {\n version: \"1.0.0\",\n id: `ai-custom-${Date.now()}`,\n name: cleanTitle,\n dataSources: {\n items: [\n { id: \"REC-001\", name: \"Operasional Item A\", kategori: \"Kategori Utama\", nilai: \"Rp 24.500.000\", status: \"Active / Verified\" },\n { id: \"REC-002\", name: \"Operasional Item B\", kategori: \"Kategori Sekunder\", nilai: \"Rp 12.800.000\", status: \"In Process\" },\n { id: \"REC-003\", name: \"Operasional Item C\", kategori: \"Kategori Penunjang\", nilai: \"Rp 8.200.000\", status: \"Pending Review\" },\n ],\n },\n root: {\n id: \"root-custom\",\n type: \"Column\",\n style: { gap: \"gap-4\", padding: \"p-6\" },\n children: [\n {\n id: \"header-card\",\n type: \"Column\",\n style: { padding: \"p-4\", borderWidth: \"border\", borderColor: \"{primitives.color.border}\", borderRadius: \"{primitives.radius.md}\", background: \"{primitives.color.surface}\" },\n children: [\n { id: \"title\", type: \"Text\", props: { value: cleanTitle, variant: \"heading\" }, style: { fontSize: \"text-xl\", fontWeight: \"font-bold\" } },\n { id: \"desc\", type: \"Text\", props: { value: \"Generated dynamically via AI Natural Language Synthesizer\", variant: \"paragraph\" }, style: { fontSize: \"text-xs\", color: \"{primitives.color.textSecondary}\" } },\n ],\n },\n {\n id: \"main-table\",\n type: \"DataTable\",\n style: { width: \"w-full\" },\n props: {\n title: \"Data Records & Transaksi\",\n dataSource: \"items\",\n columns: [\n { key: \"id\", label: \"ID Referensi\" },\n { key: \"name\", label: \"Nama Transaksi\" },\n { key: \"kategori\", label: \"Kategori\" },\n { key: \"nilai\", label: \"Nilai Nominal\" },\n { key: \"status\", label: \"Status\" },\n ],\n rowActions: [{ label: \"Detail\" }],\n },\n },\n ],\n },\n };\n}\n","/**\n * Public recipe / compiler contracts — free of demo, company, and host-specific code.\n *\n * This is the *specification* layer. It defines the\n * vocabulary a host (the reference app, the tests) and a compiler share\n * without either side importing the other's domain data, demo datasets,\n * company fixtures, or tenant credentials.\n *\n * Why this file exists:\n * - `packages/templates/src/domain` holds *one* concrete meta shape\n * (DoctypeMeta) bound to the uidl-runtime reference datasets. It is the\n * *consumer* of this contract, not the contract itself.\n * - host's `ErpModuleSpec` is a *different* concrete meta shape bound to\n * capability packs. It will be *mapped* to this contract, not\n * imported here.\n * - A public compiler must not know about `ShoeCompany`, `Meridian`,\n * `ErpModuleSpec`, `module.records`, or any tenant id. Host policy and\n * route decisions travel in `HostCapabilities` / `RoutePolicy` / `UiPolicy`\n * instead.\n *\n * Dependency rule: this file may only import from `../types` (UIDL) and\n * `../utils/i18n` (Language). It MUST NOT import from\n * `../../templates/**`, `@host-app/**`, or any demo / company fixture.\n */\n\nimport type { UIDLDocument } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport type { CellFormat } from \"../utils/listCell\";\n\n// ---------------------------------------------------------------------------\n// Recipe identity\n// ---------------------------------------------------------------------------\n\n/** Seven recipes the public compiler must support */\nexport type PageRecipe =\n | \"list\"\n | \"form\"\n | \"report\"\n | \"dashboard\"\n | \"settings\"\n | \"tree\"\n | \"wizard\";\n\nexport const PAGE_RECIPES: readonly PageRecipe[] = [\n \"list\",\n \"form\",\n \"report\",\n \"dashboard\",\n \"settings\",\n \"tree\",\n \"wizard\",\n] as const;\n\nexport function isPageRecipe(value: unknown): value is PageRecipe {\n return typeof value === \"string\" && (PAGE_RECIPES as readonly string[]).includes(value);\n}\n\n// ---------------------------------------------------------------------------\n// Shared primitives — intentionally small, tenant-free\n// ---------------------------------------------------------------------------\n\nexport type LocalizedText = { id: string; en: string };\n\nexport type FieldWidget =\n | \"TextField\"\n | \"Textarea\"\n | \"Select\"\n | \"RadioGroup\"\n | \"Checkbox\"\n | \"Switch\"\n | \"Slider\"\n | \"Link\"\n | \"Currency\"\n | \"Date\"\n | \"Table\";\n\nexport interface FieldOption {\n value: string;\n label: string;\n}\n\n/**\n * A Link field's lookup target. `valueKey`/`labelKey` say how a row of that doctype becomes an\n * option — the rows come from the host's query and carry the target's own keys, not\n * `value`/`label`, so without them a Link rendered as an empty select.\n */\nexport interface LinkTarget {\n doctype: string;\n valueKey?: string;\n labelKey?: string;\n}\n\nexport interface FieldMeta {\n key: string;\n label: LocalizedText;\n widget: FieldWidget;\n /**\n * How the value is *printed*, when that differs from what the widget implies. Meridian keeps\n * the two apart: a Float and a Currency both edit as a number box, but only Currency prints\n * with a symbol — so a \"Rate %\" mapped to the Currency widget rendered as `IDR 2`.\n * Unset, the list recipe infers the format from `widget`.\n */\n format?: CellFormat;\n required?: boolean;\n readOnly?: boolean;\n options?: FieldOption[] | LinkTarget;\n placeholder?: string | LocalizedText;\n default?: unknown;\n section?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Per-recipe meta — generic, company-agnostic\n// ---------------------------------------------------------------------------\n\nexport interface ListColumn {\n field: string;\n width?: string;\n align?: \"left\" | \"right\" | \"center\";\n}\n\nexport interface ListFilter {\n field: string;\n widget: \"Select\" | \"TextField\" | \"DateRange\";\n label?: LocalizedText;\n options?: FieldOption[];\n}\n\nexport interface ListSummary {\n label: LocalizedText;\n agg: \"sum\" | \"count\" | \"avg\";\n field: string;\n}\n\nexport interface ListPageMeta {\n name: string;\n label: LocalizedText;\n titleField: string;\n fields: FieldMeta[];\n columns: ListColumn[];\n filters?: ListFilter[];\n defaultSort: { field: string; dir: \"asc\" | \"desc\" };\n pageSize?: number;\n statusField?: string;\n summaries?: ListSummary[];\n}\n\nexport interface StateTransition {\n name: string;\n label: LocalizedText;\n from: string[];\n to: string;\n confirm?: LocalizedText;\n}\n\nexport interface DocumentStates {\n field: string;\n values: string[];\n initial: string;\n transitions: StateTransition[];\n}\n\nexport interface ChildTableRef {\n field: string;\n doctype: string;\n}\n\nexport interface FormPageMeta {\n name: string;\n label: LocalizedText;\n titleField: string;\n fields: FieldMeta[];\n states?: DocumentStates;\n childTables?: ChildTableRef[];\n}\n\nexport interface ReportColumn {\n key: string;\n label: LocalizedText | string;\n align?: \"left\" | \"right\" | \"center\";\n width?: string;\n /**\n * How the value is printed — the same ListCell rule a list column follows. A report's\n * money column is money: without this a General Ledger printed `1500000` beside a reference\n * that shows `Rp 1.500.000`.\n */\n format?: CellFormat;\n}\n\nexport interface ReportFilter {\n field: string;\n label: LocalizedText;\n widget: \"Select\" | \"TextField\" | \"DateRange\";\n options?: FieldOption[];\n default?: unknown;\n}\n\nexport interface ReportPageMeta {\n name: string;\n label: LocalizedText;\n columns: ReportColumn[];\n dataSource: string | Array<Record<string, unknown>> | { $query: unknown };\n filters?: ReportFilter[];\n /**\n * A headline figure. Give it `agg`/`field` to compute it from the rows the report loaded —\n * a literal `value` is only for a figure the host already knows, and a report that declared\n * `value: 0` printed a hard zero next to rows that plainly summed to more.\n */\n summaries?: Array<{ label: LocalizedText; value?: string | number; agg?: \"sum\" | \"count\" | \"avg\"; field?: string; format?: CellFormat }>;\n}\n\nexport interface DashboardKpi {\n label: LocalizedText;\n value: string | number;\n}\n\nexport interface DashboardChart {\n id: string;\n title: LocalizedText;\n type: \"bar\" | \"line\" | \"donut\";\n xKey: string;\n yKey: string;\n dataSource: string | Array<Record<string, unknown>>;\n style?: Record<string, unknown>;\n}\n\nexport interface DashboardShortcut {\n doctype: string;\n label: LocalizedText;\n description?: LocalizedText;\n route?: string;\n}\n\nexport interface DashboardPageMeta {\n name: string;\n label: LocalizedText;\n kpis?: DashboardKpi[];\n charts?: DashboardChart[];\n shortcuts?: DashboardShortcut[];\n dataSources?: Record<string, unknown>;\n}\n\nexport interface SettingsField extends FieldMeta {\n group?: string;\n}\n\nexport interface SettingsSection {\n id: string;\n label: LocalizedText;\n fields: SettingsField[];\n}\n\nexport interface SettingsPageMeta {\n name: string;\n label: LocalizedText;\n sections: SettingsSection[];\n}\n\nexport interface TreeNode {\n key: string;\n label: LocalizedText;\n children?: TreeNode[];\n}\n\nexport interface TreePageMeta {\n name: string;\n label: LocalizedText;\n titleField: string;\n fields: FieldMeta[];\n nodes: TreeNode[];\n parentField?: string;\n}\n\nexport interface WizardStep {\n id: string;\n label: LocalizedText;\n fields: FieldMeta[];\n}\n\nexport interface WizardPageMeta {\n name: string;\n label: LocalizedText;\n steps: WizardStep[];\n}\n\nexport type RecipeMetaMap = {\n list: ListPageMeta;\n form: FormPageMeta;\n report: ReportPageMeta;\n dashboard: DashboardPageMeta;\n settings: SettingsPageMeta;\n tree: TreePageMeta;\n wizard: WizardPageMeta;\n};\n\n// ---------------------------------------------------------------------------\n// Host & policy — what a host injects, not what a document invents\n// ---------------------------------------------------------------------------\n\nexport interface QueryCapability {\n collection: string;\n filterFields?: string[];\n sortableFields?: string[];\n}\n\nexport interface MutationCapability {\n collection: string;\n operations: Array<\"create\" | \"update\" | \"delete\" | \"transition\">;\n transitions?: string[];\n}\n\n/**\n * Host-owned allowlist. The compiler MUST NOT emit a `$query` collection,\n * `mutate` collection, or `command` name that is not in this manifest.\n * Unknown values fail closed (validation error, not silent render).\n */\nexport interface HostCapabilities {\n /** Allowed `$query.collection` values (e.g. \"invoices\", \"customers\"). */\n collections: string[];\n /** Allowed `command` names (e.g. \"workspace.rag.search\"). */\n commands: string[];\n /** Allowed `mutate.collection` values — if omitted, same as `collections`. */\n mutationCollections?: string[];\n /** Allowed state transition names across all doctypes (optional strict gate). */\n transitions?: string[];\n /** Per-collection query allowlist — if provided, compiler validates filter/sort fields. */\n queries?: QueryCapability[];\n /** Per-collection mutation allowlist — if provided, compiler validates operations. */\n mutations?: MutationCapability[];\n /** Optional hard caps the compiler must respect. */\n limits?: {\n maxPageSize?: number;\n maxFilters?: number;\n };\n}\n\nexport interface UiPolicy {\n lang?: Language;\n density?: \"compact\" | \"comfortable\";\n theme?: string;\n /**\n * ISO 4217 code for money columns/fields. Meridian formats currency with the company's own\n * currency; a host that has one declares it here. Left unset, money prints as a grouped\n * number with no symbol rather than guessing one.\n */\n currency?: string;\n}\n\nexport interface RoutePolicy {\n /** Base for list pages, e.g. \"/app/acme/list\". */\n listBase?: string;\n /** Base for form/edit pages, e.g. \"/app/acme/edit\". */\n formBase?: string;\n /** Base for report pages, e.g. \"/app/acme/report\". */\n reportBase?: string;\n /** Optional custom resolver — if provided, compiler must call it instead of default join. */\n resolveListRoute?: (meta: { name: string }) => string;\n resolveFormRoute?: (meta: { name: string }, id: string) => string;\n resolveReportRoute?: (meta: { name: string }) => string;\n}\n\nexport interface ResponsivePolicy {\n breakpoints?: { sm?: number; md?: number; lg?: number; xl?: number };\n}\n\n// ---------------------------------------------------------------------------\n// Compiler input / output\n// ---------------------------------------------------------------------------\n\nexport type CompilePageInputFor<R extends PageRecipe> = {\n recipe: R;\n meta: RecipeMetaMap[R];\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n responsivePolicy?: ResponsivePolicy;\n};\n\nexport type CompilePageInput =\n | CompilePageInputFor<\"list\">\n | CompilePageInputFor<\"form\">\n | CompilePageInputFor<\"report\">\n | CompilePageInputFor<\"dashboard\">\n | CompilePageInputFor<\"settings\">\n | CompilePageInputFor<\"tree\">\n | CompilePageInputFor<\"wizard\">;\n\nexport type CompilePageResult = UIDLDocument;\n\nexport interface PageCompiler {\n /** Deterministic, pure: same input → byte-identical UIDLDocument. */\n compilePage(input: CompilePageInput): CompilePageResult;\n}\n\n// ---------------------------------------------------------------------------\n// Validation helpers — host-capability gate (fail-closed)\n// ---------------------------------------------------------------------------\n\nexport type CapabilityIssue = {\n code: \"unknown_collection\" | \"unknown_command\" | \"unknown_transition\" | \"limit_exceeded\";\n message: string;\n path: string;\n};\n\nexport function validateHostCapabilities(\n input: CompilePageInput,\n): CapabilityIssue[] {\n const issues: CapabilityIssue[] = [];\n const caps = input.hostCapabilities;\n\n // Validate collections referenced by the meta are allowlisted.\n // List recipe: its `meta.name` will become the $query collection.\n // Report recipe: if dataSource is a $query, its collection must be allowlisted.\n const collections = new Set(caps.collections);\n const mutationCollections = new Set(caps.mutationCollections ?? caps.collections);\n\n if (input.recipe === \"list\" || input.recipe === \"form\") {\n const name = (input.meta as ListPageMeta | FormPageMeta).name;\n if (!collections.has(name) && !mutationCollections.has(name)) {\n issues.push({\n code: \"unknown_collection\",\n path: \"meta.name\",\n message: `collection \"${name}\" is not in hostCapabilities.collections`,\n });\n }\n }\n\n if (input.recipe === \"report\") {\n const reportMeta = input.meta as ReportPageMeta;\n const ds = reportMeta.dataSource as unknown;\n if (ds && typeof ds === \"object\" && \"$query\" in (ds as Record<string, unknown>)) {\n const coll = ((ds as { $query: { collection?: unknown } }).$query.collection as string) ?? \"\";\n if (coll && !collections.has(coll)) {\n issues.push({\n code: \"unknown_collection\",\n path: \"meta.dataSource.$query.collection\",\n message: `report collection \"${coll}\" is not in hostCapabilities.collections`,\n });\n }\n }\n }\n\n if (caps.limits?.maxPageSize !== undefined && input.recipe === \"list\") {\n const pageSize = (input.meta as ListPageMeta).pageSize ?? 20;\n if (pageSize > caps.limits.maxPageSize) {\n issues.push({\n code: \"limit_exceeded\",\n path: \"meta.pageSize\",\n message: `pageSize ${pageSize} exceeds hostCapabilities.limits.maxPageSize ${caps.limits.maxPageSize}`,\n });\n }\n }\n\n if (caps.limits?.maxFilters !== undefined && input.recipe === \"list\") {\n const count = (input.meta as ListPageMeta).filters?.length ?? 0;\n if (count > caps.limits.maxFilters) {\n issues.push({\n code: \"limit_exceeded\",\n path: \"meta.filters\",\n message: `filters count ${count} exceeds hostCapabilities.limits.maxFilters ${caps.limits.maxFilters}`,\n });\n }\n }\n\n // if queries allowlist is provided, validate filter/sort fields per collection\n if (caps.queries && input.recipe === \"list\") {\n const meta = input.meta as ListPageMeta;\n const q = caps.queries.find((qq) => qq.collection === meta.name);\n if (q) {\n for (const filter of meta.filters ?? []) {\n if (q.filterFields && !q.filterFields.includes(filter.field)) {\n issues.push({\n code: \"unknown_collection\",\n path: `meta.filters.${filter.field}`,\n message: `filter field \"${filter.field}\" not allowlisted for collection \"${meta.name}\" in hostCapabilities.queries`,\n });\n }\n }\n if (q.sortableFields && !q.sortableFields.includes(meta.defaultSort.field)) {\n issues.push({\n code: \"unknown_collection\",\n path: \"meta.defaultSort.field\",\n message: `sort field \"${meta.defaultSort.field}\" not allowlisted for collection \"${meta.name}\"`,\n });\n }\n }\n }\n\n if (caps.queries && input.recipe === \"report\") {\n const reportMeta = input.meta as ReportPageMeta;\n const ds = reportMeta.dataSource as unknown;\n if (ds && typeof ds === \"object\" && \"$query\" in (ds as Record<string, unknown>)) {\n const coll = ((ds as { $query: { collection?: unknown } }).$query.collection as string) ?? \"\";\n const q = caps.queries.find((qq) => qq.collection === coll);\n if (q && reportMeta.filters) {\n for (const filter of reportMeta.filters) {\n if (q.filterFields && !q.filterFields.includes(filter.field)) {\n issues.push({\n code: \"unknown_collection\",\n path: `meta.filters.${filter.field}`,\n message: `report filter field \"${filter.field}\" not allowlisted for collection \"${coll}\"`,\n });\n }\n }\n }\n }\n }\n\n // Link target collections must be allowlisted (scoped lookup)\n if (input.recipe === \"form\" || input.recipe === \"settings\" || input.recipe === \"wizard\") {\n const fields =\n input.recipe === \"form\"\n ? (input.meta as FormPageMeta).fields\n : input.recipe === \"settings\"\n ? (input.meta as SettingsPageMeta).sections.flatMap((s) => s.fields)\n : (input.meta as WizardPageMeta).steps.flatMap((s) => s.fields);\n for (const field of fields as Array<{ widget: string; key: string; options?: unknown; label: unknown }>) {\n if (field.widget === \"Link\") {\n const linkDoctype =\n field.options && typeof field.options === \"object\" && \"doctype\" in (field.options as Record<string, unknown>)\n ? (field.options as { doctype: string }).doctype\n : (field as unknown as { linkDoctype?: string }).linkDoctype;\n if (linkDoctype && !collections.has(linkDoctype)) {\n issues.push({\n code: \"unknown_collection\",\n path: `meta.fields.${field.key}.linkDoctype`,\n message: `Link target collection \"${linkDoctype}\" for field \"${field.key}\" not in hostCapabilities.collections`,\n });\n }\n }\n }\n }\n\n return issues;\n}\n\n// ---------------------------------------------------------------------------\n// Semantic ID — stable across recompiles\n// ---------------------------------------------------------------------------\n\n/**\n * Deterministic node id for a field/control derived only from recipe + meta\n * identity, not from file paths or array order. Unchanged fields keep the\n * same id after a patch, so incremental UIDL patching can preserve\n * state and focus.\n */\nexport function semanticNodeId(\n recipe: PageRecipe,\n metaName: string,\n fieldKey: string,\n): string {\n return `${recipe}-${metaName}-field-${fieldKey}`;\n}\n\nexport function semanticListNodeIds(metaName: string) {\n return {\n search: `list-${metaName}-search`,\n table: `list-${metaName}-table`,\n page: `list-${metaName}-page`,\n } as const;\n}\n","/**\n * Public list recipe — free of demo, company, and host-specific code.\n *\n * Extracted from `packages/templates/src/domain/generators/buildListPage.ts`\n * but now typed against the public `ListPageMeta` / `HostCapabilities`\n * contracts from `./types.ts` instead of `DoctypeMeta`.\n *\n * No demo dataset, company fixture, or host `ErpModuleSpec` is imported.\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport type { CellFormat } from \"../utils/listCell\";\nimport {\n semanticListNodeIds,\n validateHostCapabilities,\n type FieldWidget,\n type HostCapabilities,\n type ListPageMeta,\n type RoutePolicy,\n type UiPolicy,\n} from \"./types.js\";\n\nexport interface CompileListOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n initialState?: Record<string, unknown>;\n rowActions?: Array<{ label: string; event?: string }>;\n createNewActions?: Array<Record<string, unknown>>;\n rowOpenActions?: Array<Record<string, unknown>>;\n extraHeaderActions?: UIDLNode[];\n extraFilterActions?: UIDLNode[];\n}\n\nconst BORDER_COLOR = \"{primitives.color.border}\";\nconst TEXT_SECONDARY = \"{primitives.color.text-secondary}\";\n\n/**\n * Maps a field's editor widget to how its value is *printed* in a list — the split Meridian\n * makes between a Control and `the column format rule`. `statusField` wins over the widget because a status\n * is authored as a Select but rendered as a StatusPill.\n */\nfunction cellFormatFor(\n field: string,\n fieldMeta: { widget?: FieldWidget; format?: CellFormat } | undefined,\n statusField: string | undefined,\n): CellFormat {\n if (statusField && field === statusField) return \"status\";\n // An explicit format wins: only the host knows whether a number box holds money or a rate.\n if (fieldMeta?.format) return fieldMeta.format;\n const widget = fieldMeta?.widget;\n if (widget === \"Currency\") return \"currency\";\n if (widget === \"Date\") return \"date\";\n if (widget === \"Checkbox\" || widget === \"Switch\") return \"check\";\n return \"text\";\n}\n\n/**\n * The print format for a summary figure, taken from the field it aggregates. A summed money\n * column stays money; anything else is a plain number, never a raw integer string.\n */\nfunction summaryFormat(field: string, meta: ListPageMeta): { format: CellFormat } {\n const fieldMeta = meta.fields.find((item) => item.key === field);\n if (fieldMeta?.format) return { format: fieldMeta.format === \"integer\" ? \"integer\" : fieldMeta.format };\n return { format: fieldMeta?.widget === \"Currency\" ? \"currency\" : \"number\" };\n}\n\nexport function compileListPage(\n meta: ListPageMeta,\n options: CompileListOptions,\n): UIDLDocument {\n // Fail-closed host gate — matches validateHostCapabilities\n const gateInput = {\n recipe: \"list\" as const,\n meta,\n hostCapabilities: options.hostCapabilities,\n };\n const issues = validateHostCapabilities(gateInput);\n if (issues.length > 0) {\n throw new Error(\n `compileListPage: hostCapabilities rejected: ${issues.map((i) => i.message).join(\"; \")}`,\n );\n }\n\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n const docId = options.docId ?? `list-${meta.name.toLowerCase()}`;\n const title = meta.label[lang] ?? meta.name;\n const ids = semanticListNodeIds(meta.name);\n\n const listBase = options.routePolicy?.listBase ?? \"/app/list\";\n const formBase = options.routePolicy?.formBase ?? \"/app/edit\";\n const newRoute = options.routePolicy?.resolveListRoute\n ? options.routePolicy.resolveListRoute(meta)\n : `${listBase}/${meta.name}/new`.replace(\"//\", \"/\");\n // editRoute pattern — the table's onOpen navigates to event.route\n // which core renderer resolves via adapter, but we keep a deterministic default\n const editRoutePattern = options.routePolicy?.resolveFormRoute\n ? options.routePolicy.resolveFormRoute(meta, \":id\")\n : `${formBase}/${meta.name}/:id`.replace(\"//\", \"/\");\n\n void editRoutePattern; // kept for future rowAction target derivation\n\n const defaultPageSize = meta.pageSize ?? 20;\n const defaultSortField = meta.defaultSort.field;\n const defaultSortDir = meta.defaultSort.dir;\n\n const state: Record<string, unknown> = {\n page: 1,\n pageSize: defaultPageSize,\n sortField: defaultSortField,\n sortDir: defaultSortDir,\n search: \"\",\n filterOpen: false,\n };\n\n for (const filter of meta.filters ?? []) {\n state[`filter_${filter.field}`] = \"\";\n }\n\n if (options.initialState) {\n Object.assign(state, options.initialState);\n }\n\n const queryFilters = (meta.filters ?? []).map((f) => ({\n field: f.field,\n op: f.widget === \"DateRange\" ? \"between\" : \"eq\",\n value: { $bind: `state.filter_${f.field}` },\n }));\n\n const dataSources: Record<string, unknown> = {\n rows: {\n $query: {\n collection: meta.name,\n filters: queryFilters.length > 0 ? queryFilters : undefined,\n sort: [{ field: { $bind: \"state.sortField\" }, dir: { $bind: \"state.sortDir\" } }],\n page: { number: { $bind: \"state.page\" }, size: { $bind: \"state.pageSize\" } },\n search: { $bind: \"state.search\" },\n },\n },\n };\n\n const filterControls: UIDLNode[] = [];\n\n // 1. Search — must reset page to 1\n filterControls.push({\n id: ids.search,\n type: \"TextField\",\n style: { width: \"w-64\" },\n props: {\n // Labelled like every other control in the strip: without one it was the only field\n // with no label row above it, so it sat a label's height higher than its neighbours —\n // and its name reached assistive tech only as a placeholder, which is not a name.\n label: lang === \"id\" ? \"Cari\" : \"Search\",\n placeholder: lang === \"id\" ? `Cari ${title}…` : `Search ${title}…`,\n value: { $bind: \"state.search\" },\n },\n events: {\n onChange: [\n { setState: { path: \"search\", value: null } },\n { setState: { path: \"page\", value: 1 } },\n ],\n },\n });\n\n // 2. Filters\n for (const filter of meta.filters ?? []) {\n const fieldMeta = meta.fields.find((f) => f.key === filter.field);\n const filterLabel = fieldMeta?.label[lang] ?? filter.label?.[lang] ?? filter.field;\n\n if (filter.widget === \"Select\") {\n let optionsList: Array<{ value: string; label: string }>;\n\n if (filter.options && Array.isArray(filter.options)) {\n optionsList = [\n { value: \"\", label: lang === \"id\" ? `Semua ${filterLabel}` : `All ${filterLabel}` },\n ...filter.options,\n ];\n } else if (fieldMeta?.options && Array.isArray(fieldMeta.options)) {\n optionsList = [\n { value: \"\", label: lang === \"id\" ? `Semua ${filterLabel}` : `All ${filterLabel}` },\n ...fieldMeta.options,\n ];\n } else {\n optionsList = [{ value: \"\", label: lang === \"id\" ? `Semua ${filterLabel}` : `All ${filterLabel}` }];\n }\n\n filterControls.push({\n id: `filter-${filter.field}`,\n type: \"Select\",\n style: { width: \"w-52\" },\n props: {\n label: filterLabel,\n value: { $bind: `state.filter_${filter.field}` },\n options: optionsList,\n },\n events: {\n onChange: [\n { setState: { path: `filter_${filter.field}`, value: null } },\n { setState: { path: \"page\", value: 1 } },\n ],\n },\n });\n } else if (filter.widget === \"TextField\") {\n filterControls.push({\n id: `filter-${filter.field}`,\n type: \"TextField\",\n style: { width: \"w-48\" },\n props: {\n label: filterLabel,\n placeholder: lang === \"id\" ? `Cari ${filterLabel}…` : `Search ${filterLabel}…`,\n value: { $bind: `state.filter_${filter.field}` },\n },\n events: {\n onChange: [\n { setState: { path: `filter_${filter.field}`, value: null } },\n { setState: { path: \"page\", value: 1 } },\n ],\n },\n });\n } else if (filter.widget === \"DateRange\") {\n filterControls.push({\n id: `filter-${filter.field}`,\n type: \"TextField\",\n style: { width: \"w-56\" },\n props: {\n label: filterLabel,\n placeholder: lang === \"id\" ? \"Rentang Tanggal\" : \"Date Range\",\n value: { $bind: `state.filter_${filter.field}` },\n },\n events: {\n onChange: [\n { setState: { path: `filter_${filter.field}`, value: null } },\n { setState: { path: \"page\", value: 1 } },\n ],\n },\n });\n }\n }\n\n // 3. Reset button — clears search + all filters + page\n const resetActions = [\n { setState: { path: \"search\", value: \"\" } },\n { setState: { path: \"page\", value: 1 } },\n ...(meta.filters ?? []).map((f) => ({ setState: { path: `filter_${f.field}`, value: \"\" } })),\n ];\n\n filterControls.push({\n id: \"reset-filters-btn\",\n type: \"Button\",\n props: {\n label: lang === \"id\" ? \"Reset\" : \"Reset\",\n variant: \"secondary\",\n },\n events: { onClick: resetActions },\n });\n\n if (options.extraFilterActions) {\n filterControls.push(...options.extraFilterActions);\n }\n\n const tableColumns = meta.columns.map((col) => {\n const fieldMeta = meta.fields.find((f) => f.key === col.field);\n const colLabel = fieldMeta?.label[lang] ?? col.field;\n const format = cellFormatFor(col.field, fieldMeta, meta.statusField);\n return {\n key: col.field,\n label: colLabel,\n width: col.width,\n format,\n // Numeric alignment is the widget's own rule now; only an explicit meta override\n // has to be carried across.\n ...(col.align ? { align: col.align } : {}),\n };\n });\n\n const createNewActions = options.createNewActions ?? [{ navigate: { route: newRoute } }];\n\n // ListView puts the list's controls in its PageHeader — a Filter button that opens a\n // popover, then the create action — not in a strip above the rows. The strip this replaces\n // also pushed the first row a filter-bar's height down the page on every one of these\n // screens.\n //\n // What Meridian's FilterDropdown additionally offers, and this does not, is choosing the field\n // and condition per filter row. That is a dynamic, growable list of filters, and a `$query`\n // in this runtime binds a fixed filter array — there is no array-state or repeat construct\n // for a document to grow one. So the fields the doctype declares are what the popover holds;\n // the affordance and its placement match, the field picker does not.\n const filterPopover: UIDLNode = {\n id: \"filter-popover-anchor\",\n type: \"Container\",\n // The popover positions itself against this element rather than being portalled.\n style: { position: \"relative\", display: \"flex\", alignItems: \"center\" },\n children: [\n {\n id: \"filter-toggle-btn\",\n type: \"Button\",\n props: { label: lang === \"id\" ? \"Filter\" : \"Filter\", variant: \"secondary\", iconName: \"filter\" },\n events: { onClick: [{ setState: { path: \"filterOpen\", value: true } }] },\n },\n {\n id: \"filter-popover\",\n type: \"Popover\",\n props: { open: { $bind: \"state.filterOpen\" }, align: \"end\" },\n style: { width: \"w-80\" },\n events: { onClose: [{ setState: { path: \"filterOpen\", value: false } }] },\n children: [\n {\n id: \"filter-bar\",\n type: \"Column\",\n style: { display: \"flex\", flexDirection: \"column\", gap: \"gap-3\", padding: \"p-4\" },\n children: filterControls,\n },\n ],\n },\n ],\n };\n\n const headerActions: UIDLNode[] = [\n ...(options.extraHeaderActions ?? []),\n filterPopover,\n {\n id: \"create-new-btn\",\n type: \"Button\",\n props: {\n label: lang === \"id\" ? `+ ${meta.label.id}` : `+ New ${meta.label.en}`,\n variant: \"primary\",\n },\n events: { onClick: createNewActions },\n },\n ];\n\n const summaryNodes: UIDLNode[] = [];\n if (meta.summaries && meta.summaries.length > 0) {\n const summaries = meta.summaries;\n summaryNodes.push({\n id: \"list-summaries\",\n type: \"GridView\",\n props: {\n style: {\n display: \"grid\",\n gridTemplateColumns: `repeat(${summaries.length}, minmax(0, 1fr))`,\n },\n },\n style: { borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: summaries.map((summary, idx) => ({\n id: `summary-${idx}`,\n type: \"Column\",\n style: {\n padding: \"p-4\",\n gap: \"gap-1\",\n ...(idx < summaries.length - 1 ? { borderWidth: \"border-e\", borderColor: BORDER_COLOR } : {}),\n },\n children: [\n {\n id: `summary-${idx}-label`,\n type: \"Text\",\n props: { value: summary.label[lang] ?? summary.field },\n style: { fontSize: \"text-sm\", color: TEXT_SECONDARY },\n },\n {\n id: `summary-${idx}-agg`,\n type: \"Text\",\n // Aggregates the rows currently loaded into the `rows` datasource, which is the\n // page the query returned — not a server-side total over the whole collection.\n // It used to emit the literal string \"SUM(field)\", which rendered as that text.\n props: {\n value: {\n $expr: {\n agg: summary.agg,\n over: \"data.rows\",\n ...(summary.agg === \"count\" ? {} : { field: summary.field }),\n },\n },\n // A total of a money column is money, and has to read like the column it totals.\n ...(summary.agg === \"count\"\n ? { format: \"integer\" }\n : summaryFormat(summary.field, meta)),\n locale: lang === \"id\" ? \"id-ID\" : \"en-US\",\n ...(options.uiPolicy?.currency ? { currency: options.uiPolicy.currency } : {}),\n },\n style: { fontSize: \"text-xl\", fontWeight: 600 },\n },\n ],\n })),\n });\n }\n\n // A Meridian list has no per-row action column — the row itself is the affordance, which the\n // widget honours via `onOpen`. A caller that wants explicit verbs can still pass `rowActions`.\n const rowActions = options.rowActions ?? [];\n const rowOpenActions = options.rowOpenActions ?? [{ navigate: { route: { $bind: \"event.route\" } } }];\n\n const document: UIDLDocument = {\n version: \"1.0.0\",\n id: docId,\n name: title,\n state,\n dataSources,\n root: {\n id: \"page\",\n type: \"Column\",\n style: { fontSize: \"text-base\", width: \"w-full\" },\n children: [\n {\n id: \"list-header\",\n type: \"Navbar\",\n style: {\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"px-4\",\n height: \"h-row-large\",\n borderWidth: \"border-b\",\n borderColor: BORDER_COLOR,\n },\n children: [\n {\n id: \"list-header-title\",\n type: \"Text\",\n props: { value: title, heading: 1 },\n style: { fontSize: \"text-xl\", fontWeight: 600 },\n },\n {\n id: \"list-header-actions\",\n type: \"Toolbar\",\n style: { display: \"flex\", alignItems: \"center\", gap: \"gap-2\" },\n children: headerActions,\n },\n ],\n },\n ...summaryNodes,\n\n {\n id: \"list-loading\",\n type: \"Text\",\n props: { value: lang === \"id\" ? \"Memuat data…\" : \"Loading data…\" },\n style: { padding: \"p-4\", color: TEXT_SECONDARY },\n visibility: { condition: { \"==\": [{ path: \"state.$data.rows.status\" }, { literal: \"loading\" }] } },\n },\n {\n id: \"list-error\",\n type: \"Text\",\n props: {\n value: lang === \"id\" ? \"Gagal memuat data. Coba muat ulang halaman.\" : \"Failed to load data. Please refresh.\",\n },\n style: { padding: \"p-4\", color: \"{primitives.color.error}\" },\n visibility: { condition: { \"==\": [{ path: \"state.$data.rows.status\" }, { literal: \"error\" }] } },\n },\n {\n id: ids.table,\n type: \"DataTable\",\n style: { width: \"w-full\" },\n props: {\n // No `title`: the page header above already names the list, and Meridian shows a\n // list's name exactly once (PageHeader) — repeating it as a section heading was a\n // duplication the real app never has.\n dataSource: \"rows\",\n columns: tableColumns,\n rowActions,\n showIndex: true,\n paginate: false,\n locale: lang === \"id\" ? \"id-ID\" : \"en-US\",\n ...(options.uiPolicy?.currency ? { currency: options.uiPolicy.currency } : {}),\n },\n events: {\n onOpen: rowOpenActions,\n },\n },\n // Meridian closes a list with Paginator: the range, a page stepper and the page-size\n // selector. What stood here was a fixed \"Displaying records\" caption beside Previous\n // and Next buttons that set the page to a hardcoded 1 and 2 — they could not reach\n // page 3, and the caption never counted anything.\n {\n id: ids.page,\n type: \"PageBar\",\n style: { borderWidth: \"border-t\", borderColor: BORDER_COLOR },\n props: {\n total: { $bind: \"state.$data.rows.total\" },\n page: { $bind: \"state.page\" },\n pageSize: { $bind: \"state.pageSize\" },\n },\n events: {\n onPageChange: [{ setState: { path: \"page\", value: null } }],\n onPageSizeChange: [{ setState: { path: \"pageSize\", value: null } }],\n },\n },\n ],\n },\n };\n\n return document;\n}\n\n// URL query helpers — pure, testable, company-agnostic\n\nexport function parseListQueryParams(\n searchParams: URLSearchParams | string,\n meta: ListPageMeta,\n): Record<string, unknown> {\n const params = typeof searchParams === \"string\" ? new URLSearchParams(searchParams) : searchParams;\n const state: Record<string, unknown> = {};\n\n const page = params.get(\"page\");\n if (page && !isNaN(Number(page))) state.page = Number(page);\n\n const pageSize = params.get(\"pageSize\") || params.get(\"limit\");\n if (pageSize && !isNaN(Number(pageSize))) state.pageSize = Number(pageSize);\n\n const sort = params.get(\"sort\");\n if (sort) {\n if (sort.startsWith(\"-\")) {\n state.sortField = sort.slice(1);\n state.sortDir = \"desc\";\n } else {\n state.sortField = sort;\n state.sortDir = \"asc\";\n }\n }\n\n const q = params.get(\"q\") || params.get(\"search\");\n if (q) state.search = q;\n\n for (const filter of meta.filters ?? []) {\n const val = params.get(filter.field) ?? params.get(`filter_${filter.field}`);\n if (val !== null && val !== undefined) state[`filter_${filter.field}`] = val;\n }\n\n return state;\n}\n\nexport function serializeListQueryParams(\n state: Record<string, unknown>,\n meta: ListPageMeta,\n): URLSearchParams {\n const params = new URLSearchParams();\n\n if (state.search && typeof state.search === \"string\" && state.search.trim()) {\n params.set(\"q\", state.search.trim());\n }\n\n if (state.page && typeof state.page === \"number\" && state.page > 1) {\n params.set(\"page\", String(state.page));\n }\n\n if (\n state.pageSize &&\n typeof state.pageSize === \"number\" &&\n state.pageSize !== (meta.pageSize ?? 20)\n ) {\n params.set(\"pageSize\", String(state.pageSize));\n }\n\n if (state.sortField && typeof state.sortField === \"string\") {\n const isDesc = state.sortDir === \"desc\";\n const defaultIsDesc = meta.defaultSort.dir === \"desc\";\n if (state.sortField !== meta.defaultSort.field || isDesc !== defaultIsDesc) {\n params.set(\"sort\", `${isDesc ? \"-\" : \"\"}${state.sortField}`);\n }\n }\n\n for (const filter of meta.filters ?? []) {\n const val = state[`filter_${filter.field}`];\n if (val !== undefined && val !== null && val !== \"\") params.set(filter.field, String(val));\n }\n\n return params;\n}\n","/*\n * Meridian's form measurements, as style objects the recipe compilers can share.\n *\n * The Meridian reference documents in `templates/src/meridian/meridianLayout.ts` have always carried\n * these, but the compilers are held to a dependency guard that forbids importing anything from\n * templates (`compiler/__tests__/dependencyGuard.test.ts`) — so they grew a second, thinner set\n * of their own and the generated screens came out visibly tighter than the reference: rows with\n * no height and no vertical padding, no rule between fields, no card, and a page title flush\n * against the viewport edge.\n *\n * The measurements are not demo data, so they belong in core next to `meridian-theme.css` and\n * `theme/meridianPreset.ts`, where both paths can reach them. Each constant names the upstream\n * file it reproduces.\n *\n * FormContainer w-form (600px) card, `border rounded-lg shadow-lg mx-4`, gray-25 page\n * FormHeader h-row-large (3.5rem), px-4, text-xl font-semibold, border-b\n * TwoColumnForm 1fr/1fr grid, h-row-mid (3rem), border-b, label `ps-4 text-gray-600`\n * SectionHeader px-4 py-2.5, text-sm font-semibold, border-b\n */\n\nconst BORDER = \"{primitives.color.border}\";\nconst TEXT_SECONDARY = \"{primitives.color.text-secondary}\";\n\n/** FormContainer's page: the card is centred on the page ground, not flush to it. */\nexport const MERIDIAN_FORM_PAGE_STYLE = {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"w-full\",\n minHeight: \"min-h-full\",\n background: \"{primitives.color.surface}\",\n paddingTop: \"pt-4\",\n fontSize: \"text-base\",\n} as const;\n\n/** A full-width form (FormContainer's `useFullWidth`, used when the document has a line table). */\nexport const MERIDIAN_FORM_PAGE_FULL_STYLE = {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"w-full\",\n minHeight: \"min-h-full\",\n background: \"{primitives.color.surface}\",\n fontSize: \"text-base\",\n} as const;\n\n/** FormContainer — the one place in Meridian where border, radius and shadow are all used. */\nexport const MERIDIAN_FORM_SHELL_STYLE = {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"w-form\",\n maxWidth: \"max-w-full\",\n margin: \"mx-4 mb-4\",\n background: \"{primitives.color.surface-elevated}\",\n borderWidth: \"border\",\n borderColor: BORDER,\n borderRadius: \"rounded-lg\",\n shadow: \"{primitives.shadow.lg}\",\n} as const;\n\n/** FormHeader — the in-page title bar. */\nexport const MERIDIAN_FORM_HEADER_STYLE = {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"px-4\",\n height: \"h-row-large\",\n borderWidth: \"border-b\",\n borderColor: BORDER,\n} as const;\n\n/** TwoColumnForm — label and control share one row, closed by a rule. */\nexport const MERIDIAN_FORM_ROW_STYLE = {\n borderWidth: \"border-b\",\n borderColor: BORDER,\n minHeight: \"min-h-row-mid\",\n} as const;\n\nexport const MERIDIAN_FORM_ROW_GRID = {\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) minmax(0, 1fr)\",\n alignItems: \"center\",\n} as const;\n\n/** The label sits in the start column; only it carries the leading padding. */\nexport const MERIDIAN_FORM_LABEL_STYLE = {\n padding: \"ps-4\",\n color: TEXT_SECONDARY,\n fontSize: \"text-base\",\n} as const;\n\n/** The control sits flush in the end column — the row's rule does the separating. */\nexport const MERIDIAN_FORM_CONTROL_STYLE = {\n padding: \"py-2 pe-4\",\n} as const;\n\n/**\n * Controls/Base: inside a form row a control is borderless and `size=\"small\"`, because the\n * row it sits in is already bounded. A boxed control there reads as a second frame.\n */\nexport const MERIDIAN_FORM_CONTROL_PROPS = { border: false, size: \"small\" } as const;\n\n/** SectionHeader */\nexport const MERIDIAN_SECTION_HEADER_STYLE = {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"px-4 py-2.5\",\n background: \"{primitives.color.surface}\",\n borderWidth: \"border-b\",\n borderColor: BORDER,\n fontSize: \"text-sm\",\n fontWeight: 600,\n color: TEXT_SECONDARY,\n} as const;\n\n/** CommonForm's footer: actions right-aligned in a `p-4` strip below the last row. */\nexport const MERIDIAN_FORM_FOOTER_STYLE = {\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"center\",\n gap: \"gap-2\",\n padding: \"p-4\",\n} as const;\n","/**\n * Public form/detail recipe — free of demo, company, and host-specific code.\n *\n * Extracted from `packages/templates/src/domain/generators/buildFormPage.ts`\n * but typed against public `FormPageMeta` / `HostCapabilities`.\n *\n * No demo dataset, company fixture, or host `ErpModuleSpec` imported.\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport {\n MERIDIAN_FORM_CONTROL_PROPS,\n MERIDIAN_FORM_CONTROL_STYLE,\n MERIDIAN_FORM_FOOTER_STYLE,\n MERIDIAN_FORM_HEADER_STYLE,\n MERIDIAN_FORM_LABEL_STYLE,\n MERIDIAN_FORM_PAGE_FULL_STYLE,\n MERIDIAN_FORM_PAGE_STYLE,\n MERIDIAN_FORM_ROW_GRID,\n MERIDIAN_FORM_ROW_STYLE,\n MERIDIAN_FORM_SHELL_STYLE,\n MERIDIAN_SECTION_HEADER_STYLE,\n} from \"../utils/formLayout\";\nimport {\n semanticNodeId,\n validateHostCapabilities,\n type FormPageMeta,\n type HostCapabilities,\n type RoutePolicy,\n type UiPolicy,\n} from \"./types.js\";\n\nexport interface CompileFormOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n listRoute?: string;\n initialData?: Record<string, unknown>;\n initialVersion?: number;\n extraHeaderActions?: UIDLNode[];\n extraFormActions?: UIDLNode[];\n useFullWidth?: boolean;\n}\n\nconst BORDER_COLOR = \"{primitives.color.border}\";\n\nfunction buildFormPayload(meta: FormPageMeta): Record<string, unknown> {\n const payload: Record<string, unknown> = {};\n for (const field of meta.fields) {\n if (field.key === \"id\") continue;\n if (field.widget === \"Table\") continue;\n payload[field.key] = { $expr: { path: `state.${field.key}` } };\n }\n return payload;\n}\n\nfunction buttonNode(\n id: string,\n label: string,\n route: string,\n variant: \"primary\" | \"secondary\" = \"secondary\",\n): UIDLNode {\n return {\n id,\n type: \"Button\",\n props: { label, variant },\n events: { onClick: [{ navigate: { route } }] },\n };\n}\n\nfunction buildSaveButton(\n meta: FormPageMeta,\n isNew: boolean,\n listRoute: string,\n lang: Language,\n): UIDLNode {\n const btn = buttonNode(\"save-btn\", lang === \"id\" ? \"Simpan\" : \"Save\", listRoute, \"primary\");\n btn.events = {\n onClick: [\n {\n mutate: {\n operation: isNew ? \"create\" : \"update\",\n collection: meta.name,\n ...(isNew ? {} : { id: { $expr: { path: \"state.id\" } } }),\n payload: buildFormPayload(meta),\n version: { $expr: { path: \"state._meta.version\" } },\n statusPath: \"formStatus\",\n resultPath: \"savedRecord\",\n errorPath: \"formError\",\n fieldErrorsPath: \"formErrors\",\n onSuccess: { navigate: { route: listRoute } },\n },\n },\n ],\n };\n return btn;\n}\n\nfunction buildTransitionButton(\n meta: FormPageMeta,\n transition: NonNullable<FormPageMeta[\"states\"]>[\"transitions\"][number],\n lang: Language,\n): UIDLNode {\n const states = meta.states!;\n const label = transition.label[lang] ?? transition.name;\n const isPrimary = transition.name === \"submit\";\n return {\n id: `transition-${transition.name}`,\n type: \"Button\",\n props: { label, variant: isPrimary ? \"primary\" : \"secondary\" },\n events: {\n onClick: [\n {\n mutate: {\n operation: \"transition\",\n collection: meta.name,\n id: { $expr: { path: \"state.id\" } },\n transition: transition.name,\n version: { $expr: { path: \"state._meta.version\" } },\n statusPath: \"formStatus\",\n resultPath: \"savedRecord\",\n errorPath: \"formError\",\n fieldErrorsPath: \"formErrors\",\n onSuccess: {\n sequence: [\n { setState: { path: states.field, value: { $bind: `event.record.${states.field}` } } },\n { setState: { path: \"_meta.version\", value: { $bind: \"event.meta.version\" } } },\n ],\n },\n },\n },\n ],\n },\n visibility: {\n condition:\n transition.from.length === 1\n ? { \"==\": [{ path: `state.${states.field}` }, { literal: transition.from[0] }] }\n : {\n or: transition.from.map((from) => ({\n \"==\": [{ path: `state.${states.field}` }, { literal: from }],\n })) as [unknown, unknown],\n },\n },\n };\n}\n\nfunction buildFormControlNode(\n field: FormPageMeta[\"fields\"][number],\n lang: Language,\n meta: FormPageMeta,\n): UIDLNode {\n const isCheckbox = field.widget === \"Checkbox\" || field.widget === \"Switch\";\n const isReadOnly = field.readOnly === true;\n\n const baseProps: Record<string, unknown> = {\n // A checkbox has no density variant in Meridian (Controls/Check) and none in this widget's\n // manifest, so emitting `size` on one made the whole document fail the host's prop check —\n // and a host that validates before rendering (a host application does) replaced the entire editor\n // with an error box. Every doctype carrying a boolean field lost its form that way.\n ...(isCheckbox ? {} : { size: \"small\", error: { $bind: `state.formErrors.${field.key}` } }),\n ...(isReadOnly ? { disabled: true } : {}),\n };\n\n if (isCheckbox) {\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: field.widget,\n props: { ...baseProps, checked: { $bind: `state.${field.key}` } },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n if (field.widget === \"Select\" || field.widget === \"RadioGroup\") {\n let optionsList: Array<{ value: string; label: string }> | undefined;\n if (field.options && Array.isArray(field.options)) {\n optionsList = field.options;\n } else if (meta.states && field.key === meta.states.field) {\n optionsList = meta.states.values.map((v) => ({ value: v, label: v }));\n } else if (field.options && typeof field.options === \"object\" && \"doctype\" in field.options) {\n optionsList = [];\n }\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: field.widget,\n props: { ...baseProps, value: { $bind: `state.${field.key}` }, options: optionsList ?? [] },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n if (field.widget === \"Link\") {\n // Link is a scoped lookup — Select options are populated from a\n // per-field $query dataSource for the target doctype. The Select's\n // options bind to the query's rows; loading/error/empty are handled by\n // sibling Text nodes that are visible based on the query's status.\n const linkDoctype =\n (field.options && typeof field.options === \"object\" && \"doctype\" in field.options\n ? (field.options as { doctype: string }).doctype\n : undefined) ?? (field as unknown as { linkDoctype?: string }).linkDoctype;\n if (linkDoctype) {\n const dsKey = `link_${field.key}`;\n const linkTarget = (field.options && typeof field.options === \"object\" && \"doctype\" in field.options\n ? (field.options as { valueKey?: string; labelKey?: string })\n : {});\n const linkValueKey = linkTarget.valueKey ?? \"id\";\n const linkLabelKey = linkTarget.labelKey ?? \"name\";\n // The dataSource itself is declared at the document level (see compileFormPage),\n // here we just bind the Select's options to its rows.\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"Column\",\n style: { display: \"flex\", flexDirection: \"column\", gap: \"gap-1\" },\n children: [\n {\n id: `${semanticNodeId(\"form\", meta.name, field.key)}-select`,\n type: \"Select\",\n props: {\n ...baseProps,\n value: { $bind: `state.${field.key}` },\n // Bind to the lookup rows — the DataAdapter will populate state.$data[dsKey]\n options: { $bind: `state.$data.${dsKey}.rows` } as unknown as Array<{ value: string; label: string }>,\n // Lookup rows are the target doctype's own records, so the Select is told which\n // of their keys is the stored value and which is the visible text.\n optionValueKey: linkValueKey,\n optionLabelKey: linkLabelKey,\n placeholder: typeof field.placeholder === \"string\" ? field.placeholder : field.placeholder?.[lang] ?? `Select ${field.label[lang] ?? field.key}`,\n },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n },\n {\n id: `${semanticNodeId(\"form\", meta.name, field.key)}-loading`,\n type: \"Text\",\n props: { value: \"Loading…\" },\n style: { fontSize: \"text-xs\", color: \"{primitives.color.text-secondary}\" },\n visibility: { condition: { \"==\": [{ path: `state.$data.${dsKey}.status` }, { literal: \"loading\" }] } },\n },\n {\n id: `${semanticNodeId(\"form\", meta.name, field.key)}-error`,\n type: \"Text\",\n props: { value: \"Failed to load options\" },\n style: { fontSize: \"text-xs\", color: \"{primitives.color.error}\" },\n visibility: { condition: { \"==\": [{ path: `state.$data.${dsKey}.status` }, { literal: \"error\" }] } },\n },\n {\n id: `${semanticNodeId(\"form\", meta.name, field.key)}-empty`,\n type: \"Text\",\n props: { value: \"No options\" },\n style: { fontSize: \"text-xs\", color: \"{primitives.color.text-secondary}\" },\n visibility: {\n condition: {\n and: [\n { \"==\": [{ path: `state.$data.${dsKey}.status` }, { literal: \"success\" }] },\n { \"==\": [{ path: `state.$data.${dsKey}.rows.length` }, { literal: 0 }] },\n ],\n },\n },\n },\n ],\n };\n }\n let optionsList: Array<{ value: string; label: string }> = [];\n if (field.options && Array.isArray(field.options)) optionsList = field.options;\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"Select\",\n props: {\n ...baseProps,\n value: { $bind: `state.${field.key}` },\n options: optionsList,\n placeholder: typeof field.placeholder === \"string\" ? field.placeholder : field.placeholder?.[lang] ?? `Select ${field.label[lang] ?? field.key}`,\n },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n const customPlaceholder =\n typeof field.placeholder === \"object\"\n ? field.placeholder[lang] ?? \"\"\n : typeof field.placeholder === \"string\"\n ? field.placeholder\n : \"\";\n\n if (field.widget === \"Textarea\") {\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"Textarea\",\n props: { ...baseProps, value: { $bind: `state.${field.key}` }, placeholder: customPlaceholder },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n if (field.widget === \"Currency\") {\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"TextField\",\n props: { ...baseProps, value: { $bind: `state.${field.key}` }, placeholder: customPlaceholder || \"0\" },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n if (field.widget === \"Date\") {\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"TextField\",\n props: { ...baseProps, value: { $bind: `state.${field.key}` }, placeholder: customPlaceholder || \"YYYY-MM-DD\" },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n if (field.widget === \"Slider\") {\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"Slider\",\n props: { ...baseProps, value: { $bind: `state.${field.key}` } },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n }\n\n return {\n id: semanticNodeId(\"form\", meta.name, field.key),\n type: \"TextField\",\n props: { ...baseProps, value: { $bind: `state.${field.key}` }, placeholder: customPlaceholder },\n events: { onChange: [{ setState: { path: field.key, value: null } }] },\n };\n}\n\nfunction formRow(id: string, label: string, control: UIDLNode): UIDLNode {\n return {\n id,\n type: \"Row\",\n props: { style: { ...MERIDIAN_FORM_ROW_GRID } },\n style: { ...MERIDIAN_FORM_ROW_STYLE },\n children: [\n { id: `${id}-label`, type: \"Text\", props: { value: label }, style: { ...MERIDIAN_FORM_LABEL_STYLE } },\n {\n id: `${id}-control`,\n type: \"Column\",\n style: { ...MERIDIAN_FORM_CONTROL_STYLE },\n children: [nameControl(unboxControl(control), label)],\n },\n ],\n };\n}\n\n/**\n * Controls/Base: a control inside a form row is borderless and `size=\"small\"` — the row's\n * own rule is what separates one field from the next, so a boxed control reads as a second\n * frame inside it. Applied here rather than at each control builder so every widget a row can\n * hold gets it, including the Select nested inside a link field's wrapper.\n */\nfunction unboxControl(control: UIDLNode): UIDLNode {\n if (BOXED_CONTROLS.has(control.type)) {\n return { ...control, props: { ...MERIDIAN_FORM_CONTROL_PROPS, ...(control.props ?? {}) } };\n }\n if (!control.children?.length) return control;\n return { ...control, children: control.children.map(unboxControl) };\n}\n\nconst BOXED_CONTROLS = new Set([\"TextField\", \"Textarea\", \"Select\"]);\n\n/**\n * TwoColumnForm prints a field's label in the row's start column, so the control must not\n * print it again — but a control with no name of its own reaches assistive tech as an unnamed\n * input, which is what axe reports as `label` / `select-name`. Naming it the way the static\n * Meridian documents do (`aria-label`, see templates' `formControlNode`) satisfies both.\n */\nexport function nameControl(control: UIDLNode, label: string): UIDLNode {\n if (NAMEABLE_CONTROLS.has(control.type)) {\n const props = (control.props ?? {}) as Record<string, unknown>;\n if (props[\"aria-label\"] || props.label) return control;\n return { ...control, props: { ...props, \"aria-label\": label } };\n }\n // A link field wraps its Select in a Column alongside loading/error text, so the name has to\n // reach the control inside rather than settling on the wrapper, where it names nothing.\n if (!control.children?.length) return control;\n let named = false;\n const children = control.children.map((child) => {\n if (named) return child;\n const result = nameControl(child, label);\n if (result !== child) named = true;\n return result;\n });\n return named ? { ...control, children } : control;\n}\n\nconst NAMEABLE_CONTROLS = new Set([\"TextField\", \"Textarea\", \"Select\", \"RadioGroup\", \"Checkbox\", \"Switch\", \"Slider\"]);\n\nfunction sectionHeader(id: string, title: string): UIDLNode {\n return {\n id,\n type: \"Text\",\n props: { value: title, heading: 3 },\n style: { ...MERIDIAN_SECTION_HEADER_STYLE },\n };\n}\n\nfunction pageHeader(title: string, actions: UIDLNode[]): UIDLNode {\n return {\n id: \"form-header\",\n type: \"Navbar\",\n style: { ...MERIDIAN_FORM_HEADER_STYLE },\n children: [\n { id: \"form-header-title\", type: \"Text\", props: { value: title, heading: 1 }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n { id: \"form-header-actions\", type: \"Toolbar\", style: { display: \"flex\", gap: \"gap-2\" }, children: actions },\n ],\n };\n}\n\nfunction formPageWrapper(children: UIDLNode[], fullWidth = false): UIDLNode {\n return {\n id: \"page\",\n type: \"Column\",\n style: fullWidth ? { ...MERIDIAN_FORM_PAGE_FULL_STYLE } : { ...MERIDIAN_FORM_PAGE_STYLE },\n children,\n };\n}\n\nfunction formShell(children: UIDLNode[]): UIDLNode {\n return {\n id: \"form-shell\",\n type: \"Form\",\n style: { ...MERIDIAN_FORM_SHELL_STYLE },\n children,\n };\n}\n\nexport function compileFormPage(\n meta: FormPageMeta,\n recordId: string,\n options: CompileFormOptions,\n): UIDLDocument {\n const isNew = recordId === \"new\";\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n\n // Host gate\n const gateInput = { recipe: \"form\" as const, meta, hostCapabilities: options.hostCapabilities };\n const issues = validateHostCapabilities(gateInput);\n if (issues.length > 0) {\n throw new Error(`compileFormPage: hostCapabilities rejected: ${issues.map((i) => i.message).join(\"; \")}`);\n }\n\n const docId = options.docId ?? `form-${meta.name.toLowerCase()}-${recordId.toLowerCase()}`;\n const listBase = options.routePolicy?.listBase ?? \"/app/list\";\n const listRoute = options.listRoute ?? `${listBase}/${meta.name}`.replace(\"//\", \"/\");\n\n const title = isNew\n ? lang === \"id\"\n ? `Buat ${meta.label.id}`\n : `New ${meta.label.en}`\n : `${meta.label[lang] ?? meta.name} (${recordId})`;\n\n const state: Record<string, unknown> = {\n id: isNew ? \"\" : recordId,\n formErrors: {},\n formError: \"\",\n formStatus: \"idle\",\n savedRecord: null,\n _meta: options.initialVersion !== undefined ? { version: options.initialVersion } : {},\n };\n\n for (const field of meta.fields) {\n if (field.key === \"id\") continue;\n if (field.widget === \"Table\") continue;\n if (options.initialData && field.key in options.initialData) {\n state[field.key] = options.initialData[field.key];\n } else if (field.default !== undefined) {\n state[field.key] = field.default;\n } else if (field.widget === \"Checkbox\" || field.widget === \"Switch\") {\n state[field.key] = false;\n } else if (field.widget === \"Currency\") {\n state[field.key] = 0;\n } else {\n state[field.key] = \"\";\n }\n }\n\n if (meta.states) {\n state[meta.states.field] = options.initialData?.[meta.states.field] ?? meta.states.initial;\n }\n\n // scoped lookup dataSources for Link fields\n const dataSources: Record<string, unknown> = {};\n for (const field of meta.fields) {\n if (field.widget === \"Link\") {\n const linkDoctype =\n (field.options && typeof field.options === \"object\" && \"doctype\" in field.options\n ? (field.options as { doctype: string }).doctype\n : undefined) ?? (field as unknown as { linkDoctype?: string }).linkDoctype;\n if (linkDoctype) {\n const dsKey = `link_${field.key}`;\n dataSources[dsKey] = { $query: { collection: linkDoctype, page: { size: 50 } } };\n }\n }\n }\n\n // Group by section\n const sectionsMap = new Map<string, typeof meta.fields>();\n for (const field of meta.fields) {\n if (field.widget === \"Table\") continue;\n const sec = field.section ?? \"\";\n if (!sectionsMap.has(sec)) sectionsMap.set(sec, []);\n sectionsMap.get(sec)!.push(field);\n }\n\n const formContentNodes: UIDLNode[] = [];\n for (const [sectionName, sectionFields] of sectionsMap.entries()) {\n if (sectionName.trim()) {\n formContentNodes.push(sectionHeader(`section-${sectionName.toLowerCase().replace(/\\s+/g, \"-\")}`, sectionName));\n }\n for (const field of sectionFields) {\n const fieldLabel = `${field.label[lang] ?? field.key}${field.required ? \" *\" : \"\"}`;\n const control = buildFormControlNode(field, lang, meta);\n formContentNodes.push(formRow(`row-${field.key}`, fieldLabel, control));\n }\n }\n\n const childTableNodes: UIDLNode[] = [];\n const hasChildTables = Boolean(meta.childTables && meta.childTables.length > 0);\n if (hasChildTables) {\n for (const childTable of meta.childTables ?? []) {\n const childField = meta.fields.find((f) => f.key === childTable.field);\n const childLabel = childField?.label[lang] ?? childTable.field;\n childTableNodes.push({\n id: `child-table-${childTable.field}`,\n type: \"DataTable\",\n props: { title: childLabel, dataSource: childTable.field, paginate: false },\n style: { width: \"w-full\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n });\n }\n }\n\n const transitionButtons: UIDLNode[] = [];\n if (!isNew && meta.states) {\n for (const tr of meta.states.transitions) {\n transitionButtons.push(buildTransitionButton(meta, tr, lang));\n }\n }\n\n const headerActions: UIDLNode[] = [\n ...(options.extraHeaderActions ?? []),\n ...transitionButtons,\n ];\n\n const footerActions: UIDLNode[] = [\n buttonNode(\"cancel-btn\", lang === \"id\" ? \"Batal\" : \"Cancel\", listRoute),\n ...(options.extraFormActions ?? []),\n buildSaveButton(meta, isNew, listRoute, lang),\n ];\n\n const useFullWidth = options.useFullWidth ?? hasChildTables;\n\n const headerNode = pageHeader(title, headerActions);\n\n const formFooterNode: UIDLNode = {\n id: \"form-actions\",\n type: \"Toolbar\",\n style: { ...MERIDIAN_FORM_FOOTER_STYLE },\n children: footerActions,\n };\n\n const errorNode: UIDLNode = {\n id: \"form-error\",\n type: \"Text\",\n props: { value: { $bind: \"state.formError\" } },\n style: { padding: \"px-4\", color: \"{primitives.color.error}\" },\n visibility: { condition: { \"!=\": [{ path: \"state.formError\" }, { literal: \"\" }] } },\n };\n\n let rootNode: UIDLNode;\n if (useFullWidth) {\n // No gap: TwoColumnForm rows sit flush and are separated by their own bottom rule.\n const formNode: UIDLNode = { id: \"form\", type: \"Form\", style: { display: \"flex\", flexDirection: \"column\" }, children: [...formContentNodes, ...childTableNodes] };\n rootNode = formPageWrapper([headerNode, formNode, errorNode, formFooterNode], true);\n } else {\n rootNode = formPageWrapper([formShell([headerNode, ...formContentNodes, ...childTableNodes, errorNode, formFooterNode])]);\n }\n\n return {\n version: \"1.0.0\",\n id: docId,\n name: title,\n state,\n dataSources: Object.keys(dataSources).length > 0 ? dataSources : undefined,\n root: rootNode,\n };\n}\n","/**\n * Public report recipe — free of demo, company, and host-specific code.\n *\n * Extracted from `packages/templates/src/domain/generators/buildReportPage.ts`\n * but typed against public `ReportPageMeta` / `HostCapabilities`.\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport { validateHostCapabilities, type HostCapabilities, type ReportPageMeta, type RoutePolicy, type UiPolicy } from \"./types.js\";\n\nexport interface CompileReportOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n extraHeaderActions?: UIDLNode[];\n}\n\nconst BORDER_COLOR = \"{primitives.color.border}\";\nconst TEXT_SECONDARY = \"{primitives.color.text-secondary}\";\n\nfunction pageHeader(title: string, actions: UIDLNode[]): UIDLNode {\n return {\n id: \"report-header\",\n type: \"Navbar\",\n style: { justifyContent: \"space-between\", alignItems: \"center\", padding: \"px-4\", height: \"h-row-large\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: [\n { id: \"report-header-title\", type: \"Text\", props: { value: title, heading: 1 }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n { id: \"report-header-actions\", type: \"Toolbar\", style: { display: \"flex\", gap: \"gap-2\" }, children: actions },\n ],\n };\n}\n\nfunction buttonNode(id: string, label: string): UIDLNode {\n return { id, type: \"Button\", props: { label, variant: \"secondary\" } };\n}\n\nexport function compileReportPage(meta: ReportPageMeta, options: CompileReportOptions): UIDLDocument {\n const gate = validateHostCapabilities({ recipe: \"report\", meta, hostCapabilities: options.hostCapabilities });\n if (gate.length > 0) throw new Error(`compileReportPage: hostCapabilities rejected: ${gate.map((i) => i.message).join(\"; \")}`);\n\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n const docId = options.docId ?? `report-${meta.name.toLowerCase()}`;\n const title = meta.label[lang] ?? meta.name;\n\n const state: Record<string, unknown> = {};\n for (const filter of meta.filters ?? []) state[`filter_${filter.field}`] = filter.default ?? \"\";\n\n const dataSources: Record<string, unknown> = {};\n if (typeof meta.dataSource === \"string\") {\n // named reference — host will resolve; no dataSources needed unless host provides\n } else if (Array.isArray(meta.dataSource)) {\n dataSources[\"rows\"] = meta.dataSource;\n } else if (meta.dataSource && typeof meta.dataSource === \"object\" && \"$query\" in meta.dataSource) {\n const rawQuery = (meta.dataSource as { $query: Record<string, unknown> }).$query;\n const filterBinds = (meta.filters ?? []).map((f) => ({\n field: f.field,\n op: f.widget === \"DateRange\" ? \"between\" : \"eq\",\n value: { $bind: `state.filter_${f.field}` },\n }));\n dataSources[\"rows\"] = { $query: { ...rawQuery, filters: filterBinds.length > 0 ? filterBinds : rawQuery.filters } };\n } else if (meta.dataSource && typeof meta.dataSource === \"object\") {\n dataSources[\"rows\"] = meta.dataSource;\n }\n\n const children: UIDLNode[] = [];\n\n const headerActions: UIDLNode[] = [\n ...(options.extraHeaderActions ?? []),\n buttonNode(\"export-report-btn\", lang === \"id\" ? \"Ekspor\" : \"Export\"),\n ];\n children.push(pageHeader(title, headerActions));\n\n if (meta.filters && meta.filters.length > 0) {\n const filterNodes: UIDLNode[] = meta.filters.map((filter) => {\n const label = filter.label[lang] ?? filter.field;\n if (filter.widget === \"Select\") {\n return {\n id: `filter-${filter.field}`,\n type: \"Select\",\n style: { width: \"w-52\" },\n props: {\n label,\n value: { $bind: `state.filter_${filter.field}` },\n options: [{ value: \"\", label: lang === \"id\" ? `Semua ${label}` : `All ${label}` }, ...(filter.options ?? [])],\n },\n events: { onChange: [{ setState: { path: `filter_${filter.field}`, value: null } }] },\n };\n }\n return {\n id: `filter-${filter.field}`,\n type: \"TextField\",\n style: { width: \"w-48\" },\n props: { label, placeholder: label, value: { $bind: `state.filter_${filter.field}` } },\n events: { onChange: [{ setState: { path: `filter_${filter.field}`, value: null } }] },\n };\n });\n children.push({\n id: \"report-filter-strip\",\n type: \"Toolbar\",\n style: { display: \"flex\", alignItems: \"center\", gap: \"gap-3\", padding: \"p-4\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: filterNodes,\n });\n }\n\n if (meta.summaries && meta.summaries.length > 0) {\n const summaries = meta.summaries;\n children.push({\n id: \"report-summary-strip\",\n type: \"GridView\",\n props: { style: { display: \"grid\", gridTemplateColumns: `repeat(${summaries.length}, minmax(0, 1fr))` } },\n style: { borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: summaries.map((summary, idx) => ({\n id: `summary-${idx}`,\n type: \"Column\",\n style: { padding: \"p-4\", gap: \"gap-1\", ...(idx < summaries.length - 1 ? { borderWidth: \"border-e\", borderColor: BORDER_COLOR } : {}) },\n children: [\n { id: `summary-${idx}-label`, type: \"Text\", props: { value: summary.label[lang] ?? \"\" }, style: { fontSize: \"text-sm\", color: TEXT_SECONDARY } },\n {\n id: `summary-${idx}-value`,\n type: \"Text\",\n props: summary.agg\n ? {\n value: {\n $expr: {\n agg: summary.agg,\n over: \"data.rows\",\n ...(summary.agg === \"count\" ? {} : { field: summary.field }),\n },\n },\n ...(summary.agg === \"count\" ? { format: \"integer\" } : { format: summary.format ?? \"number\" }),\n locale: lang === \"id\" ? \"id-ID\" : \"en-US\",\n ...(options.uiPolicy?.currency ? { currency: options.uiPolicy.currency } : {}),\n }\n : { value: String(summary.value ?? \"\") },\n style: { fontSize: \"text-xl\", fontWeight: 600 },\n },\n ],\n })),\n });\n }\n\n const tableColumns = meta.columns.map((col) => ({\n key: col.key,\n label: typeof col.label === \"string\" ? col.label : col.label[lang] ?? col.key,\n ...(col.align ? { align: col.align } : {}),\n ...(col.width ? { width: col.width } : {}),\n ...(col.format ? { format: col.format } : {}),\n }));\n\n children.push({\n id: \"report-table\",\n type: \"DataTable\",\n props: {\n // No `title`: the report header above already names it, and Meridian prints a report's\n // name once. Repeating it as a section heading was a duplication the reference does\n // not have.\n dataSource: typeof meta.dataSource === \"string\" ? meta.dataSource : \"rows\",\n columns: tableColumns,\n paginate: false,\n locale: lang === \"id\" ? \"id-ID\" : \"en-US\",\n ...(options.uiPolicy?.currency ? { currency: options.uiPolicy.currency } : {}),\n },\n style: { width: \"w-full\" },\n });\n\n return {\n version: \"1.0.0\",\n id: docId,\n name: title,\n state: Object.keys(state).length > 0 ? state : undefined,\n dataSources: Object.keys(dataSources).length > 0 ? dataSources : undefined,\n root: { id: \"page\", type: \"Column\", style: { fontSize: \"text-base\", width: \"w-full\" }, children },\n };\n}\n","/**\n * Public dashboard recipe — free of demo, company, and host-specific code.\n *\n * Extracted from `packages/templates/src/domain/generators/buildWorkspacePage.ts`\n * but typed against public `DashboardPageMeta` / `HostCapabilities`.\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport type { DashboardPageMeta, HostCapabilities, RoutePolicy, UiPolicy } from \"./types.js\";\n\nexport interface CompileDashboardOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n extraHeaderActions?: UIDLNode[];\n}\n\nconst TEXT_SECONDARY = \"{primitives.color.text-secondary}\";\nconst BORDER_COLOR = \"{primitives.color.border}\";\n\nfunction pageHeader(title: string, actions: UIDLNode[]): UIDLNode {\n return {\n id: \"dashboard-header\",\n type: \"Navbar\",\n style: { justifyContent: \"space-between\", alignItems: \"center\", padding: \"px-4\", height: \"h-row-large\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: [\n { id: \"dashboard-header-title\", type: \"Text\", props: { value: title, heading: 1 }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n { id: \"dashboard-header-actions\", type: \"Toolbar\", style: { display: \"flex\", gap: \"gap-2\" }, children: actions },\n ],\n };\n}\n\nfunction kpiRow(id: string, pairs: Array<[string, string]>): UIDLNode {\n return {\n id,\n type: \"GridView\",\n props: { style: { display: \"grid\", gridTemplateColumns: `repeat(${pairs.length}, minmax(0, 1fr))` } },\n style: { borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: pairs.map(([label, value], idx) => ({\n id: `${id}-kpi-${idx}`,\n type: \"Column\",\n style: { padding: \"p-4\", gap: \"gap-1\", ...(idx < pairs.length - 1 ? { borderWidth: \"border-e\", borderColor: BORDER_COLOR } : {}) },\n children: [\n { id: `${id}-kpi-${idx}-label`, type: \"Text\", props: { value: label }, style: { fontSize: \"text-sm\", color: TEXT_SECONDARY } },\n { id: `${id}-kpi-${idx}-value`, type: \"Text\", props: { value }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n ],\n })),\n };\n}\n\nfunction dashboardSection(id: string, content: UIDLNode[], opts: { border?: boolean; grid?: boolean } = {}): UIDLNode {\n return {\n id,\n type: opts.grid ? \"GridView\" : \"Column\",\n props: opts.grid ? { style: { display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(280px, 1fr))\" } } : undefined,\n style: { padding: \"p-4\", gap: \"gap-4\", ...(opts.border ? { borderWidth: \"border-b\", borderColor: BORDER_COLOR } : {}) },\n children: content,\n };\n}\n\nfunction textNode(id: string, value: string, style: Record<string, unknown> = {}): UIDLNode {\n return { id, type: \"Text\", props: { value }, style };\n}\n\nexport function compileDashboardPage(meta: DashboardPageMeta, options: CompileDashboardOptions): UIDLDocument {\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n const docId = options.docId ?? `dashboard-${meta.name.toLowerCase()}`;\n const title = meta.label[lang] ?? meta.name;\n\n const children: UIDLNode[] = [];\n if (options.extraHeaderActions && options.extraHeaderActions.length > 0) {\n children.push(pageHeader(title, options.extraHeaderActions));\n }\n\n if (meta.kpis && meta.kpis.length > 0) {\n const pairs: Array<[string, string]> = meta.kpis.map((kpi) => [kpi.label[lang] ?? \"\", String(kpi.value)]);\n children.push(kpiRow(\"dashboard-kpis\", pairs));\n }\n\n if (meta.shortcuts && meta.shortcuts.length > 0) {\n const shortcutNodes: UIDLNode[] = meta.shortcuts.map((sc, idx) => {\n const targetRoute = sc.route ?? `${options.routePolicy?.listBase ?? \"/app/list\"}/${sc.doctype}`.replace(\"//\", \"/\");\n const label = sc.label[lang] ?? sc.doctype;\n return {\n id: `shortcut-${idx}`,\n type: \"Container\",\n props: { className: \"flex flex-col p-4 rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-875 hover:bg-gray-50 dark:hover:bg-gray-850 cursor-pointer shadow-sm transition-colors\" },\n events: { onClick: [{ navigate: { route: targetRoute } }] },\n children: [\n { id: `shortcut-${idx}-title`, type: \"Text\", props: { value: label }, style: { fontSize: \"text-base\", fontWeight: 600 } },\n ...(sc.description\n ? [{ id: `shortcut-${idx}-desc`, type: \"Text\", props: { value: sc.description[lang] ?? \"\" }, style: { fontSize: \"text-sm\", color: TEXT_SECONDARY, marginTop: \"mt-1\" } } as UIDLNode]\n : []),\n ],\n };\n });\n\n children.push(\n dashboardSection(\n \"shortcuts-section\",\n [\n textNode(\"shortcuts-title\", lang === \"id\" ? \"Akses Cepat Modul\" : \"Quick Navigation\", { fontSize: \"text-base\", fontWeight: 600 }),\n {\n id: \"shortcuts-grid\",\n type: \"GridView\",\n props: { style: { display: \"grid\", gridTemplateColumns: \"repeat(auto-fill, minmax(220px, 1fr))\" } },\n style: { gap: \"gap-4\" },\n children: shortcutNodes,\n },\n ],\n { border: true },\n ),\n );\n }\n\n if (meta.charts && meta.charts.length > 0) {\n const chartNodes: UIDLNode[] = meta.charts.map((chart) => ({\n id: `chart-${chart.id}`,\n type: \"Chart\",\n props: {\n title: chart.title[lang] ?? chart.id,\n chartType: chart.type,\n xKey: chart.xKey,\n yKey: chart.yKey,\n dataSource: typeof chart.dataSource === \"string\" ? chart.dataSource : undefined,\n rows: Array.isArray(chart.dataSource) ? chart.dataSource : undefined,\n },\n style: chart.style ?? { width: \"w-full\" },\n }));\n\n const [primaryChart, ...secondaryCharts] = chartNodes;\n\n if (primaryChart) {\n children.push(dashboardSection(\"cashflow-section\", [primaryChart], { border: true }));\n }\n\n if (secondaryCharts.length > 0) {\n children.push(dashboardSection(\"pnl-expenses-section\", secondaryCharts, { border: true, grid: true }));\n }\n }\n\n const dataSources: Record<string, unknown> = { ...(meta.dataSources ?? {}) };\n for (const chart of meta.charts ?? []) {\n if (Array.isArray(chart.dataSource)) dataSources[`chart_${chart.id}`] = chart.dataSource;\n }\n\n return {\n version: \"1.0.0\",\n id: docId,\n name: title,\n dataSources: Object.keys(dataSources).length > 0 ? dataSources : undefined,\n root: { id: \"page\", type: \"Column\", style: { gap: \"gap-0\", fontSize: \"text-base\", width: \"w-full\" }, children },\n };\n}\n","/**\n * Public settings recipe — free of demo, company, and host-specific code.\n *\n * Settings must not fall back to generic list.\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport { nameControl } from \"./form.js\";\nimport {\n MERIDIAN_FORM_CONTROL_STYLE,\n MERIDIAN_FORM_LABEL_STYLE,\n MERIDIAN_FORM_ROW_GRID,\n MERIDIAN_FORM_ROW_STYLE,\n MERIDIAN_SECTION_HEADER_STYLE,\n} from \"../utils/formLayout\";\nimport { semanticNodeId, validateHostCapabilities, type HostCapabilities, type RoutePolicy, type SettingsPageMeta, type UiPolicy } from \"./types.js\";\n\nexport interface CompileSettingsOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n extraHeaderActions?: UIDLNode[];\n}\n\nconst BORDER_COLOR = \"{primitives.color.border}\";\nconst TEXT_SECONDARY = \"{primitives.color.text-secondary}\";\n\nfunction pageHeader(title: string, actions: UIDLNode[]): UIDLNode {\n return {\n id: \"settings-header\",\n type: \"Navbar\",\n style: { justifyContent: \"space-between\", alignItems: \"center\", padding: \"px-4\", height: \"h-row-large\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: [\n { id: \"settings-header-title\", type: \"Text\", props: { value: title, heading: 1 }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n { id: \"settings-header-actions\", type: \"Toolbar\", style: { display: \"flex\", gap: \"gap-2\" }, children: actions },\n ],\n };\n}\n\nfunction sectionHeader(id: string, title: string): UIDLNode {\n return { id, type: \"Text\", props: { value: title, heading: 3 }, style: { ...MERIDIAN_SECTION_HEADER_STYLE } };\n}\n\nexport function compileSettingsPage(meta: SettingsPageMeta, options: CompileSettingsOptions): UIDLDocument {\n const gate = validateHostCapabilities({ recipe: \"settings\", meta: meta as unknown as never, hostCapabilities: options.hostCapabilities } as never);\n // settings has no collection gate beyond general; reuse generic check via dummy\n if (gate.length > 0) throw new Error(`compileSettingsPage: hostCapabilities rejected: ${gate.map((i) => i.message).join(\"; \")}`);\n\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n const docId = options.docId ?? `settings-${meta.name.toLowerCase()}`;\n const title = meta.label[lang] ?? meta.name;\n\n const state: Record<string, unknown> = { formErrors: {}, formError: \"\", formStatus: \"idle\" };\n for (const section of meta.sections) for (const field of section.fields) state[field.key] = field.default ?? (field.widget === \"Checkbox\" || field.widget === \"Switch\" ? false : \"\");\n\n const saveAction: UIDLNode = {\n id: \"settings-save-btn\",\n type: \"Button\",\n props: { label: lang === \"id\" ? \"Simpan Pengaturan\" : \"Save Settings\", variant: \"primary\" },\n events: {\n onClick: [\n {\n command: {\n name: \"workspace.settings.save\",\n payload: { settings: meta.name, values: { $expr: { path: \"state\" } } },\n statusPath: \"formStatus\",\n errorPath: \"formError\",\n },\n },\n ],\n },\n };\n\n const headerActions: UIDLNode[] = [...(options.extraHeaderActions ?? []), saveAction];\n\n const sectionNodes: UIDLNode[] = [];\n for (const section of meta.sections) {\n sectionNodes.push(sectionHeader(`section-${section.id}`, section.label[lang] ?? section.id));\n for (const field of section.fields) {\n const control = buildFieldControl(field, meta.name, lang);\n const label = `${field.label[lang] ?? field.key}${field.required ? \" *\" : \"\"}`;\n sectionNodes.push({\n id: `row-${field.key}`,\n type: \"Row\",\n props: { style: { ...MERIDIAN_FORM_ROW_GRID } },\n style: { ...MERIDIAN_FORM_ROW_STYLE },\n children: [\n { id: `row-${field.key}-label`, type: \"Text\", props: { value: label }, style: { ...MERIDIAN_FORM_LABEL_STYLE } },\n { id: `row-${field.key}-control`, type: \"Column\", style: { ...MERIDIAN_FORM_CONTROL_STYLE }, children: [nameControl(control, label)] },\n ],\n });\n }\n }\n\n if (sectionNodes.length === 0) {\n sectionNodes.push({ id: \"settings-empty\", type: \"Text\", props: { value: lang === \"id\" ? \"Tidak ada pengaturan\" : \"No settings\" }, style: { padding: \"p-4\", color: TEXT_SECONDARY } });\n }\n\n // Wrap in Form for semantics and validation\n const formNode: UIDLNode = {\n id: \"settings-form\",\n type: \"Form\",\n style: { display: \"flex\", flexDirection: \"column\" },\n children: sectionNodes,\n };\n\n const errorNode: UIDLNode = {\n id: \"settings-error\",\n type: \"Text\",\n props: { value: { $bind: \"state.formError\" } },\n style: { padding: \"px-4\", color: \"{primitives.color.error}\" },\n visibility: { condition: { \"!=\": [{ path: \"state.formError\" }, { literal: \"\" }] } },\n };\n\n return {\n version: \"1.0.0\",\n id: docId,\n name: title,\n state,\n root: {\n id: \"page\",\n type: \"Column\",\n style: { fontSize: \"text-base\", width: \"w-full\" },\n children: [pageHeader(title, headerActions), formNode, errorNode],\n },\n };\n}\n\nfunction buildFieldControl(field: SettingsPageMeta[\"sections\"][number][\"fields\"][number], metaName: string, _lang: Language): UIDLNode {\n const id = semanticNodeId(\"settings\", metaName, field.key);\n const baseProps: Record<string, unknown> = { error: { $bind: `state.formErrors.${field.key}` } };\n if (field.widget === \"Checkbox\" || field.widget === \"Switch\") {\n return { id, type: field.widget, props: { ...baseProps, checked: { $bind: `state.${field.key}` } }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n }\n if (field.widget === \"Select\" || field.widget === \"RadioGroup\") {\n return { id, type: field.widget, props: { ...baseProps, value: { $bind: `state.${field.key}` }, options: (field.options as Array<{ value: string; label: string }> | undefined) ?? [] }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n }\n if (field.widget === \"Textarea\") {\n return { id, type: \"Textarea\", props: { ...baseProps, value: { $bind: `state.${field.key}` } }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n }\n return { id, type: \"TextField\", props: { ...baseProps, value: { $bind: `state.${field.key}` } }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n}\n","/**\n * Public tree recipe — free of demo, company, and host-specific code.\n *\n * Tree must not fall back to generic list; must use TreeView with\n * hierarchical nodes, not a flat DataTable.\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport { validateHostCapabilities, type HostCapabilities, type RoutePolicy, type TreePageMeta, type UiPolicy } from \"./types.js\";\n\nexport interface CompileTreeOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n extraHeaderActions?: UIDLNode[];\n}\n\nconst BORDER_COLOR = \"{primitives.color.border}\";\n\nfunction pageHeader(title: string, actions: UIDLNode[]): UIDLNode {\n return {\n id: \"tree-header\",\n type: \"Navbar\",\n style: { justifyContent: \"space-between\", alignItems: \"center\", padding: \"px-4\", height: \"h-row-large\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: [\n { id: \"tree-header-title\", type: \"Text\", props: { value: title, heading: 1 }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n { id: \"tree-header-actions\", type: \"Toolbar\", style: { display: \"flex\", gap: \"gap-2\" }, children: actions },\n ],\n };\n}\n\n\n\nexport function compileTreePage(meta: TreePageMeta, options: CompileTreeOptions): UIDLDocument {\n const gate = validateHostCapabilities({ recipe: \"tree\", meta: meta as unknown as never, hostCapabilities: options.hostCapabilities } as never);\n if (gate.length > 0) throw new Error(`compileTreePage: hostCapabilities rejected: ${gate.map((i) => i.message).join(\"; \")}`);\n\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n const docId = options.docId ?? `tree-${meta.name.toLowerCase()}`;\n const title = meta.label[lang] ?? meta.name;\n\n // Build TreeView data — hierarchical nodes as-is, plus state for selected key\n const state: Record<string, unknown> = { selectedKey: \"\", search: \"\" };\n\n const createButton: UIDLNode = {\n id: \"tree-create-btn\",\n type: \"Button\",\n props: { label: lang === \"id\" ? `+ ${meta.label.id}` : `+ New ${meta.label.en}`, variant: \"primary\" },\n events: { onClick: [{ navigate: { route: `${options.routePolicy?.formBase ?? \"/app/edit\"}/${meta.name}/new`.replace(\"//\", \"/\") } }] },\n };\n\n const searchNode: UIDLNode = {\n id: \"tree-search\",\n type: \"TextField\",\n style: { width: \"w-64\" },\n props: { placeholder: lang === \"id\" ? \"Cari…\" : \"Search…\", value: { $bind: \"state.search\" } },\n events: { onChange: [{ setState: { path: \"search\", value: null } }] },\n };\n\n // TreeView expects nodes as hierarchical array; we pass meta.nodes directly as dataSource rows or inline\n // For public compiler, we inline nodes as dataSource for preview; host adapter can replace via $query if needed\n // Map TreePageMeta nodes (key/label/children) to TreeNodeItem (id/label/children) for the TreeView component\n const toTreeItem = (node: TreePageMeta[\"nodes\"][number]): Record<string, unknown> => ({\n id: node.key,\n label: node.label[lang] ?? node.key,\n children: node.children?.map(toTreeItem),\n });\n const treeItems = meta.nodes.map(toTreeItem);\n\n const treeViewNode: UIDLNode = {\n id: \"tree-view\",\n type: \"TreeView\",\n props: {\n title,\n items: treeItems,\n },\n events: {\n onNodeClick: [{ setState: { path: \"selectedKey\", value: { $bind: \"event.id\" } } }],\n },\n style: { width: \"w-full\", padding: \"p-4\" },\n };\n\n const detailPanel: UIDLNode = {\n id: \"tree-detail\",\n type: \"Column\",\n style: { padding: \"p-4\", gap: \"gap-2\", borderWidth: \"border\", borderColor: BORDER_COLOR, borderRadius: \"{primitives.radius.md}\" },\n children: [\n { id: \"tree-detail-title\", type: \"Text\", props: { value: { $bind: \"state.selectedKey\" } }, style: { fontSize: \"text-lg\", fontWeight: 600 } },\n { id: \"tree-detail-placeholder\", type: \"Text\", props: { value: lang === \"id\" ? \"Pilih node untuk melihat detail\" : \"Select a node to view details\" }, style: { color: \"{primitives.color.text-secondary}\", fontSize: \"text-sm\" } },\n ],\n };\n\n return {\n version: \"1.0.0\",\n id: docId,\n name: title,\n state,\n dataSources: { nodes: treeItems },\n root: {\n id: \"page\",\n type: \"Column\",\n style: { fontSize: \"text-base\", width: \"w-full\" },\n children: [\n pageHeader(title, [createButton, ...(options.extraHeaderActions ?? [])]),\n {\n id: \"tree-toolbar\",\n type: \"Toolbar\",\n style: { display: \"flex\", gap: \"gap-3\", padding: \"p-4\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: [searchNode],\n },\n {\n id: \"tree-layout\",\n type: \"Row\",\n style: { display: \"flex\", gap: \"gap-4\", padding: \"p-4\" },\n children: [\n { id: \"tree-pane\", type: \"Container\", style: { width: \"w-1/3\", borderWidth: \"border\", borderColor: BORDER_COLOR, borderRadius: \"{primitives.radius.md}\" }, children: [treeViewNode] },\n { id: \"detail-pane\", type: \"Container\", style: { width: \"w-2/3\" }, children: [detailPanel] },\n ],\n },\n ],\n },\n };\n}\n","/**\n * Public wizard recipe — free of demo, company, and host-specific code.\n *\n * Wizard must not fall back to generic list; must render a stepper\n * with per-step fields and navigation (prev/next/submit).\n */\n\nimport type { UIDLDocument, UIDLNode } from \"../types\";\nimport type { Language } from \"../utils/i18n\";\nimport { semanticNodeId, validateHostCapabilities, type HostCapabilities, type RoutePolicy, type UiPolicy, type WizardPageMeta } from \"./types.js\";\n\nexport interface CompileWizardOptions {\n hostCapabilities: HostCapabilities;\n uiPolicy?: UiPolicy;\n routePolicy?: RoutePolicy;\n docId?: string;\n extraHeaderActions?: UIDLNode[];\n}\n\nconst BORDER_COLOR = \"{primitives.color.border}\";\n\nfunction pageHeader(title: string, actions: UIDLNode[]): UIDLNode {\n return {\n id: \"wizard-header\",\n type: \"Navbar\",\n style: { justifyContent: \"space-between\", alignItems: \"center\", padding: \"px-4\", height: \"h-row-large\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: [\n { id: \"wizard-header-title\", type: \"Text\", props: { value: title, heading: 1 }, style: { fontSize: \"text-xl\", fontWeight: 600 } },\n { id: \"wizard-header-actions\", type: \"Toolbar\", style: { display: \"flex\", gap: \"gap-2\" }, children: actions },\n ],\n };\n}\n\nfunction buildFieldNode(field: WizardPageMeta[\"steps\"][number][\"fields\"][number], metaName: string, _lang: Language): UIDLNode {\n const id = semanticNodeId(\"wizard\", metaName, field.key);\n const baseProps: Record<string, unknown> = {};\n if (field.widget === \"Checkbox\" || field.widget === \"Switch\") {\n return { id, type: field.widget, props: { ...baseProps, checked: { $bind: `state.${field.key}` } }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n }\n if (field.widget === \"Select\" || field.widget === \"RadioGroup\") {\n return { id, type: field.widget, props: { ...baseProps, value: { $bind: `state.${field.key}` }, options: (field.options as Array<{ value: string; label: string }> | undefined) ?? [] }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n }\n if (field.widget === \"Textarea\") {\n return { id, type: \"Textarea\", props: { ...baseProps, value: { $bind: `state.${field.key}` } }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n }\n return { id, type: \"TextField\", props: { ...baseProps, value: { $bind: `state.${field.key}` } }, events: { onChange: [{ setState: { path: field.key, value: null } }] } };\n}\n\nexport function compileWizardPage(meta: WizardPageMeta, options: CompileWizardOptions): UIDLDocument {\n const gate = validateHostCapabilities({ recipe: \"wizard\", meta: meta as unknown as never, hostCapabilities: options.hostCapabilities } as never);\n if (gate.length > 0) throw new Error(`compileWizardPage: hostCapabilities rejected: ${gate.map((i) => i.message).join(\"; \")}`);\n\n const lang: Language = options.uiPolicy?.lang ?? \"id\";\n const docId = options.docId ?? `wizard-${meta.name.toLowerCase()}`;\n const title = meta.label[lang] ?? meta.name;\n\n const state: Record<string, unknown> = { currentStep: 0, formErrors: {}, formError: \"\" };\n for (const step of meta.steps) for (const field of step.fields) state[field.key] = field.default ?? \"\";\n\n const stepperNode: UIDLNode = {\n id: \"wizard-stepper\",\n type: \"Toolbar\",\n style: { display: \"flex\", gap: \"gap-2\", padding: \"p-4\", borderWidth: \"border-b\", borderColor: BORDER_COLOR },\n children: meta.steps.map((step, idx) => ({\n id: `wizard-step-${step.id}`,\n type: \"Badge\",\n props: { label: step.label[lang] ?? step.id, color: idx === 0 ? \"blue\" : \"gray\", variant: \"pill\" },\n })),\n };\n\n const stepPanels: UIDLNode[] = meta.steps.map((step, idx) => ({\n id: `wizard-panel-${step.id}`,\n type: \"Column\",\n style: { gap: \"gap-4\", padding: \"p-4\" },\n children: [\n { id: `wizard-panel-${step.id}-title`, type: \"Text\", props: { value: step.label[lang] ?? step.id, heading: 2 }, style: { fontSize: \"text-lg\", fontWeight: 600 } },\n ...step.fields.map((field) => {\n const control = buildFieldNode(field, meta.name, lang);\n return {\n id: `wizard-row-${field.key}`,\n type: \"Row\",\n style: { display: \"flex\", gap: \"gap-4\", alignItems: \"center\" },\n children: [\n { id: `wizard-row-${field.key}-label`, type: \"Text\", props: { value: field.label[lang] ?? field.key }, style: { width: \"w-1/3\", fontSize: \"text-sm\" } },\n { id: `wizard-row-${field.key}-control`, type: \"Container\", style: { width: \"w-2/3\" }, children: [control] },\n ],\n };\n }),\n ],\n visibility: { condition: { \"==\": [{ path: \"state.currentStep\" }, { literal: idx }] } },\n }));\n\n const navNode: UIDLNode = {\n id: \"wizard-nav\",\n type: \"Toolbar\",\n style: { display: \"flex\", justifyContent: \"space-between\", padding: \"p-4\", borderWidth: \"border-t\", borderColor: BORDER_COLOR },\n children: [\n {\n id: \"wizard-prev-btn\",\n type: \"Button\",\n props: { label: lang === \"id\" ? \"Kembali\" : \"Back\", variant: \"secondary\" },\n events: { onClick: [{ setState: { path: \"currentStep\", value: { $expr: { path: \"state.currentStep - 1\" } } } }] },\n },\n {\n id: \"wizard-next-btn\",\n type: \"Button\",\n props: { label: lang === \"id\" ? \"Lanjut\" : \"Next\", variant: \"secondary\" },\n events: { onClick: [{ setState: { path: \"currentStep\", value: { $expr: { path: \"state.currentStep + 1\" } } } }] },\n visibility: { condition: { \"<\": [{ path: \"state.currentStep\" }, { literal: meta.steps.length - 1 }] } },\n },\n {\n id: \"wizard-submit-btn\",\n type: \"Button\",\n props: { label: lang === \"id\" ? \"Selesai\" : \"Submit\", variant: \"primary\" },\n events: {\n onClick: [\n {\n mutate: {\n operation: \"create\",\n collection: meta.name,\n payload: Object.fromEntries(\n meta.steps.flatMap((s) => s.fields.map((f) => [f.key, { $expr: { path: `state.${f.key}` } }])),\n ),\n statusPath: \"formStatus\",\n errorPath: \"formError\",\n fieldErrorsPath: \"formErrors\",\n },\n },\n ],\n },\n visibility: { condition: { \"==\": [{ path: \"state.currentStep\" }, { literal: meta.steps.length - 1 }] } },\n },\n ],\n };\n\n return {\n version: \"1.0.0\",\n id: docId,\n name: title,\n state,\n root: {\n id: \"page\",\n type: \"Column\",\n style: { fontSize: \"text-base\", width: \"w-full\" },\n children: [\n pageHeader(title, options.extraHeaderActions ?? []),\n stepperNode,\n ...stepPanels,\n {\n id: \"wizard-error\",\n type: \"Text\",\n props: { value: { $bind: \"state.formError\" } },\n style: { padding: \"px-4\", color: \"{primitives.color.error}\" },\n visibility: { condition: { \"!=\": [{ path: \"state.formError\" }, { literal: \"\" }] } },\n },\n navNode,\n ],\n },\n };\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","r","f","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","createPostfixLookupClassGroupIds","lookup","classGroupIds","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","postfixLookupClassGroupIds","classGroupsInConflict","classNames","originalClassName","baseClassNameWithoutPostfix","classGroupIdWithPostfix","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isNamedContainerQuery","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","mergeConfigs","baseConfig","extend","override","overrideProperty","overrideConfigProperties","mergeConfigProperties","mergeArrayProperties","baseObject","overrideKey","overrideValue","overrideObject","mergeObject","mergeValue","extendTailwindMerge","configExtension","createConfig","ROW_HEIGHTS","MERIDIAN_WIDTHS","twMerge","cn","classes","STATUS_COLORS","statusColor","status","isNumericFormat","format","formatNumeric","options","locale","DEFAULT_DISPLAY_PRECISION","formatCellValue","date","numeric","ICON_PATHS","ICON_NAMES","hasIcon","Icon","style","title","strokeWidth","paths","jsx","d","IconWidget","size","resolved","useElementWidth","ref","useRef","width","setWidth","useState","useEffect","element","observer","entry","prefixFormat","ten","three","num","suffix","MERIDIAN_DONUT_COLORS","MERIDIAN_SERIES_COLORS","useChartScale","points","viewBoxHeight","aspectRatio","axisPadding","pointsPadding","left","bottom","yLabelDivisions","extendGridX","yMin","yMax","useMemo","viewBoxWidth","padding","flat","min","max","hMin","hMax","count","series","xs","_","getViewBoxY","percent","ys","xy","x","zeroY","yScalerLocation","yScalerValue","l","gridLeft","gridRight","xGrid","y","MeridianBarChart","xLabels","colors","xLabelOffset","yLabelOffset","gridColor","zeroLineColor","fontColor","fontSize","gridThickness","barWidth","radius","skipXLabel","formatY","formatX","drawXGrid","drawLabels","drawZeroLine","ariaLabel","scale","seriesCount","rects","seriesYs","xi","si","isPositive","clipId","jsxs","rect","MeridianLineChart","thickness","gradientId","baseY","line","gradientLine","_a","_b","MeridianDonutChart","sectors","totalLabel","startAngle","offsetX","offsetY","textOffsetX","textOffsetY","valueFormatter","cx","cy","total","sum","sector","hasValues","arcs","start","theta","arcPath","arc","end","x1","y1","x2","y2","largeArc","ErrorText","error","CONTROL_LABEL_CLASS","CONTROL_INPUT_CLASS","CONTROL_BORDER_CLASS","controlSizeClass","Container","Row","Column","Stack","Spacer","Divider","_children","Text","heading","currency","printed","Tag","Image","src","alt","Button","variant","icon","iconName","iconPosition","background","isPrimary","BADGE_COLOR_CLASSES","badgeColorClass","color","Badge","TextField","id","border","generatedId","useId","fieldId","Checkbox","checked","Switch","Slider","Select","optionValueKey","optionLabelKey","placeholder","option","raw","Textarea","rows","RadioGroup","onChange","groupName","Form","onSubmit","event","ListView","GridView","DataTable","_dataSource","columns","rowActions","emptyMessage","showIndex","paginate","pageSizes","onRowAction","onRowOpen","pageNo","setPageNo","pageSize","setPageSize","maxPages","currentPage","pageStart","visibleRows","columnCount","gridStyle","isLast","alignOf","column","cellOptions","Fragment","row","cellIndex","text","action","Paginator","itemCount","activePageSize","onPageNo","onPageSize","visibleSizes","ChevronIcon","PageBar","page","onPageChange","onPageSizeChange","direction","Chart","chartType","xKey","yKey","height","containerRef","containerWidth","activeSeries","isDonut","seriesColors","item","formatCell","KanbanBoard","onCardClick","col","colCards","card","TreeNode","level","onNodeClick","expanded","setExpanded","hasChildren","child","TreeView","items","treeItems","Sidebar","Navbar","Toolbar","FOCUSABLE_SELECTOR","openOverlays","useOverlayBehavior","open","onClose","closeRef","container","previouslyFocused","handleKeyDown","e","focusables","first","last","active","DRAWER_SIDE_CLASSES","DRAWER_START_TRANSLATE","OVERLAY_EXIT_MS","overlayMotionClasses","closing","duration","nextFrame","cb","cancelFrame","useOverlayPresence","mounted","setMounted","setClosing","entered","setEntered","isFirstRender","reduced","raf","timer","Drawer","side","backdrop","motion","atRest","translate","fade","Panel","Popover","align","onPointerDown","target","Snackbar","message","Dialog","QRCodeSVG","fgColor","bgColor","hash","acc","char","modules","isTopLeftFinder","isTopRightFinder","isBottomLeftFinder","c","bitIndex","cellSize","BarcodeSVG","showText","barPattern","code","totalUnits","a","b","unitWidth","barHeight","currentX","isBlack","DataMatrixSVG","prop","description","payload","containerProps","textProps","formControlProps","optionProps","closeEvent","defaultWidgets","createRegistry","registry","widget","manifest","defaultRegistry","registerComponent","CSS_VAR_CATEGORIES","PASSTHROUGH_STYLE_FIELDS","isTokenRef","tokenRefToCssVar","category","getValueByPath","obj","isResponsiveValue","createThemeEngine","primitiveColorMap","primitiveSpacingMap","primitiveRadiusMap","primitiveShadowMap","primitiveFontMap","primitiveBorderMap","semanticColorMap","semanticSpacingMap","semanticRadiusMap","semanticShadowMap","resolveToken","rest","resolveValue","resolveStyleIntent","resolveResponsive","resolveResponsiveEnum","field","resolveResponsiveSuffix","token","resolveTypographyToken","resolveTypography","INLINE_STYLE_PROPERTIES","resolveInlineStyle","cssProperty","cssVar","resolveTypographyInlineStyle","responsive","breakpoint","val","map","mapped","resolveComponentVariant","variantName","variants","styleTypography","normalizeNodeResponsive","existing","base","merged","resolveFlexDirection","resolveJustify","resolveAlign","resolvePosition","VISIBILITY_BREAKPOINT_ORDER","VISIBILITY_BREAKPOINT_PREFIX","resolveVisibility","visibility","breakpoints","visible","bp","state","PASSTHROUGH_STYLE_KEYS","resolveClassName","_responsive","createStoreImpl","createState","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","createImpl","useBoundStore","create","createDocumentState","snapshot","set","get","setByPath","getByPath","lastKey","evaluate","expr","scope","resolvePath","evaluateAgg","right","cond","trueVal","falseVal","leftVal","source","values","namespaceDefinitionIds","instanceId","isRoot","slotName","slotNodes","slotNode","instantiateComponent","instanceNode","definition","namespaced","slots","FORM_WIDGETS","VALUE_EVENTS","renderNode","instance","normalized","dataSource","itemName","itemId","themeEngine","mergedStyle","mergedProps","resolveDataSourceProps","resolveProps","styleClassName","inlineStyle","handlers","resolveEvents","breakpointVisibilityClassName","resolveBreakpointVisibility","propsStyle","finalStyle","Component","_c","bindPath","resolveBinding","localKey","stateKey","sessionKey","routeKey","dataKey","condition","events","interpreter","nodeType","eventKey","actionPayload","sequence","createHandler","extractValue","getValueExtractor","$constructor","initializer","params","init","inst","def","proto","Parent","Definition","fn","$ZodAsyncError","$ZodEncodeError","globalConfig","newConfig","getEnumValues","numericValues","v","jsonStringifyReplacer","cached","nullish","input","cleanRegex","floatSafeRemainder","step","ratio","roundedRatio","tolerance","EVALUATING","defineLazy","assignProp","mergeDefs","defs","mergedDescriptors","descriptors","esc","str","slugify","captureStackTrace","_args","isObject","data","allowsEval","F","isPlainObject","o","ctor","prot","shallowClone","propertyKeyTypes","escapeRegex","clone","cl","normalizeParams","_params","optionalKeys","shape","NUMBER_FORMAT_RANGES","pick","schema","mask","currDef","checks","newShape","omit","existingShape","_shape","safeExtend","merge","Class","oldShape","required","aborted","explicitlyAborted","prefixIssues","issues","iss","unwrapMessage","finalizeIssue","ctx","_d","_e","_f","_inst","_continue","_input","getLengthableOrigin","issue","util.jsonStringifyReplacer","$ZodError","$ZodRealError","flattenError","mapper","fieldErrors","formErrors","sub","formatError","processError","fullpath","curr","el","_parse","_Err","_ctx","core.$ZodAsyncError","util.finalizeIssue","core.config","util.captureStackTrace","_parseAsync","_safeParse","errors.$ZodError","safeParse","errors.$ZodRealError","_safeParseAsync","safeParseAsync","_encode","_decode","_encodeAsync","_decodeAsync","_safeEncode","_safeDecode","_safeEncodeAsync","_safeDecodeAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","guid","uuid","version","email","_emoji","emoji","ipv4","ipv6","cidrv4","cidrv6","base64","base64url","httpProtocol","e164","dateSource","timeSource","hhmm","time","datetime","opts","timeRegex","regex","integer","number","boolean","lowercase","uppercase","$ZodCheck","core.$constructor","numericOriginMap","$ZodCheckLessThan","origin","bag","$ZodCheckGreaterThan","$ZodCheckMultipleOf","util.floatSafeRemainder","$ZodCheckNumberFormat","isInt","minimum","maximum","util.NUMBER_FORMAT_RANGES","regexes.integer","$ZodCheckMaxLength","util.nullish","util.getLengthableOrigin","$ZodCheckMinLength","$ZodCheckLengthEquals","length","tooBig","$ZodCheckStringFormat","$ZodCheckRegex","$ZodCheckLowerCase","regexes.lowercase","$ZodCheckUpperCase","regexes.uppercase","$ZodCheckIncludes","escapedRegex","util.escapeRegex","pattern","$ZodCheckStartsWith","$ZodCheckEndsWith","$ZodCheckOverwrite","Doc","lines","minIndent","dedented","$ZodType","ch","runChecks","isAborted","util.aborted","asyncResult","util.explicitlyAborted","currLen","handleCanaryResult","canary","checkResult","util.defineLazy","$ZodString","regexes.string","$ZodStringFormat","checks.$ZodCheckStringFormat","$ZodGUID","regexes.guid","$ZodUUID","regexes.uuid","$ZodEmail","regexes.email","$ZodURL","trimmed","regexes.httpProtocol","url","$ZodEmoji","regexes.emoji","$ZodNanoID","regexes.nanoid","$ZodCUID","regexes.cuid","$ZodCUID2","regexes.cuid2","$ZodULID","regexes.ulid","$ZodXID","regexes.xid","$ZodKSUID","regexes.ksuid","$ZodISODateTime","regexes.datetime","$ZodISODate","regexes.date","$ZodISOTime","regexes.time","$ZodISODuration","regexes.duration","$ZodIPv4","regexes.ipv4","$ZodIPv6","regexes.ipv6","$ZodCIDRv4","regexes.cidrv4","$ZodCIDRv6","regexes.cidrv6","address","prefixNum","isValidBase64","$ZodBase64","regexes.base64","isValidBase64URL","regexes.base64url","padded","$ZodBase64URL","$ZodE164","regexes.e164","isValidJWT","algorithm","tokensParts","header","parsedHeader","$ZodJWT","$ZodNumber","regexes.number","received","$ZodNumberFormat","checks.$ZodCheckNumberFormat","$ZodBoolean","regexes.boolean","$ZodUnknown","$ZodNever","handleArrayResult","final","util.prefixIssues","$ZodArray","proms","handlePropertyResult","isOptionalIn","isOptionalOut","isPresent","normalizeDef","okeys","util.optionalKeys","handleCatchall","unrecognized","keySet","_catchall","t","$ZodObject","desc","sh","newSh","_normalized","util.cached","propValues","util.isObject","catchall","$ZodObjectJIT","superParse","generateFastpass","doc","parseStr","util.esc","ids","counter","fastpass","jit","core.globalConfig","fastEnabled","util.allowsEval","handleUnionResults","results","nonaborted","$ZodUnion","patterns","p","util.cleanRegex","async","$ZodIntersection","handleIntersectionResults","mergeValues","util.isPlainObject","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","unrecKeys","unrecIssue","bothKeys","$ZodRecord","recordKeys","keyResult","outKey","retryResult","$ZodEnum","util.getEnumValues","valuesSet","util.propertyKeyTypes","$ZodTransform","core.$ZodEncodeError","_out","output","handleOptionalResult","$ZodOptional","$ZodExactOptional","$ZodNullable","$ZodDefault","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","$ZodCatch","$ZodPipe","handlePipeResult","$ZodReadonly","handleReadonlyResult","$ZodLazy","$ZodCustom","checks.$ZodCheck","handleRefineResult","_iss","util.issue","$ZodRegistry","_meta","meta","pm","globalRegistry","_string","util.normalizeParams","_email","_guid","_uuid","_uuidv4","_uuidv6","_uuidv7","_url","_nanoid","_cuid","_cuid2","_ulid","_xid","_ksuid","_ipv4","_ipv6","_cidrv4","_cidrv6","_base64","_base64url","_e164","_jwt","_isoDateTime","_isoDate","_isoTime","_isoDuration","_number","_int","_boolean","_unknown","_never","_lt","checks.$ZodCheckLessThan","_lte","_gt","checks.$ZodCheckGreaterThan","_gte","_multipleOf","checks.$ZodCheckMultipleOf","_maxLength","checks.$ZodCheckMaxLength","_minLength","checks.$ZodCheckMinLength","_length","checks.$ZodCheckLengthEquals","_regex","checks.$ZodCheckRegex","_lowercase","checks.$ZodCheckLowerCase","_uppercase","checks.$ZodCheckUpperCase","_includes","includes","checks.$ZodCheckIncludes","_startsWith","checks.$ZodCheckStartsWith","_endsWith","checks.$ZodCheckEndsWith","_overwrite","tx","checks.$ZodCheckOverwrite","_normalize","form","_trim","_toLowerCase","_toUpperCase","_slugify","util.slugify","_array","_refine","_superRefine","_check","_issue","initializeContext","process","seen","overrideSchema","_json","processor","parent","isTransforming","extractDefs","root","idToSchema","makeURI","defsSegment","externalId","uriGenerator","defUriPrefix","defId","extractToDef","ext","finalize","flattenRef","zodSchema","_cached","refSeen","refSchema","parentSeen","rootMetaId","finalized","createStandardJSONSchemaMethod","_schema","createToJSONSchemaMethod","processors","io","libraryOptions","formatMap","stringProcessor","json","contentEncoding","regexes","numberProcessor","multipleOf","exclusiveMaximum","exclusiveMinimum","exMin","exMax","legacy","booleanProcessor","bigintProcessor","symbolProcessor","nullProcessor","undefinedProcessor","voidProcessor","neverProcessor","anyProcessor","unknownProcessor","dateProcessor","enumProcessor","literalProcessor","vals","nanProcessor","templateLiteralProcessor","fileProcessor","file","mime","m","successProcessor","customProcessor","functionProcessor","transformProcessor","mapProcessor","setProcessor","arrayProcessor","objectProcessor","allKeys","requiredKeys","unionProcessor","isExclusive","intersectionProcessor","isSimpleIntersection","allOf","tupleProcessor","prefixPath","restPath","prefixItems","recordProcessor","keyType","keyBag","valueSchema","keyValues","validKeyValues","nullableProcessor","inner","nonoptionalProcessor","defaultProcessor","prefaultProcessor","catchProcessor","catchValue","pipeProcessor","inIsTransform","readonlyProcessor","promiseProcessor","optionalProcessor","lazyProcessor","allProcessors","toJSONSchema","schemas","external","ZodISODateTime","core.$ZodISODateTime","schemas.ZodStringFormat","core._isoDateTime","ZodISODate","core.$ZodISODate","core._isoDate","ZodISOTime","core.$ZodISOTime","core._isoTime","ZodISODuration","core.$ZodISODuration","core._isoDuration","core.formatError","core.flattenError","ZodRealError","parse","core._parse","parseAsync","core._parseAsync","core._safeParse","core._safeParseAsync","encode","core._encode","decode","core._decode","encodeAsync","core._encodeAsync","decodeAsync","core._decodeAsync","safeEncode","core._safeEncode","safeDecode","core._safeDecode","safeEncodeAsync","core._safeEncodeAsync","safeDecodeAsync","core._safeDecodeAsync","_installedGroups","_installLazyMethods","methods","installed","bound","ZodType","core.$ZodType","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","chks","util.mergeDefs","core.clone","reg","check","refine","refinement","superRefine","checks.overwrite","optional","exactOptional","nullable","nonoptional","array","union","intersection","pipe","transform","_default","prefault","_catch","readonly","core.globalRegistry","_ZodString","core.$ZodString","processors.stringProcessor","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","checks.slugify","ZodString","core._email","ZodEmail","core._url","ZodURL","core._jwt","ZodJWT","core._emoji","ZodEmoji","core._guid","ZodGUID","core._uuid","ZodUUID","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","ZodNanoID","core._cuid","ZodCUID","core._cuid2","ZodCUID2","core._ulid","ZodULID","core._base64","ZodBase64","core._base64url","ZodBase64URL","core._xid","ZodXID","core._ksuid","ZodKSUID","core._ipv4","ZodIPv4","core._ipv6","ZodIPv6","core._cidrv4","ZodCIDRv4","core._cidrv6","ZodCIDRv6","core._e164","ZodE164","iso.datetime","iso.date","iso.time","iso.duration","core._string","ZodStringFormat","core.$ZodStringFormat","core.$ZodEmail","core.$ZodGUID","core.$ZodUUID","core.$ZodURL","core.$ZodEmoji","core.$ZodNanoID","core.$ZodCUID","core.$ZodCUID2","core.$ZodULID","core.$ZodXID","core.$ZodKSUID","core.$ZodIPv4","core.$ZodIPv6","core.$ZodCIDRv4","core.$ZodCIDRv6","core.$ZodBase64","core.$ZodBase64URL","core.$ZodE164","core.$ZodJWT","ZodNumber","core.$ZodNumber","processors.numberProcessor","checks.gt","checks.gte","checks.lt","checks.lte","int","checks.multipleOf","core._number","ZodNumberFormat","core.$ZodNumberFormat","core._int","ZodBoolean","core.$ZodBoolean","processors.booleanProcessor","core._boolean","ZodUnknown","core.$ZodUnknown","processors.unknownProcessor","unknown","core._unknown","ZodNever","core.$ZodNever","processors.neverProcessor","never","core._never","ZodArray","core.$ZodArray","processors.arrayProcessor","n","core._array","ZodObject","core.$ZodObjectJIT","processors.objectProcessor","_enum","incoming","util.extend","util.safeExtend","other","util.merge","util.pick","util.omit","util.partial","ZodOptional","util.required","ZodNonOptional","ZodUnion","core.$ZodUnion","processors.unionProcessor","ZodIntersection","core.$ZodIntersection","processors.intersectionProcessor","ZodRecord","core.$ZodRecord","processors.recordProcessor","record","valueType","ZodEnum","core.$ZodEnum","processors.enumProcessor","newEntries","ZodTransform","core.$ZodTransform","processors.transformProcessor","core.$ZodOptional","processors.optionalProcessor","ZodExactOptional","core.$ZodExactOptional","ZodNullable","core.$ZodNullable","processors.nullableProcessor","ZodDefault","core.$ZodDefault","processors.defaultProcessor","defaultValue","util.shallowClone","ZodPrefault","core.$ZodPrefault","processors.prefaultProcessor","core.$ZodNonOptional","processors.nonoptionalProcessor","ZodCatch","core.$ZodCatch","processors.catchProcessor","ZodPipe","core.$ZodPipe","processors.pipeProcessor","in_","out","ZodReadonly","core.$ZodReadonly","processors.readonlyProcessor","ZodLazy","core.$ZodLazy","processors.lazyProcessor","lazy","ZodCustom","core.$ZodCustom","processors.customProcessor","core._refine","core._superRefine","TypographyTokenSchema","z.object","z.string","z.union","z.number","responsiveValueSchema","StyleIntentSchema","z.enum","ComponentVariantSchema","z.record","z.unknown","PrimitiveTokensSchema","SemanticTokensSchema","ThemeSchema","z.array","ThemePresetSchema","themeRegistry","presetRegistry","registerTheme","parsed","registerThemePreset","preset","getTheme","getThemePreset","listThemes","listPresets","createThemeRegistry","themeToCssVariablesMap","vars","themeToCssVariables","themeToTailwindV4","themeToTailwindV3","typography","DataError","fields","__publicField","isDataError","createInlineArrayResolver","_sourceName","isQueryDataSource","resolveBindDeep","resolveQueryDescriptor","descriptor","runDataSources","dataSources","query","dataError","serializeResolvedQueries","createEventBus","topic","topicListeners","resolveEventBind","eventValue","isRecord","isBoundActionValue","isExprActionValue","resolveActionValue","requireResolvedString","optionalResolvedString","optionalResolvedId","optionalResolvedNumber","optionalResolvedRecord","getStringRecord","normalizeMutationError","API_TIMEOUT_MS","DEFAULT_API_MAX_RESPONSE_BYTES","DEFAULT_API_MAX_CONCURRENT_CALLS","isHostAllowed","host","allowlist","ActionInterpreter","context","seqAction","thenAction","elseAction","routeValue","resolvedRoute","request","response","_g","transition","parsedUrl","controller","timeout","contentType","declaredLength","actualBytes","createRenderContext","document","stateStore","resolvedRows","stateSnapshot","eventBus","route","warnedAboutUnresolvedQuery","warnIfUnresolvedQuery","renderUIDocument","session","rendered","withThemeCssVariables","cssVariables","existingStyle","UIDocumentRenderer","dataAdapter","mutationHandler","commandHandler","onRouteChange","apiAllowlist","apiMaxResponseBytes","apiMaxConcurrentCalls","stateVersion","setStateVersion","lastResolvedQueriesRef","dataFetchAbortRef","effectiveDataSources","maybeRefetch","unsubscribe","dialog","setDialog","snackbar","setSnackbar","offDialog","offSnackbar","UIDL_RUNTIME_VERSION","computeRegistryVersion","widgets","w","REGISTRY_VERSION","getRegistryVersion","getRegistryFingerprint","VisibilitySchema","RepeatSchema","z.boolean","NodeSchema","z.lazy","ThemePresetsSchema","DocumentSchema","DesignTokensSchema","SetStateActionSchema","NavigateActionSchema","ApiActionSchema","BoundActionValueSchema","ExprActionValueSchema","ResolvableStringSchema","ResolvableIdSchema","ResolvableRecordSchema","ResolvableNumberSchema","MutationActionSchema","ActionSchema","CommandActionSchema","ShowSnackbarActionSchema","ShowDialogActionSchema","ValidateActionSchema","SequenceActionSchema","IfActionSchema","ActionsSchema","SCHEMA_BASE_URL","toJsonSchema","filename","z.toJSONSchema","generateJsonSchemas","lightPrimitives","lightSemantics","defaultLightTheme","darkPrimitives","darkSemantics","defaultDarkTheme","defaultLightPreset","defaultDarkPreset","gray","meridianLightPrimitives","meridianDarkPrimitives","meridianSemantics","meridianLightTheme","meridianDarkTheme","meridianLightPreset","meridianDarkPreset","serializeTheme","serializeThemePreset","deserializeTheme","deserializeThemePreset","validateResponsiveValue","errors","validateResponsiveStyle","responsiveErrors","matchesFilter","filter","lo","hi","compareValues","InMemoryAdapter","loaded","collection","records","signal","resolve","reject","q","sort","dir","pageNumber","found","mutation","list","updated","filtered","_name","seed","createInMemoryAdapter","STATUS_TO_CODE","HttpAdapter","abortFromCaller","toDataError","createHttpAdapter","buildFlatNodeMap","traverse","findParentId","flatMap","nodeId","removeChildFromNode","createEditorStore","initialDocument","initialFlatNodeMap","createEmptyDocument","changes","flatNodeMap","history","updatedNode","newFlatNodeMap","newRoot","updateNodeInTree","newDocument","parentId","childType","_index","newChild","updatedParent","selectedNodeId","targetParentId","currentParentId","currentParent","targetParent","updatedCurrentParent","effectiveTargetParent","targetChildren","insertIndex","updatedTargetParent","rebuildTreeFromFlatMap","mode","panel","previous","newPast","restFuture","targetId","rootId","RenderErrorBoundary","Canvas","onSelectNode","onHoverNode","themeMode","handleCanvasClick","useCallback","handleCanvasMouseOver","categories","WidgetPalette","onSelectWidget","grouped","categoryWidgets","useCombinedRefs","_len","refs","_key","canUseDOM","isWindow","elementString","isNode","getWindow","_target$ownerDocument","_target$ownerDocument2","isDocument","Document","isHTMLElement","isSVGElement","getOwnerDocument","useIsomorphicLayoutEffect","useLayoutEffect","useEvent","handler","handlerRef","useInterval","intervalRef","clear","useLatestValue","dependencies","valueRef","useLazyMemo","callback","newValue","useNodeRef","onChangeHandler","setNodeRef","usePrevious","useUniqueId","createAdjustmentFn","adjustments","accumulator","adjustment","valueAdjustment","add","subtract","hasViewportRelativeCoordinates","isKeyboardEvent","KeyboardEvent","isTouchEvent","TouchEvent","getEventCoordinates","CSS","scaleX","scaleY","_ref","easing","SELECTOR","findFirstFocusableNode","hiddenStyles","HiddenText","LiveRegion","announcement","ariaLiveType","visuallyHidden","useAnnouncement","setAnnouncement","DndMonitorContext","createContext","useDndMonitor","registerListener","useContext","useDndMonitorProvider","_listener$type","defaultScreenReaderInstructions","defaultAnnouncements","_ref2","over","_ref3","_ref4","Accessibility","announcements","hiddenTextDescribedById","screenReaderInstructions","announce","liveRegionId","_ref5","_ref6","markup","createPortal","Action","noop","useSensor","sensor","useSensors","sensors","defaultCoordinates","getRelativeTransformOrigin","eventCoordinates","transformOrigin","sortCollisionsDesc","getFirstCollision","collisions","firstCollision","getIntersectionRatio","top","targetArea","entryArea","intersectionArea","intersectionRatio","rectIntersection","collisionRect","droppableRects","droppableContainers","droppableContainer","adjustScale","rect1","rect2","getRectDelta","createRectAdjustmentFn","getAdjustedRect","parseTransform","transformArray","inverseTransform","parsedTransform","translateX","translateY","h","defaultOptions","getClientRect","getTransformAgnosticClientRect","getWindowClientRect","isFixed","computedStyle","isScrollable","overflowRegex","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","getScrollXCoordinate","getScrollYCoordinate","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","maxScroll","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","speed","threshold","getScrollElementRect","innerWidth","innerHeight","getScrollOffsets","scrollableAncestors","getScrollXOffset","getScrollYOffset","scrollIntoViewIfNeeded","measure","properties","Rect","scrollOffsets","axis","getScrollOffset","currentOffsets","scrollOffsetsDeltla","Listeners","_this$target","eventName","_this$target2","getEventListenerTarget","EventTarget","hasExceededDistance","delta","measurement","dx","dy","EventName","preventDefault","stopPropagation","KeyboardCode","defaultKeyboardCodes","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","activeNode","onStart","keyboardCodes","coordinateGetter","scrollBehavior","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","coordinates","onMove","onEnd","onCancel","onActivation","activator","isDistanceConstraint","constraint","isDelayConstraint","AbstractPointerSensor","listenerTarget","_getEventCoordinates","activationConstraint","bypassActivationConstraint","offset","onPending","initialCoordinates","_getEventCoordinates2","activated","onAbort","_this$document$getSel","PointerSensor","events$1","MouseButton","MouseSensor","events$2","TouchSensor","touches","AutoScrollActivator","TraversalOrder","useAutoScroller","canScroll","draggingRect","enabled","interval","order","pointerCoordinates","scrollableAncestorRects","scrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","scrollSpeed","scrollDirection","scrollContainerRef","autoScroll","scrollLeft","scrollTop","sortedScrollableAncestors","defaultScrollIntent","disabled","previousDelta","previousIntent","useCachedNode","draggableNodes","draggableNode","cachedNode","useCombineActivators","getSyntheticHandler","Sensor","sensorActivators","MeasuringStrategy","MeasuringFrequency","useDroppableMeasuring","containers","dragging","queue","setQueue","frequency","strategy","containersRef","isDisabled","disabledRef","measureDroppableContainers","timeoutId","previousValue","useInitialValue","computeFn","useInitialRect","useMutationObserver","handleMutations","mutationObserver","MutationObserver","useResizeObserver","handleResize","resizeObserver","ResizeObserver","defaultMeasure","useRect","fallbackRect","setRect","measureRect","currentRect","newRect","useRectDelta","initialRect","defaultValue$1","useScrollableAncestors","previousNode","ancestors","useScrollOffsets","elements","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","scrollingElement","previousElements","cleanup","scrollableElement","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useSensorSetup","teardownFns","teardown","useSyntheticListeners","useWindowRect","defaultValue$2","useRects","firstElement","windowRect","setRects","measureRects","getMeasurableNode","firstChild","useDragOverlayMeasuring","handleNodeChange","nodeRef","setRef","defaultSensors","defaultData","defaultMeasuringConfiguration","DroppableContainersMap","_super$get","_this$get$node$curren","_this$get","defaultPublicContext","defaultInternalContext","InternalContext","PublicContext","getInitialState","reducer","RestoreFocus","activatorEvent","previousActivatorEvent","previousActiveId","activatorNode","focusableNode","applyModifiers","useMeasuringConfiguration","useLayoutShiftScrollCompensation","initialized","rectDelta","ActiveDraggableContext","Status","DndContext","memo","_sensorContext$curren","_dragOverlay$nodeRef$","_dragOverlay$rect","_over$rect","accessibility","collisionDetection","measuring","store","useReducer","dispatch","dispatchMonitorEvent","registerMonitorListener","setStatus","isInitialized","activeId","activeRects","_node$data","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","measuringConfiguration","measuringScheduled","activationCoordinates","autoScrollOptions","getAutoScrollerOptions","initialActiveNodeRect","activeNodeRect","containerNodeRect","sensorContext","overNode","dragOverlay","draggingNode","draggingNodeRect","usesDragOverlay","nodeRectDelta","modifiedTranslate","scrollAdjustment","activeNodeScrollDelta","scrollAdjustedTranslate","overId","setOver","appliedTranslate","activeSensorRef","instantiateSensor","sensorInstance","onDragAbort","onDragPending","onDragStart","unstable_batchedUpdates","cancelDrop","bindActivatorToSensorInstantiator","nativeEvent","activeDraggableNode","activationContext","activators","onDragMove","onDragOver","overContainer","publicContext","internalContext","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","NullContext","defaultRole","ID_PREFIX","useDraggable","attributes","ariaDescribedById","role","roleDescription","tabIndex","isDragging","setActivatorNodeRef","dataRef","memoizedAttributes","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","useDroppable","resizeObserverConfig","resizeObserverConnected","callbackId","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","newElement","previousElement","AnimationManager","animation","clonedChildren","setClonedChildren","setElement","previousChildren","cloneElement","defaultTransform","NullifiedContextProvider","baseStyles","defaultTransition","PositionedOverlay","forwardRef","as","scaleAdjustedTransform","styles","defaultDropAnimationSideEffects","originalStyles","defaultKeyframeResolver","initial","defaultDropAnimationConfiguration","useDropAnimation","activeDraggable","measurableNode","createDefaultDropAnimation","sideEffects","keyframes","finalTransform","animationKeyframes","firstKeyframe","lastKeyframe","useKey","DragOverlay","dropAnimationConfig","wrapperElement","zIndex","modifiedTransform","dropAnimation","arrayMove","from","to","getSortedRects","isValidIndex","itemsEqual","normalizeDisabled","rectSortingStrategy","activeIndex","overIndex","newRects","oldRect","defaultScale$1","verticalListSortingStrategy","_rects$activeIndex","fallbackActiveRect","overIndexRect","itemGap","getItemGap$1","clientRects","previousRect","nextRect","Context","SortableContext","userDefinedItems","disabledProp","containerId","useDragOverlay","previousItemsRef","itemsHaveChanged","disableTransforms","contextValue","defaultNewIndexGetter","defaultAnimateLayoutChanges","isSorting","wasDragging","newIndex","previousItems","previousContainerId","transitionProperty","disabledTransition","defaultAttributes","useDerivedTransform","derivedTransform","setDerivedtransform","previousIndex","useSortable","animateLayoutChanges","userDefinedAttributes","localDisabled","customData","getNewIndex","localStrategy","globalDisabled","sortedRects","globalStrategy","normalizeLocalDisabled","itemsAfterCurrentSortable","isOver","setDroppableNodeRef","setDraggableNodeRef","displaceItem","shouldDisplaceDragSource","dragSourceDisplacement","shouldAnimateLayoutChanges","getTransition","_localDisabled$dragga","_localDisabled$droppa","LayerTree","hoveredNodeId","onMoveNode","setActiveId","flattenedNodes","nodes","handleDragStart","handleDragEnd","overItem","targetIndex","SortableTreeNode","isSelected","isHovered","handleClick","handleMouseEnter","handleMouseLeave","PropertyPanel","onUpdateNode","handleChange","STYLE_FIELDS","StylePanel","newStyle","handleResponsiveChange","currentValue","renderFieldValue","ValidationStatus","errorCount","warningCount","Editor","activeTab","setActiveTab","fileInputRef","selectedNode","documentState","validateDocument","currentDocument","setValidationErrors","err","handleSelectWidget","widgetType","handleSave","blob","handleLoad","reader","handleMoveNode","DICTIONARY","lang","dict","idDict","formatRupiah","amount","includePrefix","formatted","MONTH_NAMES_ID","MONTH_NAMES_EN","formatIndonesianDate","dateInput","day","month","year","formatTerbilang","amountInput","SATUAN","bilang","sisa","generateUidlFromPrompt","prompt","cleanTitle","PAGE_RECIPES","isPageRecipe","validateHostCapabilities","caps","collections","mutationCollections","ds","coll","qq","reportMeta","s","linkDoctype","semanticNodeId","recipe","metaName","fieldKey","semanticListNodeIds","BORDER_COLOR","TEXT_SECONDARY","cellFormatFor","fieldMeta","statusField","summaryFormat","compileListPage","gateInput","docId","listBase","formBase","newRoute","defaultPageSize","defaultSortField","defaultSortDir","queryFilters","filterControls","filterLabel","optionsList","resetActions","tableColumns","colLabel","createNewActions","filterPopover","headerActions","summaryNodes","summaries","summary","idx","rowOpenActions","parseListQueryParams","searchParams","serializeListQueryParams","isDesc","defaultIsDesc","BORDER","MERIDIAN_FORM_PAGE_STYLE","MERIDIAN_FORM_PAGE_FULL_STYLE","MERIDIAN_FORM_SHELL_STYLE","MERIDIAN_FORM_HEADER_STYLE","MERIDIAN_FORM_ROW_STYLE","MERIDIAN_FORM_ROW_GRID","MERIDIAN_FORM_LABEL_STYLE","MERIDIAN_FORM_CONTROL_STYLE","MERIDIAN_FORM_CONTROL_PROPS","MERIDIAN_SECTION_HEADER_STYLE","MERIDIAN_FORM_FOOTER_STYLE","buildFormPayload","buttonNode","buildSaveButton","isNew","listRoute","btn","buildTransitionButton","states","buildFormControlNode","isCheckbox","isReadOnly","baseProps","dsKey","linkTarget","linkValueKey","linkLabelKey","customPlaceholder","formRow","control","nameControl","unboxControl","BOXED_CONTROLS","NAMEABLE_CONTROLS","named","sectionHeader","pageHeader","actions","formPageWrapper","fullWidth","formShell","compileFormPage","recordId","sectionsMap","sec","formContentNodes","sectionName","sectionFields","fieldLabel","childTableNodes","hasChildTables","childTable","childField","childLabel","transitionButtons","tr","footerActions","useFullWidth","headerNode","formFooterNode","errorNode","rootNode","formNode","compileReportPage","gate","rawQuery","filterBinds","filterNodes","kpiRow","pairs","dashboardSection","textNode","compileDashboardPage","kpi","shortcutNodes","sc","targetRoute","chartNodes","chart","primaryChart","secondaryCharts","compileSettingsPage","section","saveAction","sectionNodes","buildFieldControl","_lang","compileTreePage","createButton","searchNode","toTreeItem","treeViewNode","detailPanel","buildFieldNode","compileWizardPage","stepperNode","stepPanels","navNode"],"mappings":";;;;;;;;6CAWA,IAAIA,EAAqB,OAAO,IAAI,4BAA4B,EAC9DC,EAAsB,OAAO,IAAI,gBAAgB,EACnD,SAASC,EAAQC,EAAMC,EAAQC,EAAU,CACvC,IAAIC,EAAM,KAGV,GAFWD,IAAX,SAAwBC,EAAM,GAAKD,GACxBD,EAAO,MAAlB,SAA0BE,EAAM,GAAKF,EAAO,KACxC,QAASA,EAAQ,CACnBC,EAAW,CAAA,EACX,QAASE,KAAYH,EACTG,IAAV,QAAuBF,EAASE,CAAQ,EAAIH,EAAOG,CAAQ,EACjE,MAASF,EAAWD,EAClB,OAAAA,EAASC,EAAS,IACX,CACL,SAAUL,EACV,KAAMG,EACN,IAAKG,EACL,IAAgBF,IAAX,OAAoBA,EAAS,KAClC,MAAOC,EAEX,CACA,OAAAG,GAAA,SAAmBP,EACnBO,GAAA,IAAcN,EACdM,GAAA,KAAeN;;;;;;;;yCCtBE,QAAQ,IAAI,WAA7B,eACG,UAAY,CACX,SAASO,EAAyBN,EAAM,CACtC,GAAYA,GAAR,KAAc,OAAO,KACzB,GAAmB,OAAOA,GAAtB,WACF,OAAOA,EAAK,WAAaO,EACrB,KACAP,EAAK,aAAeA,EAAK,MAAQ,KACvC,GAAiB,OAAOA,GAApB,SAA0B,OAAOA,EACrC,OAAQA,EAAI,CACV,KAAKF,EACH,MAAO,WACT,KAAKU,EACH,MAAO,WACT,KAAKC,EACH,MAAO,aACT,KAAKC,EACH,MAAO,WACT,KAAKC,EACH,MAAO,eACT,KAAKC,EACH,MAAO,UACjB,CACM,GAAiB,OAAOZ,GAApB,SACF,OACgB,OAAOA,EAAK,KAAzB,UACC,QAAQ,MACN,qHAEJA,EAAK,SACf,CACU,KAAKa,EACH,MAAO,SACT,KAAKC,EACH,OAAOd,EAAK,aAAe,UAC7B,KAAKe,EACH,OAAQf,EAAK,SAAS,aAAe,WAAa,YACpD,KAAKgB,EACH,IAAIC,EAAYjB,EAAK,OACrB,OAAAA,EAAOA,EAAK,YACZA,IACIA,EAAOiB,EAAU,aAAeA,EAAU,MAAQ,GACnDjB,EAAcA,IAAP,GAAc,cAAgBA,EAAO,IAAM,cAC9CA,EACT,KAAKkB,EACH,OACGD,EAAYjB,EAAK,aAAe,KACxBiB,IAAT,KACIA,EACAX,EAAyBN,EAAK,IAAI,GAAK,OAE/C,KAAKmB,EACHF,EAAYjB,EAAK,SACjBA,EAAOA,EAAK,MACZ,GAAI,CACF,OAAOM,EAAyBN,EAAKiB,CAAS,CAAC,CAC7D,MAAwB,CAAA,CACxB,CACM,OAAO,IACb,CACI,SAASG,EAAmBC,EAAO,CACjC,MAAO,GAAKA,CAClB,CACI,SAASC,EAAuBD,EAAO,CACrC,GAAI,CACFD,EAAmBC,CAAK,EACxB,IAAIE,EAA2B,EACvC,MAAkB,CACVA,EAA2B,EACnC,CACM,GAAIA,EAA0B,CAC5BA,EAA2B,QAC3B,IAAIC,EAAwBD,EAAyB,MACjDE,GACc,OAAO,QAAtB,YACC,OAAO,aACPJ,EAAM,OAAO,WAAW,GAC1BA,EAAM,YAAY,MAClB,SACF,OAAAG,EAAsB,KACpBD,EACA,2GACAE,IAEKL,EAAmBC,CAAK,CACvC,CACA,CACI,SAASK,EAAY1B,EAAM,CACzB,GAAIA,IAASF,EAAqB,MAAO,KACzC,GACe,OAAOE,GAApB,UACSA,IAAT,MACAA,EAAK,WAAamB,EAElB,MAAO,QACT,GAAI,CACF,IAAIQ,EAAOrB,EAAyBN,CAAI,EACxC,OAAO2B,EAAO,IAAMA,EAAO,IAAM,OACzC,MAAkB,CACV,MAAO,OACf,CACA,CACI,SAASC,GAAW,CAClB,IAAIC,EAAaC,EAAqB,EACtC,OAAgBD,IAAT,KAAsB,KAAOA,EAAW,SAAQ,CAC7D,CACI,SAASE,GAAe,CACtB,OAAO,MAAM,uBAAuB,CAC1C,CACI,SAASC,EAAY/B,EAAQ,CAC3B,GAAIgC,EAAe,KAAKhC,EAAQ,KAAK,EAAG,CACtC,IAAIiC,EAAS,OAAO,yBAAyBjC,EAAQ,KAAK,EAAE,IAC5D,GAAIiC,GAAUA,EAAO,eAAgB,MAAO,EACpD,CACM,OAAkBjC,EAAO,MAAlB,MACb,CACI,SAASkC,EAA2BC,EAAOC,EAAa,CACtD,SAASC,GAAwB,CAC/BC,IACIA,EAA6B,GAC/B,QAAQ,MACN,0OACAF,CACZ,EACA,CACMC,EAAsB,eAAiB,GACvC,OAAO,eAAeF,EAAO,MAAO,CAClC,IAAKE,EACL,aAAc,EACtB,CAAO,CACP,CACI,SAASE,GAAyC,CAChD,IAAIC,EAAgBnC,EAAyB,KAAK,IAAI,EACtD,OAAAoC,EAAuBD,CAAa,IAChCC,EAAuBD,CAAa,EAAI,GAC1C,QAAQ,MACN,6IACV,GACMA,EAAgB,KAAK,MAAM,IACTA,IAAX,OAA2BA,EAAgB,IACxD,CACI,SAASE,EAAa3C,EAAMG,EAAKiC,EAAOQ,GAAOC,GAAYC,GAAW,CACpE,IAAIC,GAAUX,EAAM,IACpB,OAAApC,EAAO,CACL,SAAUH,EACV,KAAMG,EACN,IAAKG,EACL,MAAOiC,EACP,OAAQQ,KAEWG,KAAX,OAAqBA,GAAU,QAAzC,KACI,OAAO,eAAe/C,EAAM,MAAO,CACjC,WAAY,GACZ,IAAKwC,EACN,EACD,OAAO,eAAexC,EAAM,MAAO,CAAE,WAAY,GAAI,MAAO,KAAM,EACtEA,EAAK,OAAS,CAAA,EACd,OAAO,eAAeA,EAAK,OAAQ,YAAa,CAC9C,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,CACf,CAAO,EACD,OAAO,eAAeA,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,IACf,CAAO,EACD,OAAO,eAAeA,EAAM,cAAe,CACzC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO6C,EACf,CAAO,EACD,OAAO,eAAe7C,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO8C,EACf,CAAO,EACD,OAAO,SAAW,OAAO,OAAO9C,EAAK,KAAK,EAAG,OAAO,OAAOA,CAAI,GACxDA,CACb,CACI,SAASgD,EACPhD,EACAC,EACAC,EACA+C,GACAJ,GACAC,GACA,CACA,IAAII,GAAWjD,EAAO,SACtB,GAAeiD,KAAX,OACF,GAAID,GACF,GAAIE,EAAYD,EAAQ,EAAG,CACzB,IACED,GAAmB,EACnBA,GAAmBC,GAAS,OAC5BD,KAEAG,EAAkBF,GAASD,EAAgB,CAAC,EAC9C,OAAO,QAAU,OAAO,OAAOC,EAAQ,CACnD,MACY,QAAQ,MACN,6JAEDE,EAAkBF,EAAQ,EACjC,GAAIjB,EAAe,KAAKhC,EAAQ,KAAK,EAAG,CACtCiD,GAAW5C,EAAyBN,CAAI,EACxC,IAAIqD,GAAO,OAAO,KAAKpD,CAAM,EAAE,OAAO,SAAUqD,EAAG,CACjD,OAAiBA,IAAV,KACjB,CAAS,EACDL,GACE,EAAII,GAAK,OACL,kBAAoBA,GAAK,KAAK,SAAS,EAAI,SAC3C,iBACNE,EAAsBL,GAAWD,EAAgB,IAC7CI,GACA,EAAIA,GAAK,OAAS,IAAMA,GAAK,KAAK,SAAS,EAAI,SAAW,KAC5D,QAAQ,MACN;AAAA;AAAA;AAAA;AAAA;AAAA,mCACAJ,GACAC,GACAG,GACAH,IAEDK,EAAsBL,GAAWD,EAAgB,EAAI,GAChE,CAMM,GALAC,GAAW,KACAhD,IAAX,SACGoB,EAAuBpB,CAAQ,EAAIgD,GAAW,GAAKhD,GACtD8B,EAAY/B,CAAM,IACfqB,EAAuBrB,EAAO,GAAG,EAAIiD,GAAW,GAAKjD,EAAO,KAC3D,QAASA,EAAQ,CACnBC,EAAW,CAAA,EACX,QAASE,MAAYH,EACTG,KAAV,QAAuBF,EAASE,EAAQ,EAAIH,EAAOG,EAAQ,EACrE,MAAaF,EAAWD,EAClB,OAAAiD,IACEf,EACEjC,EACe,OAAOF,GAAtB,WACIA,EAAK,aAAeA,EAAK,MAAQ,UACjCA,GAED2C,EACL3C,EACAkD,GACAhD,EACA0B,EAAQ,EACRiB,GACAC,GAER,CACI,SAASM,EAAkBI,EAAM,CAC/BC,EAAeD,CAAI,EACfA,EAAK,SAAWA,EAAK,OAAO,UAAY,GAC3B,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAK,WAAarC,IACDqC,EAAK,SAAS,SAA9B,YACGC,EAAeD,EAAK,SAAS,KAAK,GAClCA,EAAK,SAAS,MAAM,SACnBA,EAAK,SAAS,MAAM,OAAO,UAAY,GACxCA,EAAK,SAAWA,EAAK,OAAO,UAAY,GACtD,CACI,SAASC,EAAeC,EAAQ,CAC9B,OACe,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAO,WAAa7D,CAE5B,CACI,IAAI8D,EAAQC,EACV/D,EAAqB,OAAO,IAAI,4BAA4B,EAC5DgB,EAAoB,OAAO,IAAI,cAAc,EAC7Cf,EAAsB,OAAO,IAAI,gBAAgB,EACjDW,EAAyB,OAAO,IAAI,mBAAmB,EACvDD,EAAsB,OAAO,IAAI,gBAAgB,EACjDO,EAAsB,OAAO,IAAI,gBAAgB,EACjDD,EAAqB,OAAO,IAAI,eAAe,EAC/CE,EAAyB,OAAO,IAAI,mBAAmB,EACvDN,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAA2B,OAAO,IAAI,qBAAqB,EAC3DO,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAkB,OAAO,IAAI,YAAY,EACzCP,EAAsB,OAAO,IAAI,gBAAgB,EACjDL,EAAyB,OAAO,IAAI,wBAAwB,EAC5DuB,EACE6B,EAAM,gEACR1B,EAAiB,OAAO,UAAU,eAClCkB,EAAc,MAAM,QACpBU,EAAa,QAAQ,WACjB,QAAQ,WACR,UAAY,CACV,OAAO,IACnB,EACIF,EAAQ,CACN,yBAA0B,SAAUG,EAAmB,CACrD,OAAOA,EAAiB,CAChC,GAEI,IAAIvB,EACAG,EAAyB,CAAA,EACzBqB,EAAyBJ,EAAM,yBAAyB,KAC1DA,EACA5B,CACN,EAAK,EACGiC,EAAwBH,EAAWnC,EAAYK,CAAY,CAAC,EAC5DwB,EAAwB,CAAA,EAC5BU,GAAA,SAAmBnE,EACnBmE,GAAA,IAAc,SAAUjE,EAAMC,EAAQC,EAAU,CAC9C,IAAIgE,GACF,IAAMpC,EAAqB,6BAC7B,OAAOkB,EACLhD,EACAC,EACAC,EACA,GACAgE,GACI,MAAM,uBAAuB,EAC7BH,EACJG,GAAmBL,EAAWnC,EAAY1B,CAAI,CAAC,EAAIgE,EAE3D,EACIC,GAAA,KAAe,SAAUjE,EAAMC,EAAQC,EAAU,CAC/C,IAAIgE,GACF,IAAMpC,EAAqB,6BAC7B,OAAOkB,EACLhD,EACAC,EACAC,EACA,GACAgE,GACI,MAAM,uBAAuB,EAC7BH,EACJG,GAAmBL,EAAWnC,EAAY1B,CAAI,CAAC,EAAIgE,EAE3D,CACA,GAAG,4CC7VC,QAAQ,IAAI,WAAa,aAC3BG,GAAA,QAAiBP,GAAA,EAEjBO,GAAA,QAAiBC,GAAA,yBCLnB,SAASC,GAAE,EAAE,CAAC,IAAI,EAAEC,EAAE,EAAE,GAAG,GAAa,OAAO,GAAjB,UAA8B,OAAO,GAAjB,SAAmB,GAAG,UAAoB,OAAO,GAAjB,SAAmB,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,IAAIA,EAAED,GAAE,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,GAAGC,EAAE,KAAM,KAAIA,KAAK,EAAE,EAAEA,CAAC,IAAI,IAAI,GAAG,KAAK,GAAGA,GAAG,OAAO,CAAC,CAAQ,SAASC,IAAM,CAAC,QAAQ,EAAE,EAAED,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,OAAOA,EAAE,EAAEA,KAAK,EAAE,UAAUA,CAAC,KAAK,EAAED,GAAE,CAAC,KAAK,IAAI,GAAG,KAAK,GAAG,GAAG,OAAO,CAAC,CCG/W,MAAMG,GAAe,CAACC,EAAQC,IAAW,CAEvC,MAAMC,EAAgB,IAAI,MAAMF,EAAO,OAASC,EAAO,MAAM,EAC7D,QAASE,EAAI,EAAGA,EAAIH,EAAO,OAAQG,IACjCD,EAAcC,CAAC,EAAIH,EAAOG,CAAC,EAE7B,QAASA,EAAI,EAAGA,EAAIF,EAAO,OAAQE,IACjCD,EAAcF,EAAO,OAASG,CAAC,EAAIF,EAAOE,CAAC,EAE7C,OAAOD,CACT,EAGME,GAA6B,CAACC,EAAcC,KAAe,CAC/D,aAAAD,EACA,UAAAC,CACF,GAEMC,GAAwB,CAACC,EAAW,IAAI,IAAOC,EAAa,KAAMJ,KAAkB,CACxF,SAAAG,EACA,WAAAC,EACA,aAAAJ,CACF,GACMK,GAAuB,IACvBC,GAAkB,CAAA,EAElBC,GAA4B,cAC5BC,GAAwBrF,GAAU,CACtC,MAAMsF,EAAWC,GAAevF,CAAM,EAChC,CACJ,uBAAAwF,EACA,+BAAAC,CACJ,EAAMzF,EA2BJ,MAAO,CACL,gBA3BsB0F,GAAa,CACnC,GAAIA,EAAU,WAAW,GAAG,GAAKA,EAAU,SAAS,GAAG,EACrD,OAAOC,GAA+BD,CAAS,EAEjD,MAAME,EAAaF,EAAU,MAAMR,EAAoB,EAEjDW,EAAaD,EAAW,CAAC,IAAM,IAAMA,EAAW,OAAS,EAAI,EAAI,EACvE,OAAOE,GAAkBF,EAAYC,EAAYP,CAAQ,CAC3D,EAoBE,4BAnBkC,CAACT,EAAckB,IAAuB,CACxE,GAAIA,EAAoB,CACtB,MAAMC,EAAoBP,EAA+BZ,CAAY,EAC/DoB,EAAgBT,EAAuBX,CAAY,EACzD,OAAImB,EACEC,EAEK1B,GAAa0B,EAAeD,CAAiB,EAG/CA,EAGFC,GAAiBd,EAC1B,CACA,OAAOK,EAAuBX,CAAY,GAAKM,EACjD,CAIF,CACA,EACMW,GAAoB,CAACF,EAAYC,EAAYK,IAAoB,CAErE,GADyBN,EAAW,OAASC,IACpB,EACvB,OAAOK,EAAgB,aAEzB,MAAMC,EAAmBP,EAAWC,CAAU,EACxCO,EAAsBF,EAAgB,SAAS,IAAIC,CAAgB,EACzE,GAAIC,EAAqB,CACvB,MAAMC,EAASP,GAAkBF,EAAYC,EAAa,EAAGO,CAAmB,EAChF,GAAIC,EAAQ,OAAOA,CACrB,CACA,MAAMpB,EAAaiB,EAAgB,WACnC,GAAIjB,IAAe,KACjB,OAGF,MAAMqB,EAAYT,IAAe,EAAID,EAAW,KAAKV,EAAoB,EAAIU,EAAW,MAAMC,CAAU,EAAE,KAAKX,EAAoB,EAC7HqB,EAAmBtB,EAAW,OACpC,QAASN,EAAI,EAAGA,EAAI4B,EAAkB5B,IAAK,CACzC,MAAM6B,EAAevB,EAAWN,CAAC,EACjC,GAAI6B,EAAa,UAAUF,CAAS,EAClC,OAAOE,EAAa,YAExB,CAEF,EAMMb,GAAiCD,GAAaA,EAAU,MAAM,EAAG,EAAE,EAAE,QAAQ,GAAG,IAAM,GAAK,QAAa,IAAM,CAClH,MAAMe,EAAUf,EAAU,MAAM,EAAG,EAAE,EAC/BgB,EAAaD,EAAQ,QAAQ,GAAG,EAChCE,EAAWF,EAAQ,MAAM,EAAGC,CAAU,EAC5C,OAAOC,EAAWvB,GAA4BuB,EAAW,MAC3D,GAAC,EAIKpB,GAAiBvF,GAAU,CAC/B,KAAM,CACJ,MAAA4G,EACA,YAAAC,CACJ,EAAM7G,EACJ,OAAO8G,GAAmBD,EAAaD,CAAK,CAC9C,EAEME,GAAqB,CAACD,EAAaD,IAAU,CACjD,MAAMtB,EAAWP,GAAqB,EACtC,UAAWF,KAAgBgC,EAAa,CACtC,MAAME,EAAQF,EAAYhC,CAAY,EACtCmC,GAA0BD,EAAOzB,EAAUT,EAAc+B,CAAK,CAChE,CACA,OAAOtB,CACT,EACM0B,GAA4B,CAACC,EAAYf,EAAiBrB,EAAc+B,IAAU,CACtF,MAAMM,EAAMD,EAAW,OACvB,QAAStC,EAAI,EAAGA,EAAIuC,EAAKvC,IAAK,CAC5B,MAAMwC,EAAkBF,EAAWtC,CAAC,EACpCyC,GAAuBD,EAAiBjB,EAAiBrB,EAAc+B,CAAK,CAC9E,CACF,EAEMQ,GAAyB,CAACD,EAAiBjB,EAAiBrB,EAAc+B,IAAU,CACxF,GAAI,OAAOO,GAAoB,SAAU,CACvCE,GAAwBF,EAAiBjB,EAAiBrB,CAAY,EACtE,MACF,CACA,GAAI,OAAOsC,GAAoB,WAAY,CACzCG,GAA0BH,EAAiBjB,EAAiBrB,EAAc+B,CAAK,EAC/E,MACF,CACAW,GAAwBJ,EAAiBjB,EAAiBrB,EAAc+B,CAAK,CAC/E,EACMS,GAA0B,CAACF,EAAiBjB,EAAiBrB,IAAiB,CAClF,MAAM2C,EAAwBL,IAAoB,GAAKjB,EAAkBuB,GAAQvB,EAAiBiB,CAAe,EACjHK,EAAsB,aAAe3C,CACvC,EACMyC,GAA4B,CAACH,EAAiBjB,EAAiBrB,EAAc+B,IAAU,CAC3F,GAAIc,GAAcP,CAAe,EAAG,CAClCH,GAA0BG,EAAgBP,CAAK,EAAGV,EAAiBrB,EAAc+B,CAAK,EACtF,MACF,CACIV,EAAgB,aAAe,OACjCA,EAAgB,WAAa,CAAA,GAE/BA,EAAgB,WAAW,KAAKtB,GAA2BC,EAAcsC,CAAe,CAAC,CAC3F,EACMI,GAA0B,CAACJ,EAAiBjB,EAAiBrB,EAAc+B,IAAU,CACzF,MAAMe,EAAU,OAAO,QAAQR,CAAe,EACxCD,EAAMS,EAAQ,OACpB,QAAS,EAAI,EAAG,EAAIT,EAAK,IAAK,CAC5B,KAAM,CAAChH,EAAKkB,CAAK,EAAIuG,EAAQ,CAAC,EAC9BX,GAA0B5F,EAAOqG,GAAQvB,EAAiBhG,CAAG,EAAG2E,EAAc+B,CAAK,CACrF,CACF,EACMa,GAAU,CAACvB,EAAiB0B,IAAS,CACzC,IAAIC,EAAU3B,EACd,MAAM4B,EAAQF,EAAK,MAAM1C,EAAoB,EACvCgC,EAAMY,EAAM,OAClB,QAASnD,EAAI,EAAGA,EAAIuC,EAAKvC,IAAK,CAC5B,MAAMoD,EAAOD,EAAMnD,CAAC,EACpB,IAAIqD,EAAOH,EAAQ,SAAS,IAAIE,CAAI,EAC/BC,IACHA,EAAOjD,GAAqB,EAC5B8C,EAAQ,SAAS,IAAIE,EAAMC,CAAI,GAEjCH,EAAUG,CACZ,CACA,OAAOH,CACT,EAEMH,GAAgBO,GAAQ,kBAAmBA,GAAQA,EAAK,gBAAkB,GAG1EC,GAAiBC,GAAgB,CACrC,GAAIA,EAAe,EACjB,MAAO,CACL,IAAK,IAAA,GACL,IAAK,IAAM,CAAC,CAClB,EAEE,IAAIC,EAAY,EACZC,EAAQ,OAAO,OAAO,IAAI,EAC1BC,EAAgB,OAAO,OAAO,IAAI,EACtC,MAAMC,EAAS,CAACrI,EAAKkB,IAAU,CAC7BiH,EAAMnI,CAAG,EAAIkB,EACbgH,IACIA,EAAYD,IACdC,EAAY,EACZE,EAAgBD,EAChBA,EAAQ,OAAO,OAAO,IAAI,EAE9B,EACA,MAAO,CACL,IAAInI,EAAK,CACP,IAAIkB,EAAQiH,EAAMnI,CAAG,EACrB,GAAIkB,IAAU,OACZ,OAAOA,EAET,IAAKA,EAAQkH,EAAcpI,CAAG,KAAO,OACnC,OAAAqI,EAAOrI,EAAKkB,CAAK,EACVA,CAEX,EACA,IAAIlB,EAAKkB,EAAO,CACVlB,KAAOmI,EACTA,EAAMnI,CAAG,EAAIkB,EAEbmH,EAAOrI,EAAKkB,CAAK,CAErB,CACJ,CACA,EACMoH,GAAqB,IACrBC,GAAqB,IACrBC,GAAkB,CAAA,EAElBC,GAAqB,CAACC,EAAWC,EAAsBC,EAAeC,EAA8BC,KAAgB,CACxH,UAAAJ,EACA,qBAAAC,EACA,cAAAC,EACA,6BAAAC,EACA,WAAAC,CACF,GACMC,GAAuBjJ,GAAU,CACrC,KAAM,CACJ,OAAAkJ,EACA,2BAAAC,CACJ,EAAMnJ,EAOJ,IAAIoJ,EAAiB1D,GAAa,CAEhC,MAAMkD,EAAY,CAAA,EAClB,IAAIS,EAAe,EACfC,EAAa,EACbC,EAAgB,EAChBC,EACJ,MAAMtC,EAAMxB,EAAU,OACtB,QAAS+D,EAAQ,EAAGA,EAAQvC,EAAKuC,IAAS,CACxC,MAAMC,EAAmBhE,EAAU+D,CAAK,EACxC,GAAIJ,IAAiB,GAAKC,IAAe,EAAG,CAC1C,GAAII,IAAqBjB,GAAoB,CAC3CG,EAAU,KAAKlD,EAAU,MAAM6D,EAAeE,CAAK,CAAC,EACpDF,EAAgBE,EAAQ,EACxB,QACF,CACA,GAAIC,IAAqB,IAAK,CAC5BF,EAA0BC,EAC1B,QACF,CACF,CACIC,IAAqB,IAAKL,IAAwBK,IAAqB,IAAKL,IAAwBK,IAAqB,IAAKJ,IAAsBI,IAAqB,KAAKJ,GACpL,CACA,MAAMK,EAAqCf,EAAU,SAAW,EAAIlD,EAAYA,EAAU,MAAM6D,CAAa,EAE7G,IAAIT,EAAgBa,EAChBd,EAAuB,GACvBc,EAAmC,SAASnB,EAAkB,GAChEM,EAAgBa,EAAmC,MAAM,EAAG,EAAE,EAC9Dd,EAAuB,IAMzBc,EAAmC,WAAWnB,EAAkB,IAC9DM,EAAgBa,EAAmC,MAAM,CAAC,EAC1Dd,EAAuB,IAEzB,MAAME,EAA+BS,GAA2BA,EAA0BD,EAAgBC,EAA0BD,EAAgB,OACpJ,OAAOZ,GAAmBC,EAAWC,EAAsBC,EAAeC,CAA4B,CACxG,EACA,GAAIG,EAAQ,CACV,MAAMU,EAAaV,EAAST,GACtBoB,EAAyBT,EAC/BA,EAAiB1D,GAAaA,EAAU,WAAWkE,CAAU,EAAIC,EAAuBnE,EAAU,MAAMkE,EAAW,MAAM,CAAC,EAAIjB,GAAmBD,GAAiB,GAAOhD,EAAW,OAAW,EAAI,CACrM,CACA,GAAIyD,EAA4B,CAC9B,MAAMU,EAAyBT,EAC/BA,EAAiB1D,GAAayD,EAA2B,CACvD,UAAAzD,EACA,eAAgBmE,CACtB,CAAK,CACH,CACA,OAAOT,CACT,EAOMU,GAAsB9J,GAAU,CAEpC,MAAM+J,EAAkB,IAAI,IAE5B,OAAA/J,EAAO,wBAAwB,QAAQ,CAACgK,EAAKP,IAAU,CACrDM,EAAgB,IAAIC,EAAK,IAAUP,CAAK,CAC1C,CAAC,EACMb,GAAa,CAClB,MAAMvC,EAAS,CAAA,EACf,IAAI4D,EAAiB,CAAA,EAErB,QAAStF,EAAI,EAAGA,EAAIiE,EAAU,OAAQjE,IAAK,CACzC,MAAMuF,EAAWtB,EAAUjE,CAAC,EAEtBwF,EAAcD,EAAS,CAAC,IAAM,IAC9BE,EAAmBL,EAAgB,IAAIG,CAAQ,EACjDC,GAAeC,GAEbH,EAAe,OAAS,IAC1BA,EAAe,KAAI,EACnB5D,EAAO,KAAK,GAAG4D,CAAc,EAC7BA,EAAiB,CAAA,GAEnB5D,EAAO,KAAK6D,CAAQ,GAGpBD,EAAe,KAAKC,CAAQ,CAEhC,CAEA,OAAID,EAAe,OAAS,IAC1BA,EAAe,KAAI,EACnB5D,EAAO,KAAK,GAAG4D,CAAc,GAExB5D,CACT,CACF,EACMgE,GAAoBrK,IAAW,CACnC,MAAOkI,GAAelI,EAAO,SAAS,EACtC,eAAgBiJ,GAAqBjJ,CAAM,EAC3C,cAAe8J,GAAoB9J,CAAM,EACzC,2BAA4BsK,GAAiCtK,CAAM,EACnE,GAAGqF,GAAsBrF,CAAM,CACjC,GACMsK,GAAmCtK,GAAU,CACjD,MAAMuK,EAAS,OAAO,OAAO,IAAI,EAC3BC,EAAgBxK,EAAO,yBAC7B,GAAIwK,EACF,QAAS7F,EAAI,EAAGA,EAAI6F,EAAc,OAAQ7F,IACxC4F,EAAOC,EAAc7F,CAAC,CAAC,EAAI,GAG/B,OAAO4F,CACT,EACME,GAAsB,MACtBC,GAAiB,CAACC,EAAWC,IAAgB,CACjD,KAAM,CACJ,eAAAxB,EACA,gBAAAyB,EACA,4BAAAC,EACA,cAAAC,EACA,2BAAAC,CACJ,EAAMJ,EAQEK,EAAwB,CAAA,EACxBC,EAAaP,EAAU,KAAI,EAAG,MAAMF,EAAmB,EAC7D,IAAIpE,EAAS,GACb,QAASoD,EAAQyB,EAAW,OAAS,EAAGzB,GAAS,EAAGA,GAAS,EAAG,CAC9D,MAAM0B,EAAoBD,EAAWzB,CAAK,EACpC,CACJ,WAAAT,EACA,UAAAJ,EACA,qBAAAC,EACA,cAAAC,EACA,6BAAAC,CACN,EAAQK,EAAe+B,CAAiB,EACpC,GAAInC,EAAY,CACd3C,EAAS8E,GAAqB9E,EAAO,OAAS,EAAI,IAAMA,EAASA,GACjE,QACF,CACA,IAAIN,EAAqB,CAAC,CAACgD,EACvBlE,EACJ,GAAIkB,EAAoB,CACtB,MAAMqF,EAA8BtC,EAAc,UAAU,EAAGC,CAA4B,EAC3FlE,EAAegG,EAAgBO,CAA2B,EAC1D,MAAMC,EAA0BxG,GAAgBmG,EAA2BnG,CAAY,EAAIgG,EAAgB/B,CAAa,EAAI,OACxHuC,GAA2BA,IAA4BxG,IACzDA,EAAewG,EACftF,EAAqB,GAEzB,MACElB,EAAegG,EAAgB/B,CAAa,EAE9C,GAAI,CAACjE,EAAc,CACjB,GAAI,CAACkB,EAAoB,CAEvBM,EAAS8E,GAAqB9E,EAAO,OAAS,EAAI,IAAMA,EAASA,GACjE,QACF,CAEA,GADAxB,EAAegG,EAAgB/B,CAAa,EACxC,CAACjE,EAAc,CAEjBwB,EAAS8E,GAAqB9E,EAAO,OAAS,EAAI,IAAMA,EAASA,GACjE,QACF,CACAN,EAAqB,EACvB,CAEA,MAAMuF,EAAkB1C,EAAU,SAAW,EAAI,GAAKA,EAAU,SAAW,EAAIA,EAAU,CAAC,EAAImC,EAAcnC,CAAS,EAAE,KAAK,GAAG,EACzH2C,EAAa1C,EAAuByC,EAAkB9C,GAAqB8C,EAC3EE,EAAUD,EAAa1G,EAC7B,GAAIoG,EAAsB,QAAQO,CAAO,EAAI,GAE3C,SAEFP,EAAsB,KAAKO,CAAO,EAClC,MAAMC,EAAiBX,EAA4BjG,EAAckB,CAAkB,EACnF,QAASpB,EAAI,EAAGA,EAAI8G,EAAe,OAAQ,EAAE9G,EAAG,CAC9C,MAAMoC,EAAQ0E,EAAe9G,CAAC,EAC9BsG,EAAsB,KAAKM,EAAaxE,CAAK,CAC/C,CAEAV,EAAS8E,GAAqB9E,EAAO,OAAS,EAAI,IAAMA,EAASA,EACnE,CACA,OAAOA,CACT,EAWMqF,GAAS,IAAIC,IAAe,CAChC,IAAIlC,EAAQ,EACRmC,EACAC,EACAC,EAAS,GACb,KAAOrC,EAAQkC,EAAW,SACpBC,EAAWD,EAAWlC,GAAO,KAC3BoC,EAAgBE,GAAQH,CAAQ,KAClCE,IAAWA,GAAU,KACrBA,GAAUD,GAIhB,OAAOC,CACT,EACMC,GAAUC,GAAO,CAErB,GAAI,OAAOA,GAAQ,SACjB,OAAOA,EAET,IAAIH,EACAC,EAAS,GACb,QAASzI,EAAI,EAAGA,EAAI2I,EAAI,OAAQ3I,IAC1B2I,EAAI3I,CAAC,IACHwI,EAAgBE,GAAQC,EAAI3I,CAAC,CAAC,KAChCyI,IAAWA,GAAU,KACrBA,GAAUD,GAIhB,OAAOC,CACT,EACMG,GAAsB,CAACC,KAAsBC,IAAqB,CACtE,IAAIvB,EACAwB,EACAC,EACAC,EACJ,MAAMC,EAAoB5B,GAAa,CACrC,MAAM3K,EAASmM,EAAiB,OAAO,CAACK,EAAgBC,IAAwBA,EAAoBD,CAAc,EAAGN,GAAmB,EACxI,OAAAtB,EAAcP,GAAkBrK,CAAM,EACtCoM,EAAWxB,EAAY,MAAM,IAC7ByB,EAAWzB,EAAY,MAAM,IAC7B0B,EAAiBI,EACVA,EAAc/B,CAAS,CAChC,EACM+B,EAAgB/B,GAAa,CACjC,MAAMgC,EAAeP,EAASzB,CAAS,EACvC,GAAIgC,EACF,OAAOA,EAET,MAAMtG,EAASqE,GAAeC,EAAWC,CAAW,EACpD,OAAAyB,EAAS1B,EAAWtE,CAAM,EACnBA,CACT,EACA,OAAAiG,EAAiBC,EACV,IAAIK,IAASN,EAAeZ,GAAO,GAAGkB,CAAI,CAAC,CACpD,EACMC,GAAmB,CAAA,EACnBC,GAAY5M,GAAO,CACvB,MAAM6M,EAAcnG,GAASA,EAAM1G,CAAG,GAAK2M,GAC3C,OAAAE,EAAY,cAAgB,GACrBA,CACT,EACMC,GAAsB,8BACtBC,GAAyB,8BACzBC,GAAgB,iCAChBC,GAAkB,mCAClBC,GAAkB,4HAClBC,GAAqB,qDAErBC,GAAc,kEACdC,GAAa,+FACbC,GAAapM,GAAS8L,GAAc,KAAK9L,CAAK,EAC9CqM,EAAWrM,GAAS,CAAC,CAACA,GAAS,CAAC,OAAO,MAAM,OAAOA,CAAK,CAAC,EAC1DsM,GAAYtM,GAAS,CAAC,CAACA,GAAS,OAAO,UAAU,OAAOA,CAAK,CAAC,EAC9DuM,GAAYvM,GAASA,EAAM,SAAS,GAAG,GAAKqM,EAASrM,EAAM,MAAM,EAAG,EAAE,CAAC,EACvEwM,GAAexM,GAAS+L,GAAgB,KAAK/L,CAAK,EAClDyM,GAAQ,IAAM,GACdC,GAAe1M,GAIrBgM,GAAgB,KAAKhM,CAAK,GAAK,CAACiM,GAAmB,KAAKjM,CAAK,EACvD2M,GAAU,IAAM,GAChBC,GAAW5M,GAASkM,GAAY,KAAKlM,CAAK,EAC1C6M,GAAU7M,GAASmM,GAAW,KAAKnM,CAAK,EACxC8M,GAAoB9M,GAAS,CAAC+M,EAAiB/M,CAAK,GAAK,CAACgN,EAAoBhN,CAAK,EACnFiN,GAAwBjN,GAASA,EAAM,WAAW,YAAY,IAAMA,EAAM,EAAE,IAAM,KAAOA,EAAM,EAAE,IAAM,QAAaA,EAAM,EAAE,IAAM,KAAOA,EAAM,EAAE,IAAM,QAAaA,EAAM,WAAW,SAAU,EAAE,GAAKA,EAAM,EAAE,IAAM,KAAOA,EAAM,EAAE,IAAM,QAAaA,EAAM,WAAW,WAAY,EAAE,GACrRkN,GAAkBlN,GAASmN,GAAoBnN,EAAOoN,GAAaT,EAAO,EAC1EI,EAAmB/M,GAAS4L,GAAoB,KAAK5L,CAAK,EAC1DqN,GAAoBrN,GAASmN,GAAoBnN,EAAOsN,GAAeZ,EAAY,EACnFa,GAAoBvN,GAASmN,GAAoBnN,EAAOwN,GAAenB,CAAQ,EAC/EoB,GAAoBzN,GAASmN,GAAoBnN,EAAO0N,GAAejB,EAAK,EAC5EkB,GAAwB3N,GAASmN,GAAoBnN,EAAO4N,GAAmBjB,EAAO,EACtFkB,GAAsB7N,GAASmN,GAAoBnN,EAAO8N,GAAiBnB,EAAO,EAClFoB,GAAmB/N,GAASmN,GAAoBnN,EAAOgO,GAAcnB,EAAO,EAC5EoB,GAAoBjO,GAASmN,GAAoBnN,EAAOkO,GAAetB,EAAQ,EAC/EI,EAAsBhN,GAAS6L,GAAuB,KAAK7L,CAAK,EAChEmO,GAA4BnO,GAASoO,GAAuBpO,EAAOsN,EAAa,EAChFe,GAAgCrO,GAASoO,GAAuBpO,EAAO4N,EAAiB,EACxFU,GAA8BtO,GAASoO,GAAuBpO,EAAO8N,EAAe,EACpFS,GAA0BvO,GAASoO,GAAuBpO,EAAOoN,EAAW,EAC5EoB,GAA2BxO,GAASoO,GAAuBpO,EAAOgO,EAAY,EAC9ES,GAA4BzO,GAASoO,GAAuBpO,EAAOkO,GAAe,EAAI,EACtFQ,GAA4B1O,GAASoO,GAAuBpO,EAAO0N,GAAe,EAAI,EAEtFP,GAAsB,CAACnN,EAAO2O,EAAWC,IAAc,CAC3D,MAAM3J,EAAS2G,GAAoB,KAAK5L,CAAK,EAC7C,OAAIiF,EACEA,EAAO,CAAC,EACH0J,EAAU1J,EAAO,CAAC,CAAC,EAErB2J,EAAU3J,EAAO,CAAC,CAAC,EAErB,EACT,EACMmJ,GAAyB,CAACpO,EAAO2O,EAAWE,EAAqB,KAAU,CAC/E,MAAM5J,EAAS4G,GAAuB,KAAK7L,CAAK,EAChD,OAAIiF,EACEA,EAAO,CAAC,EACH0J,EAAU1J,EAAO,CAAC,CAAC,EAErB4J,EAEF,EACT,EAEMf,GAAkBgB,GAASA,IAAU,YAAcA,IAAU,aAC7Dd,GAAec,GAASA,IAAU,SAAWA,IAAU,MACvD1B,GAAc0B,GAASA,IAAU,UAAYA,IAAU,QAAUA,IAAU,UAC3ExB,GAAgBwB,GAASA,IAAU,SACnCtB,GAAgBsB,GAASA,IAAU,SACnClB,GAAoBkB,GAASA,IAAU,cACvCpB,GAAgBoB,GAASA,IAAU,UAAYA,IAAU,SACzDZ,GAAgBY,GAASA,IAAU,SA+BnCC,GAAmB,IAAM,CAM7B,MAAMC,EAAatD,GAAU,OAAO,EAC9BuD,EAAYvD,GAAU,MAAM,EAC5BwD,EAAYxD,GAAU,MAAM,EAC5ByD,EAAkBzD,GAAU,aAAa,EACzC0D,EAAgB1D,GAAU,UAAU,EACpC2D,EAAe3D,GAAU,SAAS,EAClC4D,EAAkB5D,GAAU,YAAY,EACxC6D,EAAiB7D,GAAU,WAAW,EACtC8D,EAAe9D,GAAU,SAAS,EAClC+D,EAAc/D,GAAU,QAAQ,EAChCgE,EAAchE,GAAU,QAAQ,EAChCiE,EAAmBjE,GAAU,cAAc,EAC3CkE,EAAkBlE,GAAU,aAAa,EACzCmE,EAAkBnE,GAAU,aAAa,EACzCoE,EAAYpE,GAAU,MAAM,EAC5BqE,EAAmBrE,GAAU,aAAa,EAC1CsE,EAActE,GAAU,QAAQ,EAChCuE,EAAYvE,GAAU,MAAM,EAC5BwE,EAAexE,GAAU,SAAS,EAQlCyE,EAAa,IAAM,CAAC,OAAQ,QAAS,MAAO,aAAc,OAAQ,OAAQ,QAAS,QAAQ,EAC3FC,EAAgB,IAAM,CAAC,SAAU,MAAO,SAAU,OAAQ,QAAS,WAEzE,WAAY,YAEZ,YAAa,eAEb,eAAgB,cAEhB,aAAa,EACPC,EAA6B,IAAM,CAAC,GAAGD,EAAa,EAAIpD,EAAqBD,CAAgB,EAC7FuD,EAAgB,IAAM,CAAC,OAAQ,SAAU,OAAQ,UAAW,QAAQ,EACpEC,EAAkB,IAAM,CAAC,OAAQ,UAAW,MAAM,EAClDC,EAA0B,IAAM,CAACxD,EAAqBD,EAAkByC,CAAY,EACpFiB,EAAa,IAAM,CAACrE,GAAY,OAAQ,OAAQ,GAAGoE,GAAyB,EAC5EE,EAA4B,IAAM,CAACpE,GAAW,OAAQ,UAAWU,EAAqBD,CAAgB,EACtG4D,EAA6B,IAAM,CAAC,OAAQ,CAChD,KAAM,CAAC,OAAQrE,GAAWU,EAAqBD,CAAgB,CACnE,EAAKT,GAAWU,EAAqBD,CAAgB,EAC7C6D,EAA4B,IAAM,CAACtE,GAAW,OAAQU,EAAqBD,CAAgB,EAC3F8D,EAAwB,IAAM,CAAC,OAAQ,MAAO,MAAO,KAAM7D,EAAqBD,CAAgB,EAChG+D,EAAwB,IAAM,CAAC,QAAS,MAAO,SAAU,UAAW,SAAU,SAAU,UAAW,WAAY,cAAe,UAAU,EACxIC,EAA0B,IAAM,CAAC,QAAS,MAAO,SAAU,UAAW,cAAe,UAAU,EAC/FC,EAAc,IAAM,CAAC,OAAQ,GAAGR,EAAuB,CAAE,EACzDS,EAAc,IAAM,CAAC7E,GAAY,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAGoE,GAAyB,EAC5IU,EAAoB,IAAM,CAAC9E,GAAY,SAAU,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAGoE,EAAuB,CAAE,EAC/HW,EAAmB,IAAM,CAAC/E,GAAY,SAAU,OAAQ,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAGoE,EAAuB,CAAE,EACpIY,EAAa,IAAM,CAACpC,EAAYhC,EAAqBD,CAAgB,EACrEsE,EAAkB,IAAM,CAAC,GAAGjB,EAAa,EAAI9B,GAA6BT,GAAqB,CACnG,SAAU,CAACb,EAAqBD,CAAgB,CACpD,CAAG,EACKuE,EAAgB,IAAM,CAAC,YAAa,CACxC,OAAQ,CAAC,GAAI,IAAK,IAAK,QAAS,OAAO,CAC3C,CAAG,EACKC,EAAc,IAAM,CAAC,OAAQ,QAAS,UAAWhD,GAAyBrB,GAAiB,CAC/F,KAAM,CAACF,EAAqBD,CAAgB,CAChD,CAAG,EACKyE,GAA4B,IAAM,CAACjF,GAAW4B,GAA2Bd,EAAiB,EAC1FoE,GAAc,IAAM,CAE1B,GAAI,OAAQ,OAAQhC,EAAazC,EAAqBD,CAAgB,EAChE2E,GAAmB,IAAM,CAAC,GAAIrF,EAAU8B,GAA2Bd,EAAiB,EACpFsE,GAAiB,IAAM,CAAC,QAAS,SAAU,SAAU,QAAQ,EAC7DC,GAAiB,IAAM,CAAC,SAAU,WAAY,SAAU,UAAW,SAAU,UAAW,cAAe,aAAc,aAAc,aAAc,aAAc,YAAa,MAAO,aAAc,QAAS,YAAY,EACtNC,GAAyB,IAAM,CAACxF,EAAUE,GAAW+B,GAA6BT,EAAmB,EACrGiE,EAAY,IAAM,CAExB,GAAI,OAAQhC,EAAW9C,EAAqBD,CAAgB,EACtDgF,GAAc,IAAM,CAAC,OAAQ1F,EAAUW,EAAqBD,CAAgB,EAC5EiF,GAAa,IAAM,CAAC,OAAQ3F,EAAUW,EAAqBD,CAAgB,EAC3EkF,GAAY,IAAM,CAAC5F,EAAUW,EAAqBD,CAAgB,EAClEmF,GAAiB,IAAM,CAAC9F,GAAY,OAAQ,GAAGoE,EAAuB,CAAE,EAC9E,MAAO,CACL,UAAW,IACX,MAAO,CACL,QAAS,CAAC,OAAQ,OAAQ,QAAS,QAAQ,EAC3C,OAAQ,CAAC,OAAO,EAChB,KAAM,CAAChE,EAAY,EACnB,WAAY,CAACA,EAAY,EACzB,MAAO,CAACC,EAAK,EACb,UAAW,CAACD,EAAY,EACxB,cAAe,CAACA,EAAY,EAC5B,KAAM,CAAC,KAAM,MAAO,QAAQ,EAC5B,KAAM,CAACM,EAAiB,EACxB,cAAe,CAAC,OAAQ,aAAc,QAAS,SAAU,SAAU,WAAY,OAAQ,YAAa,OAAO,EAC3G,eAAgB,CAACN,EAAY,EAC7B,QAAS,CAAC,OAAQ,QAAS,OAAQ,SAAU,UAAW,OAAO,EAC/D,YAAa,CAAC,WAAY,OAAQ,SAAU,WAAY,UAAW,MAAM,EACzE,OAAQ,CAACA,EAAY,EACrB,OAAQ,CAACA,EAAY,EACrB,QAAS,CAAC,KAAMH,CAAQ,EACxB,KAAM,CAACG,EAAY,EACnB,cAAe,CAACA,EAAY,EAC5B,SAAU,CAAC,UAAW,QAAS,SAAU,OAAQ,QAAS,QAAQ,CACxE,EACI,YAAa,CAQX,OAAQ,CAAC,CACP,OAAQ,CAAC,OAAQ,SAAUJ,GAAYW,EAAkBC,EAAqBgD,CAAW,CACjG,CAAO,EAMD,UAAW,CAAC,WAAW,EAKvB,iBAAkB,CAAC,CACjB,aAAc,CAAC,GAAI,SAAU,OAAQhD,EAAqBD,CAAgB,CAClF,CAAO,EAKD,kBAAmB,CAACE,EAAqB,EAKzC,QAAS,CAAC,CACR,QAAS,CAACZ,EAAUU,EAAkBC,EAAqBuC,CAAc,CACjF,CAAO,EAKD,cAAe,CAAC,CACd,cAAeY,EAAU,CACjC,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgBA,EAAU,CAClC,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgB,CAAC,OAAQ,QAAS,aAAc,cAAc,CACtE,CAAO,EAKD,iBAAkB,CAAC,CACjB,iBAAkB,CAAC,QAAS,OAAO,CAC3C,CAAO,EAKD,IAAK,CAAC,CACJ,IAAK,CAAC,SAAU,SAAS,CACjC,CAAO,EAKD,QAAS,CAAC,QAAS,eAAgB,SAAU,OAAQ,cAAe,QAAS,eAAgB,gBAAiB,aAAc,eAAgB,qBAAsB,qBAAsB,qBAAsB,kBAAmB,YAAa,YAAa,OAAQ,cAAe,WAAY,YAAa,QAAQ,EAKnT,GAAI,CAAC,UAAW,aAAa,EAK7B,MAAO,CAAC,CACN,MAAO,CAAC,QAAS,OAAQ,OAAQ,QAAS,KAAK,CACvD,CAAO,EAKD,MAAO,CAAC,CACN,MAAO,CAAC,OAAQ,QAAS,OAAQ,OAAQ,QAAS,KAAK,CAC/D,CAAO,EAKD,UAAW,CAAC,UAAW,gBAAgB,EAKvC,aAAc,CAAC,CACb,OAAQ,CAAC,UAAW,QAAS,OAAQ,OAAQ,YAAY,CACjE,CAAO,EAKD,kBAAmB,CAAC,CAClB,OAAQE,EAA0B,CAC1C,CAAO,EAKD,SAAU,CAAC,CACT,SAAUC,EAAa,CAC/B,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,EAAa,CACnC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,EAAa,CACnC,CAAO,EAKD,WAAY,CAAC,CACX,WAAYC,EAAe,CACnC,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgBA,EAAe,CACvC,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgBA,EAAe,CACvC,CAAO,EAKD,SAAU,CAAC,SAAU,QAAS,WAAY,WAAY,QAAQ,EAK9D,MAAO,CAAC,CACN,MAAOE,EAAU,CACzB,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,EAAU,CAC7B,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,EAAU,CAC7B,CAAO,EAMD,MAAO,CAAC,CACN,UAAWA,EAAU,EAKrB,MAAOA,EAAU,CACzB,CAAO,EAMD,IAAK,CAAC,CACJ,UAAWA,EAAU,EAKrB,IAAKA,EAAU,CACvB,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,EAAU,CAC9B,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,EAAU,CAC9B,CAAO,EAKD,IAAK,CAAC,CACJ,IAAKA,EAAU,CACvB,CAAO,EAKD,MAAO,CAAC,CACN,MAAOA,EAAU,CACzB,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQA,EAAU,CAC1B,CAAO,EAKD,KAAM,CAAC,CACL,KAAMA,EAAU,CACxB,CAAO,EAKD,WAAY,CAAC,UAAW,YAAa,UAAU,EAK/C,EAAG,CAAC,CACF,EAAG,CAACnE,GAAW,OAAQU,EAAqBD,CAAgB,CACpE,CAAO,EAQD,MAAO,CAAC,CACN,MAAO,CAACX,GAAY,OAAQ,OAAQmD,EAAgB,GAAGiB,EAAuB,CAAE,CACxF,CAAO,EAKD,iBAAkB,CAAC,CACjB,KAAM,CAAC,MAAO,cAAe,MAAO,aAAa,CACzD,CAAO,EAKD,YAAa,CAAC,CACZ,KAAM,CAAC,SAAU,OAAQ,cAAc,CAC/C,CAAO,EAKD,KAAM,CAAC,CACL,KAAM,CAACnE,EAAUD,GAAY,OAAQ,UAAW,OAAQW,CAAgB,CAChF,CAAO,EAKD,KAAM,CAAC,CACL,KAAM,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CAClE,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQ,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CACpE,CAAO,EAKD,MAAO,CAAC,CACN,MAAO,CAACT,GAAW,QAAS,OAAQ,OAAQU,EAAqBD,CAAgB,CACzF,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa2D,EAAyB,CAC9C,CAAO,EAKD,gBAAiB,CAAC,CAChB,IAAKC,EAA0B,CACvC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaC,EAAyB,CAC9C,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,EAAyB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaF,EAAyB,CAC9C,CAAO,EAKD,gBAAiB,CAAC,CAChB,IAAKC,EAA0B,CACvC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaC,EAAyB,CAC9C,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,EAAyB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa,CAAC,MAAO,MAAO,QAAS,YAAa,WAAW,CACrE,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaC,EAAqB,CAC1C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAqB,CAC1C,CAAO,EAKD,IAAK,CAAC,CACJ,IAAKL,EAAuB,CACpC,CAAO,EAKD,QAAS,CAAC,CACR,QAASA,EAAuB,CACxC,CAAO,EAKD,QAAS,CAAC,CACR,QAASA,EAAuB,CACxC,CAAO,EAKD,kBAAmB,CAAC,CAClB,QAAS,CAAC,GAAGM,EAAqB,EAAI,QAAQ,CACtD,CAAO,EAKD,gBAAiB,CAAC,CAChB,gBAAiB,CAAC,GAAGC,EAAuB,EAAI,QAAQ,CAChE,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgB,CAAC,OAAQ,GAAGA,EAAuB,CAAE,CAC7D,CAAO,EAKD,gBAAiB,CAAC,CAChB,QAAS,CAAC,SAAU,GAAGD,EAAqB,CAAE,CACtD,CAAO,EAKD,cAAe,CAAC,CACd,MAAO,CAAC,GAAGC,IAA2B,CACpC,SAAU,CAAC,GAAI,MAAM,CAC/B,CAAS,CACT,CAAO,EAKD,aAAc,CAAC,CACb,KAAM,CAAC,OAAQ,GAAGA,IAA2B,CAC3C,SAAU,CAAC,GAAI,MAAM,CAC/B,CAAS,CACT,CAAO,EAKD,gBAAiB,CAAC,CAChB,gBAAiBD,EAAqB,CAC9C,CAAO,EAKD,cAAe,CAAC,CACd,cAAe,CAAC,GAAGC,EAAuB,EAAI,UAAU,CAChE,CAAO,EAKD,aAAc,CAAC,CACb,aAAc,CAAC,OAAQ,GAAGA,EAAuB,CAAE,CAC3D,CAAO,EAMD,EAAG,CAAC,CACF,EAAGP,EAAuB,CAClC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,IAAK,CAAC,CACJ,IAAKA,EAAuB,CACpC,CAAO,EAKD,IAAK,CAAC,CACJ,IAAKA,EAAuB,CACpC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAuB,CACnC,CAAO,EAKD,EAAG,CAAC,CACF,EAAGQ,EAAW,CACtB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,IAAK,CAAC,CACJ,IAAKA,EAAW,CACxB,CAAO,EAKD,IAAK,CAAC,CACJ,IAAKA,EAAW,CACxB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,GAAI,CAAC,CACH,GAAIA,EAAW,CACvB,CAAO,EAKD,UAAW,CAAC,CACV,UAAWR,EAAuB,CAC1C,CAAO,EAKD,kBAAmB,CAAC,iBAAiB,EAKrC,UAAW,CAAC,CACV,UAAWA,EAAuB,CAC1C,CAAO,EAKD,kBAAmB,CAAC,iBAAiB,EAQrC,KAAM,CAAC,CACL,KAAMS,EAAW,CACzB,CAAO,EAKD,cAAe,CAAC,CACd,OAAQ,CAAC,OAAQ,GAAGC,EAAiB,CAAE,CAC/C,CAAO,EAKD,kBAAmB,CAAC,CAClB,aAAc,CAAC,OAAQ,GAAGA,EAAiB,CAAE,CACrD,CAAO,EAKD,kBAAmB,CAAC,CAClB,aAAc,CAAC,OAAQ,GAAGA,EAAiB,CAAE,CACrD,CAAO,EAKD,aAAc,CAAC,CACb,MAAO,CAAC,OAAQ,GAAGC,EAAgB,CAAE,CAC7C,CAAO,EAKD,iBAAkB,CAAC,CACjB,YAAa,CAAC,OAAQ,GAAGA,EAAgB,CAAE,CACnD,CAAO,EAKD,iBAAkB,CAAC,CACjB,YAAa,CAAC,OAAQ,GAAGA,EAAgB,CAAE,CACnD,CAAO,EAKD,EAAG,CAAC,CACF,EAAG,CAAC5B,EAAgB,SAAU,GAAG0B,EAAW,CAAE,CACtD,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC1B,EAAgB,SAC1B,OAAQ,GAAG0B,EAAW,CAAE,CAChC,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC1B,EAAgB,SAAU,OACpC,QACA,CACE,OAAQ,CAACD,CAAe,CAClC,EAAW,GAAG2B,EAAW,CAAE,CAC3B,CAAO,EAKD,EAAG,CAAC,CACF,EAAG,CAAC,SAAU,KAAM,GAAGA,EAAW,CAAE,CAC5C,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC,SAAU,KAAM,OAAQ,GAAGA,EAAW,CAAE,CAC1D,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC,SAAU,KAAM,GAAGA,EAAW,CAAE,CAClD,CAAO,EAQD,YAAa,CAAC,CACZ,KAAM,CAAC,OAAQ/B,EAAWf,GAA2Bd,EAAiB,CAC9E,CAAO,EAKD,iBAAkB,CAAC,cAAe,sBAAsB,EAKxD,aAAc,CAAC,SAAU,YAAY,EAKrC,cAAe,CAAC,CACd,KAAM,CAAC8B,EAAiBT,GAA2BjB,EAAiB,CAC5E,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgB,CAAC,kBAAmB,kBAAmB,YAAa,iBAAkB,SAAU,gBAAiB,WAAY,iBAAkB,iBAAkBlB,GAAWQ,CAAgB,CACpM,CAAO,EAKD,cAAe,CAAC,CACd,KAAM,CAACsB,GAA+BV,GAAuBsB,CAAS,CAC9E,CAAO,EAKD,gBAAiB,CAAC,CAChB,gBAAiB,CAAClC,CAAgB,CAC1C,CAAO,EAKD,aAAc,CAAC,aAAa,EAK5B,cAAe,CAAC,SAAS,EAKzB,mBAAoB,CAAC,cAAc,EAKnC,aAAc,CAAC,cAAe,eAAe,EAK7C,cAAe,CAAC,oBAAqB,cAAc,EAKnD,eAAgB,CAAC,qBAAsB,mBAAmB,EAK1D,SAAU,CAAC,CACT,SAAU,CAACqC,EAAepC,EAAqBD,CAAgB,CACvE,CAAO,EAKD,aAAc,CAAC,CACb,aAAc,CAACV,EAAU,OAAQW,EAAqBO,EAAiB,CAC/E,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CACT8B,EAAc,GAAGmB,EAAuB,CAAE,CAClD,CAAO,EAKD,aAAc,CAAC,CACb,aAAc,CAAC,OAAQxD,EAAqBD,CAAgB,CACpE,CAAO,EAKD,sBAAuB,CAAC,CACtB,KAAM,CAAC,SAAU,SAAS,CAClC,CAAO,EAKD,kBAAmB,CAAC,CAClB,KAAM,CAAC,OAAQ,UAAW,OAAQC,EAAqBD,CAAgB,CAC/E,CAAO,EAKD,iBAAkB,CAAC,CACjB,KAAM,CAAC,OAAQ,SAAU,QAAS,UAAW,QAAS,KAAK,CACnE,CAAO,EAMD,oBAAqB,CAAC,CACpB,YAAaqE,EAAU,CAC/B,CAAO,EAKD,aAAc,CAAC,CACb,KAAMA,EAAU,CACxB,CAAO,EAKD,kBAAmB,CAAC,YAAa,WAAY,eAAgB,cAAc,EAK3E,wBAAyB,CAAC,CACxB,WAAY,CAAC,GAAGO,GAAc,EAAI,MAAM,CAChD,CAAO,EAKD,4BAA6B,CAAC,CAC5B,WAAY,CAACtF,EAAU,YAAa,OAAQW,EAAqBK,EAAiB,CAC1F,CAAO,EAKD,wBAAyB,CAAC,CACxB,WAAY+D,EAAU,CAC9B,CAAO,EAKD,mBAAoB,CAAC,CACnB,mBAAoB,CAAC/E,EAAU,OAAQW,EAAqBD,CAAgB,CACpF,CAAO,EAKD,iBAAkB,CAAC,YAAa,YAAa,aAAc,aAAa,EAKxE,gBAAiB,CAAC,WAAY,gBAAiB,WAAW,EAK1D,YAAa,CAAC,CACZ,KAAM,CAAC,OAAQ,SAAU,UAAW,QAAQ,CACpD,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQyD,EAAuB,CACvC,CAAO,EAKD,WAAY,CAAC,CACX,IAAK,CAAClE,GAAWU,EAAqBD,CAAgB,CAC9D,CAAO,EAKD,iBAAkB,CAAC,CACjB,MAAO,CAAC,WAAY,MAAO,SAAU,SAAU,WAAY,cAAe,MAAO,QAASC,EAAqBD,CAAgB,CACvI,CAAO,EAKD,WAAY,CAAC,CACX,WAAY,CAAC,SAAU,SAAU,MAAO,WAAY,WAAY,cAAc,CACtF,CAAO,EAKD,MAAO,CAAC,CACN,MAAO,CAAC,SAAU,QAAS,MAAO,MAAM,CAChD,CAAO,EAKD,KAAM,CAAC,CACL,KAAM,CAAC,aAAc,WAAY,QAAQ,CACjD,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC,OAAQ,SAAU,MAAM,CAC1C,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC,OAAQC,EAAqBD,CAAgB,CAC/D,CAAO,EAQD,gBAAiB,CAAC,CAChB,GAAI,CAAC,QAAS,QAAS,QAAQ,CACvC,CAAO,EAKD,UAAW,CAAC,CACV,UAAW,CAAC,SAAU,UAAW,UAAW,MAAM,CAC1D,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa,CAAC,SAAU,UAAW,SAAS,CACpD,CAAO,EAKD,cAAe,CAAC,CACd,GAAIsE,EAAe,CAC3B,CAAO,EAKD,YAAa,CAAC,CACZ,GAAIC,EAAa,CACzB,CAAO,EAKD,UAAW,CAAC,CACV,GAAIC,EAAW,CACvB,CAAO,EAKD,WAAY,CAAC,CACX,GAAI,CAAC,OAAQ,CACX,OAAQ,CAAC,CACP,GAAI,CAAC,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAI,CAC3D,EAAajF,GAAWU,EAAqBD,CAAgB,EACnD,OAAQ,CAAC,GAAIC,EAAqBD,CAAgB,EAClD,MAAO,CAACT,GAAWU,EAAqBD,CAAgB,CAClE,EAAWyB,GAA0BT,EAAgB,CACrD,CAAO,EAKD,WAAY,CAAC,CACX,GAAIqD,EAAU,CACtB,CAAO,EAKD,oBAAqB,CAAC,CACpB,KAAMI,GAAyB,CACvC,CAAO,EAKD,mBAAoB,CAAC,CACnB,IAAKA,GAAyB,CACtC,CAAO,EAKD,kBAAmB,CAAC,CAClB,GAAIA,GAAyB,CACrC,CAAO,EAKD,gBAAiB,CAAC,CAChB,KAAMJ,EAAU,CACxB,CAAO,EAKD,eAAgB,CAAC,CACf,IAAKA,EAAU,CACvB,CAAO,EAKD,cAAe,CAAC,CACd,GAAIA,EAAU,CACtB,CAAO,EAQD,QAAS,CAAC,CACR,QAASK,GAAW,CAC5B,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,GAAW,CAChC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,GAAW,CAChC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,GAAW,CAChC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,GAAW,CAChC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,GAAW,CAChC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,GAAW,CAChC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,GAAW,CACjC,CAAO,EAKD,WAAY,CAAC,CACX,OAAQC,GAAgB,CAChC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,cAAe,CAAC,CACd,YAAaA,GAAgB,CACrC,CAAO,EAKD,cAAe,CAAC,CACd,YAAaA,GAAgB,CACrC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,aAAc,CAAC,CACb,WAAYA,GAAgB,CACpC,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,GAAgB,CACpC,CAAO,EAKD,mBAAoB,CAAC,kBAAkB,EAKvC,WAAY,CAAC,CACX,WAAYA,GAAgB,CACpC,CAAO,EAKD,mBAAoB,CAAC,kBAAkB,EAKvC,eAAgB,CAAC,CACf,OAAQ,CAAC,GAAGC,GAAc,EAAI,SAAU,MAAM,CACtD,CAAO,EAKD,eAAgB,CAAC,CACf,OAAQ,CAAC,GAAGA,GAAc,EAAI,SAAU,MAAM,CACtD,CAAO,EAKD,eAAgB,CAAC,CACf,OAAQP,EAAU,CAC1B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,kBAAmB,CAAC,CAClB,YAAaA,EAAU,CAC/B,CAAO,EAKD,kBAAmB,CAAC,CAClB,YAAaA,EAAU,CAC/B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,iBAAkB,CAAC,CACjB,WAAYA,EAAU,CAC9B,CAAO,EAKD,eAAgB,CAAC,CACf,OAAQA,EAAU,CAC1B,CAAO,EAKD,gBAAiB,CAAC,CAChB,QAAS,CAAC,GAAGO,GAAc,EAAI,OAAQ,QAAQ,CACvD,CAAO,EAKD,iBAAkB,CAAC,CACjB,iBAAkB,CAACtF,EAAUW,EAAqBD,CAAgB,CAC1E,CAAO,EAKD,YAAa,CAAC,CACZ,QAAS,CAAC,GAAIV,EAAU8B,GAA2Bd,EAAiB,CAC5E,CAAO,EAKD,gBAAiB,CAAC,CAChB,QAAS+D,EAAU,CAC3B,CAAO,EAQD,OAAQ,CAAC,CACP,OAAQ,CAER,GAAI,OAAQ1B,EAAajB,GAA2BR,EAAiB,CAC7E,CAAO,EAKD,eAAgB,CAAC,CACf,OAAQmD,EAAU,CAC1B,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgB,CAAC,OAAQzB,EAAkBlB,GAA2BR,EAAiB,CAC/F,CAAO,EAKD,qBAAsB,CAAC,CACrB,eAAgBmD,EAAU,CAClC,CAAO,EAKD,SAAU,CAAC,CACT,KAAMM,GAAgB,CAC9B,CAAO,EAOD,eAAgB,CAAC,YAAY,EAK7B,aAAc,CAAC,CACb,KAAMN,EAAU,CACxB,CAAO,EAOD,gBAAiB,CAAC,CAChB,cAAe,CAAC/E,EAAUgB,EAAiB,CACnD,CAAO,EAOD,oBAAqB,CAAC,CACpB,cAAe+D,EAAU,CACjC,CAAO,EAKD,eAAgB,CAAC,CACf,aAAcM,GAAgB,CACtC,CAAO,EAKD,mBAAoB,CAAC,CACnB,aAAcN,EAAU,CAChC,CAAO,EAKD,cAAe,CAAC,CACd,cAAe,CAAC,OAAQxB,EAAiBnB,GAA2BR,EAAiB,CAC7F,CAAO,EAKD,oBAAqB,CAAC,CACpB,cAAemD,EAAU,CACjC,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC/E,EAAUW,EAAqBD,CAAgB,CACjE,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa,CAAC,GAAG6E,GAAc,EAAI,cAAe,cAAc,CACxE,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,GAAc,CAClC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa,CAAC,SAAU,UAAW,UAAW,OAAQ,SAAU,MAAM,CAC9E,EAAS,cAAc,EAKjB,iBAAkB,CAAC,CACjB,KAAM,CAAC,MAAO,WAAY,YAAa,SAAS,CACxD,CAAO,EAKD,wBAAyB,CAAC,CACxB,cAAe,CAACvF,CAAQ,CAChC,CAAO,EACD,6BAA8B,CAAC,CAC7B,mBAAoBwF,GAAsB,CAClD,CAAO,EACD,2BAA4B,CAAC,CAC3B,iBAAkBA,GAAsB,CAChD,CAAO,EACD,+BAAgC,CAAC,CAC/B,mBAAoBT,EAAU,CACtC,CAAO,EACD,6BAA8B,CAAC,CAC7B,iBAAkBA,EAAU,CACpC,CAAO,EACD,wBAAyB,CAAC,CACxB,cAAeS,GAAsB,CAC7C,CAAO,EACD,sBAAuB,CAAC,CACtB,YAAaA,GAAsB,CAC3C,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAeT,EAAU,CACjC,CAAO,EACD,wBAAyB,CAAC,CACxB,YAAaA,EAAU,CAC/B,CAAO,EACD,wBAAyB,CAAC,CACxB,cAAeS,GAAsB,CAC7C,CAAO,EACD,sBAAuB,CAAC,CACtB,YAAaA,GAAsB,CAC3C,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAeT,EAAU,CACjC,CAAO,EACD,wBAAyB,CAAC,CACxB,YAAaA,EAAU,CAC/B,CAAO,EACD,wBAAyB,CAAC,CACxB,cAAeS,GAAsB,CAC7C,CAAO,EACD,sBAAuB,CAAC,CACtB,YAAaA,GAAsB,CAC3C,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAeT,EAAU,CACjC,CAAO,EACD,wBAAyB,CAAC,CACxB,YAAaA,EAAU,CAC/B,CAAO,EACD,wBAAyB,CAAC,CACxB,cAAeS,GAAsB,CAC7C,CAAO,EACD,sBAAuB,CAAC,CACtB,YAAaA,GAAsB,CAC3C,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAeT,EAAU,CACjC,CAAO,EACD,wBAAyB,CAAC,CACxB,YAAaA,EAAU,CAC/B,CAAO,EACD,wBAAyB,CAAC,CACxB,cAAeS,GAAsB,CAC7C,CAAO,EACD,sBAAuB,CAAC,CACtB,YAAaA,GAAsB,CAC3C,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAeT,EAAU,CACjC,CAAO,EACD,wBAAyB,CAAC,CACxB,YAAaA,EAAU,CAC/B,CAAO,EACD,wBAAyB,CAAC,CACxB,cAAeS,GAAsB,CAC7C,CAAO,EACD,sBAAuB,CAAC,CACtB,YAAaA,GAAsB,CAC3C,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAeT,EAAU,CACjC,CAAO,EACD,wBAAyB,CAAC,CACxB,YAAaA,EAAU,CAC/B,CAAO,EACD,oBAAqB,CAAC,CACpB,cAAe,CAACpE,EAAqBD,CAAgB,CAC7D,CAAO,EACD,6BAA8B,CAAC,CAC7B,mBAAoB8E,GAAsB,CAClD,CAAO,EACD,2BAA4B,CAAC,CAC3B,iBAAkBA,GAAsB,CAChD,CAAO,EACD,+BAAgC,CAAC,CAC/B,mBAAoBT,EAAU,CACtC,CAAO,EACD,6BAA8B,CAAC,CAC7B,iBAAkBA,EAAU,CACpC,CAAO,EACD,0BAA2B,CAAC,CAC1B,cAAe,CAAC,SAAU,SAAS,CAC3C,CAAO,EACD,yBAA0B,CAAC,CACzB,cAAe,CAAC,CACd,QAAS,CAAC,OAAQ,QAAQ,EAC1B,SAAU,CAAC,OAAQ,QAAQ,CACrC,CAAS,CACT,CAAO,EACD,wBAAyB,CAAC,CACxB,iBAAkBhB,EAAa,CACvC,CAAO,EACD,uBAAwB,CAAC,CACvB,aAAc,CAAC/D,CAAQ,CAC/B,CAAO,EACD,4BAA6B,CAAC,CAC5B,kBAAmBwF,GAAsB,CACjD,CAAO,EACD,0BAA2B,CAAC,CAC1B,gBAAiBA,GAAsB,CAC/C,CAAO,EACD,8BAA+B,CAAC,CAC9B,kBAAmBT,EAAU,CACrC,CAAO,EACD,4BAA6B,CAAC,CAC5B,gBAAiBA,EAAU,CACnC,CAAO,EAKD,YAAa,CAAC,CACZ,KAAM,CAAC,QAAS,YAAa,OAAO,CAC5C,CAAO,EAKD,cAAe,CAAC,CACd,cAAe,CAAC,SAAU,UAAW,UAAW,OAAQ,SAAU,MAAM,CAChF,CAAO,EAKD,gBAAiB,CAAC,CAChB,KAAMC,EAAe,CAC7B,CAAO,EAKD,cAAe,CAAC,CACd,KAAMC,EAAa,CAC3B,CAAO,EAKD,YAAa,CAAC,CACZ,KAAMC,EAAW,CACzB,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa,CAAC,QAAS,WAAW,CAC1C,CAAO,EAKD,aAAc,CAAC,CACb,KAAM,CAAC,OAAQvE,EAAqBD,CAAgB,CAC5D,CAAO,EAQD,OAAQ,CAAC,CACP,OAAQ,CAER,GAAI,OAAQC,EAAqBD,CAAgB,CACzD,CAAO,EAKD,KAAM,CAAC,CACL,KAAM+E,EAAS,CACvB,CAAO,EAKD,WAAY,CAAC,CACX,WAAY,CAACzF,EAAUW,EAAqBD,CAAgB,CACpE,CAAO,EAKD,SAAU,CAAC,CACT,SAAU,CAACV,EAAUW,EAAqBD,CAAgB,CAClE,CAAO,EAKD,cAAe,CAAC,CACd,cAAe,CAEf,GAAI,OAAQ8C,EAAiBpB,GAA2BR,EAAiB,CACjF,CAAO,EAKD,oBAAqB,CAAC,CACpB,cAAemD,EAAU,CACjC,CAAO,EAKD,UAAW,CAAC,CACV,UAAW,CAAC,GAAI/E,EAAUW,EAAqBD,CAAgB,CACvE,CAAO,EAKD,aAAc,CAAC,CACb,aAAc,CAACV,EAAUW,EAAqBD,CAAgB,CACtE,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQ,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CACpE,CAAO,EAKD,SAAU,CAAC,CACT,SAAU,CAACV,EAAUW,EAAqBD,CAAgB,CAClE,CAAO,EAKD,MAAO,CAAC,CACN,MAAO,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CACnE,CAAO,EAKD,kBAAmB,CAAC,CAClB,kBAAmB,CAEnB,GAAI,OAAQC,EAAqBD,CAAgB,CACzD,CAAO,EAKD,gBAAiB,CAAC,CAChB,gBAAiB+E,EAAS,CAClC,CAAO,EAKD,sBAAuB,CAAC,CACtB,sBAAuB,CAACzF,EAAUW,EAAqBD,CAAgB,CAC/E,CAAO,EAKD,oBAAqB,CAAC,CACpB,oBAAqB,CAACV,EAAUW,EAAqBD,CAAgB,CAC7E,CAAO,EAKD,qBAAsB,CAAC,CACrB,qBAAsB,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CAClF,CAAO,EAKD,sBAAuB,CAAC,CACtB,sBAAuB,CAACV,EAAUW,EAAqBD,CAAgB,CAC/E,CAAO,EAKD,kBAAmB,CAAC,CAClB,kBAAmB,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CAC/E,CAAO,EAKD,mBAAoB,CAAC,CACnB,mBAAoB,CAACV,EAAUW,EAAqBD,CAAgB,CAC5E,CAAO,EAKD,oBAAqB,CAAC,CACpB,oBAAqB,CAACV,EAAUW,EAAqBD,CAAgB,CAC7E,CAAO,EAKD,iBAAkB,CAAC,CACjB,iBAAkB,CAAC,GAAIV,EAAUW,EAAqBD,CAAgB,CAC9E,CAAO,EAQD,kBAAmB,CAAC,CAClB,OAAQ,CAAC,WAAY,UAAU,CACvC,CAAO,EAKD,iBAAkB,CAAC,CACjB,iBAAkByD,EAAuB,CACjD,CAAO,EAKD,mBAAoB,CAAC,CACnB,mBAAoBA,EAAuB,CACnD,CAAO,EAKD,mBAAoB,CAAC,CACnB,mBAAoBA,EAAuB,CACnD,CAAO,EAKD,eAAgB,CAAC,CACf,MAAO,CAAC,OAAQ,OAAO,CAC/B,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC,MAAO,QAAQ,CACjC,CAAO,EAQD,WAAY,CAAC,CACX,WAAY,CAAC,GAAI,MAAO,SAAU,UAAW,SAAU,YAAa,OAAQxD,EAAqBD,CAAgB,CACzH,CAAO,EAKD,sBAAuB,CAAC,CACtB,WAAY,CAAC,SAAU,UAAU,CACzC,CAAO,EAKD,SAAU,CAAC,CACT,SAAU,CAACV,EAAU,UAAWW,EAAqBD,CAAgB,CAC7E,CAAO,EAKD,KAAM,CAAC,CACL,KAAM,CAAC,SAAU,UAAWkD,EAAWjD,EAAqBD,CAAgB,CACpF,CAAO,EAKD,MAAO,CAAC,CACN,MAAO,CAACV,EAAUW,EAAqBD,CAAgB,CAC/D,CAAO,EAKD,QAAS,CAAC,CACR,QAAS,CAAC,OAAQmD,EAAclD,EAAqBD,CAAgB,CAC7E,CAAO,EAQD,SAAU,CAAC,CACT,SAAU,CAAC,SAAU,SAAS,CACtC,CAAO,EAKD,YAAa,CAAC,CACZ,YAAa,CAACgD,EAAkB/C,EAAqBD,CAAgB,CAC7E,CAAO,EAKD,qBAAsB,CAAC,CACrB,qBAAsBsD,EAA0B,CACxD,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQ0B,GAAW,CAC3B,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,GAAW,CAC/B,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,GAAW,CAC/B,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,GAAW,CAC/B,CAAO,EAKD,MAAO,CAAC,CACN,MAAOC,GAAU,CACzB,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,GAAU,CAC7B,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,GAAU,CAC7B,CAAO,EAKD,UAAW,CAAC,CACV,UAAWA,GAAU,CAC7B,CAAO,EAKD,WAAY,CAAC,UAAU,EAKvB,KAAM,CAAC,CACL,KAAMC,GAAS,CACvB,CAAO,EAKD,SAAU,CAAC,CACT,SAAUA,GAAS,CAC3B,CAAO,EAKD,SAAU,CAAC,CACT,SAAUA,GAAS,CAC3B,CAAO,EAKD,UAAW,CAAC,CACV,UAAW,CAACjF,EAAqBD,EAAkB,GAAI,OAAQ,MAAO,KAAK,CACnF,CAAO,EAKD,mBAAoB,CAAC,CACnB,OAAQsD,EAA0B,CAC1C,CAAO,EAKD,kBAAmB,CAAC,CAClB,UAAW,CAAC,KAAM,MAAM,CAChC,CAAO,EAKD,UAAW,CAAC,CACV,UAAW6B,GAAc,CACjC,CAAO,EAKD,cAAe,CAAC,CACd,cAAeA,GAAc,CACrC,CAAO,EAKD,cAAe,CAAC,CACd,cAAeA,GAAc,CACrC,CAAO,EAKD,cAAe,CAAC,CACd,cAAeA,GAAc,CACrC,CAAO,EAKD,iBAAkB,CAAC,gBAAgB,EAKnC,KAAM,CAAC,CACL,KAAM,CAAC5F,GAAWU,EAAqBD,CAAgB,CAC/D,CAAO,EAQD,OAAQ,CAAC,CACP,OAAQqE,EAAU,CAC1B,CAAO,EAKD,WAAY,CAAC,CACX,WAAY,CAAC,OAAQ,MAAM,CACnC,CAAO,EAKD,cAAe,CAAC,CACd,MAAOA,EAAU,CACzB,CAAO,EAKD,eAAgB,CAAC,CACf,OAAQ,CAAC,SAAU,OAAQ,QAAS,aAAc,YAAa,YAAY,CACnF,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQ,CAAC,OAAQ,UAAW,UAAW,OAAQ,OAAQ,OAAQ,OAAQ,cAAe,OAAQ,eAAgB,WAAY,OAAQ,YAAa,gBAAiB,QAAS,OAAQ,UAAW,OAAQ,WAAY,aAAc,aAAc,aAAc,WAAY,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,cAAe,cAAe,UAAW,WAAYpE,EAAqBD,CAAgB,CAC1d,CAAO,EAKD,eAAgB,CAAC,CACf,eAAgB,CAAC,QAAS,SAAS,CAC3C,CAAO,EAKD,iBAAkB,CAAC,CACjB,iBAAkB,CAAC,OAAQ,MAAM,CACzC,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQ,CAAC,OAAQ,GAAI,IAAK,GAAG,CACrC,CAAO,EAKD,kBAAmB,CAAC,CAClB,OAAQ,CAAC,OAAQ,QAAQ,CACjC,CAAO,EAKD,wBAAyB,CAAC,CACxB,kBAAmBqE,EAAU,CACrC,CAAO,EAKD,wBAAyB,CAAC,CACxB,kBAAmBA,EAAU,CACrC,CAAO,EAKD,mBAAoB,CAAC,CACnB,mBAAoB,CAAC,OAAQ,SAAU,MAAM,CACrD,CAAO,EAKD,cAAe,CAAC,CACd,UAAW,CAAC,OAAQ,OAAQ,MAAM,CAC1C,CAAO,EAKD,WAAY,CAAC,CACX,WAAYZ,EAAuB,CAC3C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,EAAuB,CAC7C,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,EAAuB,CAC7C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,WAAY,CAAC,CACX,WAAYA,EAAuB,CAC3C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,EAAuB,CAC7C,CAAO,EAKD,aAAc,CAAC,CACb,aAAcA,EAAuB,CAC7C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,YAAa,CAAC,CACZ,YAAaA,EAAuB,CAC5C,CAAO,EAKD,aAAc,CAAC,CACb,KAAM,CAAC,QAAS,MAAO,SAAU,YAAY,CACrD,CAAO,EAKD,YAAa,CAAC,CACZ,KAAM,CAAC,SAAU,QAAQ,CACjC,CAAO,EAKD,YAAa,CAAC,CACZ,KAAM,CAAC,OAAQ,IAAK,IAAK,MAAM,CACvC,CAAO,EAKD,kBAAmB,CAAC,CAClB,KAAM,CAAC,YAAa,WAAW,CACvC,CAAO,EAKD,MAAO,CAAC,CACN,MAAO,CAAC,OAAQ,OAAQ,cAAc,CAC9C,CAAO,EAKD,UAAW,CAAC,CACV,YAAa,CAAC,IAAK,OAAQ,OAAO,CAC1C,CAAO,EAKD,UAAW,CAAC,CACV,YAAa,CAAC,IAAK,KAAM,MAAM,CACvC,CAAO,EAKD,WAAY,CAAC,kBAAkB,EAK/B,OAAQ,CAAC,CACP,OAAQ,CAAC,OAAQ,OAAQ,MAAO,MAAM,CAC9C,CAAO,EAKD,cAAe,CAAC,CACd,cAAe,CAAC,OAAQ,SAAU,WAAY,YAAaxD,EAAqBD,CAAgB,CACxG,CAAO,EAQD,KAAM,CAAC,CACL,KAAM,CAAC,OAAQ,GAAGqE,EAAU,CAAE,CACtC,CAAO,EAKD,WAAY,CAAC,CACX,OAAQ,CAAC/E,EAAU8B,GAA2Bd,GAAmBE,EAAiB,CAC1F,CAAO,EAKD,OAAQ,CAAC,CACP,OAAQ,CAAC,OAAQ,GAAG6D,EAAU,CAAE,CACxC,CAAO,EAQD,sBAAuB,CAAC,CACtB,sBAAuB,CAAC,OAAQ,MAAM,CAC9C,CAAO,CACP,EACI,uBAAwB,CACtB,kBAAmB,CAAC,gBAAgB,EACpC,SAAU,CAAC,aAAc,YAAY,EACrC,WAAY,CAAC,eAAgB,cAAc,EAC3C,MAAO,CAAC,UAAW,UAAW,WAAY,WAAY,QAAS,MAAO,MAAO,QAAS,SAAU,MAAM,EACtG,UAAW,CAAC,QAAS,MAAM,EAC3B,UAAW,CAAC,MAAO,QAAQ,EAC3B,KAAM,CAAC,QAAS,OAAQ,QAAQ,EAChC,IAAK,CAAC,QAAS,OAAO,EACtB,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,IAAI,EAChE,GAAI,CAAC,KAAM,IAAI,EACf,GAAI,CAAC,KAAM,IAAI,EACf,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,IAAI,EAChE,GAAI,CAAC,KAAM,IAAI,EACf,GAAI,CAAC,KAAM,IAAI,EACf,KAAM,CAAC,IAAK,GAAG,EACf,YAAa,CAAC,SAAS,EACvB,aAAc,CAAC,cAAe,mBAAoB,aAAc,cAAe,cAAc,EAC7F,cAAe,CAAC,YAAY,EAC5B,mBAAoB,CAAC,YAAY,EACjC,aAAc,CAAC,YAAY,EAC3B,cAAe,CAAC,YAAY,EAC5B,eAAgB,CAAC,YAAY,EAC7B,aAAc,CAAC,UAAW,UAAU,EACpC,QAAS,CAAC,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,YAAY,EACtM,YAAa,CAAC,aAAc,YAAY,EACxC,YAAa,CAAC,aAAc,YAAY,EACxC,YAAa,CAAC,aAAc,YAAY,EACxC,YAAa,CAAC,aAAc,YAAY,EACxC,YAAa,CAAC,aAAc,YAAY,EACxC,YAAa,CAAC,aAAc,YAAY,EACxC,iBAAkB,CAAC,mBAAoB,kBAAkB,EACzD,WAAY,CAAC,aAAc,aAAc,aAAc,aAAc,cAAe,cAAe,aAAc,aAAc,aAAc,YAAY,EACzJ,aAAc,CAAC,aAAc,YAAY,EACzC,aAAc,CAAC,aAAc,YAAY,EACzC,eAAgB,CAAC,iBAAkB,iBAAkB,iBAAkB,iBAAkB,kBAAmB,kBAAmB,iBAAkB,iBAAkB,iBAAkB,gBAAgB,EACrM,iBAAkB,CAAC,iBAAkB,gBAAgB,EACrD,iBAAkB,CAAC,iBAAkB,gBAAgB,EACrD,UAAW,CAAC,cAAe,cAAe,gBAAgB,EAC1D,iBAAkB,CAAC,YAAa,cAAe,cAAe,aAAa,EAC3E,WAAY,CAAC,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,YAAa,YAAa,YAAa,WAAW,EAC/I,YAAa,CAAC,YAAa,WAAW,EACtC,YAAa,CAAC,YAAa,WAAW,EACtC,WAAY,CAAC,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,YAAa,YAAa,YAAa,WAAW,EAC/I,YAAa,CAAC,YAAa,WAAW,EACtC,YAAa,CAAC,YAAa,WAAW,EACtC,MAAO,CAAC,UAAW,UAAW,UAAU,EACxC,UAAW,CAAC,OAAO,EACnB,UAAW,CAAC,OAAO,EACnB,WAAY,CAAC,OAAO,CAC1B,EACI,+BAAgC,CAC9B,YAAa,CAAC,SAAS,CAC7B,EACI,yBAA0B,CAAC,gBAAgB,EAC3C,wBAAyB,CAAC,IAAK,KAAM,QAAS,WAAY,SAAU,kBAAmB,OAAQ,eAAgB,aAAc,SAAU,cAAe,WAAW,CACrK,CACA,EAMMe,GAAe,CAACC,EAAY,CAChC,UAAApL,EACA,OAAAc,EACA,2BAAAC,EACA,OAAAsK,EAAS,CAAA,EACT,SAAAC,EAAW,CAAA,CACb,KACEC,GAAiBH,EAAY,YAAapL,CAAS,EACnDuL,GAAiBH,EAAY,SAAUtK,CAAM,EAC7CyK,GAAiBH,EAAY,6BAA8BrK,CAA0B,EACrFyK,GAAyBJ,EAAW,MAAOE,EAAS,KAAK,EACzDE,GAAyBJ,EAAW,YAAaE,EAAS,WAAW,EACrEE,GAAyBJ,EAAW,uBAAwBE,EAAS,sBAAsB,EAC3FE,GAAyBJ,EAAW,+BAAgCE,EAAS,8BAA8B,EAC3GC,GAAiBH,EAAY,2BAA4BE,EAAS,wBAAwB,EAC1FC,GAAiBH,EAAY,0BAA2BE,EAAS,uBAAuB,EACxFG,GAAsBL,EAAW,MAAOC,EAAO,KAAK,EACpDI,GAAsBL,EAAW,YAAaC,EAAO,WAAW,EAChEI,GAAsBL,EAAW,uBAAwBC,EAAO,sBAAsB,EACtFI,GAAsBL,EAAW,+BAAgCC,EAAO,8BAA8B,EACtGK,GAAqBN,EAAYC,EAAQ,0BAA0B,EACnEK,GAAqBN,EAAYC,EAAQ,yBAAyB,EAC3DD,GAEHG,GAAmB,CAACI,EAAYC,EAAaC,IAAkB,CAC/DA,IAAkB,SACpBF,EAAWC,CAAW,EAAIC,EAE9B,EACML,GAA2B,CAACG,EAAYG,IAAmB,CAC/D,GAAIA,EACF,UAAWhU,KAAOgU,EAChBP,GAAiBI,EAAY7T,EAAKgU,EAAehU,CAAG,CAAC,CAG3D,EACM2T,GAAwB,CAACE,EAAYI,IAAgB,CACzD,GAAIA,EACF,UAAWjU,KAAOiU,EAChBL,GAAqBC,EAAYI,EAAajU,CAAG,CAGvD,EACM4T,GAAuB,CAACC,EAAYI,EAAajU,IAAQ,CAC7D,MAAMkU,EAAaD,EAAYjU,CAAG,EAC9BkU,IAAe,SACjBL,EAAW7T,CAAG,EAAI6T,EAAW7T,CAAG,EAAI6T,EAAW7T,CAAG,EAAE,OAAOkU,CAAU,EAAIA,EAE7E,EACMC,GAAsB,CAACC,KAAoBC,IAAiB,OAAOD,GAAoB,WAAarI,GAAoBkE,GAAkBmE,EAAiB,GAAGC,CAAY,EAAItI,GAAoB,IAAMsH,GAAapD,GAAgB,EAAImE,CAAe,EAAG,GAAGC,CAAY,EClxG1QC,GAAc,CAAC,eAAgB,YAAa,UAAW,YAAa,aAAa,EACjFC,GAAkB,CAAC,OAAQ,MAAO,UAAW,OAAQ,aAAc,aAAc,SAAU,QAAS,WAAW,EAE/GC,GAAUL,GAAoB,CAClC,OAAQ,CACN,YAAa,CACX,EAAG,CAAC,CAAE,EAAGG,GAAa,EACtB,QAAS,CAAC,CAAE,QAASA,GAAa,EAClC,QAAS,CAAC,CAAE,QAASA,GAAa,EAClC,EAAG,CAAC,CAAE,EAAGC,GAAiB,EAC1B,QAAS,CAAC,CAAE,QAASA,GAAiB,EACtC,QAAS,CAAC,CAAE,QAASA,GAAiB,CAAA,CACxC,CAEJ,CAAC,EAEM,SAASE,KAAMC,EAAgD,CACpE,OAAOF,GAAQpQ,GAAKsQ,CAAO,CAAC,CAC9B,CCjBA,MAAMC,GAAwC,CAC5C,MAAO,OACP,UAAW,MACX,YAAa,SACb,kBAAmB,SACnB,YAAa,SACb,gBAAiB,SACjB,KAAM,QACN,MAAO,QACP,MAAO,OACP,UAAW,OACX,OAAQ,OACR,gBAAiB,OACjB,OAAQ,MACR,cAAe,MACf,QAAS,MACT,cAAe,SACf,iBAAkB,SAClB,QAAS,SACT,QAAS,MACT,OAAQ,QACR,MAAO,SAGP,KAAM,OACN,IAAK,QACL,KAAM,MACN,UAAW,QACX,OAAQ,OACR,SAAU,MACZ,EAEO,SAASC,GAAYC,EAAwB,CAClD,OAAOF,GAAcE,EAAO,KAAA,EAAO,YAAA,CAAa,GAAK,MACvD,CASO,SAASC,GAAgBC,EAAyC,CACvE,OAAOA,IAAW,YAAcA,IAAW,UAAYA,IAAW,SACpE,CAqBA,SAASC,GAAc9T,EAAe6T,EAAoBE,EAAoC,CAC5F,GAAIF,IAAW,WAAY,CACzB,MAAMG,EAASD,EAAQ,QAAU,QAIjC,OAAOA,EAAQ,SACX,IAAI,KAAK,aAAaC,EAAQ,CAAE,MAAO,WAAY,SAAUD,EAAQ,QAAA,CAAU,EAAE,OAAO/T,CAAK,EAC7F,IAAI,KAAK,aAAagU,EAAQ,CAAE,sBAAuB,EAAG,sBAAuB,CAAA,CAAG,EAAE,OAAOhU,CAAK,CACxG,CACA,OAAI6T,IAAW,UAAkB,OAAO,KAAK,MAAM7T,CAAK,CAAC,EAClDA,EAAM,QAAQ+T,EAAQ,WAAaE,EAAyB,CACrE,CAGA,MAAMA,GAA4B,EAM3B,SAASC,GACdlU,EACA6T,EACAE,EAA6B,CAAA,EACrB,CACR,GAA2B/T,GAAU,KAAM,MAAO,GAGlD,GAAI6T,IAAW,QAAS,OAAO7T,EAAQ,OAAS,QAEhD,GAAI6T,IAAW,OAAQ,CAGrB,MAAMM,EAAOnU,aAAiB,KAAOA,EAAQ,IAAI,KAAK,OAAOA,CAAK,CAAC,EACnE,OAAI,OAAO,MAAMmU,EAAK,QAAA,CAAS,EAAU,OAAOnU,CAAK,EAC9C,IAAI,KAAK,eAAe+T,EAAQ,QAAU,QAAS,CAAE,UAAW,QAAA,CAAU,EAAE,OAAOI,CAAI,CAChG,CAEA,GAAIP,GAAgBC,CAAM,EAAG,CAC3B,MAAMO,EAAU,OAAOpU,GAAU,SAAWA,EAAQ,OAAOA,CAAK,EAChE,OAAK,OAAO,SAASoU,CAAO,EACrBN,GAAcM,EAASP,EAAsBE,CAAO,EADrB,OAAO/T,CAAK,CAEpD,CAEA,OAAI,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAAY,OAAOA,GAAU,UACtE,OAAOA,CAAK,EAEd,KAAK,UAAUA,CAAK,CAC7B,CCtHO,MAAMqU,GAAuC,CAClD,eAAgB,CACd,kdAAA,EAEF,YAAe,CACb,oNAAA,EAEF,QAAW,CACT,iQAAA,EAEF,aAAc,CACZ,sCAAA,EAEF,aAAc,CACZ,qCAAA,EAEF,kBAAmB,CACjB,0CAAA,EAEF,gBAAiB,CACf,uCAAA,EAEF,cAAe,CACb,qCAAA,EAEF,uBAAwB,CACtB,wDAAA,EAEF,WAAY,CACV,oCAAA,EAEF,mBAAoB,CAClB,4CAAA,EAEF,oBAAqB,CACnB,4EAAA,EAEF,UAAa,CACX,kfAAA,EAEF,OAAU,CACR,ibAAA,EAEF,KAAQ,CACN,wNAAA,EAEF,aAAc,CACZ,iSAAA,EAEF,KAAQ,CACN,6DAAA,EAEF,YAAa,CACX,oPAAA,EAEF,SAAY,CACV,oIAAA,EAEF,UAAa,CACX,6kBAAA,EAEF,mBAAoB,CAClB,+JAAA,EAEF,kBAAmB,CACjB,4SAAA,EAEF,WAAc,CACZ,4oBAAA,EAEF,SAAY,CACV,6iBAAA,EAEF,iBAAkB,CAChB,kfAAA,EAEF,YAAa,CACX,kcAAA,EAEF,mBAAoB,CAClB,gKAAA,EAEF,aAAc,CACZ,6OAAA,EAEF,YAAa,CACX,wCACA,yCAAA,EAEF,cAAe,CACb,wgBAAA,EAEF,MAAS,CACP,uBAAA,EAEF,cAAe,CACb,meAAA,EAEF,eAAgB,CACd,gEAAA,EAEF,eAAgB,CACd,4BAAA,EAEF,eAAgB,CACd,6BAAA,EAEF,gBAAiB,CACf,2BAAA,EAEF,aAAc,CACZ,4BAAA,EAEF,kBAAmB,CACjB,mDAAA,EAEF,gBAAiB,CACf,kDAAA,EAEF,iBAAkB,CAChB,gDAAA,EAEF,eAAgB,CACd,uWAAA,EAEF,UAAa,CACX,kXAAA,EAEF,kBAAmB,CACjB,giBAAA,EAEF,iBAAkB,CAChB,ojBAAA,EAEF,iBAAkB,CAChB,slBAAA,EAEF,MAAS,CACP,kDAAA,EAEF,MAAS,CACP,sBAAA,EAEF,KAAQ,CACN,wEAAA,EAEF,IAAO,CACL,0+BACA,qCAAA,EAEF,eAAgB,CACd,uJAAA,EAEF,mBAAoB,CAClB,8QAAA,EAEF,WAAY,CACV,iRAAA,EAEF,cAAe,CACb,oLAAA,EAEF,KAAQ,CACN,qFAAA,EAEF,mBAAoB,CAClB,4QAAA,EAEF,kBAAmB,CACjB,4OAAA,EAEF,eAAgB,CACd,sLAAA,EAEF,eAAgB,CACd,sKAAA,EAEF,SAAY,CACV,mQAAA,EAEF,iBAAkB,CAChB,gSAAA,EAEF,iBAAkB,CAChB,gSAAA,EAEF,gBAAiB,CACf,kRAAA,EAEF,kBAAmB,CACjB,wVAAA,EAEF,gBAAiB,CACf,4RAAA,EAEF,SAAY,CACV,8GAAA,EAEF,UAAa,CACX,udAAA,EAEF,SAAY,CACV,iJAAA,EAEF,SAAY,CACV,gQAAA,EAEF,qBAAsB,CACpB,6EAAA,EAEF,uBAAwB,CACtB,kLAAA,EAEF,gBAAiB,CACf,sIAAA,EAEF,IAAO,CACL,2LACA,qCAAA,EAEF,aAAc,CACZ,4SAAA,EAEF,KAAQ,CACN,kuDAAA,EAEF,OAAU,CACR,6SAAA,EAEF,YAAe,CACb,mTAAA,EAEF,KAAQ,CACN,oJACA,oHAAA,EAEF,KAAQ,CACN,yMAAA,EAEF,OAAU,CACR,qQAAA,EAEF,cAAe,CACb,kVAAA,EAEF,KAAQ,CACN,8TAAA,EAEF,MAAS,CACP,6dAAA,EAEF,cAAe,CACb,8bAAA,EAEF,QAAW,CACT,kEAAA,EAEF,MAAS,CACP,+JAAA,EAEF,KAAQ,CACN,4OAAA,EAEF,eAAkB,CAChB,8TAAA,EAEF,MAAS,CACP,wYAAA,EAEF,cAAe,CACb,6oBAAA,EAEF,qBAAsB,CACpB,0JAAA,EAEF,IAAO,CACL,iNAAA,EAEF,SAAY,CACV,oPAAA,EAEF,SAAY,CACV,0+BAAA,EAEF,aAAc,CACZ,wPAAA,EAEF,KAAQ,CACN,2KAAA,EAEF,cAAe,CACb,uRAAA,EAEF,cAAe,CACb,iLAAA,EAEF,YAAa,CACX,iLAAA,EAEF,IAAO,CACL,sUAAA,EAEF,UAAW,CACT,wCACA,gFAAA,EAEF,UAAa,CACX,6mBAAA,EAEF,KAAQ,CACN,8CAAA,EAEF,MAAS,CACP,UAAA,EAEF,KAAQ,CACN,sLAAA,EAEF,UAAa,CACX,wRAAA,EAEF,YAAa,CACX,oGAAA,EAEF,gBAAiB,CACf,qPAAA,EAEF,cAAe,CACb,qWAAA,EAEF,MAAS,CACP,0DAAA,EAEF,OAAU,CACR,kQAAA,EAEF,gBAAiB,CACf,4pBAAA,EAEF,MAAS,CACP,mWAAA,EAEF,MAAS,CACP,yTAAA,EAEF,KAAQ,CACN,wCACA,uHAAA,EAEF,KAAQ,CACN,wBAAA,EAEF,qBAAsB,CACpB,oNAAA,EAEF,QAAW,CACT,qmBAAA,EAEF,eAAgB,CACd,ojCAAA,EAEF,UAAW,CACT,8bACA,0OAAA,EAEF,kBAAmB,CACjB,yMAAA,EAEF,aAAc,CACZ,uHAAA,EAEF,kBAAmB,CACjB,kUAAA,EAEF,iBAAkB,CAChB,wOAAA,EAEF,kBAAmB,CACjB,ocAAA,EAEF,kBAAmB,CACjB,gXAAA,EAEF,QAAW,CACT,yKAAA,EAEF,gBAAiB,CACf,gbAAA,EAEF,MAAS,CACP,4fAAA,EAEF,SAAY,CACV,+jBAAA,EAEF,OAAU,CACR,+EAAA,EAEF,KAAQ,CACN,mGAAA,EAEF,OAAU,CACR,sXAAA,EAEF,MAAS,CACP,uQAAA,EAEF,eAAgB,CACd,oNAAA,EAEF,qBAAsB,CACpB,8NAAA,EAEF,eAAgB,CACd,gTAAA,EAEF,gBAAiB,CACf,qRAAA,EAEF,KAAQ,CACN,2EAAA,EAEF,SAAY,CACV,qmBAAA,EAEF,iBAAkB,CAChB,qMAAA,EAEF,QAAW,CACT,wfAAA,EAEF,eAAgB,CACd,4aAAA,EAEF,KAAQ,CACN,iXAAA,EAEF,WAAc,CACZ,mhBAAA,EAEF,IAAO,CACL,mMAAA,EAEF,OAAU,CACR,yZAAA,EAEF,cAAe,CACb,stCAAA,EAEF,IAAO,CACL,gNACA,qBAAA,EAEF,WAAY,CACV,qtBAAA,EAEF,OAAU,CACR,sRAAA,EAEF,MAAS,CACP,+ZAAA,EAEF,gBAAiB,CACf,+GAAA,EAEF,cAAe,CACb,0GAAA,EAEF,OAAU,CACR,uoBAAA,EAEF,MAAS,CACP,maAAA,EAEF,OAAU,CACR,4GAAA,EAEF,KAAQ,CACN,yJAAA,EAEF,cAAe,CACb,yMAAA,EAEF,aAAc,CACZ,ggBAAA,EAEF,YAAa,CACX,yMAAA,EAEF,MAAS,CACP,2XAAA,EAEF,SAAY,CACV,oSAAA,EAEF,eAAgB,CACd,yKAAA,EAEF,OAAU,CACR,6QAAA,EAEF,OAAU,CACR,yNAAA,EAEF,OAAU,CACR,2gBAAA,EAEF,WAAY,CACV,uEAAA,CAEJ,EAIaC,GAAa,OAAO,KAAKD,EAAU,EAEzC,SAASE,GAAQjU,EAAuB,CAC7C,OAAO,OAAO,UAAU,eAAe,KAAK+T,GAAY/T,CAAI,CAC9D,CCjfO,SAASkU,GAAK,CAAE,KAAAlU,EAAM,UAAAgE,EAAW,MAAAmQ,EAAO,MAAAC,EAAO,YAAAC,EAAc,KAAkB,CACpF,MAAMC,EAAQP,GAAW/T,CAAI,EAC7B,OAAKsU,EAGHC,EAAAA,IAAC,MAAA,CACC,MAAM,6BACN,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAAF,EACA,cAAc,QACd,eAAe,QACf,UAAWrQ,GAAa,wBACxB,MAAAmQ,EACA,KAAMC,EAAQ,MAAQ,OACtB,aAAYA,EACZ,cAAaA,EAAQ,OAAY,OACjC,YAAWpU,EAEV,SAAAsU,EAAM,IAAKE,SACT,OAAA,CAAa,EAAAA,CAAA,EAAHA,CAAS,CACrB,CAAA,CAAA,EApBc,IAuBrB,CAMO,SAASC,GAAW,CACzB,KAAAzU,EACA,KAAA0U,EACA,MAAAN,EACA,UAAApQ,EACA,YAAAqQ,CACF,EAMG,CACD,GAAI,CAACrU,EAAM,OAAO,KAClB,MAAM2U,EAAWD,GAAQ,SACzB,OACEH,EAAAA,IAACL,GAAA,CACC,KAAAlU,EACA,MAAAoU,EACA,YAAAC,EACA,UAAWrQ,GAAa,6CACxB,MAAO,CAAE,MAAO,OAAO2Q,GAAa,SAAW,GAAGA,CAAQ,KAAOA,EAAU,OAAQ,OAAOA,GAAa,SAAW,GAAGA,CAAQ,KAAOA,CAAA,CAAS,CAAA,CAGnJ,CC1EO,SAASC,IAAwE,CACtF,MAAMC,EAAMC,EAAAA,OAAU,IAAI,EACpB,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,CAAC,EAEpCC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAUN,EAAI,QAKpB,GAJI,CAACM,IAELH,EAASG,EAAQ,sBAAA,EAAwB,KAAK,EAE1C,OAAO,eAAmB,KAAa,OAC3C,MAAMC,EAAW,IAAI,eAAgBnP,GAAY,CAC/C,MAAMoP,EAAQpP,EAAQ,CAAC,EACnBoP,GACFL,EAASK,EAAM,YAAY,KAAK,CAEpC,CAAC,EACD,OAAAD,EAAS,QAAQD,CAAO,EACjB,IAAMC,EAAS,WAAA,CACxB,EAAG,CAAA,CAAE,EAEE,CAACP,EAAKE,CAAK,CACpB,CC7BO,SAASO,GAAa5V,EAAuB,CAClD,GAAI,KAAK,IAAIA,CAAK,EAAI,EACpB,OAAO,KAAK,MAAMA,CAAK,EAAE,SAAA,EAE3B,MAAM6V,EAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI7V,CAAK,CAAC,CAAC,EAC5C8V,EAAQ,KAAK,MAAMD,EAAM,CAAC,EAC1BE,EAAM,KAAK,MAAM/V,EAAQ,KAAK,IAAI,GAAI8V,EAAQ,CAAC,CAAC,EAChDE,EAAS,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAEF,CAAK,GAAK,GAC5D,MAAO,GAAGC,CAAG,IAAIC,CAAM,GAAG,KAAA,CAC5B,CAOO,MAAMC,GAAwB,CAAC,UAAW,UAAW,UAAW,UAAW,SAAS,EAG9EC,GAAyB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,ECuBvG,SAASC,GAAc,CACrB,OAAAC,EACA,cAAAC,EACA,YAAAC,EACA,YAAAC,EACA,cAAAC,EACA,KAAAC,EACA,OAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,KAAAC,EACA,KAAAC,CACF,EAakD,CAChD,OAAOC,EAAAA,QAAQ,IAAM,CACnB,MAAMC,EAAeV,EAAcD,EAC7BY,EAAUV,EAAcC,EACxBU,EAAOd,EAAO,KAAA,EACde,EAAMD,EAAK,OAAS,KAAK,IAAI,GAAGA,CAAI,EAAI,EACxCE,EAAMF,EAAK,OAAS,KAAK,IAAI,GAAGA,CAAI,EAAI,EACxCG,EAAO,KAAK,IAAIR,GAAQM,EAAK,CAAC,EACpC,IAAIG,EAAO,KAAK,IAAIR,GAAQM,EAAK,CAAC,EAC9BE,IAASD,IACXC,EAAOA,EAAO,KAGhB,MAAMC,EAAQ,KAAK,IAAI,GAAGnB,EAAO,IAAKoB,GAAWA,EAAO,MAAM,EAAG,CAAC,EAC5DC,EAAK,MAAM,KAAK,CAAE,OAAQF,CAAA,EAAS,CAACG,EAAGnU,IAC3C0T,EAAUR,EAAQlT,GAAKyT,EAAeP,EAAO,EAAIQ,IAAaM,EAAQ,GAAK,EAAA,EAGvEI,EAAe3X,GAAkB,CACrC,IAAI4X,EAAU,GAAK5X,EAAQqX,IAASC,EAAOD,GAC3C,OAAK,OAAO,SAASO,CAAO,IAC1BA,EAAU,GAELX,EAAUW,GAAWvB,EAAgB,EAAIY,EAAUP,EAC5D,EAEMmB,EAAKzB,EAAO,IAAKoB,GAAWA,EAAO,IAAIG,CAAW,CAAC,EACnDG,EAAKL,EAAG,IAAI,CAACM,EAAGxU,IAAM,CAACwU,EAAGF,EAAG,IAAKL,GAAWA,EAAOjU,CAAC,CAAC,CAAC,CAAuB,EAC9EyU,EAAQL,EAAY,CAAC,EAErBM,EAAmB1U,IACrBoT,EAAkBpT,IAAM8S,EAAgBY,EAAU,EAAIP,GAAWC,EAAkBM,EACjFiB,EAAgB3U,GAAeA,GAAK+T,EAAOD,GAASV,EAAkBU,EAEtEc,EAAIlB,EAAUR,EACdzT,EAAIgU,EAAeC,EACnBmB,EAAWD,EAAIvB,EACfyB,EAAYrV,EAAI4T,EAChB0B,EAAQ,MAAM,KAAK,CAAE,OAAQ3B,EAAkB,CAAA,EAAK,CAACe,EAAGnU,IAAM0U,EAAgB1U,CAAC,CAAC,EACnF,IAAKgV,GAAM,KAAKH,CAAQ,IAAIG,CAAC,MAAMF,CAAS,EAAE,EAC9C,KAAK,GAAG,EAEX,MAAO,CAAE,aAAArB,EAAc,QAAAC,EAAS,MAAAM,EAAO,GAAAE,EAAI,GAAAI,EAAI,GAAAC,EAAI,MAAAE,EAAO,gBAAAC,EAAiB,aAAAC,EAAc,MAAAI,EAAO,SAAAF,EAAU,UAAAC,CAAA,CAC5G,EAAG,CAACjC,EAAQC,EAAeC,EAAaC,EAAaC,EAAeC,EAAMC,EAAQC,EAAiBC,EAAaC,EAAMC,CAAI,CAAC,CAC7H,CAcO,SAAS0B,GAAiB,CAC/B,OAAApC,EACA,QAAAqC,EAAU,CAAA,EACV,OAAAC,EAAS,CAAA,EACT,UAAApU,EACA,cAAA+R,EAAgB,IAChB,YAAAC,EAAc,IACd,YAAAC,EAAc,GACd,cAAAC,EAAgB,GAChB,aAAAmC,EAAe,GACf,aAAAC,EAAe,EACf,gBAAAjC,EAAkB,EAClB,UAAAkC,EAAY,qBACZ,cAAAC,EAAgB,qBAChB,UAAAC,EAAY,UACZ,SAAAC,EAAW,GACX,cAAAC,EAAgB,GAChB,KAAAxC,EAAO,GACP,OAAAC,EAAS,EACT,YAAAE,EAAc,IACd,SAAAsC,EAAW,GACX,OAAAC,EAAS,GACT,WAAAC,EAAa,EACb,KAAAvC,EAAO,KACP,KAAAC,EAAO,KACP,QAAAuC,EAAUzD,GACV,QAAA0D,EAAWtZ,GAAUA,EACrB,UAAAuZ,EAAY,GACZ,WAAAC,EAAa,GACb,aAAAC,EAAe,GACf,UAAAC,CACF,EAAkB,CAChB,MAAMC,EAAQxD,GAAc,CAC1B,OAAAC,EACA,cAAAC,EACA,YAAAC,EACA,YAAAC,EACA,cAAAC,EACA,KAAAC,EACA,OAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,KAAAC,EACA,KAAAC,CAAA,CACD,EAEK8C,EAAcxD,EAAO,OACrByD,EAAQF,EAAM,GAAG,QAAQ,CAAC,CAAC5B,EAAG+B,CAAQ,EAAGC,IAC7CD,EAAS,IAAI,CAACvB,EAAGyB,IAAO,CACtB,MAAMC,EAAa1B,GAAKoB,EAAM,MAC9B,MAAO,CACL,IAAK,GAAGI,CAAE,IAAIC,CAAE,GAChB,EAAGjC,EAAKmB,EAAWU,EAAe,EAAII,EAAKd,EAC3C,EAAGe,EAAa1B,EAAIoB,EAAM,MAAQR,EAIlC,OAAQ,KAAK,IAAIZ,EAAIoB,EAAM,KAAK,EAAIR,EACpC,MAAOT,EAAOsB,CAAE,GAAK,UACrB,WAAAC,CAAA,CAEJ,CAAC,CAAA,EAGGC,EAAS,qBAAqBN,CAAW,IAAID,EAAM,KAAK,GAE9D,OACE9E,EAAAA,IAAC,OAAI,UAAAvQ,EACH,SAAA6V,EAAAA,KAAC,MAAA,CACC,QAAS,OAAOR,EAAM,YAAY,IAAItD,CAAa,GACnD,MAAM,6BACN,KAAK,MACL,aAAYqD,GAAa,YAExB,SAAA,CAAAH,GACC1E,EAAAA,IAAC,OAAA,CAAK,EAAG8E,EAAM,MAAO,OAAQd,EAAW,YAAaI,EAAe,cAAc,QAAQ,KAAK,cAAc,EAE/GQ,GACC5E,EAAAA,IAAC,OAAA,CACC,EAAG,KAAK8E,EAAM,QAAQ,IAAIA,EAAM,KAAK,MAAMA,EAAM,SAAS,GAC1D,OAAQb,EACR,YAAaG,EACb,cAAc,QACd,KAAK,aAAA,CAAA,EAIRO,GACCf,EAAQ,OAAS,GACjBkB,EAAM,GAAG,IAAI,CAAC5B,EAAGxU,IACfsR,EAAAA,IAAC,OAAA,CAEC,MAAO,CAAE,SAAAmE,EAAU,KAAMD,CAAA,EACzB,EAAG1C,EAAgBE,EAAcqC,EAAeI,EAAW,EAAItC,EAC/D,EAAAqB,EACA,WAAW,SAEV,SAAAxU,EAAI6V,IAAe,EAAIE,EAAQb,EAAQlV,CAAC,GAAK,EAAE,EAAI,EAAA,EAN/C,KAAKA,CAAC,EAAA,CAQd,EAEFiW,GACC7C,EAAkB,GAClB,MAAM,KAAK,CAAE,OAAQA,EAAkB,CAAA,EAAK,CAACe,EAAGnU,IAC9CsR,EAAAA,IAAC,OAAA,CAEC,MAAO,CAAE,SAAAmE,EAAU,KAAMD,CAAA,EACzB,EAAGY,EAAM,gBAAgBpW,CAAC,EAC1B,EAAGgT,EAAcoC,EAAelC,EAChC,WAAW,MAEV,SAAA4C,EAAQM,EAAM,aAAapW,CAAC,CAAC,CAAA,EANzB,KAAKA,CAAC,EAAA,CAQd,SAEF,OAAA,CACC,SAAA,CAAAsR,MAAC,YAAS,GAAI,GAAGqF,CAAM,OACrB,eAAC,OAAA,CAAK,EAAE,IAAI,EAAE,IAAI,MAAOP,EAAM,aAAc,OAAQA,EAAM,MAAO,EACpE,EACA9E,EAAAA,IAAC,YAAS,GAAI,GAAGqF,CAAM,OACrB,SAAArF,MAAC,QAAK,EAAE,IAAI,EAAG8E,EAAM,MAAO,MAAOA,EAAM,aAAc,OAAQtD,EAAgBsD,EAAM,MAAO,CAAA,CAC9F,CAAA,EACF,EAECE,EAAM,IAAKO,GACVvF,EAAAA,IAAC,OAAA,CAEC,GAAIsE,EACJ,GAAIA,EACJ,EAAGiB,EAAK,EACR,EAAGA,EAAK,EACR,MAAOlB,EACP,OAAQkB,EAAK,OACb,KAAMA,EAAK,MACX,SAAU,QAAQF,CAAM,IAAIE,EAAK,WAAa,MAAQ,KAAK,GAAA,EARtDA,EAAK,GAAA,CAUb,CAAA,CAAA,CAAA,EAEL,CAEJ,CASO,SAASC,GAAkB,CAChC,OAAAjE,EACA,QAAAqC,EAAU,CAAA,EACV,OAAAC,EAAS,CAAA,EACT,UAAApU,EACA,cAAA+R,EAAgB,IAChB,YAAAC,EAAc,EACd,YAAAC,EAAc,GACd,cAAAC,EAAgB,GAChB,aAAAmC,EAAe,GACf,aAAAC,EAAe,EACf,gBAAAjC,EAAkB,EAClB,UAAAkC,EAAY,qBACZ,UAAAE,EAAY,UACZ,SAAAC,EAAW,GACX,cAAAC,EAAgB,GAChB,UAAAqB,EAAY,EACZ,KAAA7D,EAAO,GACP,OAAAC,EAAS,EACT,YAAAE,EAAc,IACd,KAAAC,EAAO,KACP,KAAAC,EAAO,KACP,QAAAuC,EAAUzD,GACV,QAAA0D,EAAWtZ,GAAUA,EACrB,UAAAuZ,EAAY,GACZ,WAAAC,EAAa,GACb,UAAAE,CACF,EAAmB,CACjB,MAAMC,EAAQxD,GAAc,CAC1B,OAAAC,EACA,cAAAC,EACA,YAAAC,EACA,YAAAC,EACA,cAAAC,EACA,KAAAC,EACA,OAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,KAAAC,EACA,KAAAC,CAAA,CACD,EAEKyD,EAAa,sBAAsBnE,EAAO,MAAM,IAAIuD,EAAM,KAAK,GAC/Da,EAAQnE,EAAgBsD,EAAM,QAAUjD,EAExC+D,EAAQlX,GACZoW,EAAM,GAAG,IAAI,CAAC,CAAC5B,EAAGF,CAAE,EAAGxP,IAAU,GAAGA,IAAU,EAAI,IAAM,GAAG,IAAI0P,CAAC,IAAIF,EAAGtU,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EACjFmX,EAAgBnX,GACpB,KAAKoW,EAAM,QAAUlD,CAAI,IAAI+D,CAAK,GAClCb,EAAM,GAAG,IAAI,CAAC,CAAC5B,EAAGF,CAAE,IAAM,KAAKE,CAAC,IAAIF,EAAGtU,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EACrD,MAAMiX,CAAK,KAEb,OACE3F,EAAAA,IAAC,OAAI,UAAAvQ,EACH,SAAA6V,EAAAA,KAAC,MAAA,CACC,QAAS,OAAOR,EAAM,YAAY,IAAItD,CAAa,GACnD,MAAM,6BACN,KAAK,MACL,aAAYqD,GAAa,aAExB,SAAA,CAAAH,GACC1E,EAAAA,IAAC,OAAA,CAAK,EAAG8E,EAAM,MAAO,OAAQd,EAAW,YAAaI,EAAe,cAAc,QAAQ,KAAK,cAAc,EAG/GO,GACCf,EAAQ,OAAS,GACjBkB,EAAM,GAAG,IAAI,CAAC5B,EAAGxU,IACfsR,EAAAA,IAAC,OAAA,CAEC,MAAO,CAAE,SAAAmE,EAAU,KAAMD,CAAA,EACzB,EAAG1C,EAAgBE,EAAcqC,EAAeI,EAAW,EAAItC,EAC/D,EAAAqB,EACA,WAAW,SAEV,SAAAuB,EAAQb,EAAQlV,CAAC,GAAK,EAAE,CAAA,EANpB,KAAKA,CAAC,EAAA,CAQd,EAEFiW,GACC7C,EAAkB,GAClB,MAAM,KAAK,CAAE,OAAQA,EAAkB,CAAA,EAAK,CAACe,EAAGnU,IAC9CsR,EAAAA,IAAC,OAAA,CAEC,MAAO,CAAE,SAAAmE,EAAU,KAAMD,CAAA,EACzB,EAAGY,EAAM,gBAAgBpW,CAAC,EAC1B,EAAGgT,EAAcoC,EAAelC,EAChC,WAAW,MAEV,SAAA4C,EAAQM,EAAM,aAAapW,CAAC,CAAC,CAAA,EANzB,KAAKA,CAAC,EAAA,CAQd,SAEF,OAAA,CAEC,SAAA,CAAA4W,EAAAA,KAAC,iBAAA,CAAe,GAAII,EAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MACtD,SAAA,CAAA1F,EAAAA,IAAC,OAAA,CAAK,OAAO,KAAK,UAAU,2BAA2B,EACvDA,EAAAA,IAAC,OAAA,CAAK,OAAO,MAAM,UAAU,2BAA2B,EACxDA,EAAAA,IAAC,OAAA,CAAK,OAAO,MAAM,UAAU,wBAAA,CAAyB,CAAA,EACxD,EACCuB,EAAO,IAAI,CAACsB,EAAGnU,IAAA,SACdsR,OAAAA,EAAAA,IAAC,OAAA,CAAuB,GAAI,GAAG0F,CAAU,SAAShX,CAAC,GACjD,SAAAsR,EAAAA,IAAC,OAAA,CACC,EAAE,IACF,GAAG8F,EAAAhB,EAAM,GAAGpW,CAAC,IAAV,MAAAoX,EAAa,OAAS,KAAK,IAAI,GAAGhB,EAAM,GAAGpW,CAAC,CAAC,EAAI,EACpD,OAAQ8S,IAAiBuE,EAAAjB,EAAM,GAAGpW,CAAC,IAAV,MAAAqX,EAAa,OAAS,KAAK,IAAI,GAAGjB,EAAM,GAAGpW,CAAC,CAAC,EAAI,GAC1E,MAAM,OACN,KAAM,SAASgX,CAAU,IAAA,CAAA,CAC3B,EAPS,QAAQhX,CAAC,EAQpB,EACD,CAAA,EACH,EAEC6S,EAAO,IAAI,CAACsB,EAAGnU,WACb,IAAA,CACC,SAAA,CAAAsR,EAAAA,IAAC,OAAA,CACC,eAAe,QACf,EAAG6F,EAAanX,CAAC,EACjB,YAAa+W,EACb,cAAc,QACd,KAAM5B,EAAOnV,CAAC,GAAK,UACnB,KAAM,SAASgX,CAAU,SAAShX,CAAC,IAAA,CAAA,EAErCsR,EAAAA,IAAC,OAAA,CACC,eAAe,QACf,EAAG4F,EAAKlX,CAAC,EACT,OAAQmV,EAAOnV,CAAC,GAAK,UACrB,YAAa+W,EACb,cAAc,QACd,KAAK,aAAA,CAAA,CACP,CAAA,EAhBM,UAAU/W,CAAC,EAiBnB,CACD,CAAA,CAAA,CAAA,EAEL,CAEJ,CAwBO,SAASsX,GAAmB,CACjC,QAAAC,EACA,UAAAxW,EACA,WAAAyW,EAAa,QACb,OAAA5B,EAAS,GACT,WAAA6B,EAAa,KAAK,GAClB,UAAAV,EAAY,GACZ,QAAAW,EAAU,EACV,QAAAC,EAAU,EACV,YAAAC,EAAc,EACd,YAAAC,EAAc,EACd,eAAAC,EAAkBrb,GAAUA,EAAM,SAAA,EAClC,UAAA0Z,CACF,EAAoB,OAClB,MAAM4B,EAAK,GAAKL,EACVM,EAAK,GAAKL,EACVM,EAAQV,EAAQ,OAAO,CAACW,EAAKC,IAAWD,EAAM,KAAK,IAAIC,EAAO,MAAO,CAAC,EAAG,CAAC,EAC1EC,EAAYH,EAAQ,EACpBtB,EAAS,uBAAuBY,EAAQ,MAAM,GAE9Cc,EAAyD,CAAA,EAC/D,GAAID,GAAab,EAAQ,OAAS,EAAG,CACnC,IAAIe,EAAQb,EACZF,EAAQ,QAAQ,CAACY,EAAQnY,IAAM,CAC7B,MAAMuY,EAAS,EAAI,KAAK,GAAK,KAAK,IAAIJ,EAAO,MAAO,CAAC,EAAKF,EACtDM,EAAQ,GACVF,EAAK,KAAK,CAAE,IAAKrY,EAAG,MAAOmY,EAAO,MAAO,EAAGK,GAAQT,EAAIC,EAAIpC,EAAQ0C,EAAOC,CAAK,EAAG,EAErFD,GAASC,CACX,CAAC,CACH,CAEA,OACEjH,EAAAA,IAAC,MAAA,CAAI,UAAAvQ,EACH,SAAA6V,EAAAA,KAAC,MAAA,CAAI,QAAQ,cAAc,QAAQ,MAAM,KAAK,MAAM,aAAYT,GAAa,cAC3E,SAAA,CAAA7E,EAAAA,IAAC,QACC,SAAAA,MAAC,WAAA,CAAS,GAAIqF,EACZ,SAAArF,EAAAA,IAAC,UAAO,GAAAyG,EAAQ,GAAAC,EAAQ,EAAGpC,EAASmB,EAAY,EAAG,KAAK,QAAQ,YAAY,IAAI,EAClF,CAAA,CACF,GAEE,CAACqB,GAAab,EAAQ,QAAU,IAChCjG,EAAAA,IAAC,SAAA,CACC,SAAU,QAAQqF,CAAM,IACxB,GAAAoB,EACA,GAAAC,EACA,EAAGpC,EACH,YAAamB,EACb,OAAQqB,IAAYhB,EAAAG,EAAQ,CAAC,IAAT,YAAAH,EAAY,QAAS,UAAY,UACrD,KAAK,aAAA,CAAA,EAIRiB,EAAK,IAAKI,GACTnH,EAAAA,IAAC,OAAA,CAEC,SAAU,QAAQqF,CAAM,IACxB,EAAG8B,EAAI,EACP,OAAQA,EAAI,MACZ,YAAa1B,EACb,KAAK,aAAA,EALA0B,EAAI,GAAA,CAOZ,QAEA,OAAA,CAAK,EAAGV,EAAKH,EAAa,EAAGI,EAAKH,EAAa,WAAW,SAAS,MAAO,CAAE,SAAU,EAAG,KAAM,SAAA,EAC7F,SAAAL,EACH,EACAlG,EAAAA,IAAC,OAAA,CACC,EAAGyG,EAAKH,EACR,EAAGI,EAAKH,EAAc,EACtB,WAAW,SACX,MAAO,CAAE,SAAU,EAAG,WAAY,IAAK,KAAM,SAAA,EAE5C,WAAeI,CAAK,CAAA,CAAA,CACvB,CAAA,CACF,CAAA,CACF,CAEJ,CAGA,SAASO,GAAQT,EAAYC,EAAY,EAAWM,EAAeC,EAAuB,CACxF,MAAMG,EAAMJ,EAAQC,EACdI,EAAKZ,EAAK,EAAI,KAAK,IAAIO,CAAK,EAC5BM,EAAKZ,EAAK,EAAI,KAAK,IAAIM,CAAK,EAC5BO,EAAKd,EAAK,EAAI,KAAK,IAAIW,CAAG,EAC1BI,EAAKd,EAAK,EAAI,KAAK,IAAIU,CAAG,EAC1BK,EAAWR,EAAQ,KAAK,GAAK,EAAI,EACvC,MAAO,KAAKI,CAAE,IAAIC,CAAE,MAAM,CAAC,IAAI,CAAC,MAAMG,CAAQ,MAAMF,CAAE,IAAIC,CAAE,EAC9D,CCxfA,SAASE,GAAU,CAAE,MAAAC,GAA6B,CAChD,OAAKA,EAGE3H,EAAAA,IAAC,OAAA,CAAK,UAAU,yCAA0C,SAAA2H,EAAM,EAF9D,IAGX,CAGA,MAAMC,GAAsB,gDACtBC,GACJ,mHACIC,GAAuB,0EAE7B,SAASC,GAAiB5H,EAAiC,CACzD,OAAOA,IAAS,QAAU,YAAc,WAC1C,CAMO,SAAS6H,GAAU,CAAE,SAAAhb,EAAU,GAAGd,GAAyB,CAChE,OAAO8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAQ,SAAAc,CAAA,CAAS,CACnC,CAMO,SAASib,GAAI,CAAE,SAAAjb,EAAU,GAAGd,GAAmB,CACpD,OAAO8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAQ,SAAAc,CAAA,CAAS,CACnC,CAMO,SAASkb,GAAO,CAAE,SAAAlb,EAAU,GAAGd,GAAsB,CAC1D,OAAO8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAQ,SAAAc,CAAA,CAAS,CACnC,CAMO,SAASmb,GAAM,CAAE,SAAAnb,EAAU,GAAGd,GAAqB,CACxD,OAAO8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAQ,SAAAc,CAAA,CAAS,CACnC,CAIO,SAASob,GAAOlc,EAAoB,CACzC,OAAO8T,MAAC,OAAK,GAAG9T,EAAO,UAAWwS,EAAG,SAAUxS,EAAM,SAAS,EAAG,CACnE,CAKO,SAASmc,GAAQ,CAAE,SAAUC,EAAW,GAAGpc,GAAuB,CACvE,OAAO8T,MAAC,MAAI,GAAG9T,EAAO,UAAWwS,EAAG,gDAAiDxS,EAAM,SAAS,EAAG,CACzG,CAsBO,SAASqc,GAAK,CAAE,MAAApd,EAAO,QAAAqd,EAAS,OAAAxJ,EAAQ,OAAAG,EAAQ,SAAAsJ,EAAU,GAAGvc,GAAoB,CACtF,MAAMwc,EAAU1J,EACZK,GAAgBlU,EAAO6T,EAAQ,CAC7B,GAAIG,EAAS,CAAE,OAAAA,CAAA,EAAW,CAAA,EAC1B,GAAIsJ,EAAW,CAAE,SAAAA,GAAa,CAAA,CAAC,CAChC,EACDtd,EACJ,GAAIqd,EAAS,CACX,MAAMG,EAAM,IAAIH,CAAO,GACvB,OAAOxI,EAAAA,IAAC2I,EAAA,CAAK,GAAGzc,EAAQ,SAAAwc,EAAQ,CAClC,CACA,OAAO1I,EAAAA,IAAC,IAAA,CAAG,GAAG9T,EAAQ,SAAAwc,EAAQ,CAChC,CAOO,SAASE,GAAM,CAAE,IAAAC,EAAK,IAAAC,EAAK,SAAUR,EAAW,GAAGpc,GAAqB,CAC7E,OAAO8T,EAAAA,IAAC,MAAA,CAAI,IAAA6I,EAAU,IAAAC,EAAW,GAAG5c,EAAO,CAC7C,CAsBO,SAAS6c,GAAO,CACrB,MAAA9O,EACA,SAAAjN,EACA,QAAAgc,EAAU,YACV,KAAAC,EAAO,GACP,SAAAC,EACA,aAAAC,EAAe,QACf,WAAAC,EAAa,GACb,QAAAhH,EAAU,GACV,GAAGlW,CACL,EAAgB,CACd,MAAMmd,EAAYL,IAAY,UAC9B,OACE1D,EAAAA,KAAC,SAAA,CACC,KAAMpZ,EAAM,MAAQ,SACnB,GAAGA,EACJ,UAAWwS,EACT,8DACA0K,GAAc,MACdC,EAAY,6BAA+B,mCAC3CD,IAAeC,EAAY,+CAAiD,gCAC5EjH,IAAY6G,EAAO,OAAS,QAC5B/c,EAAM,UAAY,oDAClBA,EAAM,SAAA,EAGP,SAAA,CAAAgd,GAAYC,IAAiB,SAAWnJ,MAACL,IAAK,KAAMuJ,EAAU,UAAU,wBAAwB,EAChGjP,GAASjN,EACTkc,GAAYC,IAAiB,OAASnJ,MAACL,IAAK,KAAMuJ,EAAU,UAAU,uBAAA,CAAwB,CAAA,CAAA,CAAA,CAGrG,CAUA,MAAMI,GAAkD,CACtD,KAAM,gEACN,OAAQ,wEACR,MAAO,oEACP,IAAK,4DACL,OAAQ,wEACR,KAAM,gEACN,OAAQ,wEACR,KAAM,gEACN,OAAQ,wEACR,KAAM,+DACR,EAEA,SAASC,GAAgBC,EAAwB,CAC/C,OAAOF,GAAqBE,KAAwBF,GAAuBE,EAAuB,MAAM,CAC1G,CAiBO,SAASC,GAAM,CAAE,SAAAzc,EAAU,MAAAwc,EAAQ,OAAQ,QAAAR,EAAU,QAAS,MAAA/O,EAAO,SAAAiP,EAAU,GAAGhd,GAAqB,CAC5G,OACEoZ,EAAAA,KAAC,OAAA,CACE,GAAGpZ,EACJ,UAAWwS,EACTsK,IAAY,OACR,wCACA,4CACJE,EAAW,iCAAmC,eAC9CK,GAAgBC,CAAK,EACrBtd,EAAM,SAAA,EAGP,SAAA,CAAAgd,SAAavJ,GAAA,CAAK,KAAMuJ,EAAU,UAAU,4BAA4B,YAAa,EAAG,EACxFjP,GAASjN,CAAA,CAAA,CAAA,CAGhB,CAeO,SAAS0c,GAAU,CACxB,MAAAzP,EACA,MAAA9O,EACA,MAAAwc,EACA,SAAUW,EACV,GAAAqB,EACA,KAAAxJ,EAAO,QACP,OAAAyJ,EAAS,GACT,GAAG1d,CACL,EAAmB,CACjB,MAAM2d,EAAcC,EAAAA,MAAA,EACdC,EAAUJ,GAAME,EACtB,OACEvE,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACZ,SAAA,CAAArL,SACE,QAAA,CAAM,QAAS8P,EAAS,UAAWnC,GACjC,SAAA3N,EACH,EAEF+F,EAAAA,IAAC,QAAA,CACC,GAAI+J,EACJ,KAAK,OACL,WAAY,GAGZ,MAAO5e,GAAS,GAChB,eAAcwc,EAAQ,GAAO,OAC5B,GAAGzb,EACJ,UAAWwS,EACTmJ,GACAE,GAAiB5H,CAAI,EACrByJ,GAAU9B,GACV,2CACAH,GAAS,qCACTzb,EAAM,SAAA,CACR,CAAA,EAEF8T,MAAC0H,IAAU,MAAAC,CAAA,CAAc,CAAA,EAC3B,CAEJ,CAaO,SAASqC,GAAS,CAAE,MAAA/P,EAAO,QAAAgQ,EAAS,SAAU3B,EAAW,GAAGpc,GAAwB,CACzF,OACEoZ,EAAAA,KAAC,QAAA,CAAM,UAAU,0BACf,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,QAAAiK,EACC,GAAG/d,EACJ,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,YAAa,UAAW,GAAIA,EAAM,OAAS,CAAA,CAAC,EAC5E,UAAWwS,EAAG,4BAA6BxS,EAAM,SAAS,CAAA,CAAA,EAE3D+N,GAAS+F,EAAAA,IAAC,OAAA,CAAK,UAAU,6CAA8C,SAAA/F,CAAA,CAAM,CAAA,EAChF,CAEJ,CAOO,SAASiQ,GAAO,CAAE,QAAAD,EAAS,GAAG/d,GAAsB,CACzD,OACE8T,EAAAA,IAAC,MAAA,CACC,KAAK,SACL,eAAciK,EACb,GAAG/d,EACJ,UAAWwS,EACT,+EACAuL,GAAW,+BACX/d,EAAM,SAAA,EAGR,SAAA8T,EAAAA,IAAC,OAAA,CACC,UAAWtB,EACT,6FACAuL,GAAW,eAAA,CACb,CAAA,CACF,CAAA,CAGN,CAQO,SAASE,GAAO,CAAE,MAAAhf,EAAQ,EAAG,IAAAmX,EAAM,EAAG,IAAAC,EAAM,IAAK,SAAU+F,EAAW,GAAGpc,CAAA,EAAsB,CACpG,OACE8T,EAAAA,IAAC,QAAA,CACC,KAAK,QACL,MAAA7U,EACA,IAAAmX,EACA,IAAAC,EACC,GAAGrW,EACJ,MAAO,CAAE,YAAa,UAAW,GAAIA,EAAM,OAAS,EAAC,EACrD,UAAWwS,EAAG,kCAAmCxS,EAAM,SAAS,CAAA,CAAA,CAGtE,CAuBO,SAASke,GAAO,CACrB,eAAAC,EAAiB,QACjB,eAAAC,EAAiB,QACjB,MAAArQ,EACA,MAAA9O,EACA,YAAAof,EACA,QAAArL,EAAU,CAAA,EACV,MAAAyI,EACA,SAAUW,EACV,GAAAqB,EACA,KAAAxJ,EAAO,QACP,OAAAyJ,EAAS,GACT,GAAG1d,CACL,EAAgB,CACd,MAAM2d,EAAcC,EAAAA,MAAA,EACdC,EAAUJ,GAAME,EACtB,OACEvE,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACZ,SAAA,CAAArL,SACE,QAAA,CAAM,QAAS8P,EAAS,UAAWnC,GACjC,SAAA3N,EACH,EAEFqL,EAAAA,KAAC,SAAA,CACC,GAAIyE,EACJ,MAAO5e,GAAS,GAChB,eAAcwc,EAAQ,GAAO,OAC5B,GAAGzb,EACJ,UAAWwS,EACTmJ,GACAE,GAAiB5H,CAAI,EACrByJ,GAAU9B,GACV,0EACAH,GAAS,qCACTzb,EAAM,SAAA,EAIR,MAAO,CACL,gBACE,4PACF,iBAAkB,YAClB,mBAAoB,sBACpB,eAAgB,cAChB,iBAAkB,SAClB,GAAIA,EAAM,OAAS,CAAA,CAAC,EAGrB,SAAA,CAAAqe,SACE,SAAA,CAAO,MAAM,GAAG,SAAQ,GACtB,SAAAA,EACH,EAEDrL,EAAQ,IAAI,CAACsL,EAAQhX,IAAU,CAK9B,MAAMiX,EAAMD,EACNrf,EAAQ,OAAOsf,EAAIJ,CAAc,GAAKI,EAAI,OAAS,EAAE,EACrDxQ,EAAQ,OAAOwQ,EAAIH,CAAc,GAAKG,EAAI,OAAStf,CAAK,EAC9D,OACE6U,EAAAA,IAAC,SAAA,CAAiC,MAAO7U,EAAO,SAAUqf,EAAO,SAC9D,SAAAvQ,CAAAA,EADU,GAAG9O,CAAK,IAAIqI,CAAK,EAE9B,CAEJ,CAAC,CAAA,CAAA,CAAA,EAEHwM,MAAC0H,IAAU,MAAAC,CAAA,CAAc,CAAA,EAC3B,CAEJ,CAaO,SAAS+C,GAAS,CACvB,MAAAzQ,EACA,MAAA9O,EACA,KAAAwf,EAAO,EACP,MAAAhD,EACA,SAAUW,EACV,GAAAqB,EACA,KAAAxJ,EAAO,QACP,OAAAyJ,EAAS,GACT,GAAG1d,CACL,EAAkB,CAChB,MAAM2d,EAAcC,EAAAA,MAAA,EACdC,EAAUJ,GAAME,EACtB,OACEvE,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACZ,SAAA,CAAArL,SACE,QAAA,CAAM,QAAS8P,EAAS,UAAWnC,GACjC,SAAA3N,EACH,EAEF+F,EAAAA,IAAC,WAAA,CACC,GAAI+J,EAGJ,MAAO5e,GAAS,GAChB,KAAAwf,EACA,eAAchD,EAAQ,GAAO,OAC5B,GAAGzb,EACJ,UAAWwS,EACTmJ,GACAE,GAAiB5H,CAAI,EACrByJ,GAAU9B,GACV,uDACAH,GAAS,qCACTzb,EAAM,SAAA,CACR,CAAA,EAEF8T,MAAC0H,IAAU,MAAAC,CAAA,CAAc,CAAA,EAC3B,CAEJ,CAiBO,SAASiD,GAAW,CACzB,MAAA3Q,EACA,KAAAxO,EACA,MAAAN,EACA,QAAA+T,EAAU,CAAA,EACV,MAAAyI,EACA,SAAAkD,EACA,SAAUvC,EACV,GAAGpc,CACL,EAAoB,CAClB,MAAM4e,EAAYrf,GAAQwO,GAAS,cACnC,OACEqL,EAAAA,KAAC,MAAA,CACC,KAAK,aACL,aAAYrL,EACZ,eAAc0N,EAAQ,GAAO,OAC5B,GAAGzb,EACJ,UAAWwS,EAAG,gBAAiBxS,EAAM,SAAS,EAE7C,SAAA,CAAA+N,GAAS+F,EAAAA,IAAC,OAAA,CAAK,UAAW4H,GAAsB,SAAA3N,EAAM,EACvD+F,EAAAA,IAAC,MAAA,CAAI,UAAU,sBACZ,SAAAd,EAAQ,IAAKsL,GACZlF,EAAAA,KAAC,QAAA,CAAyB,UAAU,0BAClC,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CACC,KAAK,QACL,KAAM8K,EACN,MAAON,EAAO,MACd,QAASrf,IAAUqf,EAAO,MAC1B,SAAUA,EAAO,SACjB,SAAAK,EACA,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,YAAa,SAAA,EAC7C,UAAU,gBAAA,CAAA,EAEZ7K,EAAAA,IAAC,OAAA,CAAK,UAAU,6CAA8C,WAAO,KAAA,CAAM,CAAA,CAAA,EAXjEwK,EAAO,KAYnB,CACD,EACH,EACAxK,MAAC0H,IAAU,MAAAC,CAAA,CAAc,CAAA,CAAA,CAAA,CAG/B,CAMO,SAASoD,GAAK,CAAE,SAAA/d,EAAU,SAAAge,EAAU,GAAG9e,GAAoB,CAChE,OACE8T,EAAAA,IAAC,OAAA,CACE,GAAG9T,EACJ,SAAW+e,GAAU,CACnBA,EAAM,eAAA,EACND,GAAA,MAAAA,EAAWC,EACb,EAEC,SAAAje,CAAA,CAAA,CAGP,CAMO,SAASke,GAAS,CAAE,SAAAle,EAAU,GAAGd,GAAwB,CAC9D,OAAO8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAQ,SAAAc,CAAA,CAAS,CACnC,CAMO,SAASme,GAAS,CAAE,SAAAne,EAAU,GAAGd,GAAwB,CAC9D,OAAO8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAQ,SAAAc,CAAA,CAAS,CACnC,CA2DO,SAASoe,GAAU,CACxB,MAAAvL,EACA,WAAYwL,EACZ,QAAAC,EAAU,CAAA,EACV,KAAAX,EAAO,CAAA,EACP,WAAAY,EAAa,CAAA,EACb,aAAAC,EAAe,mBACf,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,UAAAC,EAAY,CAAC,GAAI,IAAK,IAAK,EAAE,EAC7B,YAAAC,EACA,UAAAC,EACA,OAAA1M,EACA,SAAAsJ,EACA,GAAGvc,CACL,EAAmB,CACjB,KAAM,CAAC4f,EAAQC,CAAS,EAAIrL,EAAAA,SAAS,CAAC,EAChC,CAACsL,EAAUC,CAAW,EAAIvL,EAAAA,SAASiL,EAAU,CAAC,GAAK,EAAE,EAErDjJ,EAAQsJ,IAAa,GAAK,KAAK,IAAIrB,EAAK,OAAQ,CAAC,EAAIqB,EACrDE,EAAW,KAAK,IAAI,KAAK,KAAKvB,EAAK,OAASjI,CAAK,EAAG,CAAC,EACrDyJ,EAAc,KAAK,IAAIL,EAAQI,CAAQ,EACvCE,GAAaD,EAAc,GAAKzJ,EAChC2J,EAAcX,EAAWf,EAAK,MAAMyB,EAAWA,EAAY1J,CAAK,EAAIiI,EAEpE2B,EAAchB,EAAQ,QAAUC,EAAW,OAAS,EAAI,EAAI,GAC5DgB,EAAY,CAChB,QAAS,OACT,oBAAqB,UAAU,KAAK,IAAID,EAAa,CAAC,CAAC,oBACvD,QAAS,MAAA,EAGLE,EAAUhZ,GAAkBA,IAAU8Y,EAAc,EAGpDG,EAAWC,GACfA,EAAO,QAAU3N,GAAgB2N,EAAO,MAAM,EAAI,QAAU,QACxDC,EAAc,CAAE,GAAIxN,EAAS,CAAE,OAAAA,CAAA,EAAW,CAAA,EAAK,GAAIsJ,EAAW,CAAE,SAAAA,CAAA,EAAa,CAAA,CAAC,EAEpF,OACEnD,OAAC,WAAS,GAAGpZ,EAAO,UAAWwS,EAAG,0CAA2CxS,EAAM,SAAS,EACzF,SAAA,CAAA2T,GACCyF,EAAAA,KAAAsH,WAAA,CAEE,SAAA,CAAA5M,EAAAA,IAAC,KAAA,CAAG,UAAU,uGACX,SAAAH,EACH,EACAG,EAAAA,IAAC,KAAA,CAAG,UAAU,sCAAA,CAAuC,CAAA,EACvD,EAIFsF,EAAAA,KAAC,MAAA,CAAI,UAAU,oBACZ,SAAA,CAAAmG,GAAazL,EAAAA,IAAC,MAAA,CAAI,UAAU,qDAAqD,SAAA,IAAC,EACnFsF,EAAAA,KAAC,MAAA,CAAI,UAAU,oDAAoD,MAAOiH,EACvE,SAAA,CAAAjB,EAAQ,IAAI,CAACoB,EAAQlZ,IAOpBwM,EAAAA,IAAC,MAAA,CAEC,MAAO0M,EAAO,MACd,UAAWhO,EACT,oCACA+N,EAAQC,CAAM,IAAM,SAAW,cAC/BD,EAAQC,CAAM,IAAM,UAAY,iBAChCF,EAAOhZ,CAAK,GAAK,MAAA,EAGlB,SAAAkZ,EAAO,KAAA,EATHA,EAAO,GAAA,CAWf,EACAnB,EAAW,OAAS,GAGnBvL,EAAAA,IAAC,MAAA,CAAI,UAAU,4CAA4C,cAAY,MAAA,CAAO,CAAA,CAAA,CAElF,CAAA,EACF,EACAA,EAAAA,IAAC,KAAA,CAAG,UAAU,sCAAA,CAAuC,EAGpDqM,EAAY,OAAS,GACpBrM,EAAAA,IAAC,MAAA,CAAI,UAAU,kBACZ,SAAAqM,EAAY,IAAI,CAACQ,EAAKrZ,WACpB,MAAA,CAIC,SAAA,CAAA8R,EAAAA,KAAC,MAAA,CACC,UAAW5G,EACT,4DACAmN,GAAa,gBAAA,EAEf,cAAa,OAAOgB,EAAI,IAAMA,EAAI,MAAQT,EAAY5Y,CAAK,EAC1D,GAAIqY,EACD,CACE,KAAM,SACN,SAAU,EACV,QAAS,IAAMA,EAAUgB,EAAKT,EAAY5Y,CAAK,EAG/C,UAAYyX,GAA+B,CACrCA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,MAC3CA,EAAM,eAAA,EACNY,EAAUgB,EAAKT,EAAY5Y,CAAK,EAClC,CAAA,EAEF,CAAA,EAEH,SAAA,CAAAiY,SACE,MAAA,CAAI,UAAU,qDAAsD,SAAAW,EAAY5Y,EAAQ,EAAE,EAE7F8R,EAAAA,KAAC,MAAA,CAAI,UAAU,oDAAoD,MAAOiH,EACvE,SAAA,CAAAjB,EAAQ,IAAI,CAACoB,EAAQI,IAAc,CAClC,MAAMrC,EAAMoC,EAAIH,EAAO,GAAG,EACpBK,EAAO1N,GAAgBoL,EAAKiC,EAAO,OAAQC,CAAW,EAC5D,OACE3M,EAAAA,IAAC,MAAA,CAEC,UAAWtB,EACT,6BACA+N,EAAQC,CAAM,IAAM,SAAW,cAC/BD,EAAQC,CAAM,IAAM,UAAY,iBAChCF,EAAOM,CAAS,GAAK,MAAA,EAGtB,WAAO,SAAW,UAAYC,EAC7B/M,MAACyJ,GAAA,CAAM,MAAOsD,EAAM,MAAOlO,GAAYkO,CAAI,EAAG,QAAQ,MAAA,CAAO,QAE5D,OAAA,CAAK,UAAU,WAAY,SAAAA,CAAA,CAAK,CAAA,EAX9BL,EAAO,GAAA,CAelB,CAAC,EACAnB,EAAW,OAAS,GACnBvL,EAAAA,IAAC,MAAA,CAAI,UAAU,2CACZ,SAAAuL,EAAW,IAAKyB,GACfhN,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,QAAUiL,GAAU,CAGlBA,EAAM,gBAAA,EACNW,GAAA,MAAAA,EAAciB,EAAKG,EAAQZ,EAAY5Y,EACzC,EACA,UAAU,kKAET,SAAAwZ,EAAO,KAAA,EAVHA,EAAO,KAAA,CAYf,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAAA,CAAA,EAEDxZ,IAAU6Y,EAAY,OAAS,GAAKrM,EAAAA,IAAC,KAAA,CAAG,UAAU,sCAAA,CAAuC,CAAA,GAvElF,OAAO6M,EAAI,IAAMA,EAAI,MAAQT,EAAY5Y,CAAK,CAwExD,CACD,EACH,EAIDmX,EAAK,OAAS,GAAKe,GAClBpG,EAAAA,KAAC,MAAA,CAAI,UAAU,UACb,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,sCAAA,CAAuC,EACrDA,EAAAA,IAACiN,GAAA,CACC,UAAWtC,EAAK,OAChB,OAAQwB,EACR,MAAAzJ,EACA,SAAAwJ,EACA,UAAAP,EACA,eAAgBK,EAChB,SAAW7gB,GAAU4gB,EAAU,KAAK,IAAI,KAAK,IAAI,EAAG5gB,CAAK,EAAG+gB,CAAQ,CAAC,EACrE,WAAa/gB,GAAU,CACrB4gB,EAAU,CAAC,EACXE,EAAY9gB,CAAK,CACnB,CAAA,CAAA,CACF,EACF,EAIDwf,EAAK,SAAW,GACf3K,EAAAA,IAAC,MAAA,CAAI,UAAU,yDACb,SAAAA,EAAAA,IAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAwL,CAAA,CAAa,CAAA,CACrE,CAAA,EAEJ,CAEJ,CAmBA,SAASyB,GAAU,CACjB,UAAAC,EACA,OAAApB,EACA,MAAApJ,EACA,SAAAwJ,EACA,UAAAP,EACA,eAAAwB,EACA,SAAAC,EACA,WAAAC,CACF,EAAmB,CACjB,MAAMC,EAAe3B,EAAU,OAAQxL,GACrCA,IAAS,GAAK+M,IAAcvB,EAAU,CAAC,GAAK,IAAMuB,GAAa/M,CAAA,EAGjE,OACEmF,EAAAA,KAAC,MAAA,CACC,UAAU,0FACV,MAAO,CAAE,OAAQ,MAAA,EAEjB,SAAA,CAAAtF,MAAC,MAAA,CAAI,UAAU,qBACZ,SAAA,IAAI8L,EAAS,GAAKpJ,EAAQ,CAAC,MAAM,KAAK,IAAIoJ,EAASpJ,EAAOwK,CAAS,CAAC,GACvE,EAEA5H,EAAAA,KAAC,MAAA,CAAI,UAAU,8CACb,SAAA,CAAAtF,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,aAAW,gBACX,QAAS,IAAMoN,EAAStB,EAAS,CAAC,EAClC,SAAUA,GAAU,EACpB,UAAWpN,EACT,2CACAoN,EAAS,EAAI,kDAAoD,kBAAA,EAGnE,SAAA9L,EAAAA,IAACuN,GAAA,CAAY,UAAU,MAAA,CAAO,CAAA,CAAA,EAEhCjI,EAAAA,KAAC,MAAA,CAAI,UAAU,uDACb,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CAAK,UAAU,eAAgB,SAAA8L,EAAO,EACvC9L,EAAAA,IAAC,OAAA,CAAK,UAAU,gBAAgB,SAAA,IAAC,EACjCA,EAAAA,IAAC,OAAA,CAAK,UAAU,MAAO,SAAAkM,CAAA,CAAS,CAAA,EAClC,EACAlM,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,aAAW,YACX,QAAS,IAAMoN,EAAStB,EAAS,CAAC,EAClC,SAAUA,GAAUI,EACpB,UAAWxN,EACT,2CACAoN,EAASI,EAAW,kDAAoD,kBAAA,EAG1E,SAAAlM,EAAAA,IAACuN,GAAA,CAAY,UAAU,OAAA,CAAQ,CAAA,CAAA,CACjC,EACF,EAECD,EAAa,OAAS,GACrBtN,EAAAA,IAAC,MAAA,CAAI,UAAU,4EACZ,SAAAsN,EAAa,IAAKnN,GACjBH,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAMqN,EAAWlN,CAAI,EAC9B,UAAWzB,EACT,OACCyO,IAAmBhN,GAASgN,IAAmBD,GAAa/M,IAAS,KACpE,sCAAA,EAGH,SAAAA,IAAS,GAAK,MAAQA,CAAA,EATlBA,CAAA,CAWR,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CAuBO,SAASqN,GAAQ,CACtB,MAAA7G,EAAQ,EACR,KAAA8G,EAAO,EACP,SAAAzB,EAAW,GACX,UAAAL,EAAY,CAAC,GAAI,IAAK,IAAK,EAAE,EAC7B,aAAA+B,EACA,iBAAAC,EACA,GAAGzhB,CACL,EAAiB,CACf,MAAMwW,EAAQsJ,IAAa,GAAK,KAAK,IAAIrF,EAAO,CAAC,EAAIqF,EAC/CE,EAAW,KAAK,IAAI,KAAK,KAAKvF,EAAQjE,CAAK,EAAG,CAAC,EAC/CyJ,EAAc,KAAK,IAAI,KAAK,IAAIsB,EAAM,CAAC,EAAGvB,CAAQ,EAExD,OACElM,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EACP,SAAA8T,EAAAA,IAACiN,GAAA,CACC,UAAWtG,EACX,OAAQwF,EACR,MAAAzJ,EACA,SAAAwJ,EACA,UAAAP,EACA,eAAgBK,EAChB,SAAW7gB,GAAUuiB,GAAA,YAAAA,EAAe,KAAK,IAAI,KAAK,IAAI,EAAGviB,CAAK,EAAG+gB,CAAQ,GACzE,WAAa/gB,GAAU,CACrBuiB,GAAA,MAAAA,EAAe,GACfC,GAAA,MAAAA,EAAmBxiB,EACrB,CAAA,CAAA,EAEJ,CAEJ,CAEA,SAASoiB,GAAY,CAAE,UAAAK,GAAuD,CAC5E,MAAM7N,EAAQ,CACZ,KAAM,kBACN,MAAO,gBACP,KAAM,cAAA,EAER,OACEC,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACf,UAAU,gBACV,cAAY,OAEZ,SAAAA,EAAAA,IAAC,OAAA,CAAK,EAAGD,EAAM6N,CAAS,CAAA,CAAG,CAAA,CAAA,CAGjC,CAsCO,SAASC,GAAM,CACpB,MAAAhO,EACA,WAAYwL,EACZ,UAAAyC,EAAY,MACZ,KAAAnD,EAAO,CAAA,EACP,KAAAoD,EAAO,QACP,KAAAC,EAAO,QACP,OAAArL,EACA,aAAA6I,EAAe,sBACf,OAAAwB,EACA,WAAA9G,EAAa,QACb,OAAA+H,EAAS,IACT,GAAG/hB,CACL,EAAe,CACb,KAAM,CAACgiB,EAAcC,CAAc,EAAI9N,GAAA,EACjC+N,EAAelM,EAAAA,QACnB,IAAOS,GAAA,MAAAA,EAAQ,OAASA,EAAS,CAAC,CAAE,IAAKqL,EAAM,MAAOnO,GAASmO,EAAM,EACrE,CAACrL,EAAQqL,EAAMnO,CAAK,CAAA,EAEhBwO,EAAUP,IAAc,QAExBQ,EAAeF,EAAa,IAChC,CAACG,EAAM/a,IAAU+a,EAAK,OAASlN,GAAuB7N,EAAQ6N,GAAuB,MAAM,CAAA,EAEvFuC,EAAU+G,EAAK,IAAKkC,GAAQ2B,GAAW3B,EAAIkB,CAAI,CAAC,CAAC,EACjDxM,EAAS6M,EAAa,IAAKG,GAAS5D,EAAK,IAAKkC,GAAQ,OAAOA,EAAI0B,EAAK,GAAG,GAAK,CAAC,CAAC,CAAC,EAGjF9M,EAAc0M,EAAiB,EAAI,KAAK,IAAIA,EAAiBF,EAAQ,CAAC,EAAI,KAEhF,OACE3I,EAAAA,KAAC,UAAA,CAAQ,IAAK4I,EAAe,GAAGhiB,EAAO,UAAWwS,EAAG,gBAAiBxS,EAAM,SAAS,EACjF,SAAA,EAAA2T,GAASmN,GAAW,CAACqB,GAAWD,EAAa,OAAS,IACtD9I,EAAAA,KAAC,MAAA,CAAI,UAAU,0EACZ,SAAA,CAAAzF,GAASG,EAAAA,IAAC,OAAA,CAAK,UAAU,0BAA2B,SAAAH,EAAM,EAC1D,CAACwO,GAAWD,EAAa,OAAS,SAChC,MAAA,CAAI,UAAU,uBACZ,SAAAA,EAAa,IAAI,CAACG,EAAM/a,IACvB8R,EAAAA,KAAC,MAAA,CAAmB,UAAU,0BAC5B,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CACC,UAAU,kCACV,MAAO,CAAE,gBAAiBsO,EAAa9a,CAAK,CAAA,CAAE,CAAA,QAE/C,OAAA,CAAK,UAAU,kCAAmC,SAAA+a,EAAK,OAASA,EAAK,GAAA,CAAI,CAAA,CAAA,EALlEA,EAAK,GAMf,CACD,EACH,EAEDvB,CAAA,EACH,EAGDrC,EAAK,SAAW,QACd,MAAA,CAAI,UAAU,yCACb,SAAA3K,EAAAA,IAAC,OAAA,CAAK,UAAU,6CAA8C,WAAa,CAAA,CAC7E,EACEqO,EACF/I,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACb,SAAA,CAAAtF,EAAAA,IAAC,MAAA,CAAI,UAAU,6DACZ,SAAA2K,EAAK,IAAI,CAACkC,EAAKrZ,IACd8R,EAAAA,KAAC,MAAA,CAAqC,UAAU,4BAC9C,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CACC,UAAU,mCACV,MAAO,CAAE,gBAAiBoB,GAAsB5N,EAAQ4N,GAAsB,MAAM,CAAA,CAAE,CAAA,EAExFpB,MAAC,KAAE,UAAU,2DAA4D,YAAW6M,EAAIkB,CAAI,CAAC,EAAE,EAC/F/N,MAAC,KAAE,UAAU,0CAA2C,YAAW6M,EAAImB,CAAI,CAAC,CAAA,CAAE,CAAA,CAAA,EANtE,OAAOnB,EAAIkB,CAAI,GAAKva,CAAK,CAOnC,CACD,EACH,EACAwM,EAAAA,IAACgG,GAAA,CACC,UAAU,gBACV,UAAWnG,GAAS,cACpB,WAAAqG,EACA,QAAS,EACT,UAAW,GACX,YAAa,IACb,QAASyE,EAAK,IAAI,CAACkC,EAAKrZ,KAAW,CACjC,MAAO4N,GAAsB5N,EAAQ4N,GAAsB,MAAM,EACjE,MAAO,OAAOyL,EAAImB,CAAI,GAAK,CAAC,EAC5B,MAAOQ,GAAW3B,EAAIkB,CAAI,CAAC,CAAA,EAC3B,CAAA,CAAA,CACJ,EACF,EACED,IAAc,MAChB9N,EAAAA,IAAC2D,GAAA,CACC,UAAU,OACV,UAAW9D,GAAS,YACpB,OAAA0B,EACA,QAAAqC,EACA,OAAQ0K,EACR,YAAA7M,CAAA,CAAA,EAGFzB,EAAAA,IAACwF,GAAA,CACC,UAAU,OACV,UAAW3F,GAAS,aACpB,OAAA0B,EACA,QAAAqC,EACA,OAAQ0K,EACR,YAAA7M,CAAA,CAAA,CACF,EAEJ,CAEJ,CA6BO,SAASgN,GAAY,CAC1B,MAAA5O,EACA,WAAYwL,EACZ,QAAAC,EAAU,CAAA,EACV,KAAAX,EAAO,CAAA,EACP,aAAAa,EAAe,yBACf,YAAAkD,EACA,GAAGxiB,CACL,EAAqB,CACnB,OAMEoZ,EAAAA,KAAC,WAAS,GAAGpZ,EAAO,UAAWwS,EAAG,oBAAqBxS,EAAM,SAAS,EACnE,SAAA,CAAA2T,GACCyF,EAAAA,KAAC,MAAA,CAAI,UAAU,2CACb,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,wDAAyD,SAAAH,EAAM,EAC7EyF,EAAAA,KAAC,OAAA,CAAK,UAAU,2CAA4C,SAAA,CAAAqF,EAAK,OAAO,UAAA,CAAA,CAAQ,CAAA,EAClF,QAED,MAAA,CAAI,UAAU,0DACZ,SAAAW,EAAQ,IAAKqD,GAAQ,CACpB,MAAMC,EAAWjE,EAAK,OAAQxc,GAAMA,EAAE,WAAawgB,EAAI,EAAE,EACzD,OACErJ,EAAAA,KAAC,MAAA,CAAiB,UAAU,uGAC1B,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CAAK,UAAU,yBAAyB,MAAO,CAAE,gBAAiB2O,EAAI,OAAS,SAAA,CAAU,CAAG,EAC7F3O,EAAAA,IAAC,OAAA,CAAK,UAAU,yDAA0D,WAAI,KAAA,CAAM,CAAA,EACtF,EACAA,EAAAA,IAAC,OAAA,CAAK,UAAU,qEACb,WAAS,MAAA,CACZ,CAAA,EACF,QACC,MAAA,CAAI,UAAU,6CACZ,SAAA4O,EAAS,SAAW,EACnB5O,EAAAA,IAAC,MAAA,CAAI,UAAU,4DAA6D,SAAAwL,CAAA,CAAa,EAEzFoD,EAAS,IAAKC,GACZvJ,EAAAA,KAAC,MAAA,CAEC,QAAS,IAAMoJ,GAAA,YAAAA,EAAcG,GAC7B,UAAWnQ,EACT,iJACAmQ,EAAK,OAASH,EAAc,iBAAmB,EAAA,EAGjD,SAAA,CAAApJ,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CAAK,UAAU,yDAA0D,SAAA6O,EAAK,MAAM,EACpFA,EAAK,OACJ7O,EAAAA,IAAC,QAAK,UAAU,+FACb,WAAK,KAAA,CACR,CAAA,EAEJ,EACC6O,EAAK,UAAY7O,EAAAA,IAAC,KAAE,UAAU,gDAAiD,WAAK,SAAS,EAC7F6O,EAAK,QAAU,QACd7O,EAAAA,IAAC,IAAA,CAAE,UAAU,6DAA8D,SAAA,OAAO6O,EAAK,KAAK,CAAA,CAAE,CAAA,CAAA,EAjB3FA,EAAK,EAAA,CAoBb,CAAA,CAEL,CAAA,CAAA,EAtCQF,EAAI,EAuCd,CAEJ,CAAC,CAAA,CACH,CAAA,CAAA,CACF,CAEJ,CAuBA,SAASG,GAAS,CAChB,KAAAxhB,EACA,MAAAyhB,EAAQ,EACR,YAAAC,CACF,EAIG,CACD,KAAM,CAACC,EAAUC,CAAW,EAAIxO,EAAAA,SAASpT,EAAK,iBAAmB,EAAI,EAC/D6hB,EAAc,GAAQ7hB,EAAK,UAAYA,EAAK,SAAS,OAAS,GAEpE,OACEgY,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,UAAW5G,EAIT,6IACAqQ,IAAU,EAAI,UAAY,YAC1BzhB,EAAK,OAAS0hB,EAAc,iBAAmB,EAAA,EAEjD,MAAO,CAAE,OAAQ,+BAAgC,YAAa,sBAAsBD,CAAK,GAAA,EACzF,QAAS,IAAM,CACTI,GACFD,EAAY,CAACD,CAAQ,EAEvBD,GAAA,MAAAA,EAAc1hB,EAChB,EAEA,SAAA,CAAAgY,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,QAAK,UAAU,2DACb,WAAeiP,EAAW,IAAM,IAAO,EAAA,CAC1C,EACAjP,EAAAA,IAAC,OAAA,CAAK,UAAWtB,EAAG,kCAAmCqQ,IAAU,GAAK,eAAe,EAAI,SAAAzhB,EAAK,KAAA,CAAM,EACnGA,EAAK,UAAYgY,OAAC,OAAA,CAAK,UAAU,2CAA2C,SAAA,CAAA,IAAEhY,EAAK,SAAS,GAAA,CAAA,CAAC,CAAA,EAChG,EACAgY,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAhY,EAAK,OACJ0S,EAAAA,IAAC,OAAA,CAAK,UAAU,iFACb,WAAK,MACR,EAED1S,EAAK,QAAU,QACd0S,EAAAA,IAAC,OAAA,CAAK,UAAU,4CAA6C,SAAA,OAAO1S,EAAK,KAAK,CAAA,CAAE,CAAA,CAAA,CAEpF,CAAA,CAAA,CAAA,EAED6hB,GAAeF,GACdjP,MAAC,MAAA,CAAI,UAAU,gBACZ,SAAA1S,EAAK,SAAU,IAAK8hB,SAClBN,GAAA,CAAwB,KAAMM,EAAO,MAAOL,EAAQ,EAAG,YAAAC,CAAA,EAAzCI,EAAM,EAA6D,CACnF,CAAA,CACH,CAAA,EAEJ,CAEJ,CAEO,SAASC,GAAS,CACvB,MAAAxP,EACA,WAAYwL,EACZ,MAAAiE,EACA,KAAA3E,EACA,aAAAa,EAAe,eACf,YAAAwD,EACA,GAAG9iB,CACL,EAAkB,CAChB,MAAMqjB,EAAYD,GAAS3E,GAAQ,CAAA,EAEnC,OACErF,OAAC,WAAS,GAAGpZ,EAAO,UAAWwS,EAAG,0BAA2BxS,EAAM,SAAS,EACzE,SAAA,CAAA2T,GACCG,EAAAA,IAAC,KAAA,CAAG,UAAU,qJACX,SAAAH,EACH,EAED0P,EAAU,SAAW,EACpBvP,EAAAA,IAAC,MAAA,CAAI,UAAU,8DAA+D,SAAAwL,CAAA,CAAa,EAE3FxL,EAAAA,IAAC,MAAA,CAAI,UAAU,8CACZ,SAAAuP,EAAU,IAAKhB,GACdvO,EAAAA,IAAC8O,GAAA,CAAuB,KAAMP,EAAM,MAAO,EAAG,YAAAS,CAAA,EAA/BT,EAAK,EAAoD,CACzE,CAAA,CACH,CAAA,EAEJ,CAEJ,CAEA,SAASC,GAAWrjB,EAAwB,CAC1C,OAA2BA,GAAU,KAAa,GAC9C,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAAkB,OAAOA,CAAK,EACtG,KAAK,UAAUA,CAAK,CAC7B,CAeO,SAASqkB,GAAQ,CAAE,SAAAxiB,EAAU,GAAGd,GAAuB,CAC5D,OACE8T,EAAAA,IAAC,QAAA,CACE,GAAG9T,EACJ,UAAWwS,EAAG,kEAAmExS,EAAM,SAAS,EAE/F,SAAAc,CAAA,CAAA,CAGP,CAWO,SAASyiB,GAAO,CAAE,SAAAziB,EAAU,GAAGd,GAAsB,CAC1D,OACE8T,EAAAA,IAAC,MAAA,CACE,GAAG9T,EACJ,UAAWwS,EACT,0IACAxS,EAAM,SAAA,EAGP,SAAAc,CAAA,CAAA,CAGP,CAMO,SAAS0iB,GAAQ,CAAE,SAAA1iB,EAAU,GAAGd,GAAuB,CAC5D,OACE8T,EAAAA,IAAC,MAAA,CAAK,GAAG9T,EAAO,KAAK,UAAU,UAAWwS,EAAG,0BAA2BxS,EAAM,SAAS,EACpF,SAAAc,CAAA,CACH,CAEJ,CAYA,MAAM2iB,GAAqB,CACzB,UACA,yBACA,2BACA,wBACA,yBACA,iCACF,EAAE,KAAK,GAAG,EAOJC,GAA6C,CAAA,EASnD,SAASC,GACPC,EACAC,EACA7B,EACA,CAGA,MAAM8B,EAAWzP,EAAAA,OAAOwP,CAAO,EAC/BpP,EAAAA,UAAU,IAAM,CACdqP,EAAS,QAAUD,CACrB,CAAC,EAEDpP,EAAAA,UAAU,IAAM,CACd,GAAI,CAACmP,EAAM,OAEX,MAAMG,EAAY/B,EAAa,QACzBgC,EAAoB,SAAS,yBAAyB,YAAc,SAAS,cAAgB,KAC7FpP,EAAQ,CAAE,MAAO,IAAA,OAAM,OAAAgF,EAAAkK,EAAS,UAAT,YAAAlK,EAAA,KAAAkK,GAAmB,EAChDJ,GAAa,KAAK9O,CAAK,EAEvB,MAAMqP,EAAiBC,GAAqB,CAC1C,GAAIA,EAAE,MAAQ,SAAU,CAElBR,GAAaA,GAAa,OAAS,CAAC,IAAM9O,GAC5CA,EAAM,MAAA,EAER,MACF,CACA,GAAIsP,EAAE,MAAQ,OAAS,CAACH,EAAW,OAEnC,MAAMI,EAAaJ,EAAU,iBAA8BN,EAAkB,EAC7E,GAAIU,EAAW,SAAW,EAAG,OAC7B,MAAMC,EAAQD,EAAW,CAAC,EACpBE,EAAOF,EAAWA,EAAW,OAAS,CAAC,EACvCG,EAAS,SAAS,cAEpBJ,EAAE,WAAaI,IAAWF,GAASE,IAAWP,IAChDG,EAAE,eAAA,EACFG,EAAK,MAAA,GACI,CAACH,EAAE,WAAaI,IAAWD,GAAQC,IAAWP,KACvDG,EAAE,eAAA,EACFE,EAAM,MAAA,EAEV,EAIA,OAAAL,GAAA,MAAAA,EAAW,QACX,SAAS,iBAAiB,UAAWE,CAAa,EAC3C,IAAM,CACX,SAAS,oBAAoB,UAAWA,CAAa,EACrD,MAAM3c,EAAQoc,GAAa,QAAQ9O,CAAK,EACpCtN,GAAS,GAAGoc,GAAa,OAAOpc,EAAO,CAAC,EAC5C0c,GAAA,MAAAA,EAAmB,OACrB,CACF,EAAG,CAACJ,EAAM5B,CAAY,CAAC,CACzB,CAcA,MAAMuC,GAAwE,CAC5E,KAAM,iCACN,MAAO,kCACP,IAAK,gCACL,OAAQ,kCACV,EAGMC,GAA2E,CAC/E,KAAM,oBACN,MAAO,mBACP,IAAK,oBACL,OAAQ,kBACV,EAQMC,GAAkB,IAGxB,SAASC,GAAqBC,EAAqD,CACjF,MAAMC,EAAWD,EAAU,eAAiB,eAC5C,MAAO,CACL,QAAS,wBAAwBC,CAAQ,YACzC,KAAM,sBAAsBA,CAAQ,WAAA,CAExC,CAOA,MAAMC,GACJ,OAAO,uBAA0B,WAC7B,sBACCC,GAA6B,OAAO,WAAW,IAAMA,EAAG,CAAC,EAAG,EAAE,EAC/DC,GACJ,OAAO,sBAAyB,WAC5B,qBACCtH,GAAe,OAAO,aAAaA,CAAE,EAW5C,SAASuH,GAAmBpB,EAAqF,CAC/G,KAAM,CAACqB,EAASC,CAAU,EAAI1Q,EAAAA,SAAS,EAAK,EACtC,CAACmQ,EAASQ,CAAU,EAAI3Q,EAAAA,SAAS,EAAK,EACtC,CAAC4Q,EAASC,CAAU,EAAI7Q,EAAAA,SAAS,EAAK,EACtC8Q,EAAgBjR,EAAAA,OAAO,EAAI,EAEjCI,OAAAA,EAAAA,UAAU,IAAM,SACd,GAAI6Q,EAAc,UAChBA,EAAc,QAAU,GACpB,CAAC1B,GAAM,OAQb,MAAM2B,IAAU1L,GAAAD,EAAA,OAAO,aAAP,YAAAA,EAAA,YAAoB,sCAApB,YAAAC,EAAyD,UAAW,GAEpF,GAAI+J,EAAM,CAGR,GAFAsB,EAAW,EAAI,EACfC,EAAW,EAAK,EACZI,EAAS,CACXF,EAAW,EAAI,EACf,MACF,CAGAA,EAAW,EAAK,EAChB,MAAMG,EAAMX,GAAU,IAAM,CAC1BQ,EAAW,EAAI,CACjB,CAAC,EACD,MAAO,IAAM,CACXN,GAAYS,CAAG,CACjB,CACF,CAKA,GAFAH,EAAW,EAAK,EAChBF,EAAW,EAAI,EACXI,EAAS,CACXL,EAAW,EAAK,EAChBC,EAAW,EAAK,EAChB,MACF,CACA,MAAMM,EAAQ,OAAO,WAAW,IAAM,CACpCP,EAAW,EAAK,EAChBC,EAAW,EAAK,CAClB,EAAGV,EAAe,EAClB,MAAO,IAAM,OAAO,aAAagB,CAAK,CAExC,EAAG,CAAC7B,CAAI,CAAC,EAEF,CAAE,QAAAqB,EAAS,QAAAN,EAAS,QAAAS,CAAA,CAC7B,CAEO,SAASM,GAAO,CAAE,KAAA9B,EAAM,QAAAC,EAAS,MAAAlQ,EAAO,KAAAgS,EAAO,QAAS,SAAAC,EAAW,GAAM,SAAA9kB,EAAU,GAAGd,CAAA,EAAsB,CACjH,MAAMgiB,EAAe3N,EAAAA,OAAuB,IAAI,EAI1C,CAAE,QAAA4Q,EAAS,QAAAN,EAAS,QAAAS,CAAA,EAAYJ,GAAmBpB,CAAI,EAG7D,GAFAD,GAAmBC,GAAQqB,EAASpB,EAAS7B,CAAY,EAErD,CAACiD,EAAS,OAAO,KAErB,MAAMY,EAASnB,GAAqBC,CAAO,EACrCmB,EAAS,CAACnB,GAAWS,EACrBW,EAAYD,EAAS,8BAAgCtB,GAAuBmB,CAAI,EAChFK,EAAOF,EAAS,cAAgB,YAEtC,OACE1M,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACZ,SAAA,CAAAwM,GACC9R,EAAAA,IAAC,MAAA,CAGC,wBAAsB,GACtB,UAAWtB,EAAG,uEAAwEqT,EAAO,KAAMG,CAAI,EACvG,QAASnC,CAAA,CAAA,EAGbzK,EAAAA,KAAC,MAAA,CACC,IAAK4I,EACL,SAAU,GACV,KAAK,SACL,aAAW,OACX,aAAYrO,EACX,GAAG3T,EACJ,UAAWwS,EAIT,gIACAqT,EAAO,QACPtB,GAAoBoB,CAAI,EACxBI,EACApB,GAAW,sBACX3kB,EAAM,SAAA,EAGP,SAAA,CAAA2T,GACCG,EAAAA,IAAC,KAAA,CAAG,UAAU,yIACX,SAAAH,EACH,EAEFG,EAAAA,IAAC,MAAA,CAAI,UAAU,qDAAsD,SAAAhT,CAAA,CAAS,CAAA,CAAA,CAAA,CAChF,EACF,CAEJ,CAUO,SAASmlB,GAAM,CAAE,KAAArC,EAAM,QAAAC,EAAS,SAAA+B,EAAW,GAAM,SAAA9kB,EAAU,GAAGd,GAAqB,CACxF,MAAMgiB,EAAe3N,EAAAA,OAAuB,IAAI,EAE1C,CAAE,QAAA4Q,EAAS,QAAAN,EAAS,QAAAS,CAAA,EAAYJ,GAAmBpB,CAAI,EAG7D,GAFAD,GAAmBC,GAAQqB,EAASpB,EAAS7B,CAAY,EAErD,CAACiD,EAAS,OAAO,KAErB,MAAMY,EAASnB,GAAqBC,CAAO,EAErCqB,EADS,CAACrB,GAAWS,EACL,cAAgB,YAEtC,OACEhM,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACZ,SAAA,CAAAwM,GACC9R,EAAAA,IAAC,MAAA,CAGC,wBAAsB,GACtB,UAAWtB,EAAG,uEAAwEqT,EAAO,KAAMG,CAAI,EACvG,QAASnC,CAAA,CAAA,EAGb/P,EAAAA,IAAC,MAAA,CACC,IAAKkO,EACL,SAAU,GACV,KAAK,SACL,aAAW,OACV,GAAGhiB,EACJ,UAAWwS,EACT,sFACAqT,EAAO,KACPG,EACArB,GAAW,sBACX3kB,EAAM,SAAA,EAGP,SAAAc,CAAA,CAAA,CACH,EACF,CAEJ,CAuBO,SAASolB,GAAQ,CAAE,KAAAtC,EAAM,QAAAC,EAAS,MAAAsC,EAAQ,MAAO,SAAArlB,EAAU,GAAGd,GAAuB,CAC1F,MAAMgiB,EAAe3N,EAAAA,OAAuB,IAAI,EAkBhD,OAjBAsP,GAAmBC,EAAMC,EAAS7B,CAAY,EAE9CvN,EAAAA,UAAU,IAAM,CACd,GAAI,CAACmP,EAAM,OACX,MAAMwC,EAAiBrH,GAAsB,OAC3C,MAAMgF,EAAY/B,EAAa,QAC/B,GAAI,CAAC+B,EAAW,OAChB,MAAMsC,EAAStH,EAAM,OAGjBsH,IAAWtC,EAAU,SAASsC,CAAM,IAAKzM,EAAAmK,EAAU,gBAAV,MAAAnK,EAAyB,SAASyM,KAC/ExC,GAAA,MAAAA,GACF,EACA,gBAAS,iBAAiB,YAAauC,EAAe,EAAI,EACnD,IAAM,SAAS,oBAAoB,YAAaA,EAAe,EAAI,CAC5E,EAAG,CAACxC,EAAMC,CAAO,CAAC,EAEbD,EAGH9P,EAAAA,IAAC,MAAA,CACC,IAAKkO,EACL,KAAK,SACJ,GAAGhiB,EAIJ,MAAO,CAAE,GAAImmB,IAAU,MAAQ,CAAE,eAAgB,GAAM,CAAE,iBAAkB,CAAA,EAAM,GAAGnmB,EAAM,KAAA,EAC1F,UAAWwS,EACT,0IACAxS,EAAM,SAAA,EAGP,SAAAc,CAAA,CAAA,EAhBa,IAmBpB,CAUO,SAASwlB,GAAS,CAAE,QAAAC,EAAS,SAAA3B,EAAW,IAAM,QAAAf,EAAS,SAAA7G,EAAW,eAAgB,GAAGhd,GAAwB,CAOlH,OANAyU,EAAAA,UAAU,IAAM,CACd,GAAI,CAAC8R,GAAW,CAAC1C,EAAS,OAC1B,MAAM4B,EAAQ,WAAW5B,EAASe,CAAQ,EAC1C,MAAO,IAAM,aAAaa,CAAK,CACjC,EAAG,CAACc,EAAS3B,EAAUf,CAAO,CAAC,EAE1B0C,EAGHnN,EAAAA,KAAC,MAAA,CACE,GAAGpZ,EACJ,KAAK,SACL,YAAU,SACV,UAAWwS,EAGT,wMACAxS,EAAM,SAAA,EAGP,SAAA,CAAAgd,GAAYlJ,EAAAA,IAACL,GAAA,CAAK,KAAMuJ,EAAU,UAAU,uCAAuC,EACpFlJ,EAAAA,IAAC,OAAA,CAAK,UAAU,iBAAkB,SAAAyS,CAAA,CAAQ,CAAA,CAAA,CAAA,EAfzB,IAkBvB,CASO,SAASC,GAAO,CAAE,MAAA7S,EAAO,QAAArP,EAAS,KAAAsf,EAAM,QAAAC,EAAS,GAAG7jB,GAAsB,CAI/E,KAAM,CAAE,QAAAilB,EAAS,QAAAN,EAAS,QAAAS,CAAA,EAAYJ,GAAmBpB,CAAI,EAE7D,GAAI,CAACqB,EAAS,OAAO,KAErB,MAAMY,EAASnB,GAAqBC,CAAO,EACrCqB,EAAO,CAACrB,GAAWS,EAAU,cAAgB,YAEnD,OAMEhM,OAAC,OAAI,UAAW5G,EAAG,kEAAmEqT,EAAO,KAAMG,CAAI,EACrG,SAAA,CAAAlS,MAAC,OAAI,wBAAsB,GAAG,UAAU,mBAAmB,QAAS+P,EAAS,EAC7EzK,EAAAA,KAAC,MAAA,CACE,GAAGpZ,EACJ,KAAK,SACL,aAAW,OACX,aAAY2T,EACZ,UAAWnB,EACT,qIACAxS,EAAM,SAAA,EAGP,SAAA,CAAA2T,GACCG,EAAAA,IAAC,KAAA,CAAG,UAAU,2HACX,SAAAH,EACH,EAEFG,EAAAA,IAAC,MAAA,CAAI,UAAU,uDAAwD,SAAAxP,EAAQ,EAC/EwP,EAAAA,IAAC,OAAI,UAAU,2EACb,eAAC+I,GAAA,CAAO,QAASgH,EAAS,SAAA,OAAA,CAAK,CAAA,CACjC,CAAA,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,CC/2DO,SAAS4C,GAAU,CACxB,MAAAxnB,EAAQ,kCACR,KAAAgV,EAAO,IACP,QAAAyS,EAAU,UACV,QAAAC,EAAU,UACV,UAAApjB,EACA,GAAGvD,CACL,EAAmB,CAGjB,MAAM4mB,EAAO,MAAM,KAAK3nB,CAAK,EAAE,OAAO,CAAC4nB,EAAKC,EAAMtkB,IAAMqkB,EAAMC,EAAK,WAAW,CAAC,GAAKtkB,EAAI,GAAI,CAAC,EAEvFukB,EAAuB,MAAM,KAAK,CAAE,OAAQ,EAAA,EAAY,CAACpQ,EAAGgK,IAChE,MAAM,KAAK,CAAE,OAAQ,EAAA,EAAY,CAAChK,EAAG8L,IAAQ,CAE3C,MAAMuE,EAAkBrG,EAAM,GAAK8B,EAAM,EACnCwE,EAAmBtG,EAAM,GAAK8B,GAAO,GACrCyE,EAAqBvG,GAAO,IAAgB8B,EAAM,EAExD,GAAIuE,GAAmBC,GAAoBC,EAAoB,CAC7D,MAAMjlB,EAAIilB,EAAqBvG,EAAO,GAAgBA,EAChDwG,EAAIF,EAAmBxE,EAAO,GAAgBA,EAGpD,OADIxgB,IAAM,GAAKA,IAAM,GAAKklB,IAAM,GAAKA,IAAM,GACvCllB,GAAK,GAAKA,GAAK,GAAKklB,GAAK,GAAKA,GAAK,CAEzC,CAGA,GAAIxG,IAAQ,GAAK8B,IAAQ,EACvB,OAAQ9B,EAAM8B,GAAO,IAAM,EAI7B,MAAM2E,EAAWzG,EAAM,GAAW8B,EAElC,QADiBxjB,EAAM,WAAWmoB,EAAWnoB,EAAM,MAAM,GAAK,IAC1C,GAAKmoB,EAAW,GAAKR,GAAQ,IAAO,CAC1D,CAAC,CAAA,EAGGS,EAAWpT,EAAO,GAExB,OACEmF,EAAAA,KAAC,MAAA,CACC,MAAOnF,EACP,OAAQA,EACR,QAAS,OAAOA,CAAI,IAAIA,CAAI,GAC5B,KAAK,OACL,MAAM,6BACN,UAAA1Q,EACA,aAAY,eAAetE,CAAK,GAChC,KAAK,MACJ,GAAGe,EAEJ,SAAA,CAAA8T,MAAC,QAAK,MAAOG,EAAM,OAAQA,EAAM,KAAM0S,EAAS,EAC/CI,EAAQ,QAAQ,CAACpG,EAAK1e,IACrB0e,EAAI,IAAI,CAAC2D,EAAQ6C,IACf7C,EACExQ,EAAAA,IAAC,OAAA,CAEC,EAAGqT,EAAIE,EACP,EAAGplB,EAAIolB,EACP,MAAOA,EAAW,GAClB,OAAQA,EAAW,GACnB,KAAMX,CAAA,EALD,GAAGzkB,CAAC,IAAIklB,CAAC,EAAA,EAOd,IAAA,CACN,CACF,CAAA,CAAA,CAGN,CAYO,SAASG,GAAW,CACzB,MAAAroB,EAAQ,aACR,MAAAqV,EAAQ,IACR,OAAAyN,EAAS,GACT,SAAAwF,EAAW,GACX,UAAAhkB,EACA,GAAGvD,CACL,EAAoB,CAElB,MAAMwnB,EAAuB,CAAC,EAAG,EAAG,EAAG,CAAC,EACxC,QAAShlB,EAAI,EAAGA,EAAIvD,EAAM,OAAQuD,IAAK,CACrC,MAAMilB,EAAOxoB,EAAM,WAAWuD,CAAC,EAC/BglB,EAAW,KAAMC,EAAO,EAAK,EAAKA,EAAO,EAAK,EAAK,EAAKA,EAAO,EAAK,EAAK,EAAKA,EAAO,EAAK,EAAK,CAAC,CAClG,CACAD,EAAW,KAAK,EAAG,EAAG,EAAG,CAAC,EAE1B,MAAME,EAAaF,EAAW,OAAO,CAACG,EAAGC,IAAMD,EAAIC,EAAG,CAAC,EACjDC,EAAYvT,EAAQoT,EACpBI,EAAYP,EAAWxF,EAAS,GAAKA,EAE3C,IAAIgG,EAAW,EAEf,OACE3O,EAAAA,KAAC,MAAA,CACC,MAAA9E,EACA,OAAAyN,EACA,QAAS,OAAOzN,CAAK,IAAIyN,CAAM,GAC/B,KAAK,OACL,MAAM,6BACN,UAAAxe,EACA,aAAY,eAAetE,CAAK,GAChC,KAAK,MACJ,GAAGe,EAEH,SAAA,CAAAwnB,EAAW,IAAI,CAACrP,EAAU7Q,IAAU,CACnC,MAAM0gB,EAAU1gB,EAAQ,IAAM,EACxB0P,EAAI+Q,EAEV,OADAA,GAAY5P,EAAW0P,EAClBG,EAEHlU,EAAAA,IAAC,OAAA,CAEC,EAAAkD,EACA,EAAG,EACH,MAAOmB,EAAW0P,EAAY,GAC9B,OAAQC,EACR,KAAK,SAAA,EALAxgB,CAAA,EAHY,IAWvB,CAAC,EACAigB,GACCzT,EAAAA,IAAC,OAAA,CACC,EAAGQ,EAAQ,EACX,EAAGyN,EAAS,EACZ,WAAW,SACX,SAAS,KACT,WAAW,YACX,WAAW,OACX,KAAK,UACL,cAAc,IAEb,SAAA9iB,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,CAUO,SAASgpB,GAAc,CAAE,MAAAhpB,EAAQ,YAAa,KAAAgV,EAAO,GAAI,UAAA1Q,EAAW,GAAGvD,GAA6B,CAEzG,MAAMqnB,EAAWpT,EAAO,GAClB2S,EAAO,MAAM,KAAK3nB,CAAK,EAAE,OAAO,CAAC4nB,EAAKC,EAAMtkB,IAAMqkB,EAAMC,EAAK,WAAW,CAAC,GAAKtkB,EAAI,GAAI,CAAC,EAE7F,OACE4W,EAAAA,KAAC,MAAA,CACC,MAAOnF,EACP,OAAQA,EACR,QAAS,OAAOA,CAAI,IAAIA,CAAI,GAC5B,KAAK,OACL,MAAM,6BACN,UAAA1Q,EACA,aAAY,sBAAsBtE,CAAK,GACvC,KAAK,MACJ,GAAGe,EAEJ,SAAA,CAAA8T,MAAC,QAAK,MAAOG,EAAM,OAAQA,EAAM,KAAK,UAAU,EAEhDH,EAAAA,IAAC,OAAA,CAAK,EAAG,EAAG,EAAG,EAAG,MAAOuT,EAAU,OAAQpT,EAAM,KAAK,SAAA,CAAU,EAChEH,EAAAA,IAAC,OAAA,CAAK,EAAG,EAAG,EAAGG,EAAOoT,EAAU,MAAOpT,EAAM,OAAQoT,EAAU,KAAK,SAAA,CAAU,EAG7E,MAAM,KAAK,CAAE,OAAQ,EAAA,CAAU,EAAE,IAAI,CAAC1Q,EAAGnU,IACpCA,EAAI,IAAM,EAEVsR,EAAAA,IAAC,OAAA,CAAsB,EAAGtR,EAAI6kB,EAAU,EAAG,EAAG,MAAOA,EAAU,OAAQA,EAAU,KAAK,SAAA,EAA3E,OAAO7kB,CAAC,EAA6E,EAG7F,IACR,EACA,MAAM,KAAK,CAAE,OAAQ,EAAA,CAAU,EAAE,IAAI,CAACmU,EAAGnU,IACpCA,EAAI,IAAM,QAET,OAAA,CAAwB,EAAGyR,EAAOoT,EAAU,EAAG7kB,EAAI6kB,EAAU,MAAOA,EAAU,OAAQA,EAAU,KAAK,SAAA,EAA3F,SAAS7kB,CAAC,EAA2F,EAG7G,IACR,EAGA,MAAM,KAAK,CAAE,OAAQ,EAAW,CAAG,EAAE,IAAI,CAACmU,EAAG1U,IAC5C,MAAM,KAAK,CAAE,OAAQ,EAAW,CAAG,EAAE,IAAI,CAAC0U,EAAGwQ,MAC1BloB,EAAM,YAAYgD,EAAI,GAAWklB,GAAKloB,EAAM,MAAM,GAAK,IAC5C,GAAKgD,EAAI,GAAKklB,EAAI,EAAIP,GAAQ,IAAO,EAG/D9S,EAAAA,IAAC,OAAA,CAEC,GAAIqT,EAAI,GAAKE,EACb,GAAIplB,EAAI,GAAKolB,EACb,MAAOA,EAAW,GAClB,OAAQA,EAAW,GACnB,KAAK,SAAA,EALA,QAAQplB,CAAC,IAAIklB,CAAC,EAAA,EAHH,IAWrB,CAAA,CACH,CAAA,CAAA,CAGN,CChMA,SAASe,EACP3oB,EACA3B,EACAuqB,EACAnV,EAA0E,CAAA,EACjD,CACzB,MAAO,CAAE,KAAAzT,EAAM,KAAA3B,EAAM,GAAIuqB,EAAc,CAAE,YAAAA,CAAA,EAAgB,GAAK,GAAGnV,CAAA,CACnE,CAEA,SAAS+L,GAAMxf,EAAc6oB,EAA8CD,EAAgD,CACzH,MAAO,CAAE,KAAA5oB,EAAM,QAAA6oB,EAAS,GAAID,EAAc,CAAE,YAAAA,CAAA,EAAgB,EAAC,CAC/D,CAEA,MAAME,GAAiB,CAACH,EAAK,YAAa,QAAQ,EAAGA,EAAK,QAAS,QAAQ,CAAC,EACtEI,GAAY,CAChBJ,EAAK,QAAS,SAAU,wBAAyB,CAAE,SAAU,GAAM,EACnEA,EAAK,UAAW,OAAQ,0CAA2C,CAAE,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,EAC7GA,EAAK,SAAU,OAAQ,8DAA+D,CACpF,OAAQ,CAAC,OAAQ,WAAY,SAAU,UAAW,OAAQ,SAAU,OAAO,CAAA,CAC5E,EACDA,EAAK,SAAU,SAAU,uCAAuC,EAChEA,EAAK,WAAY,SAAU,iDAAiD,CAC9E,EACMK,GAAmB,CACvBL,EAAK,QAAS,QAAQ,EACtBA,EAAK,aAAc,SAAU,4FAA4F,EAEzHA,EAAK,QAAS,SAAU,0BAA2B,CAAE,SAAU,GAAM,EACrEA,EAAK,cAAe,QAAQ,EAC5BA,EAAK,QAAS,QAAQ,EACtBA,EAAK,OAAQ,OAAQ,4BAA6B,CAAE,OAAQ,CAAC,QAAS,OAAO,EAAG,EAChFA,EAAK,SAAU,SAAS,EACxBA,EAAK,WAAY,SAAS,EAC1BA,EAAK,WAAY,SAAS,CAC5B,EACMM,GAAc,CAACN,EAAK,UAAW,QAAS,+CAA+C,CAAC,EACxFO,GAAa1J,GAAM,UAAW,QAAS,8CAA8C,EAE9E2J,GAAmC,CAC9C,CACE,KAAM,YACN,UAAW5M,GACX,SAAU,SACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBuM,GACjB,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACtJ,GAAM,UAAW,OAAO,CAAC,CAAA,EAE9C,CACE,KAAM,MACN,UAAWhD,GACX,SAAU,SACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBsM,EAAA,EAEnB,CACE,KAAM,SACN,UAAWrM,GACX,SAAU,SACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBqM,EAAA,EAEnB,CACE,KAAM,QACN,UAAWpM,GACX,SAAU,SACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBoM,EAAA,EAEnB,CACE,KAAM,SACN,UAAWnM,GACX,SAAU,SACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBmM,EAAA,EAEnB,CACE,KAAM,UACN,UAAWlM,GACX,SAAU,SACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBkM,EAAA,EAEnB,CACE,KAAM,OACN,UAAWhM,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBiM,EAAA,EAEnB,CAGE,KAAM,OACN,UAAWtU,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAE,KAAM,eAAA,EACtB,gBAAiB,CACfkU,EAAK,OAAQ,SAAU,4BAA4B,EACnDA,EAAK,OAAQ,SAAU,sDAAsD,EAC7EA,EAAK,QAAS,SAAU,wBAAwB,EAChDA,EAAK,cAAe,QAAQ,EAC5BA,EAAK,YAAa,QAAQ,CAAA,CAC5B,EAEF,CACE,KAAM,QACN,UAAWxL,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACwL,EAAK,MAAO,QAAQ,EAAGA,EAAK,MAAO,QAAQ,EAAGA,EAAK,YAAa,QAAQ,EAAGA,EAAK,QAAS,QAAQ,CAAC,CAAA,EAEtH,CACE,KAAM,SACN,UAAWrL,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACfqL,EAAK,QAAS,SAAU,oBAAoB,EAC5CA,EAAK,UAAW,OAAQ,2BAA4B,CAAE,OAAQ,CAAC,UAAW,WAAW,EAAG,EACxFA,EAAK,OAAQ,UAAW,kCAAkC,EAC1DA,EAAK,WAAY,SAAU,oDAAoD,EAC/EA,EAAK,eAAgB,OAAQ,kBAAmB,CAAE,OAAQ,CAAC,QAAS,KAAK,EAAG,EAC5EA,EAAK,aAAc,SAAS,EAC5BA,EAAK,UAAW,SAAS,EACzBA,EAAK,WAAY,SAAS,CAAA,EAE5B,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACnJ,GAAM,UAAW,OAAO,CAAC,CAAA,EAE9C,CACE,KAAM,QACN,UAAWxB,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACf2K,EAAK,QAAS,QAAQ,EACtBA,EAAK,QAAS,OAAQ,yBAA0B,CAAE,OAAQ,CAAC,OAAQ,SAAU,QAAS,MAAO,SAAU,OAAQ,SAAU,OAAQ,SAAU,MAAM,EAAG,EACpJA,EAAK,UAAW,OAAQ,oBAAqB,CAAE,OAAQ,CAAC,QAAS,MAAM,EAAG,EAC1EA,EAAK,WAAY,QAAQ,CAAA,CAC3B,EAEF,CACE,KAAM,YACN,UAAW1K,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB+K,GACjB,OAAQ,CAAC,WAAY,SAAU,SAAS,EACxC,iBAAkB,CAACxJ,GAAM,WAAY,OAAO,EAAGA,GAAM,SAAU,OAAO,EAAGA,GAAM,UAAW,OAAO,CAAC,CAAA,EAEpG,CACE,KAAM,WACN,UAAWjB,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACoK,EAAK,QAAS,QAAQ,EAAGA,EAAK,aAAc,QAAQ,EAAGA,EAAK,UAAW,UAAW,4BAA6B,CAAE,SAAU,EAAA,CAAM,EAAGA,EAAK,WAAY,SAAS,CAAC,EACjL,OAAQ,CAAC,UAAU,EACnB,iBAAkB,CAACnJ,GAAM,WAAY,OAAO,CAAC,CAAA,EAE/C,CACE,KAAM,SACN,UAAWf,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACkK,EAAK,UAAW,UAAW,4BAA6B,CAAE,SAAU,EAAA,CAAM,EAAGA,EAAK,aAAc,QAAQ,CAAC,EAC3H,OAAQ,CAAC,UAAU,EACnB,iBAAkB,CAACnJ,GAAM,WAAY,OAAO,CAAC,CAAA,EAE/C,CACE,KAAM,SACN,UAAWd,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACiK,EAAK,QAAS,SAAU,4BAA6B,CAAE,SAAU,EAAA,CAAM,EAAGA,EAAK,MAAO,QAAQ,EAAGA,EAAK,MAAO,QAAQ,EAAGA,EAAK,WAAY,SAAS,EAAGA,EAAK,aAAc,QAAQ,CAAC,EACnM,OAAQ,CAAC,UAAU,EACnB,iBAAkB,CAACnJ,GAAM,WAAY,OAAO,CAAC,CAAA,EAE/C,CACE,KAAM,SACN,UAAWb,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACf,GAAGqK,GACH,GAAGC,GACHN,EAAK,iBAAkB,SAAU,8EAA8E,EAC/GA,EAAK,iBAAkB,SAAU,uCAAuC,CAAA,EAE1E,OAAQ,CAAC,WAAY,SAAU,SAAS,EACxC,iBAAkB,CAACnJ,GAAM,WAAY,OAAO,EAAGA,GAAM,SAAU,OAAO,EAAGA,GAAM,UAAW,OAAO,CAAC,CAAA,EAEpG,CACE,KAAM,WACN,UAAWP,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAAC,GAAG+J,GAAkBL,EAAK,OAAQ,QAAQ,CAAC,EAC7D,OAAQ,CAAC,WAAY,SAAU,SAAS,EACxC,iBAAkB,CAACnJ,GAAM,WAAY,OAAO,EAAGA,GAAM,SAAU,OAAO,EAAGA,GAAM,UAAW,OAAO,CAAC,CAAA,EAEpG,CACE,KAAM,aACN,UAAWL,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACwJ,EAAK,QAAS,QAAQ,EAAGA,EAAK,OAAQ,QAAQ,EAAGA,EAAK,QAAS,SAAU,6BAA8B,CAAE,SAAU,EAAA,CAAM,EAAG,GAAGM,GAAaN,EAAK,QAAS,QAAQ,CAAC,EACrL,OAAQ,CAAC,UAAU,EACnB,iBAAkB,CAACnJ,GAAM,WAAY,OAAO,CAAC,CAAA,EAE/C,CACE,KAAM,OACN,UAAWF,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBwJ,GACjB,OAAQ,CAAC,UAAU,EACnB,iBAAkB,CAACtJ,GAAM,WAAY,QAAQ,CAAC,CAAA,EAEhD,CACE,KAAM,WACN,UAAWC,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBqJ,EAAA,EAEnB,CACE,KAAM,WACN,UAAWpJ,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiBoJ,EAAA,EAEnB,CACE,KAAM,YACN,UAAWnJ,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACfgJ,EAAK,QAAS,QAAQ,EACtBA,EAAK,aAAc,SAAU,kDAAkD,EAC/EA,EACE,UACA,QACA,oOAAA,EAEFA,EAAK,OAAQ,QAAS,gEAAgE,EACtFA,EAAK,aAAc,QAAS,+GAA+G,EAC3IA,EAAK,eAAgB,QAAQ,EAC7BA,EAAK,YAAa,SAAS,EAC3BA,EAAK,WAAY,SAAS,EAC1BA,EAAK,YAAa,OAAO,EACzBA,EAAK,SAAU,SAAU,mDAAmD,EAC5EA,EAAK,WAAY,SAAU,kDAAkD,CAAA,EAE/E,OAAQ,CAAC,cAAe,QAAQ,EAChC,iBAAkB,CAChBnJ,GAAM,cAAe,YAAa,2EAA2E,EAC7GA,GAAM,SAAU,YAAa,6EAA6E,CAAA,EAE5G,gBAAiB,EAAA,EAEnB,CACE,KAAM,UACN,UAAWuC,GACX,SAAU,aACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACf4G,EAAK,QAAS,SAAU,kEAAmE,CAAE,SAAU,GAAM,EAC7GA,EAAK,OAAQ,SAAU,wBAAyB,CAAE,SAAU,GAAM,EAClEA,EAAK,WAAY,SAAU,+BAAgC,CAAE,SAAU,GAAM,EAC7EA,EAAK,YAAa,QAAS,0DAA0D,CAAA,EAEvF,OAAQ,CAAC,eAAgB,kBAAkB,EAC3C,iBAAkB,CAChBnJ,GAAM,eAAgB,QAAS,yCAAyC,EACxEA,GAAM,mBAAoB,QAAS,4CAA4C,CAAA,EAEjF,gBAAiB,EAAA,EAEnB,CACE,KAAM,QACN,UAAW4C,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACfuG,EAAK,QAAS,QAAQ,EACtBA,EAAK,aAAc,QAAQ,EAC3BA,EAAK,YAAa,OAAQ,qBAAsB,CAAE,OAAQ,CAAC,MAAO,OAAQ,QAAS,MAAM,CAAA,CAAG,EAC5FA,EAAK,OAAQ,OAAO,EACpBA,EAAK,OAAQ,QAAQ,EACrBA,EAAK,OAAQ,QAAQ,EACrBA,EAAK,SAAU,QAAS,0CAA0C,EAClEA,EAAK,eAAgB,QAAQ,EAC7BA,EAAK,aAAc,QAAQ,EAC3BA,EAAK,SAAU,QAAQ,CAAA,EAEzB,gBAAiB,EAAA,EAEnB,CACE,KAAM,cACN,UAAW3F,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAAC2F,EAAK,QAAS,QAAQ,EAAGA,EAAK,aAAc,QAAQ,EAAGA,EAAK,UAAW,OAAO,EAAGA,EAAK,OAAQ,OAAO,EAAGA,EAAK,eAAgB,QAAQ,CAAC,EACxJ,OAAQ,CAAC,aAAa,EACtB,iBAAkB,CAACnJ,GAAM,cAAe,MAAM,CAAC,EAC/C,gBAAiB,EAAA,EAEnB,CACE,KAAM,WACN,UAAWoE,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAAC+E,EAAK,QAAS,QAAQ,EAAGA,EAAK,aAAc,QAAQ,EAAGA,EAAK,QAAS,OAAO,EAAGA,EAAK,OAAQ,OAAO,EAAGA,EAAK,eAAgB,QAAQ,CAAC,EACtJ,OAAQ,CAAC,aAAa,EACtB,iBAAkB,CAACnJ,GAAM,cAAe,MAAM,CAAC,EAC/C,gBAAiB,EAAA,EAEnB,CAKE,KAAM,UACN,UAAWuE,GACX,SAAU,aACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB+E,GACjB,gBAAiB,EAAA,EAEnB,CACE,KAAM,SACN,UAAW9E,GACX,SAAU,aACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB8E,GACjB,gBAAiB,EAAA,EAEnB,CACE,KAAM,UACN,UAAW7E,GACX,SAAU,aACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB6E,GACjB,gBAAiB,EAAA,EAEnB,CAKE,KAAM,SACN,UAAW3C,GACX,SAAU,WACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACwC,EAAK,OAAQ,UAAW,8BAA+B,CAAE,SAAU,EAAA,CAAM,EAAGA,EAAK,QAAS,QAAQ,EAAGA,EAAK,OAAQ,OAAQ,sCAAuC,CAAE,OAAQ,CAAC,OAAQ,QAAS,MAAO,QAAQ,CAAA,CAAG,EAAGA,EAAK,WAAY,SAAS,CAAC,EAC/P,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACO,EAAU,EAC7B,gBAAiB,EAAA,EAEnB,CACE,KAAM,QACN,UAAWxC,GACX,SAAU,WACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAACiC,EAAK,OAAQ,UAAW,6BAA8B,CAAE,SAAU,EAAA,CAAM,EAAGA,EAAK,WAAY,SAAS,CAAC,EACxH,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACO,EAAU,EAC7B,gBAAiB,EAAA,EAEnB,CACE,KAAM,UACN,UAAWvC,GACX,SAAU,aACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CACfgC,EAAK,OAAQ,UAAW,yBAA0B,CAAE,SAAU,GAAM,EACpEA,EAAK,QAAS,OAAQ,mCAAoC,CAAE,OAAQ,CAAC,QAAS,KAAK,EAAG,EACtFA,EAAK,YAAa,QAAQ,CAAA,EAE5B,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACO,EAAU,EAC7B,gBAAiB,EAAA,EAEnB,CAIE,KAAM,SACN,UAAWjC,GACX,SAAU,WACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAAC0B,EAAK,OAAQ,UAAW,8BAA+B,CAAE,SAAU,EAAA,CAAM,EAAGA,EAAK,QAAS,QAAQ,EAAGA,EAAK,UAAW,MAAM,CAAC,EAC9I,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACO,EAAU,EAC7B,gBAAiB,EAAA,EAEnB,CAEE,KAAM,WACN,UAAWnC,GACX,SAAU,WACV,gBAAiB,GACjB,aAAc,CAAA,EACd,gBAAiB,CAAC4B,EAAK,UAAW,QAAQ,EAAGA,EAAK,WAAY,QAAQ,EAAGA,EAAK,WAAY,QAAQ,CAAC,EACnG,OAAQ,CAAC,SAAS,EAClB,iBAAkB,CAACO,EAAU,EAC7B,gBAAiB,EAAA,EAEnB,CACE,KAAM,SACN,UAAWhC,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAE,MAAO,gCAAA,EACvB,gBAAiB,CAACyB,EAAK,QAAS,QAAQ,EAAGA,EAAK,OAAQ,QAAQ,EAAGA,EAAK,UAAW,QAAQ,EAAGA,EAAK,UAAW,QAAQ,CAAC,EACvH,gBAAiB,EAAA,EAEnB,CACE,KAAM,UACN,UAAWZ,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAE,MAAO,YAAA,EACvB,gBAAiB,CAACY,EAAK,QAAS,QAAQ,EAAGA,EAAK,QAAS,QAAQ,EAAGA,EAAK,SAAU,QAAQ,EAAGA,EAAK,WAAY,SAAS,CAAC,EACzH,gBAAiB,EAAA,EAEnB,CACE,KAAM,aACN,UAAWD,GACX,SAAU,OACV,gBAAiB,GACjB,aAAc,CAAE,MAAO,WAAA,EACvB,gBAAiB,CAACC,EAAK,QAAS,QAAQ,EAAGA,EAAK,OAAQ,QAAQ,CAAC,EACjE,gBAAiB,EAAA,CAErB,EC1fO,SAASS,IAAoC,CAClD,MAAMC,MAAe,IAErB,UAAWC,KAAUH,GACnBE,EAAS,IAAIC,EAAO,KAAMA,CAAM,EAGlC,MAAO,CACL,IAAIjrB,EAAc,CAChB,OAAOgrB,EAAS,IAAIhrB,CAAI,CAC1B,EACA,SAASkrB,EAA0B,CACjCF,EAAS,IAAIE,EAAS,KAAMA,CAAQ,CACtC,EACA,IAAIlrB,EAAc,CAChB,OAAOgrB,EAAS,IAAIhrB,CAAI,CAC1B,EACA,MAAO,CACL,OAAO,MAAM,KAAKgrB,EAAS,OAAA,CAAQ,CACrC,CAAA,CAEJ,CAEO,MAAMG,GAAkBJ,GAAA,EAExB,SAASK,GAAkBF,EAA0B,CAC1DC,GAAgB,SAASD,CAAQ,CACnC,CCpBA,MAAMG,GAAqB,IAAI,IAAI,CAAC,QAAS,UAAW,SAAU,SAAU,OAAQ,QAAQ,CAAC,EAGvFC,GAA2B,CAC/B,MACA,UACA,aACA,eACA,gBACA,cACA,SACA,YACA,cACA,eACA,aACA,QACA,SACA,WACA,WACA,YACA,YACA,QACA,MACA,QACA,SACA,OACA,aACA,QACA,WACA,aACA,gBACA,eACA,cACA,cACA,QACF,EAEA,SAASC,GAAWlqB,EAAiC,CACnD,OAAO,OAAOA,GAAU,UAAYA,EAAM,WAAW,GAAG,GAAKA,EAAM,SAAS,GAAG,CACjF,CAGA,SAASmqB,GAAiBhV,EAAiC,CAEzD,MAAMzO,EADOyO,EAAI,MAAM,EAAG,EAAE,EACT,MAAM,GAAG,EAC5B,GAAIzO,EAAM,CAAC,IAAM,cAAgBA,EAAM,OAAS,EAAG,OAEnD,MAAM0jB,EAAW1jB,EAAM,CAAC,EAClB5H,EAAM4H,EAAM,MAAM,CAAC,EAAE,KAAK,GAAG,EACnC,GAAKsjB,GAAmB,IAAII,CAAQ,EAEpC,MAAO,SAASA,CAAQ,IAAItrB,CAAG,GACjC,CAEA,SAASurB,GAAeC,EAA8B9jB,EAAuB,CAC3E,MAAME,EAAQF,EAAK,MAAM,GAAG,EAC5B,IAAIC,EAAmB6jB,EAEvB,UAAW3jB,KAAQD,EACjB,GAAID,GAAW,OAAOA,GAAY,UAAYE,KAAQF,EACpDA,EAAWA,EAAoCE,CAAI,MAEnD,QAIJ,OAAOF,CACT,CAEA,SAAS8jB,GAAkBvqB,EAAmD,CAC5E,MAAO,GAAQA,GAAS,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,EAC3E,CAEO,SAASwqB,GAAkBhlB,EAA2B,CAC3D,MAAMilB,EAAoB,IAAI,IAC5B,OAAO,QAAQjlB,EAAM,WAAW,KAAK,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAErE0qB,EAAsB,IAAI,IAC9B,OAAO,QAAQllB,EAAM,WAAW,OAAO,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAEvE2qB,EAAqB,IAAI,IAC7B,OAAO,QAAQnlB,EAAM,WAAW,MAAM,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAEtE4qB,EAAqB,IAAI,IAC7B,OAAO,QAAQplB,EAAM,WAAW,MAAM,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAEtE6qB,EAAmB,IAAI,IAC3B,OAAO,QAAQrlB,EAAM,WAAW,IAAI,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAEpE8qB,EAAqB,IAAI,IAC7B,OAAO,QAAQtlB,EAAM,WAAW,MAAM,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAGtE+qB,EAAmB,IAAI,IAC3B,OAAO,QAAQvlB,EAAM,UAAU,KAAK,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAEpEgrB,EAAqB,IAAI,IAC7B,OAAO,QAAQxlB,EAAM,UAAU,OAAO,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAEtEirB,EAAoB,IAAI,IAC5B,OAAO,QAAQzlB,EAAM,UAAU,MAAM,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAErEkrB,EAAoB,IAAI,IAC5B,OAAO,QAAQ1lB,EAAM,UAAU,MAAM,EAAE,IAAI,CAAC,CAAC1G,EAAKkB,CAAK,IAAM,CAAClB,EAAKkB,CAAK,CAAC,CAAA,EAG3E,SAASmrB,EAAa3kB,EAAuB,CAC3C,GAAIA,EAAK,WAAW,aAAa,EAAG,CAClC,MAAM4kB,EAAO5kB,EAAK,MAAM,EAAoB,EACtC,CAAC4jB,EAAUtrB,CAAG,EAAIssB,EAAK,MAAM,GAAG,EACtC,OAAQhB,EAAA,CACN,IAAK,QACH,OAAOK,EAAkB,IAAI3rB,CAAG,EAClC,IAAK,UACH,OAAO4rB,EAAoB,IAAI5rB,CAAG,EACpC,IAAK,SACH,OAAO6rB,EAAmB,IAAI7rB,CAAG,EACnC,IAAK,SACH,OAAO8rB,EAAmB,IAAI9rB,CAAG,EACnC,IAAK,OACH,OAAO+rB,EAAiB,IAAI/rB,CAAG,EACjC,IAAK,SACH,OAAOgsB,EAAmB,IAAIhsB,CAAG,EACnC,QACE,MAAO,CAEb,CAEA,GAAI0H,EAAK,WAAW,YAAY,EAAG,CACjC,MAAM4kB,EAAO5kB,EAAK,MAAM,EAAmB,EACrC,CAAC4jB,EAAUtrB,CAAG,EAAIssB,EAAK,MAAM,GAAG,EACtC,OAAQhB,EAAA,CACN,IAAK,QACH,OAAOW,EAAiB,IAAIjsB,CAAG,EACjC,IAAK,UACH,OAAOksB,EAAmB,IAAIlsB,CAAG,EACnC,IAAK,SACH,OAAOmsB,EAAkB,IAAInsB,CAAG,EAClC,IAAK,SACH,OAAOosB,EAAkB,IAAIpsB,CAAG,EAClC,IAAK,aACH,OAAO0G,EAAM,UAAU,WAAW1G,CAAG,EACvC,QACE,MAAO,CAEb,CAEA,OAAOurB,GACL,CACE,WAAY7kB,EAAM,WAClB,UAAWA,EAAM,SAAA,EAEnBgB,CAAA,CAEJ,CAEA,SAAS6kB,EAAarrB,EAAoC,CACxD,GAA2BA,GAAU,MAGjC,CAAAkqB,GAAWlqB,CAAK,EACpB,IAAI,OAAOA,GAAU,SAAU,OAAOA,EACtC,GAAI,OAAOA,GAAU,SAAU,OAAO,OAAOA,CAAK,EAEpD,CAEA,SAASsrB,EAAmB7W,EAA4B,CACtD,MAAMjB,EAAoB,CAAA,EAEtBiB,EAAM,SACRjB,EAAQ,KAAK,GAAG+X,EAAkB9W,EAAM,OAAO,CAAC,EAE9CA,EAAM,eACRjB,EAAQ,KAAK,GAAGgY,EAAsB/W,EAAM,cAAe,CACzD,IAAK,WACL,cAAe,mBACf,OAAQ,WACR,iBAAkB,kBAAA,CACnB,CAAC,EAEAA,EAAM,gBACRjB,EAAQ,KAAK,GAAGgY,EAAsB/W,EAAM,eAAgB,CAC1D,MAAO,gBACP,OAAQ,iBACR,IAAK,cACL,gBAAiB,kBACjB,eAAgB,iBAChB,eAAgB,gBAAA,CACjB,CAAC,EAEAA,EAAM,YACRjB,EAAQ,KAAK,GAAGgY,EAAsB/W,EAAM,WAAY,CACtD,MAAO,cACP,OAAQ,eACR,IAAK,YACL,QAAS,gBACT,SAAU,gBAAA,CACX,CAAC,EAEAA,EAAM,UACRjB,EAAQ,KAAK,GAAGgY,EAAsB/W,EAAM,SAAU,CACpD,OAAQ,SACR,SAAU,WACV,SAAU,WACV,MAAO,QACP,OAAQ,QAAA,CACT,CAAC,EAEJ,UAAWgX,KAASxB,GAA0B,CAC5C,MAAMjqB,EAAQyU,EAAMgX,CAAK,EACrBzrB,KAAe,KAAK,GAAGurB,EAAkBvrB,CAAK,EAAE,OAAO,OAAO,CAAC,CACrE,CAOA,GANIyU,EAAM,UAAY,QACpBjB,EAAQ,KAAK,GAAGkY,EAAwBjX,EAAM,QAAS,UAAU,EAAE,OAAO,OAAO,CAAC,EAEhFA,EAAM,SAAW,QACnBjB,EAAQ,KAAK,GAAGkY,EAAwBjX,EAAM,OAAQ,IAAI,EAAE,OAAO,OAAO,CAAC,EAEzEA,EAAM,WAAY,CACpB,MAAMkX,EAAQC,EAAuBnX,EAAM,UAAU,EACjDkX,GAAOnY,EAAQ,KAAKqY,EAAkBF,CAAK,CAAC,CAClD,CAEA,OAAOnY,EAAQ,KAAK,GAAG,CACzB,CAEA,MAAMsY,EAAkD,CACtD,WAAY,kBACZ,MAAO,QACP,YAAa,cACb,aAAc,eACd,YAAa,cACb,OAAQ,WAAA,EAUV,SAASC,EAAmBtX,EAA4C,CACtE,MAAMxP,EAAiC,CAAA,EAEvC,SAAW,CAACwmB,EAAOO,CAAW,IAAK,OAAO,QAAQF,CAAuB,EAAG,CAC1E,MAAMxM,EAAO7K,EAAkCgX,CAAK,EAC9CzrB,EAAQuqB,GAAkBjL,CAAG,EAAKA,EAAgC,KAAOA,EAC/E,GAAI4K,GAAWlqB,CAAK,EAAG,CACrB,MAAMisB,EAAS9B,GAAiBnqB,CAAK,EACjCisB,IAAQhnB,EAAO+mB,CAAW,EAAIC,EACpC,CACF,CAEA,GAAIxX,EAAM,aAAe,OAAW,CAClC,MAAM6K,EAAMiL,GAAkB9V,EAAM,UAAU,EACzCA,EAAM,WAAuC,KAC9CA,EAAM,WACN6K,IAAQ,SACVra,EAAO,WAAailB,GAAW5K,CAAG,EAAK6K,GAAiB7K,CAAG,GAAK,OAAOA,CAAG,EAAK,OAAOA,CAAG,EAE7F,CAEA,GAAI7K,EAAM,WAAY,CACpB,MAAMkX,EAAQC,EAAuBnX,EAAM,UAAU,EACjDkX,GAAO,OAAO,OAAO1mB,EAAQinB,EAA6BP,CAAK,CAAC,CACtE,CAEA,OAAO1mB,CACT,CAEA,SAASymB,EACP1rB,EACAgW,EACU,CACV,GAAI,CAACuU,GAAkBvqB,CAAK,EAC1B,MAAO,CAAC,GAAGgW,CAAM,GAAGqV,EAAarrB,CAAK,CAAC,EAAE,EAAE,OAAO,OAAO,EAG3D,MAAMmsB,EAAansB,EACbwT,EAAoB,CAAA,EAE1B,GAAI2Y,EAAW,OAAS,OAAW,CACjC,MAAMlX,EAAWoW,EAAac,EAAW,IAAI,EACzClX,GAAUzB,EAAQ,KAAK,GAAGwC,CAAM,GAAGf,CAAQ,EAAE,CACnD,CAEA,SAAW,CAACmX,EAAYC,CAAG,IAAK,OAAO,QAAQF,CAAU,EAAG,CAC1D,GAAIC,IAAe,QAAUC,IAAQ,OAAW,SAChD,MAAMpX,EAAWoW,EAAagB,CAAG,EAC7BpX,KAAkB,KAAK,GAAGmX,CAAU,IAAIpW,CAAM,GAAGf,CAAQ,EAAE,CACjE,CAEA,OAAOzB,CACT,CAEA,SAAS+X,EACPvrB,EACU,CACV,GAAI,CAACuqB,GAAkBvqB,CAAK,EAC1B,MAAO,CAACqrB,EAAarrB,CAAK,GAAK,EAAE,EAAE,OAAO,OAAO,EAGnD,MAAMmsB,EAAansB,EACbwT,EAAoB,CAAA,EAE1B,GAAI2Y,EAAW,OAAS,OAAW,CACjC,MAAMlX,EAAWoW,EAAac,EAAW,IAAI,EACzClX,GAAUzB,EAAQ,KAAKyB,CAAQ,CACrC,CAEA,SAAW,CAACmX,EAAYC,CAAG,IAAK,OAAO,QAAQF,CAAU,EAAG,CAC1D,GAAIC,IAAe,QAAUC,IAAQ,OAAW,SAChD,MAAMvkB,EAAS,GAAGskB,CAAU,IACtBnX,EAAWoW,EAAagB,CAAG,EAC7BpX,GAAUzB,EAAQ,KAAK,GAAG1L,CAAM,GAAGmN,CAAQ,EAAE,CACnD,CAEA,OAAOzB,CACT,CAEA,SAASgY,EACPxrB,EACAssB,EACU,CACV,GAAI,CAAC/B,GAAkBvqB,CAAK,EAC1B,MAAO,CAACssB,EAAItsB,CAAK,GAAK,EAAE,EAAE,OAAO,OAAO,EAG1C,MAAMmsB,EAAansB,EACbwT,EAAoB,CAAA,EAE1B,GAAI2Y,EAAW,OAAS,OAAW,CACjC,MAAMI,EAASD,EAAIH,EAAW,IAAI,GAAK,GACnCI,GAAQ/Y,EAAQ,KAAK+Y,CAAM,CACjC,CAEA,SAAW,CAACH,EAAYC,CAAG,IAAK,OAAO,QAAQF,CAAU,EAAG,CAC1D,GAAIC,IAAe,QAAUC,IAAQ,OAAW,SAChD,MAAME,EAASD,EAAID,CAAG,GAAK,GACvBE,GAAQ/Y,EAAQ,KAAK,GAAG4Y,CAAU,IAAIG,CAAM,EAAE,CACpD,CAEA,OAAO/Y,CACT,CAEA,SAASgZ,EACP7tB,EACA8tB,EAC8B,CAC9B,MAAMC,EAAWlnB,EAAM,SAAS7G,EAAK,aAAa,EAClD,OAAO+tB,GAAA,YAAAA,EAAU,KAAM7O,GAAYA,EAAQ,OAAS4O,EACtD,CAEA,SAASZ,EAAkBF,EAAgC,CACzD,MAAMnY,EAAoB,CAAA,EAG1B,OAAImY,EAAM,YAAc,CAACzB,GAAWyB,EAAM,UAAU,GAAGnY,EAAQ,KAAKmY,EAAM,UAAU,EAChFA,EAAM,UAAUnY,EAAQ,KAAKmY,EAAM,QAAQ,EAC3CA,EAAM,YAAYnY,EAAQ,KAAKmY,EAAM,UAAU,EAC/CA,EAAM,eAAenY,EAAQ,KAAKmY,EAAM,aAAa,EAClDnY,EAAQ,OAAO,OAAO,EAAE,KAAK,GAAG,CACzC,CAEA,SAAS0Y,EAA6BP,EAAgD,CACpF,MAAM1mB,EAAiC,CAAA,EAEvC,OAAI0mB,EAAM,aACR1mB,EAAO,WAAailB,GAAWyB,EAAM,UAAU,EAC1CxB,GAAiBwB,EAAM,UAAU,GAAKA,EAAM,WAC7CA,EAAM,YAERA,EAAM,aAAe,SACvB1mB,EAAO,WAAailB,GAAWyB,EAAM,UAAU,EAC1CxB,GAAiBwB,EAAM,UAAU,GAAK,OAAOA,EAAM,UAAU,EAC9D,OAAOA,EAAM,UAAU,GAGtB1mB,CACT,CAGA,SAAS2mB,EAAuBe,EAAuD,CACrF,GAAI,CAACzC,GAAWyC,CAAe,EAAG,OAClC,MAAMhB,EAAQR,EAAawB,EAAgB,MAAM,EAAG,EAAE,CAAC,EACvD,OAAOhB,GAAS,OAAOA,GAAU,SAAYA,EAA4B,MAC3E,CAEA,MAAO,CACL,aAAAR,EACA,mBAAAG,EACA,mBAAAS,EACA,wBAAAS,EACA,kBAAAX,CAAA,CAEJ,CC5XO,SAASe,GAAwBzqB,EAA0B,CAChE,GAAI,CAACA,EAAK,WAAY,OAAOA,EAE7B,MAAMsS,EAAQ,CAAE,GAAItS,EAAK,OAAS,CAAA,CAAE,EAEpC,SAAW,CAACrD,EAAKkB,CAAK,IAAK,OAAO,QAAQmC,EAAK,UAAU,EAAG,CAE1D,GADI,OAAOrD,GAAQ,UACf,OAAOkB,GAAU,UAAYA,IAAU,MAAQ,MAAM,QAAQA,CAAK,EAAG,SAEzE,MAAM6sB,EAAWpY,EAAM3V,CAAG,EACpBqtB,EAAansB,EAEnB,GAAI6sB,GAAY,OAAOA,GAAa,UAAY,CAAC,MAAM,QAAQA,CAAQ,EACrEpY,EAAM3V,CAAG,EAAI,CACX,GAAI+tB,EACJ,GAAGV,CAAA,MAEA,CACL,MAAMW,EAAOD,IAAa,OAAYA,EAAW,OAC3CE,EAAkC,CAAA,EACpCD,IAAS,SAAWC,EAAO,KAAOD,GACtC,OAAO,OAAOC,EAAQZ,CAAU,EAChC1X,EAAM3V,CAAG,EAAIiuB,CACf,CACF,CAEA,MAAO,CACL,GAAG5qB,EACH,MAAAsS,EACA,WAAY,MAAA,CAEhB,CCzDO,SAASuY,GAAqBhtB,EAAoC,CACvE,GAAIA,IAAU,MAAO,MAAO,WAC5B,GAAIA,IAAU,cAAe,MAAO,mBACpC,GAAIA,IAAU,SAAU,MAAO,WAC/B,GAAIA,IAAU,iBAAkB,MAAO,kBAEzC,CAEO,SAASitB,GAAejtB,EAAoC,CASjE,MARoC,CAClC,MAAO,gBACP,OAAQ,iBACR,IAAK,cACL,gBAAiB,kBACjB,eAAgB,iBAChB,eAAgB,gBAAA,EAEPA,CAAe,CAC5B,CAEO,SAASktB,GAAaltB,EAAoC,CAQ/D,MAPoC,CAClC,MAAO,cACP,OAAQ,eACR,IAAK,YACL,QAAS,gBACT,SAAU,gBAAA,EAEDA,CAAe,CAC5B,CAEO,SAASmtB,GAAgBntB,EAAoC,CAQlE,MAPoC,CAClC,OAAQ,SACR,SAAU,WACV,SAAU,WACV,MAAO,QACP,OAAQ,QAAA,EAECA,CAAe,CAC5B,CAiBA,MAAMotB,GAA8B,CAAC,SAAU,SAAU,UAAW,MAAM,EACpEC,GAA6F,CACjG,OAAQ,GACR,OAAQ,KACR,QAAS,KACT,KAAM,IACR,EAgBO,SAASC,GAAkBC,EAAyC,CACzE,GAAI,CAACA,GAAc,OAAOA,GAAe,SAAU,OAEnD,MAAMC,EADMD,EACY,YACxB,GAAI,CAACC,GAAeA,EAAY,SAAW,EAAG,OAE9C,MAAMC,EAAUL,GAA4B,IAAKM,GAAOF,EAAY,SAASE,CAAE,CAAC,EAE1Ela,EAAoB,CAAA,EAC1B,IAAIma,EAAQF,EAAQ,CAAC,EAChBE,GAAOna,EAAQ,KAAK,QAAQ,EAEjC,QAAS,EAAI,EAAG,EAAI4Z,GAA4B,OAAQ,IACtD,GAAIK,EAAQ,CAAC,IAAME,EAAO,CACxBA,EAAQF,EAAQ,CAAC,EACjB,MAAM3lB,EAASulB,GAA6BD,GAA4B,CAAC,CAAC,EAC1E5Z,EAAQ,KAAK,GAAG1L,CAAM,IAAI6lB,EAAQ,QAAU,QAAQ,EAAE,CACxD,CAGF,OAAOna,EAAQ,OAAS,EAAIA,EAAQ,KAAK,GAAG,EAAI,MAClD,CAEA,MAAMoa,GAAyB,CAC7B,MACA,UACA,aACA,eACA,gBACA,cACA,SACA,YACA,cACA,eACA,aACA,QACA,SACA,WACA,WACA,YACA,YACA,QACA,MACA,QACA,SACA,OACA,aACA,eACF,EAEO,SAASC,GACdpZ,EAAiC,GACjCqZ,EAAuC,CAAA,EAC/B,CACR,MAAMta,EAAoB,CAAA,EAE1B,UAAW1U,KAAO8uB,GAAwB,CACxC,MAAM5tB,EAAQyU,EAAM3V,CAAG,EACnBkB,GAAS,OAAOA,GAAU,UAAUwT,EAAQ,KAAKxT,CAAK,CAC5D,CACA,OAAIyU,EAAM,eAAejB,EAAQ,KAAKwZ,GAAqBvY,EAAM,aAAa,GAAK,EAAE,EACjFA,EAAM,gBAAgBjB,EAAQ,KAAKyZ,GAAexY,EAAM,cAAc,GAAK,EAAE,EAC7EA,EAAM,YAAYjB,EAAQ,KAAK0Z,GAAazY,EAAM,UAAU,GAAK,EAAE,EACnEA,EAAM,UAAUjB,EAAQ,KAAK2Z,GAAgB1Y,EAAM,QAAQ,GAAK,EAAE,EAClEA,EAAM,SAAW,OAAOA,EAAM,SAAY,UAAUjB,EAAQ,KAAKiB,EAAM,OAAO,EAE9EA,EAAM,YAAc,OAAOA,EAAM,YAAe,UAClDjB,EAAQ,KAAKiB,EAAM,WAAW,WAAW,KAAK,EAAIA,EAAM,WAAa,OAAOA,EAAM,UAAU,GAAG,EAG1FjB,EAAQ,OAAO,OAAO,EAAE,KAAK,GAAG,CACzC,CCtJA,MAAMua,GAAmBC,GAAgB,CACvC,IAAIL,EACJ,MAAMM,EAA4B,IAAI,IAChCC,EAAW,CAACC,EAASC,IAAY,CACrC,MAAMC,EAAY,OAAOF,GAAY,WAAaA,EAAQR,CAAK,EAAIQ,EACnE,GAAI,CAAC,OAAO,GAAGE,EAAWV,CAAK,EAAG,CAChC,MAAMW,EAAgBX,EACtBA,EAASS,IAA4B,OAAOC,GAAc,UAAYA,IAAc,MAAQA,EAAY,OAAO,OAAO,CAAA,EAAIV,EAAOU,CAAS,EAC1IJ,EAAU,QAASM,GAAaA,EAASZ,EAAOW,CAAa,CAAC,CAChE,CACF,EACME,EAAW,IAAMb,EAMjBc,EAAM,CAAE,SAAAP,EAAU,SAAAM,EAAU,gBALV,IAAME,EAKqB,UAJhCH,IACjBN,EAAU,IAAIM,CAAQ,EACf,IAAMN,EAAU,OAAOM,CAAQ,EAEoB,EACtDG,EAAef,EAAQK,EAAYE,EAAUM,EAAUC,CAAG,EAChE,OAAOA,CACT,EACME,IAAgBX,GAAgBA,EAAcD,GAAgBC,CAAW,EAAID,IClB7Ea,GAAYC,GAAQA,EAC1B,SAASC,GAASL,EAAKM,EAAWH,GAAU,CAC1C,MAAMI,EAAQ1sB,EAAM,qBAClBmsB,EAAI,UACJnsB,EAAM,YAAY,IAAMysB,EAASN,EAAI,SAAQ,CAAE,EAAG,CAACA,EAAKM,CAAQ,CAAC,EACjEzsB,EAAM,YAAY,IAAMysB,EAASN,EAAI,iBAAiB,EAAG,CAACA,EAAKM,CAAQ,CAAC,CAC5E,EACE,OAAAzsB,EAAM,cAAc0sB,CAAK,EAClBA,CACT,CACA,MAAMC,GAAcjB,GAAgB,CAClC,MAAMS,EAAME,GAAYX,CAAW,EAC7BkB,EAAiBH,GAAaD,GAASL,EAAKM,CAAQ,EAC1D,cAAO,OAAOG,EAAeT,CAAG,EACzBS,CACT,EACMC,IAAWnB,GAAgBA,EAAciB,GAAWjB,CAAW,EAAIiB,ICFlE,SAASG,GAAoBV,EAAwC,CAC1E,MAAMW,EAAWX,GAAgB,CAAA,EAC3BT,MAAgB,IAEtB,OAAOkB,GAAA,EAA6B,CAACG,EAAKC,KAAS,CACjD,MAAO,CAAE,GAAGF,CAAA,EAEZ,SAAU,CAAC7oB,EAAMxG,IAAU,CAEzB,MAAM4G,EAAO,CAAE,GADC2oB,IAAM,KACJ,EAClBC,GAAU5oB,EAAMJ,EAAMxG,CAAK,EAC3BsvB,EAAI,CAAE,MAAO1oB,EAAM,EACnBqnB,EAAU,QAASM,GAAaA,EAAA,CAAU,CAC5C,EAEA,SAAW/nB,GACJA,EACEipB,GAAUF,IAAM,MAAO/oB,CAAI,EADhB+oB,EAAA,EAAM,MAI1B,WAAY,IAAM,CAChBD,EAAI,CAAE,MAAO,CAAE,GAAGD,CAAA,EAAY,EAC9BpB,EAAU,QAASM,GAAaA,EAAA,CAAU,CAC5C,EAEA,UAAYA,IACVN,EAAU,IAAIM,CAAQ,EACf,IAAM,CACXN,EAAU,OAAOM,CAAQ,CAC3B,EACF,EACA,CACJ,CAIO,SAASkB,GAAUnF,EAA8B9jB,EAAuB,CAC7E,MAAMxE,EAAOwE,EAAK,MAAM,GAAG,EAC3B,IAAIC,EAAmB6jB,EAEvB,UAAWxrB,KAAOkD,EAChB,GAAIyE,GAAW,OAAOA,GAAY,UAAY3H,KAAQ2H,EACpDA,EAAWA,EAAoC3H,CAAG,MAElD,QAIJ,OAAO2H,CACT,CAEO,SAAS+oB,GAAUlF,EAA8B9jB,EAAcxG,EAAsB,CAC1F,MAAMgC,EAAOwE,EAAK,MAAM,GAAG,EACrBkpB,EAAU1tB,EAAK,IAAA,EACrB,IAAIyE,EAAU6jB,EAEd,UAAWxrB,KAAOkD,GACZ,EAAElD,KAAO2H,IAAY,OAAOA,EAAQ3H,CAAG,GAAM,UAAY2H,EAAQ3H,CAAG,IAAM,QAC5E2H,EAAQ3H,CAAG,EAAI,CAAA,GAEjB2H,EAAUA,EAAQ3H,CAAG,EAGvB2H,EAAQipB,CAAO,EAAI1vB,CACrB,CCPO,SAAS2vB,GAASC,EAAeC,EAA6B,CACnE,GAAI,CAACD,GAAQ,OAAOA,GAAS,SAC3B,OAAOA,EAGT,GAAI,YAAaA,EACf,OAAQA,EAAqB,QAG/B,GAAI,SAAUA,EACZ,OAAOE,GAAaF,EAAkB,KAAMC,CAAK,EAGnD,GAAI,QAASD,GAAQ,SAAUA,EAC7B,OAAOG,GAAYH,EAAiBC,CAAK,EAG3C,GAAI,OAAQD,EAAM,CAChB,KAAM,CAACnZ,EAAMuZ,CAAK,EAAKJ,EAAgB,IAAI,EAC3C,OAAOD,GAASlZ,EAAMoZ,CAAK,IAAMF,GAASK,EAAOH,CAAK,CACxD,CAEA,GAAI,OAAQD,EAAM,CAChB,KAAM,CAACnZ,EAAMuZ,CAAK,EAAKJ,EAAiB,IAAI,EAC5C,OAAOD,GAASlZ,EAAMoZ,CAAK,IAAMF,GAASK,EAAOH,CAAK,CACxD,CAEA,GAAI,QAASD,EAAM,CACjB,KAAM,CAACnZ,EAAMuZ,CAAK,EAAKJ,EAAiB,IACxC,MAAO,EAAQD,GAASlZ,EAAMoZ,CAAK,GAAM,EAAQF,GAASK,EAAOH,CAAK,CACxE,CAEA,GAAI,OAAQD,EAAM,CAChB,KAAM,CAACnZ,EAAMuZ,CAAK,EAAKJ,EAAgB,GACvC,MAAO,EAAQD,GAASlZ,EAAMoZ,CAAK,GAAM,EAAQF,GAASK,EAAOH,CAAK,CACxE,CAEA,GAAI,QAASD,EACX,MAAO,CAACD,GAAUC,EAAiB,IAAKC,CAAK,EAG/C,GAAI,OAAQD,EAAM,CAChB,KAAM,CAACK,EAAMC,EAASC,CAAQ,EAAKP,EAAgB,GACnD,OAAOD,GAASM,EAAMJ,CAAK,EAAIF,GAASO,EAASL,CAAK,EAAIF,GAASQ,EAAUN,CAAK,CACpF,CAEA,GAAI,OAAQD,EAAM,CAChB,KAAM,CAACnZ,EAAMuZ,CAAK,EAAKJ,EAAsB,IAAI,EAC3CQ,EAAUT,GAASlZ,EAAMoZ,CAAK,EACpC,OAA6BO,GAGtBT,GAASK,EAAOH,CAAK,CAC9B,CAGF,CAEA,SAASE,GAAYH,EAAeC,EAA4B,CAC9D,MAAMQ,EAASP,GAAYF,EAAK,KAAMC,CAAK,EACrCrQ,EAAO,MAAM,QAAQ6Q,CAAM,EAAIA,EAAS,CAAA,EAC9C,GAAIT,EAAK,MAAQ,QAAS,OAAOpQ,EAAK,OACtC,GAAI,CAACoQ,EAAK,MAAO,MAAO,GAExB,MAAMU,EAAmB,CAAA,EACzB,UAAW5O,KAAOlC,EAAM,CACtB,GAAI,CAACkC,GAAO,OAAOA,GAAQ,SAAU,SACrC,MAAMpC,EAAOoC,EAAgCkO,EAAK,KAAK,EACjD5vB,EAAQ,OAAOsf,GAAQ,UAAYA,EAAI,SAAW,GAAK,OAAOA,CAAG,EAAIA,EACvE,OAAOtf,GAAU,UAAY,OAAO,SAASA,CAAK,GAAGswB,EAAO,KAAKtwB,CAAK,CAC5E,CAEA,MAAMwb,EAAQ8U,EAAO,OAAO,CAAC7U,EAAKzb,IAAUyb,EAAMzb,EAAO,CAAC,EAC1D,OAAI4vB,EAAK,MAAQ,MAAcpU,EACxB8U,EAAO,SAAW,EAAI,EAAI9U,EAAQ8U,EAAO,MAClD,CAEA,SAASR,GAAYtpB,EAAcqpB,EAA6B,CAC9D,GAAIrpB,EAAK,WAAW,QAAQ,GAAKqpB,EAAM,MACrC,OAAOJ,GAAUI,EAAM,MAAOrpB,EAAK,QAAQ,SAAU,EAAE,CAAC,EAE1D,GAAIA,EAAK,WAAW,QAAQ,GAAKqpB,EAAM,MACrC,OAAOJ,GAAUI,EAAM,MAAOrpB,EAAK,QAAQ,SAAU,EAAE,CAAC,EAE1D,GAAIA,EAAK,WAAW,UAAU,GAAKqpB,EAAM,QACvC,OAAOJ,GAAUI,EAAM,QAASrpB,EAAK,QAAQ,WAAY,EAAE,CAAC,EAE9D,GAAIA,EAAK,WAAW,QAAQ,GAAKqpB,EAAM,MACrC,OAAOJ,GAAUI,EAAM,MAAOrpB,EAAK,QAAQ,SAAU,EAAE,CAAC,EAE1D,GAAIA,EAAK,WAAW,OAAO,GAAKqpB,EAAM,KACpC,OAAOJ,GAAUI,EAAM,KAAMrpB,EAAK,QAAQ,QAAS,EAAE,CAAC,CAG1D,CC9JA,SAAS+pB,GAAuBpuB,EAAgBquB,EAAoBC,EAA2B,OAC7F,MAAO,CACL,GAAGtuB,EACH,GAAIsuB,EAASD,EAAa,GAAGA,CAAU,KAAKruB,EAAK,EAAE,GACnD,UAAUwY,EAAAxY,EAAK,WAAL,YAAAwY,EAAe,IAAKsJ,GAAUsM,GAAuBtM,EAAOuM,EAAY,EAAK,GACvF,MAAOruB,EAAK,MACR,OAAO,YACL,OAAO,QAAQA,EAAK,KAAK,EAAE,IAAI,CAAC,CAACuuB,EAAUC,CAAS,IAAM,CACxDD,EACAC,EAAU,IAAKC,GAAaL,GAAuBK,EAAUJ,EAAY,EAAK,CAAC,CAAA,CAChF,CAAA,EAEH,MAAA,CAER,CAkBO,SAASK,GAAqBC,EAAwBC,EAAgC,CAC3F,MAAMC,EAAaT,GAAuBQ,EAAYD,EAAa,GAAI,EAAI,EAErEG,EACJD,EAAW,OAASF,EAAa,MAC7B,CAAE,GAAGE,EAAW,MAAO,GAAGF,EAAa,KAAA,EACvC,OAEN,MAAO,CACL,GAAGE,EACH,GAAIF,EAAa,GACjB,KAAMA,EAAa,MAAQE,EAAW,KACtC,YAAa,OACb,MAAO,CAAE,GAAGA,EAAW,MAAO,GAAGF,EAAa,KAAA,EAC9C,MAAO,CAAE,GAAGE,EAAW,MAAO,GAAGF,EAAa,KAAA,EAC9C,OAAQ,CAAE,GAAGE,EAAW,OAAQ,GAAGF,EAAa,MAAA,EAChD,SAAU,CAAE,GAAGE,EAAW,SAAU,GAAGF,EAAa,QAAA,EACpD,WAAYA,EAAa,YAAcE,EAAW,WAClD,WAAYF,EAAa,YAAcE,EAAW,WAClD,OAAQF,EAAa,QAAUE,EAAW,OAC1C,SAAUF,EAAa,UAAYE,EAAW,SAC9C,OAAQF,EAAa,QAAUE,EAAW,OAC1C,SAAUF,EAAa,UAAYE,EAAW,SAC9C,MAAAC,CAAA,CAEJ,CC5CA,MAAMC,GAAe,IAAI,IAAI,CAAC,YAAa,WAAY,SAAU,SAAU,SAAU,WAAY,YAAY,CAAC,EAOxGC,GAAe,IAAI,IAAI,CAAC,eAAgB,kBAAkB,CAAC,EAE1D,SAASC,GAAWjvB,EAAgB0tB,EAAqB,GAAqB,WACnF,GAAI1tB,EAAK,YAAa,CACpB,IAAIwY,EAAAkV,EAAM,iBAAN,MAAAlV,EAAsB,SAASxY,EAAK,aACtC,OAAI,QAAQ,IAAI,WAAa,cAC3B,QAAQ,KACN,2DAA2D,CAAC,GAAG0tB,EAAM,eAAgB1tB,EAAK,WAAW,EAAE,KAAK,MAAM,CAAC,EAAA,EAGhH,KAGT,MAAM4uB,GAAanW,EAAAiV,EAAM,cAAN,YAAAjV,EAAoBzY,EAAK,aAC5C,GAAI,CAAC4uB,EACH,OAAI,QAAQ,IAAI,WAAa,cAC3B,QAAQ,KAAK,uCAAuC5uB,EAAK,WAAW,EAAE,EAEjE,KAGT,MAAMkvB,EAAWR,GAAqB1uB,EAAM4uB,CAAU,EACtD,OAAOK,GAAWC,EAAU,CAC1B,GAAGxB,EACH,eAAgB,CAAC,GAAIA,EAAM,gBAAkB,CAAA,EAAK1tB,EAAK,WAAW,CAAA,CACnE,CACH,CAGA,MAAMwT,GADWka,EAAM,UAAY/F,IACZ,IAAI3nB,EAAK,IAAI,EAEpC,GAAI,CAACwT,EACH,OAAI,QAAQ,IAAI,WAAa,cAC3B,QAAQ,KAAK,qCAAqCxT,EAAK,IAAI,EAAE,EAExD,KAGT,MAAMmvB,EAAa1E,GAAwBzqB,CAAI,EAG/C,GAAI,CADemrB,GAAkBgE,EAAYzB,CAAK,EAEpD,OAAO,KAGT,GAAIyB,EAAW,OAAQ,CACrB,IAAIC,EAEJ,GAAI,MAAM,QAAQD,EAAW,OAAO,UAAU,EAC5CC,EAAaD,EAAW,OAAO,mBACtB,OAAOA,EAAW,OAAO,YAAe,UAAYzB,EAAM,KAAM,CACzE,MAAM5a,EAAW4a,EAAM,KAAKyB,EAAW,OAAO,UAAU,EACpD,MAAM,QAAQrc,CAAQ,IACxBsc,EAAatc,EAEjB,CAEA,GAAIsc,EAAY,CACd,MAAMC,EAAYF,EAAW,OAAO,UAAuB,OAC3D,OAAOC,EAAW,IAAI,CAACnO,EAAM/a,IAAU,CACrC,MAAMopB,EAAS,GAAGH,EAAW,EAAE,WAAWjpB,CAAK,GAC/C,OACEwM,EAAAA,IAACvS,EAAM,SAAN,CACE,SAAA8uB,GACC,CACE,GAAGE,EACH,GAAIG,EACJ,OAAQ,OACR,MAAO,CACL,GAAGH,EAAW,MACd,CAACE,CAAQ,EAAGpO,CAAA,CACd,EAEF,CACE,GAAGyM,EACH,MAAO,CAAE,GAAGA,EAAM,MAAO,CAAC2B,CAAQ,EAAGpO,EAAM,MAAA/a,CAAA,CAAM,CACnD,GAdiBopB,CAgBrB,CAEJ,CAAC,CACH,CACF,CAEA,MAAMC,EAAc7B,EAAM,MAAQrF,GAAkBqF,EAAM,KAAK,EAAI,OAEnE,IAAIhS,EACAyT,EAAW,UAAYI,IACzB7T,EAAU6T,EAAY,wBAAwBJ,EAAW,KAAMA,EAAW,QAAQ,GAGpF,MAAMK,EAAc,CAAE,GAAG9T,GAAA,YAAAA,EAAS,MAAO,GAAIyT,EAAW,OAAS,EAAC,EAC5DM,EAAc,CAAE,GAAG/T,GAAA,YAAAA,EAAS,MAAO,GAAIyT,EAAW,OAAS,EAAC,EAE5DvwB,EAAQ8wB,GAAuBC,GAAaF,EAAa/B,CAAK,EAAGA,CAAK,EACtEkC,EAAiBL,EACnBA,EAAY,mBAAmBC,CAAoB,EACnD9D,GAAiB8D,CAAW,EAC1BK,EAAcN,EAAcA,EAAY,mBAAmBC,CAAoB,EAAI,CAAA,EACnFM,EAAWC,GAAcZ,EAAW,QAAU,CAAA,EAAIzB,EAAM,kBAAmByB,EAAW,IAAI,EAE1Fa,EAAgCC,GAA4Bd,EAAW,UAAU,EAEjFhtB,EAAYiP,EAChBsK,GAAA,YAAAA,EAAS,UACTkU,EACAI,EACApxB,EAAM,SAAA,EAGFsxB,EAAa,OAAOtxB,EAAM,OAAU,UAAYA,EAAM,QAAU,KAAOA,EAAM,MAAQ,OACrFuxB,EAAa,CAAE,GAAGN,EAAa,GAAGK,CAAA,EAElCE,EAAY5c,EAAM,UAExB,OACEwE,EAAAA,KAACoY,EAAA,CACE,GAAGxxB,EACJ,eAAcuwB,EAAW,GACzB,cAAaA,EAAW,OACxB,UAAWhtB,GAAa,OACxB,MAAO,OAAO,KAAKguB,CAAU,EAAE,OAAS,EAAIA,EAAa,OACxD,GAAGL,EAEH,SAAA,EAAAO,EAAAlB,EAAW,WAAX,YAAAkB,EAAqB,IAAKvO,SACxB3hB,EAAM,SAAN,CACE,SAAA8uB,GAAWnN,EAAO4L,CAAK,CAAA,EADL5L,EAAM,EAE3B,GAEDqN,EAAW,OACV,OAAO,QAAQA,EAAW,KAAK,EAAE,IAAI,CAAC,CAACZ,EAAUC,CAAS,IACxD9b,EAAAA,IAACvS,EAAM,SAAN,CACE,SAAAquB,EAAU,IAAKC,GACd/b,EAAAA,IAACvS,EAAM,SAAN,CACE,SAAA8uB,GAAWR,EAAUf,CAAK,GADRe,EAAS,EAE9B,CACD,CAAA,EALkBF,CAMrB,CACD,CAAA,CAAA,CAAA,CAGT,CAEA,SAASoB,GACP/wB,EACA8uB,EACyB,CACzB,MAAM5a,EAAoC,CAAA,EAE1C,SAAW,CAACnW,EAAKkB,CAAK,IAAK,OAAO,QAAQe,CAAK,EAC7C,GAAIf,GAAS,OAAOA,GAAU,UAAY,UAAWA,EAAO,CAC1D,MAAMyyB,EAAYzyB,EAA4B,MAC9CiV,EAASnW,CAAG,EAAI4zB,GAAeD,EAAU5C,CAAK,CAChD,MAAW7vB,GAAS,OAAOA,GAAU,UAAY,UAAWA,EAC1DiV,EAASnW,CAAG,EAAI6wB,GAAU3vB,EAA6B,MAAO6vB,CAAK,EAEnE5a,EAASnW,CAAG,EAAIkB,EAIpB,OAAOiV,CACT,CAEA,SAAS4c,GACP9wB,EACA8uB,EACyB,OACzB,GAAI,OAAO9uB,EAAM,YAAe,UAAYA,EAAM,OAAS,OACzD,OAAOA,EAGT,MAAMye,GAAO7E,EAAAkV,EAAM,OAAN,YAAAlV,EAAa5Z,EAAM,YAChC,OAAK,MAAM,QAAQye,CAAI,EAIhB,CAAE,GAAGze,EAAO,KAAAye,CAAA,EAHVze,CAIX,CAEA,SAAS2xB,GAAelsB,EAAcqpB,EAA6B,CACjE,GAAIrpB,EAAK,WAAW,QAAQ,GAAKqpB,EAAM,MAAO,CAC5C,MAAM8C,EAAWnsB,EAAK,QAAQ,SAAU,EAAE,EAC1C,OAAOipB,GAAUI,EAAM,MAAO8C,CAAQ,CACxC,CACA,GAAInsB,EAAK,WAAW,QAAQ,GAAKqpB,EAAM,MAAO,CAC5C,MAAM+C,EAAWpsB,EAAK,QAAQ,SAAU,EAAE,EAC1C,OAAOipB,GAAUI,EAAM,MAAO+C,CAAQ,CACxC,CACA,GAAIpsB,EAAK,WAAW,UAAU,GAAKqpB,EAAM,QAAS,CAChD,MAAMgD,EAAarsB,EAAK,QAAQ,WAAY,EAAE,EAC9C,OAAOipB,GAAUI,EAAM,QAASgD,CAAU,CAC5C,CACA,GAAIrsB,EAAK,WAAW,QAAQ,GAAKqpB,EAAM,MAAO,CAC5C,MAAMiD,EAAWtsB,EAAK,QAAQ,SAAU,EAAE,EAC1C,OAAOipB,GAAUI,EAAM,MAAOiD,CAAQ,CACxC,CACA,GAAItsB,EAAK,WAAW,OAAO,GAAKqpB,EAAM,KAAM,CAC1C,MAAMkD,EAAUvsB,EAAK,QAAQ,QAAS,EAAE,EACxC,OAAOipB,GAAUI,EAAM,KAAMkD,CAAO,CACtC,CACI,QAAQ,IAAI,WAAa,cAC3B,QAAQ,KAAK,uDAAuDvsB,CAAI,EAAE,CAG9E,CAEA,SAAS8mB,GAAkBnrB,EAAgB0tB,EAA6B,OACtE,MAAMmD,GAAYrY,EAAAxY,EAAK,aAAL,YAAAwY,EAAiB,UACnC,OAAKqY,EACE,EAAQrD,GAASqD,EAAWnD,CAAK,EADjB,EAEzB,CAEA,SAASqC,GACPe,EACAC,EACAC,EACyB,CACzB,MAAMlB,EAAoC,CAAA,EAO1C,GAAIkB,IAAa,YACf,OAAID,IACFjB,EAAS,YAAc,CAACvQ,EAA8BG,IAA8C,CAClG,MAAMuR,EAAWvR,EAAO,QAAUoR,EAAO,YAAiB,cAAgBpR,EAAO,OAC3EwR,EAAgBJ,EAAOG,CAAQ,GAAKH,EAAO,aAAkBA,EAAOpR,EAAO,KAAK,EACtF,GAAI,CAACwR,EAAe,OACpB,MAAMC,EAAW,MAAM,QAAQD,CAAa,EAAKA,EAA6B,CAACA,CAAuB,EACtGH,EAAY,QAAQ,CAAE,SAAAI,CAAA,EAAY5R,CAAG,CACvC,EAGI,MAAM,QAAQuR,EAAO,MAAS,IAChChB,EAAS,UAAavQ,GAAiC,CACrDwR,EAAY,QAAQ,CAAE,SAAUD,EAAO,MAAQ,EAAiBvR,CAAG,CACrE,IAGGuQ,EAGT,SAAW,CAACnS,EAAO+B,CAAM,IAAK,OAAO,QAAQoR,CAAM,EAAG,CACpD,GAAI,CAACC,GAAe,CAAC,MAAM,QAAQrR,CAAM,EACvC,SAGF,MAAM0R,EAAgB,CAACF,EAAyBG,IACtCvO,GAAyB,CAC/B,MAAMjlB,EAAQwzB,GAAA,YAAAA,EAAevO,GAC7BiO,EAAY,QAAQ,CAAE,SAAUG,CAAA,EAAiBrzB,CAAK,CACxD,EAGF,GAAI8f,IAAU,YAAcqT,GAAYjC,GAAa,IAAIiC,CAAQ,EAAG,CAClE,MAAMK,EAAeC,GAAkBN,CAAQ,EAC/ClB,EAASnS,CAAK,EAAIyT,EAAc1R,EAAQ2R,CAAY,CACtD,MAAWrC,GAAa,IAAIrR,CAAK,EAI/BmS,EAASnS,CAAK,EAAIyT,EAAc1R,EAAS7hB,GAAUA,CAAgB,EAEnEiyB,EAASnS,CAAK,EAAIyT,EAAc1R,CAAM,CAE1C,CAEA,OAAOoQ,CACT,CAEA,SAASwB,GAAkBN,EAAmE,CAC5F,OAAQA,EAAA,CACN,IAAK,YACH,OAAQlO,GAAOA,EAAE,OAA4B,MAC/C,IAAK,WACH,OAAQA,GAAOA,EAAE,OAA4B,QAC/C,IAAK,SACH,MAAO,OACT,IAAK,SACH,OAAQA,GAAM,OAAQA,EAAE,OAA4B,KAAK,EAC3D,IAAK,SACH,OAAQA,GAAOA,EAAE,OAA6B,MAChD,IAAK,WACH,OAAQA,GAAOA,EAAE,OAA+B,MAClD,IAAK,aACH,OAAQA,GAAOA,EAAE,OAA4B,MAC/C,QACE,MAAO,CAEb,CAEA,SAASwK,GAAUnF,EAA8B9jB,EAAuB,CACtE,MAAMxE,EAAOwE,EAAK,MAAM,GAAG,EAC3B,IAAIC,EAAmB6jB,EAEvB,UAAWxrB,KAAOkD,EAChB,GAAIyE,GAAW,OAAOA,GAAY,UAAY3H,KAAQ2H,EACpDA,EAAWA,EAAoC3H,CAAG,MAElD,QAIJ,OAAO2H,CACT,CChVA,IAAIkU,GAK4B,SAAS+Y,EAAapzB,EAAMqzB,EAAaC,EAAQ,CAC7E,SAASC,EAAKC,EAAMC,EAAK,CAWrB,GAVKD,EAAK,MACN,OAAO,eAAeA,EAAM,OAAQ,CAChC,MAAO,CACH,IAAAC,EACA,OAAQrc,EACR,OAAQ,IAAI,GAChC,EACgB,WAAY,EAC5B,CAAa,EAEDoc,EAAK,KAAK,OAAO,IAAIxzB,CAAI,EACzB,OAEJwzB,EAAK,KAAK,OAAO,IAAIxzB,CAAI,EACzBqzB,EAAYG,EAAMC,CAAG,EAErB,MAAMC,EAAQtc,EAAE,UACV1V,EAAO,OAAO,KAAKgyB,CAAK,EAC9B,QAASzwB,EAAI,EAAGA,EAAIvB,EAAK,OAAQuB,IAAK,CAClC,MAAMtB,EAAID,EAAKuB,CAAC,EACVtB,KAAK6xB,IACPA,EAAK7xB,CAAC,EAAI+xB,EAAM/xB,CAAC,EAAE,KAAK6xB,CAAI,EAEpC,CACJ,CAEA,MAAMG,GAASL,GAAA,YAAAA,EAAQ,SAAU,OACjC,MAAMM,UAAmBD,CAAO,CACpC,CACI,OAAO,eAAeC,EAAY,OAAQ,CAAE,MAAO5zB,EAAM,EACzD,SAASoX,EAAEqc,EAAK,CACZ,IAAIpZ,EACJ,MAAMmZ,EAAOF,GAAA,MAAAA,EAAQ,OAAS,IAAIM,EAAe,KACjDL,EAAKC,EAAMC,CAAG,GACbpZ,EAAKmZ,EAAK,MAAM,WAAanZ,EAAG,SAAW,IAC5C,UAAWwZ,KAAML,EAAK,KAAK,SACvBK,EAAE,EAEN,OAAOL,CACX,CACA,cAAO,eAAepc,EAAG,OAAQ,CAAE,MAAOmc,EAAM,EAChD,OAAO,eAAenc,EAAG,OAAO,YAAa,CACzC,MAAQoc,GAAS,SACb,OAAIF,GAAA,MAAAA,EAAQ,QAAUE,aAAgBF,EAAO,OAClC,IACJhZ,GAAAD,EAAAmZ,GAAA,YAAAA,EAAM,OAAN,YAAAnZ,EAAY,SAAZ,YAAAC,EAAoB,IAAIta,EACnC,CACR,CAAK,EACD,OAAO,eAAeoX,EAAG,OAAQ,CAAE,MAAOpX,EAAM,EACzCoX,CACX,CAGO,MAAM0c,WAAuB,KAAM,CACtC,aAAc,CACV,MAAM,0EAA0E,CACpF,CACJ,CACO,MAAMC,WAAwB,KAAM,CACvC,YAAY/zB,EAAM,CACd,MAAM,uDAAuDA,CAAI,EAAE,EACnE,KAAK,KAAO,gBAChB,CACJ,EACCqa,GAAK,YAAY,qBAAuBA,GAAG,mBAAqB,CAAA,GAC1D,MAAM2Z,GAAe,WAAW,mBAChC,SAAS11B,GAAO21B,EAAW,CAG9B,OAAOD,EACX,CChEO,SAASE,GAAcjuB,EAAS,CACnC,MAAMkuB,EAAgB,OAAO,OAAOluB,CAAO,EAAE,OAAQmuB,GAAM,OAAOA,GAAM,QAAQ,EAIhF,OAHe,OAAO,QAAQnuB,CAAO,EAChC,OAAO,CAAC,CAACtE,EAAGyV,CAAC,IAAM+c,EAAc,QAAQ,CAACxyB,CAAC,IAAM,EAAE,EACnD,IAAI,CAAC,CAACyV,EAAGgd,CAAC,IAAMA,CAAC,CAE1B,CAIO,SAASC,GAAsBjd,EAAG1X,EAAO,CAC5C,OAAI,OAAOA,GAAU,SACVA,EAAM,SAAQ,EAClBA,CACX,CACO,SAAS40B,GAAO/zB,EAAQ,CAE3B,MAAO,CACH,IAAI,OAAQ,CACE,CACN,MAAMb,EAAQa,EAAM,EACpB,cAAO,eAAe,KAAM,QAAS,CAAE,MAAAb,CAAK,CAAE,EACvCA,CACX,CAEJ,CACR,CACA,CACO,SAAS60B,GAAQC,EAAO,CAC3B,OAAOA,GAAU,IACrB,CACO,SAASC,GAAW1E,EAAQ,CAC/B,MAAMxU,EAAQwU,EAAO,WAAW,GAAG,EAAI,EAAI,EACrCpU,EAAMoU,EAAO,SAAS,GAAG,EAAIA,EAAO,OAAS,EAAIA,EAAO,OAC9D,OAAOA,EAAO,MAAMxU,EAAOI,CAAG,CAClC,CACO,SAAS+Y,GAAmB3I,EAAK4I,EAAM,CAC1C,MAAMC,EAAQ7I,EAAM4I,EACdE,EAAe,KAAK,MAAMD,CAAK,EAE/BE,EAAY,OAAO,QAAU,KAAK,IAAI,KAAK,IAAIF,CAAK,EAAG,CAAC,EAC9D,OAAI,KAAK,IAAIA,EAAQC,CAAY,EAAIC,EAC1B,EACJF,EAAQC,CACnB,CACA,MAAME,GAA4B,OAAO,YAAY,EAC9C,SAASC,GAAWjzB,EAAQvD,EAAK+B,EAAQ,CAC5C,IAAIb,EACJ,OAAO,eAAeqC,EAAQvD,EAAK,CAC/B,KAAM,CACF,GAAIkB,IAAUq1B,GAId,OAAIr1B,IAAU,SACVA,EAAQq1B,GACRr1B,EAAQa,EAAM,GAEXb,CACX,EACA,IAAI00B,EAAG,CACH,OAAO,eAAeryB,EAAQvD,EAAK,CAC/B,MAAO41B,CAEvB,CAAa,CAEL,EACA,aAAc,EACtB,CAAK,CACL,CAIO,SAASa,GAAWnO,EAAQ6B,EAAMjpB,EAAO,CAC5C,OAAO,eAAeonB,EAAQ6B,EAAM,CAChC,MAAAjpB,EACA,SAAU,GACV,WAAY,GACZ,aAAc,EACtB,CAAK,CACL,CACO,SAASw1B,MAAaC,EAAM,CAC/B,MAAMC,EAAoB,CAAA,EAC1B,UAAW3B,KAAO0B,EAAM,CACpB,MAAME,EAAc,OAAO,0BAA0B5B,CAAG,EACxD,OAAO,OAAO2B,EAAmBC,CAAW,CAChD,CACA,OAAO,OAAO,iBAAiB,CAAA,EAAID,CAAiB,CACxD,CA4BO,SAASE,GAAIC,EAAK,CACrB,OAAO,KAAK,UAAUA,CAAG,CAC7B,CACO,SAASC,GAAQhB,EAAO,CAC3B,OAAOA,EACF,YAAW,EACX,KAAI,EACJ,QAAQ,YAAa,EAAE,EACvB,QAAQ,WAAY,GAAG,EACvB,QAAQ,WAAY,EAAE,CAC/B,CACO,MAAMiB,GAAqB,sBAAuB,MAAQ,MAAM,kBAAoB,IAAIC,IAAU,CAAE,EACpG,SAASC,GAASC,EAAM,CAC3B,OAAO,OAAOA,GAAS,UAAYA,IAAS,MAAQ,CAAC,MAAM,QAAQA,CAAI,CAC3E,CACO,MAAMC,GAA4BvB,GAAO,IAAM,OAOlD,GAJIN,GAAa,SAIb,OAAO,UAAc,OAAe3Z,EAAA,iCAAW,YAAX,MAAAA,EAAsB,SAAS,eACnE,MAAO,GAEX,GAAI,CACA,MAAMyb,EAAI,SACV,WAAIA,EAAE,EAAE,EACD,EACX,MACU,CACN,MAAO,EACX,CACJ,CAAC,EACM,SAASC,GAAcC,EAAG,CAC7B,GAAIL,GAASK,CAAC,IAAM,GAChB,MAAO,GAEX,MAAMC,EAAOD,EAAE,YAGf,GAFIC,IAAS,QAET,OAAOA,GAAS,WAChB,MAAO,GAEX,MAAMC,EAAOD,EAAK,UAIlB,MAHI,EAAAN,GAASO,CAAI,IAAM,IAGnB,OAAO,UAAU,eAAe,KAAKA,EAAM,eAAe,IAAM,GAIxE,CACO,SAASC,GAAaH,EAAG,CAC5B,OAAID,GAAcC,CAAC,EACR,CAAE,GAAGA,CAAC,EACb,MAAM,QAAQA,CAAC,EACR,CAAC,GAAGA,CAAC,EACZA,aAAa,IACN,IAAI,IAAIA,CAAC,EAChBA,aAAa,IACN,IAAI,IAAIA,CAAC,EACbA,CACX,CAuDO,MAAMI,GAAkC,IAAI,IAAI,CAAC,SAAU,SAAU,QAAQ,CAAC,EAS9E,SAASC,GAAYd,EAAK,CAC7B,OAAOA,EAAI,QAAQ,sBAAuB,MAAM,CACpD,CAEO,SAASe,GAAM9C,EAAMC,EAAKH,EAAQ,CACrC,MAAMiD,EAAK,IAAI/C,EAAK,KAAK,OAAOC,GAAOD,EAAK,KAAK,GAAG,EACpD,OAAI,CAACC,GAAOH,GAAA,MAAAA,EAAQ,UAChBiD,EAAG,KAAK,OAAS/C,GACd+C,CACX,CACO,SAASC,EAAgBC,EAAS,CACrC,MAAMnD,EAASmD,EACf,GAAI,CAACnD,EACD,MAAO,CAAA,EACX,GAAI,OAAOA,GAAW,SAClB,MAAO,CAAE,MAAO,IAAMA,CAAM,EAChC,IAAIA,GAAA,YAAAA,EAAQ,WAAY,OAAW,CAC/B,IAAIA,GAAA,YAAAA,EAAQ,SAAU,OAClB,MAAM,IAAI,MAAM,kDAAkD,EACtEA,EAAO,MAAQA,EAAO,OAC1B,CAEA,OADA,OAAOA,EAAO,QACV,OAAOA,EAAO,OAAU,SACjB,CAAE,GAAGA,EAAQ,MAAO,IAAMA,EAAO,KAAK,EAC1CA,CACX,CAyCO,SAASoD,GAAaC,EAAO,CAChC,OAAO,OAAO,KAAKA,CAAK,EAAE,OAAQh1B,GACvBg1B,EAAMh1B,CAAC,EAAE,KAAK,QAAU,YAAcg1B,EAAMh1B,CAAC,EAAE,KAAK,SAAW,UACzE,CACL,CACO,MAAMi1B,GAAuB,CAChC,QAAS,CAAC,OAAO,iBAAkB,OAAO,gBAAgB,EAC1D,MAAO,CAAC,YAAa,UAAU,EAC/B,OAAQ,CAAC,EAAG,UAAU,EACtB,QAAS,CAAC,sBAAwB,oBAAqB,EACvD,QAAS,CAAC,CAAC,OAAO,UAAW,OAAO,SAAS,CACjD,EAKO,SAASC,GAAKC,EAAQC,EAAM,CAC/B,MAAMC,EAAUF,EAAO,KAAK,IACtBG,EAASD,EAAQ,OAEvB,GADkBC,GAAUA,EAAO,OAAS,EAExC,MAAM,IAAI,MAAM,iEAAiE,EAErF,MAAMxD,EAAMyB,GAAU4B,EAAO,KAAK,IAAK,CACnC,IAAI,OAAQ,CACR,MAAMI,EAAW,CAAA,EACjB,UAAW14B,KAAOu4B,EAAM,CACpB,GAAI,EAAEv4B,KAAOw4B,EAAQ,OACjB,MAAM,IAAI,MAAM,sBAAsBx4B,CAAG,GAAG,EAE3Cu4B,EAAKv4B,CAAG,IAEb04B,EAAS14B,CAAG,EAAIw4B,EAAQ,MAAMx4B,CAAG,EACrC,CACA,OAAAy2B,GAAW,KAAM,QAASiC,CAAQ,EAC3BA,CACX,EACA,OAAQ,CAAA,CAChB,CAAK,EACD,OAAOZ,GAAMQ,EAAQrD,CAAG,CAC5B,CACO,SAAS0D,GAAKL,EAAQC,EAAM,CAC/B,MAAMC,EAAUF,EAAO,KAAK,IACtBG,EAASD,EAAQ,OAEvB,GADkBC,GAAUA,EAAO,OAAS,EAExC,MAAM,IAAI,MAAM,iEAAiE,EAErF,MAAMxD,EAAMyB,GAAU4B,EAAO,KAAK,IAAK,CACnC,IAAI,OAAQ,CACR,MAAMI,EAAW,CAAE,GAAGJ,EAAO,KAAK,IAAI,KAAK,EAC3C,UAAWt4B,KAAOu4B,EAAM,CACpB,GAAI,EAAEv4B,KAAOw4B,EAAQ,OACjB,MAAM,IAAI,MAAM,sBAAsBx4B,CAAG,GAAG,EAE3Cu4B,EAAKv4B,CAAG,GAEb,OAAO04B,EAAS14B,CAAG,CACvB,CACA,OAAAy2B,GAAW,KAAM,QAASiC,CAAQ,EAC3BA,CACX,EACA,OAAQ,CAAA,CAChB,CAAK,EACD,OAAOZ,GAAMQ,EAAQrD,CAAG,CAC5B,CACO,SAAS1hB,GAAO+kB,EAAQH,EAAO,CAClC,GAAI,CAACZ,GAAcY,CAAK,EACpB,MAAM,IAAI,MAAM,kDAAkD,EAEtE,MAAMM,EAASH,EAAO,KAAK,IAAI,OAE/B,GADkBG,GAAUA,EAAO,OAAS,EAC7B,CAGX,MAAMG,EAAgBN,EAAO,KAAK,IAAI,MACtC,UAAWt4B,KAAOm4B,EACd,GAAI,OAAO,yBAAyBS,EAAe54B,CAAG,IAAM,OACxD,MAAM,IAAI,MAAM,8FAA8F,CAG1H,CACA,MAAMi1B,EAAMyB,GAAU4B,EAAO,KAAK,IAAK,CACnC,IAAI,OAAQ,CACR,MAAMO,EAAS,CAAE,GAAGP,EAAO,KAAK,IAAI,MAAO,GAAGH,CAAK,EACnD,OAAA1B,GAAW,KAAM,QAASoC,CAAM,EACzBA,CACX,CACR,CAAK,EACD,OAAOf,GAAMQ,EAAQrD,CAAG,CAC5B,CACO,SAAS6D,GAAWR,EAAQH,EAAO,CACtC,GAAI,CAACZ,GAAcY,CAAK,EACpB,MAAM,IAAI,MAAM,sDAAsD,EAE1E,MAAMlD,EAAMyB,GAAU4B,EAAO,KAAK,IAAK,CACnC,IAAI,OAAQ,CACR,MAAMO,EAAS,CAAE,GAAGP,EAAO,KAAK,IAAI,MAAO,GAAGH,CAAK,EACnD,OAAA1B,GAAW,KAAM,QAASoC,CAAM,EACzBA,CACX,CACR,CAAK,EACD,OAAOf,GAAMQ,EAAQrD,CAAG,CAC5B,CACO,SAAS8D,GAAMnP,EAAGC,EAAG,OACxB,IAAIhO,EAAA+N,EAAE,KAAK,IAAI,SAAX,MAAA/N,EAAmB,OACnB,MAAM,IAAI,MAAM,8FAA8F,EAElH,MAAMoZ,EAAMyB,GAAU9M,EAAE,KAAK,IAAK,CAC9B,IAAI,OAAQ,CACR,MAAMiP,EAAS,CAAE,GAAGjP,EAAE,KAAK,IAAI,MAAO,GAAGC,EAAE,KAAK,IAAI,KAAK,EACzD,OAAA4M,GAAW,KAAM,QAASoC,CAAM,EACzBA,CACX,EACA,IAAI,UAAW,CACX,OAAOhP,EAAE,KAAK,IAAI,QACtB,EACA,OAAQA,EAAE,KAAK,IAAI,QAAU,CAAA,CACrC,CAAK,EACD,OAAOiO,GAAMlO,EAAGqL,CAAG,CACvB,CACO,SAAS5F,GAAQ2J,EAAOV,EAAQC,EAAM,CAEzC,MAAME,EADUH,EAAO,KAAK,IACL,OAEvB,GADkBG,GAAUA,EAAO,OAAS,EAExC,MAAM,IAAI,MAAM,oEAAoE,EAExF,MAAMxD,EAAMyB,GAAU4B,EAAO,KAAK,IAAK,CACnC,IAAI,OAAQ,CACR,MAAMW,EAAWX,EAAO,KAAK,IAAI,MAC3BH,EAAQ,CAAE,GAAGc,CAAQ,EAC3B,GAAIV,EACA,UAAWv4B,KAAOu4B,EAAM,CACpB,GAAI,EAAEv4B,KAAOi5B,GACT,MAAM,IAAI,MAAM,sBAAsBj5B,CAAG,GAAG,EAE3Cu4B,EAAKv4B,CAAG,IAGbm4B,EAAMn4B,CAAG,EAAIg5B,EACP,IAAIA,EAAM,CACR,KAAM,WACN,UAAWC,EAASj5B,CAAG,CACnD,CAAyB,EACCi5B,EAASj5B,CAAG,EACtB,KAGA,WAAWA,KAAOi5B,EAEdd,EAAMn4B,CAAG,EAAIg5B,EACP,IAAIA,EAAM,CACR,KAAM,WACN,UAAWC,EAASj5B,CAAG,CACnD,CAAyB,EACCi5B,EAASj5B,CAAG,EAG1B,OAAAy2B,GAAW,KAAM,QAAS0B,CAAK,EACxBA,CACX,EACA,OAAQ,CAAA,CAChB,CAAK,EACD,OAAOL,GAAMQ,EAAQrD,CAAG,CAC5B,CACO,SAASiE,GAASF,EAAOV,EAAQC,EAAM,CAC1C,MAAMtD,EAAMyB,GAAU4B,EAAO,KAAK,IAAK,CACnC,IAAI,OAAQ,CACR,MAAMW,EAAWX,EAAO,KAAK,IAAI,MAC3BH,EAAQ,CAAE,GAAGc,CAAQ,EAC3B,GAAIV,EACA,UAAWv4B,KAAOu4B,EAAM,CACpB,GAAI,EAAEv4B,KAAOm4B,GACT,MAAM,IAAI,MAAM,sBAAsBn4B,CAAG,GAAG,EAE3Cu4B,EAAKv4B,CAAG,IAGbm4B,EAAMn4B,CAAG,EAAI,IAAIg5B,EAAM,CACnB,KAAM,cACN,UAAWC,EAASj5B,CAAG,CAC/C,CAAqB,EACL,KAGA,WAAWA,KAAOi5B,EAEdd,EAAMn4B,CAAG,EAAI,IAAIg5B,EAAM,CACnB,KAAM,cACN,UAAWC,EAASj5B,CAAG,CAC/C,CAAqB,EAGT,OAAAy2B,GAAW,KAAM,QAAS0B,CAAK,EACxBA,CACX,CACR,CAAK,EACD,OAAOL,GAAMQ,EAAQrD,CAAG,CAC5B,CAEO,SAASkE,GAAQlgB,EAAGtT,EAAa,EAAG,OACvC,GAAIsT,EAAE,UAAY,GACd,MAAO,GACX,QAASxU,EAAIkB,EAAYlB,EAAIwU,EAAE,OAAO,OAAQxU,IAC1C,KAAIoX,EAAA5C,EAAE,OAAOxU,CAAC,IAAV,YAAAoX,EAAa,YAAa,GAC1B,MAAO,GAGf,MAAO,EACX,CAGO,SAASud,GAAkBngB,EAAGtT,EAAa,EAAG,OACjD,GAAIsT,EAAE,UAAY,GACd,MAAO,GACX,QAASxU,EAAIkB,EAAYlB,EAAIwU,EAAE,OAAO,OAAQxU,IAC1C,KAAIoX,EAAA5C,EAAE,OAAOxU,CAAC,IAAV,YAAAoX,EAAa,YAAa,GAC1B,MAAO,GAGf,MAAO,EACX,CACO,SAASwd,GAAa3xB,EAAM4xB,EAAQ,CACvC,OAAOA,EAAO,IAAKC,GAAQ,CACvB,IAAI1d,EACJ,OAACA,EAAK0d,GAAK,OAAS1d,EAAG,KAAO,CAAA,GAC9B0d,EAAI,KAAK,QAAQ7xB,CAAI,EACd6xB,CACX,CAAC,CACL,CACO,SAASC,GAAchR,EAAS,CACnC,OAAO,OAAOA,GAAY,SAAWA,EAAUA,GAAA,YAAAA,EAAS,OAC5D,CACO,SAASiR,GAAcF,EAAKG,EAAK55B,EAAQ,iBAC5C,MAAM0oB,EAAU+Q,EAAI,QACdA,EAAI,QACHC,IAAc9F,GAAA5X,GAAAD,EAAA0d,EAAI,OAAJ,YAAA1d,EAAU,KAAK,MAAf,YAAAC,EAAoB,QAApB,YAAA4X,EAAA,KAAA5X,EAA4Byd,EAAI,GAC7CC,IAAcG,EAAAD,GAAA,YAAAA,EAAK,QAAL,YAAAC,EAAA,KAAAD,EAAaH,EAAI,GAC/BC,IAAcI,EAAA95B,EAAO,cAAP,YAAA85B,EAAA,KAAA95B,EAAqBy5B,EAAI,GACvCC,IAAcK,EAAA/5B,EAAO,cAAP,YAAA+5B,EAAA,KAAA/5B,EAAqBy5B,EAAI,GACvC,gBACF,CAAE,KAAMO,EAAO,SAAUC,EAAW,MAAOC,EAAQ,GAAG1N,CAAI,EAAKiN,EACrE,OAAAjN,EAAK,OAASA,EAAK,KAAO,CAAA,GAC1BA,EAAK,QAAU9D,EACXkR,GAAA,MAAAA,EAAK,cACLpN,EAAK,MAAQ0N,GAEV1N,CACX,CAWO,SAAS2N,GAAoBjE,EAAO,CACvC,OAAI,MAAM,QAAQA,CAAK,EACZ,QACP,OAAOA,GAAU,SACV,SACJ,SACX,CAsBO,SAASkE,MAASxtB,EAAM,CAC3B,KAAM,CAAC6sB,EAAKvD,EAAOhB,CAAI,EAAItoB,EAC3B,OAAI,OAAO6sB,GAAQ,SACR,CACH,QAASA,EACT,KAAM,SACN,MAAAvD,EACA,KAAAhB,CACZ,EAEW,CAAE,GAAGuE,CAAG,CACnB,CC3mBA,MAAM1E,GAAc,CAACG,EAAMC,IAAQ,CAC/BD,EAAK,KAAO,YACZ,OAAO,eAAeA,EAAM,OAAQ,CAChC,MAAOA,EAAK,KACZ,WAAY,EACpB,CAAK,EACD,OAAO,eAAeA,EAAM,SAAU,CAClC,MAAOC,EACP,WAAY,EACpB,CAAK,EACDD,EAAK,QAAU,KAAK,UAAUC,EAAKkF,GAA4B,CAAC,EAChE,OAAO,eAAenF,EAAM,WAAY,CACpC,MAAO,IAAMA,EAAK,QAClB,WAAY,EACpB,CAAK,CACL,EACaoF,GAAYxF,EAAa,YAAaC,EAAW,EACjDwF,GAAgBzF,EAAa,YAAaC,GAAa,CAAE,OAAQ,MAAO,EAC9E,SAASyF,GAAa5c,EAAO6c,EAAUL,GAAUA,EAAM,QAAS,CACnE,MAAMM,EAAc,CAAA,EACdC,EAAa,CAAA,EACnB,UAAWC,KAAOhd,EAAM,OAChBgd,EAAI,KAAK,OAAS,GAClBF,EAAYE,EAAI,KAAK,CAAC,CAAC,EAAIF,EAAYE,EAAI,KAAK,CAAC,CAAC,GAAK,CAAA,EACvDF,EAAYE,EAAI,KAAK,CAAC,CAAC,EAAE,KAAKH,EAAOG,CAAG,CAAC,GAGzCD,EAAW,KAAKF,EAAOG,CAAG,CAAC,EAGnC,MAAO,CAAE,WAAAD,EAAY,YAAAD,CAAW,CACpC,CACO,SAASG,GAAYjd,EAAO6c,EAAUL,GAAUA,EAAM,QAAS,CAClE,MAAMM,EAAc,CAAE,QAAS,EAAE,EAC3BI,EAAe,CAACld,EAAOhW,EAAO,CAAA,IAAO,CACvC,UAAWwyB,KAASxc,EAAM,OACtB,GAAIwc,EAAM,OAAS,iBAAmBA,EAAM,OAAO,OAC/CA,EAAM,OAAO,IAAKZ,GAAWsB,EAAa,CAAE,OAAAtB,CAAM,EAAI,CAAC,GAAG5xB,EAAM,GAAGwyB,EAAM,IAAI,CAAC,CAAC,UAE1EA,EAAM,OAAS,cACpBU,EAAa,CAAE,OAAQV,EAAM,MAAM,EAAI,CAAC,GAAGxyB,EAAM,GAAGwyB,EAAM,IAAI,CAAC,UAE1DA,EAAM,OAAS,kBACpBU,EAAa,CAAE,OAAQV,EAAM,MAAM,EAAI,CAAC,GAAGxyB,EAAM,GAAGwyB,EAAM,IAAI,CAAC,MAE9D,CACD,MAAMW,EAAW,CAAC,GAAGnzB,EAAM,GAAGwyB,EAAM,IAAI,EACxC,GAAIW,EAAS,SAAW,EACpBL,EAAY,QAAQ,KAAKD,EAAOL,CAAK,CAAC,MAErC,CACD,IAAIY,EAAON,EACP/1B,EAAI,EACR,KAAOA,EAAIo2B,EAAS,QAAQ,CACxB,MAAME,EAAKF,EAASp2B,CAAC,EACJA,IAAMo2B,EAAS,OAAS,GAKrCC,EAAKC,CAAE,EAAID,EAAKC,CAAE,GAAK,CAAE,QAAS,EAAE,EACpCD,EAAKC,CAAE,EAAE,QAAQ,KAAKR,EAAOL,CAAK,CAAC,GAJnCY,EAAKC,CAAE,EAAID,EAAKC,CAAE,GAAK,CAAE,QAAS,EAAE,EAMxCD,EAAOA,EAAKC,CAAE,EACdt2B,GACJ,CACJ,CACJ,CAER,EACA,OAAAm2B,EAAald,CAAK,EACX8c,CACX,CCvEO,MAAMQ,GAAUC,GAAS,CAAC3C,EAAQp3B,EAAOg6B,EAAMjD,IAAY,CAC9D,MAAMyB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,MAAO,EAAK,EAAK,CAAE,MAAO,EAAK,EACvD/0B,EAASmyB,EAAO,KAAK,IAAI,CAAE,MAAAp3B,EAAO,OAAQ,EAAE,EAAIw4B,CAAG,EACzD,GAAIvzB,aAAkB,QAClB,MAAM,IAAIg1B,GAEd,GAAIh1B,EAAO,OAAO,OAAQ,CACtB,MAAMggB,EAAI,KAAK8R,GAAA,YAAAA,EAAS,MAAOgD,GAAM90B,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAAC,EAC5GC,MAAAA,GAAuBnV,EAAG8R,GAAA,YAAAA,EAAS,MAAM,EACnC9R,CACV,CACA,OAAOhgB,EAAO,KAClB,EAEao1B,GAAeN,GAAS,MAAO3C,EAAQp3B,EAAOg6B,EAAMpG,IAAW,CACxE,MAAM4E,EAAMwB,EAAO,CAAE,GAAGA,EAAM,MAAO,EAAI,EAAK,CAAE,MAAO,EAAI,EAC3D,IAAI/0B,EAASmyB,EAAO,KAAK,IAAI,CAAE,MAAAp3B,EAAO,OAAQ,EAAE,EAAIw4B,CAAG,EAGvD,GAFIvzB,aAAkB,UAClBA,EAAS,MAAMA,GACfA,EAAO,OAAO,OAAQ,CACtB,MAAMggB,EAAI,KAAK2O,GAAA,YAAAA,EAAQ,MAAOmG,GAAM90B,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAAC,EAC3GC,MAAAA,GAAuBnV,EAAG2O,GAAA,YAAAA,EAAQ,MAAM,EAClC3O,CACV,CACA,OAAOhgB,EAAO,KAClB,EAEaq1B,GAAcP,GAAS,CAAC3C,EAAQp3B,EAAOg6B,IAAS,CACzD,MAAMxB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,MAAO,EAAK,EAAK,CAAE,MAAO,EAAK,EACvD/0B,EAASmyB,EAAO,KAAK,IAAI,CAAE,MAAAp3B,EAAO,OAAQ,EAAE,EAAIw4B,CAAG,EACzD,GAAIvzB,aAAkB,QAClB,MAAM,IAAIg1B,GAEd,OAAOh1B,EAAO,OAAO,OACf,CACE,QAAS,GACT,MAAO,IAAK80B,GAAQQ,IAAkBt1B,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAAC,CACzH,EACU,CAAE,QAAS,GAAM,KAAMl1B,EAAO,KAAK,CAC7C,EACau1B,GAA2BF,GAAWG,EAAoB,EAC1DC,GAAmBX,GAAS,MAAO3C,EAAQp3B,EAAOg6B,IAAS,CACpE,MAAMxB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,MAAO,EAAI,EAAK,CAAE,MAAO,EAAI,EAC3D,IAAI/0B,EAASmyB,EAAO,KAAK,IAAI,CAAE,MAAAp3B,EAAO,OAAQ,EAAE,EAAIw4B,CAAG,EACvD,OAAIvzB,aAAkB,UAClBA,EAAS,MAAMA,GACZA,EAAO,OAAO,OACf,CACE,QAAS,GACT,MAAO,IAAI80B,EAAK90B,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAAC,CACnG,EACU,CAAE,QAAS,GAAM,KAAMl1B,EAAO,KAAK,CAC7C,EACa01B,GAAgCD,GAAgBD,EAAoB,EACpEG,GAAWb,GAAS,CAAC3C,EAAQp3B,EAAOg6B,IAAS,CACtD,MAAMxB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,UAAW,UAAU,EAAK,CAAE,UAAW,UAAU,EAC/E,OAAOF,GAAOC,CAAI,EAAE3C,EAAQp3B,EAAOw4B,CAAG,CAC1C,EAEaqC,GAAWd,GAAS,CAAC3C,EAAQp3B,EAAOg6B,IACtCF,GAAOC,CAAI,EAAE3C,EAAQp3B,EAAOg6B,CAAI,EAG9Bc,GAAgBf,GAAS,MAAO3C,EAAQp3B,EAAOg6B,IAAS,CACjE,MAAMxB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,UAAW,UAAU,EAAK,CAAE,UAAW,UAAU,EAC/E,OAAOK,GAAYN,CAAI,EAAE3C,EAAQp3B,EAAOw4B,CAAG,CAC/C,EAEauC,GAAgBhB,GAAS,MAAO3C,EAAQp3B,EAAOg6B,IACjDK,GAAYN,CAAI,EAAE3C,EAAQp3B,EAAOg6B,CAAI,EAGnCgB,GAAejB,GAAS,CAAC3C,EAAQp3B,EAAOg6B,IAAS,CAC1D,MAAMxB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,UAAW,UAAU,EAAK,CAAE,UAAW,UAAU,EAC/E,OAAOM,GAAWP,CAAI,EAAE3C,EAAQp3B,EAAOw4B,CAAG,CAC9C,EAEayC,GAAelB,GAAS,CAAC3C,EAAQp3B,EAAOg6B,IAC1CM,GAAWP,CAAI,EAAE3C,EAAQp3B,EAAOg6B,CAAI,EAGlCkB,GAAoBnB,GAAS,MAAO3C,EAAQp3B,EAAOg6B,IAAS,CACrE,MAAMxB,EAAMwB,EAAO,CAAE,GAAGA,EAAM,UAAW,UAAU,EAAK,CAAE,UAAW,UAAU,EAC/E,OAAOU,GAAgBX,CAAI,EAAE3C,EAAQp3B,EAAOw4B,CAAG,CACnD,EAEa2C,GAAoBpB,GAAS,MAAO3C,EAAQp3B,EAAOg6B,IACrDU,GAAgBX,CAAI,EAAE3C,EAAQp3B,EAAOg6B,CAAI,ECpFvCoB,GAAO,qBACPC,GAAQ,cACRC,GAAO,wCACPC,GAAM,oBACNC,GAAQ,oBACRC,GAAS,sBAET9V,GAAW,gGAIX+V,GAAO,kFAIPC,GAAQC,GACZA,EAEE,IAAI,OAAO,mCAAmCA,CAAO,yDAAyD,EAD1G,yKAOFC,GAAQ,mGAUfC,GAAS,uDACR,SAASC,IAAQ,CACpB,OAAO,IAAI,OAAOD,GAAQ,GAAG,CACjC,CACO,MAAME,GAAO,sHACPC,GAAO,+XAKPC,GAAS,2IACTC,GAAS,iIAETC,GAAS,8EACTC,GAAY,mBAKZC,GAAe,WAGfC,GAAO,oBAEdC,GAAa,sNACNroB,GAAqB,IAAI,OAAO,IAAIqoB,EAAU,GAAG,EAC9D,SAASC,GAAWjxB,EAAM,CACtB,MAAMkxB,EAAO,8BAQb,OAPc,OAAOlxB,EAAK,WAAc,SAClCA,EAAK,YAAc,GACf,GAAGkxB,CAAI,GACPlxB,EAAK,YAAc,EACf,GAAGkxB,CAAI,YACP,GAAGA,CAAI,mBAAmBlxB,EAAK,SAAS,IAChD,GAAGkxB,CAAI,4BAEjB,CACO,SAASC,GAAKnxB,EAAM,CACvB,OAAO,IAAI,OAAO,IAAIixB,GAAWjxB,CAAI,CAAC,GAAG,CAC7C,CAEO,SAASoxB,GAASpxB,EAAM,CAC3B,MAAMmxB,EAAOF,GAAW,CAAE,UAAWjxB,EAAK,SAAS,CAAE,EAC/CqxB,EAAO,CAAC,GAAG,EACbrxB,EAAK,OACLqxB,EAAK,KAAK,EAAE,EAEZrxB,EAAK,QACLqxB,EAAK,KAAK,mCAAmC,EACjD,MAAMC,EAAY,GAAGH,CAAI,MAAME,EAAK,KAAK,GAAG,CAAC,IAC7C,OAAO,IAAI,OAAO,IAAIL,EAAU,OAAOM,CAAS,IAAI,CACxD,CACO,MAAMpyB,GAAUkpB,GAAW,CAC9B,MAAMmJ,EAAQnJ,EAAS,aAAYA,GAAA,YAAAA,EAAQ,UAAW,CAAC,KAAIA,GAAA,YAAAA,EAAQ,UAAW,EAAE,IAAM,YACtF,OAAO,IAAI,OAAO,IAAImJ,CAAK,GAAG,CAClC,EAEaC,GAAU,UACVC,GAAS,oBACTC,GAAU,oBAMVC,GAAY,YAEZC,GAAY,YCvGZC,GAA0BC,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF,IAAIpZ,EACJmZ,EAAK,OAASA,EAAK,KAAO,CAAA,GAC1BA,EAAK,KAAK,IAAMC,GACfpZ,EAAKmZ,EAAK,MAAM,WAAanZ,EAAG,SAAW,GAChD,CAAC,EACK4iB,GAAmB,CACrB,OAAQ,SACR,OAAQ,SACR,OAAQ,MACZ,EACaC,GAAkCF,EAAkB,oBAAqB,CAACxJ,EAAMC,IAAQ,CACjGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxB,MAAM0J,EAASF,GAAiB,OAAOxJ,EAAI,KAAK,EAChDD,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IAChB8F,GAAQ7F,EAAI,UAAY2J,EAAI,QAAUA,EAAI,mBAAqB,OAAO,kBACxE3J,EAAI,MAAQ6F,IACR7F,EAAI,UACJ2J,EAAI,QAAU3J,EAAI,MAElB2J,EAAI,iBAAmB3J,EAAI,MAEvC,CAAC,EACDD,EAAK,KAAK,MAAS3K,GAAY,EACvB4K,EAAI,UAAY5K,EAAQ,OAAS4K,EAAI,MAAQ5K,EAAQ,MAAQ4K,EAAI,QAGrE5K,EAAQ,OAAO,KAAK,CAChB,OAAAsU,EACA,KAAM,UACN,QAAS,OAAO1J,EAAI,OAAU,SAAWA,EAAI,MAAM,UAAYA,EAAI,MACnE,MAAO5K,EAAQ,MACf,UAAW4K,EAAI,UACf,KAAAD,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACY4J,GAAqCL,EAAkB,uBAAwB,CAACxJ,EAAMC,IAAQ,CACvGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxB,MAAM0J,EAASF,GAAiB,OAAOxJ,EAAI,KAAK,EAChDD,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IAChB8F,GAAQ7F,EAAI,UAAY2J,EAAI,QAAUA,EAAI,mBAAqB,OAAO,kBACxE3J,EAAI,MAAQ6F,IACR7F,EAAI,UACJ2J,EAAI,QAAU3J,EAAI,MAElB2J,EAAI,iBAAmB3J,EAAI,MAEvC,CAAC,EACDD,EAAK,KAAK,MAAS3K,GAAY,EACvB4K,EAAI,UAAY5K,EAAQ,OAAS4K,EAAI,MAAQ5K,EAAQ,MAAQ4K,EAAI,QAGrE5K,EAAQ,OAAO,KAAK,CAChB,OAAAsU,EACA,KAAM,YACN,QAAS,OAAO1J,EAAI,OAAU,SAAWA,EAAI,MAAM,UAAYA,EAAI,MACnE,MAAO5K,EAAQ,MACf,UAAW4K,EAAI,UACf,KAAAD,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACY6J,GACCN,EAAkB,sBAAuB,CAACxJ,EAAMC,IAAQ,CAClEsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxBD,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,IAAInZ,GACHA,EAAKmZ,EAAK,KAAK,KAAK,aAAenZ,EAAG,WAAaoZ,EAAI,MAC5D,CAAC,EACDD,EAAK,KAAK,MAAS3K,GAAY,CAC3B,GAAI,OAAOA,EAAQ,OAAU,OAAO4K,EAAI,MACpC,MAAM,IAAI,MAAM,oDAAoD,GACrD,OAAO5K,EAAQ,OAAU,SACtCA,EAAQ,MAAQ4K,EAAI,QAAU,OAAO,CAAC,EACtC8J,GAAwB1U,EAAQ,MAAO4K,EAAI,KAAK,IAAM,IAG5D5K,EAAQ,OAAO,KAAK,CAChB,OAAQ,OAAOA,EAAQ,MACvB,KAAM,kBACN,QAAS4K,EAAI,MACb,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACY+J,GAAsCR,EAAkB,wBAAyB,CAACxJ,EAAMC,IAAQ,OACzGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxBA,EAAI,OAASA,EAAI,QAAU,UAC3B,MAAMgK,GAAQpjB,EAAAoZ,EAAI,SAAJ,YAAApZ,EAAY,SAAS,OAC7B8iB,EAASM,EAAQ,MAAQ,SACzB,CAACC,EAASC,CAAO,EAAIC,GAA0BnK,EAAI,MAAM,EAC/DD,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IACtB4J,EAAI,OAAS3J,EAAI,OACjB2J,EAAI,QAAUM,EACdN,EAAI,QAAUO,EACVF,IACAL,EAAI,QAAUS,GACtB,CAAC,EACDrK,EAAK,KAAK,MAAS3K,GAAY,CAC3B,MAAM2L,EAAQ3L,EAAQ,MACtB,GAAI4U,EAAO,CACP,GAAI,CAAC,OAAO,UAAUjJ,CAAK,EAAG,CAU1B3L,EAAQ,OAAO,KAAK,CAChB,SAAUsU,EACV,OAAQ1J,EAAI,OACZ,KAAM,eACN,SAAU,GACV,MAAAe,EACA,KAAAhB,CACpB,CAAiB,EACD,MASJ,CACA,GAAI,CAAC,OAAO,cAAcgB,CAAK,EAAG,CAC1BA,EAAQ,EAER3L,EAAQ,OAAO,KAAK,CAChB,MAAA2L,EACA,KAAM,UACN,QAAS,OAAO,iBAChB,KAAM,kDACN,KAAAhB,EACA,OAAA2J,EACA,UAAW,GACX,SAAU,CAAC1J,EAAI,KACvC,CAAqB,EAID5K,EAAQ,OAAO,KAAK,CAChB,MAAA2L,EACA,KAAM,YACN,QAAS,OAAO,iBAChB,KAAM,kDACN,KAAAhB,EACA,OAAA2J,EACA,UAAW,GACX,SAAU,CAAC1J,EAAI,KACvC,CAAqB,EAEL,MACJ,CACJ,CACIe,EAAQkJ,GACR7U,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,MAAA2L,EACA,KAAM,YACN,QAAAkJ,EACA,UAAW,GACX,KAAAlK,EACA,SAAU,CAACC,EAAI,KAC/B,CAAa,EAEDe,EAAQmJ,GACR9U,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,MAAA2L,EACA,KAAM,UACN,QAAAmJ,EACA,UAAW,GACX,KAAAnK,EACA,SAAU,CAACC,EAAI,KAC/B,CAAa,CAET,CACJ,CAAC,EA0HYqK,GAAmCd,EAAkB,qBAAsB,CAACxJ,EAAMC,IAAQ,CACnG,IAAIpZ,EACJ0iB,GAAU,KAAKvJ,EAAMC,CAAG,GACvBpZ,EAAKmZ,EAAK,KAAK,KAAK,OAASnZ,EAAG,KAAQwO,GAAY,CACjD,MAAMkD,EAAMlD,EAAQ,MACpB,MAAO,CAACkV,GAAahS,CAAG,GAAKA,EAAI,SAAW,MAChD,GACAyH,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM8F,EAAQ9F,EAAK,KAAK,IAAI,SAAW,OAAO,kBAC1CC,EAAI,QAAU6F,IACd9F,EAAK,KAAK,IAAI,QAAUC,EAAI,QACpC,CAAC,EACDD,EAAK,KAAK,MAAS3K,GAAY,CAC3B,MAAM2L,EAAQ3L,EAAQ,MAEtB,GADe2L,EAAM,QACPf,EAAI,QACd,OACJ,MAAM0J,EAASa,GAAyBxJ,CAAK,EAC7C3L,EAAQ,OAAO,KAAK,CAChB,OAAAsU,EACA,KAAM,UACN,QAAS1J,EAAI,QACb,UAAW,GACX,MAAAe,EACA,KAAAhB,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACYwK,GAAmCjB,EAAkB,qBAAsB,CAACxJ,EAAMC,IAAQ,CACnG,IAAIpZ,EACJ0iB,GAAU,KAAKvJ,EAAMC,CAAG,GACvBpZ,EAAKmZ,EAAK,KAAK,KAAK,OAASnZ,EAAG,KAAQwO,GAAY,CACjD,MAAMkD,EAAMlD,EAAQ,MACpB,MAAO,CAACkV,GAAahS,CAAG,GAAKA,EAAI,SAAW,MAChD,GACAyH,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM8F,EAAQ9F,EAAK,KAAK,IAAI,SAAW,OAAO,kBAC1CC,EAAI,QAAU6F,IACd9F,EAAK,KAAK,IAAI,QAAUC,EAAI,QACpC,CAAC,EACDD,EAAK,KAAK,MAAS3K,GAAY,CAC3B,MAAM2L,EAAQ3L,EAAQ,MAEtB,GADe2L,EAAM,QACPf,EAAI,QACd,OACJ,MAAM0J,EAASa,GAAyBxJ,CAAK,EAC7C3L,EAAQ,OAAO,KAAK,CAChB,OAAAsU,EACA,KAAM,YACN,QAAS1J,EAAI,QACb,UAAW,GACX,MAAAe,EACA,KAAAhB,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACYyK,GAAsClB,EAAkB,wBAAyB,CAACxJ,EAAMC,IAAQ,CACzG,IAAIpZ,EACJ0iB,GAAU,KAAKvJ,EAAMC,CAAG,GACvBpZ,EAAKmZ,EAAK,KAAK,KAAK,OAASnZ,EAAG,KAAQwO,GAAY,CACjD,MAAMkD,EAAMlD,EAAQ,MACpB,MAAO,CAACkV,GAAahS,CAAG,GAAKA,EAAI,SAAW,MAChD,GACAyH,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IACtB4J,EAAI,QAAU3J,EAAI,OAClB2J,EAAI,QAAU3J,EAAI,OAClB2J,EAAI,OAAS3J,EAAI,MACrB,CAAC,EACDD,EAAK,KAAK,MAAS3K,GAAY,CAC3B,MAAM2L,EAAQ3L,EAAQ,MAChBsV,EAAS3J,EAAM,OACrB,GAAI2J,IAAW1K,EAAI,OACf,OACJ,MAAM0J,EAASa,GAAyBxJ,CAAK,EACvC4J,EAASD,EAAS1K,EAAI,OAC5B5K,EAAQ,OAAO,KAAK,CAChB,OAAAsU,EACA,GAAIiB,EAAS,CAAE,KAAM,UAAW,QAAS3K,EAAI,QAAW,CAAE,KAAM,YAAa,QAASA,EAAI,MAAM,EAChG,UAAW,GACX,MAAO,GACP,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACY4K,GAAsCrB,EAAkB,wBAAyB,CAACxJ,EAAMC,IAAQ,CACzG,IAAIpZ,EAAIC,EACRyiB,GAAU,KAAKvJ,EAAMC,CAAG,EACxBD,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IACtB4J,EAAI,OAAS3J,EAAI,OACbA,EAAI,UACJ2J,EAAI,WAAaA,EAAI,SAAW,IAAI,KACpCA,EAAI,SAAS,IAAI3J,EAAI,OAAO,EAEpC,CAAC,EACGA,EAAI,SACHpZ,EAAKmZ,EAAK,MAAM,QAAUnZ,EAAG,MAASwO,GAAY,CAC/C4K,EAAI,QAAQ,UAAY,EACpB,CAAAA,EAAI,QAAQ,KAAK5K,EAAQ,KAAK,GAElCA,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ4K,EAAI,OACZ,MAAO5K,EAAQ,MACf,GAAI4K,EAAI,QAAU,CAAE,QAASA,EAAI,QAAQ,UAAU,EAAK,GACxD,KAAAD,EACA,SAAU,CAACC,EAAI,KAC/B,CAAa,CACL,IAECnZ,EAAKkZ,EAAK,MAAM,QAAUlZ,EAAG,MAAQ,IAAM,CAAE,EACtD,CAAC,EACYgkB,GAA+BtB,EAAkB,iBAAkB,CAACxJ,EAAMC,IAAQ,CAC3F4K,GAAsB,KAAK7K,EAAMC,CAAG,EACpCD,EAAK,KAAK,MAAS3K,GAAY,CAC3B4K,EAAI,QAAQ,UAAY,EACpB,CAAAA,EAAI,QAAQ,KAAK5K,EAAQ,KAAK,GAElCA,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,QACR,MAAOA,EAAQ,MACf,QAAS4K,EAAI,QAAQ,SAAQ,EAC7B,KAAAD,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACY8K,GAAmCvB,EAAkB,qBAAsB,CAACxJ,EAAMC,IAAQ,CACnGA,EAAI,UAAYA,EAAI,QAAU+K,IAC9BH,GAAsB,KAAK7K,EAAMC,CAAG,CACxC,CAAC,EACYgL,GAAmCzB,EAAkB,qBAAsB,CAACxJ,EAAMC,IAAQ,CACnGA,EAAI,UAAYA,EAAI,QAAUiL,IAC9BL,GAAsB,KAAK7K,EAAMC,CAAG,CACxC,CAAC,EACYkL,GAAkC3B,EAAkB,oBAAqB,CAACxJ,EAAMC,IAAQ,CACjGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxB,MAAMmL,EAAeC,GAAiBpL,EAAI,QAAQ,EAC5CqL,EAAU,IAAI,OAAO,OAAOrL,EAAI,UAAa,SAAW,MAAMA,EAAI,QAAQ,IAAImL,CAAY,GAAKA,CAAY,EACjHnL,EAAI,QAAUqL,EACdtL,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IACtB4J,EAAI,WAAaA,EAAI,SAAW,IAAI,KACpCA,EAAI,SAAS,IAAI0B,CAAO,CAC5B,CAAC,EACDtL,EAAK,KAAK,MAAS3K,GAAY,CACvBA,EAAQ,MAAM,SAAS4K,EAAI,SAAUA,EAAI,QAAQ,GAErD5K,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,WACR,SAAU4K,EAAI,SACd,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACYsL,GAAoC/B,EAAkB,sBAAuB,CAACxJ,EAAMC,IAAQ,CACrGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxB,MAAMqL,EAAU,IAAI,OAAO,IAAID,GAAiBpL,EAAI,MAAM,CAAC,IAAI,EAC/DA,EAAI,UAAYA,EAAI,QAAUqL,GAC9BtL,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IACtB4J,EAAI,WAAaA,EAAI,SAAW,IAAI,KACpCA,EAAI,SAAS,IAAI0B,CAAO,CAC5B,CAAC,EACDtL,EAAK,KAAK,MAAS3K,GAAY,CACvBA,EAAQ,MAAM,WAAW4K,EAAI,MAAM,GAEvC5K,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,cACR,OAAQ4K,EAAI,OACZ,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACYuL,GAAkChC,EAAkB,oBAAqB,CAACxJ,EAAMC,IAAQ,CACjGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxB,MAAMqL,EAAU,IAAI,OAAO,KAAKD,GAAiBpL,EAAI,MAAM,CAAC,GAAG,EAC/DA,EAAI,UAAYA,EAAI,QAAUqL,GAC9BtL,EAAK,KAAK,SAAS,KAAMA,GAAS,CAC9B,MAAM4J,EAAM5J,EAAK,KAAK,IACtB4J,EAAI,WAAaA,EAAI,SAAW,IAAI,KACpCA,EAAI,SAAS,IAAI0B,CAAO,CAC5B,CAAC,EACDtL,EAAK,KAAK,MAAS3K,GAAY,CACvBA,EAAQ,MAAM,SAAS4K,EAAI,MAAM,GAErC5K,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,YACR,OAAQ4K,EAAI,OACZ,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EAyCYwL,GAAmCjC,EAAkB,qBAAsB,CAACxJ,EAAMC,IAAQ,CACnGsJ,GAAU,KAAKvJ,EAAMC,CAAG,EACxBD,EAAK,KAAK,MAAS3K,GAAY,CAC3BA,EAAQ,MAAQ4K,EAAI,GAAG5K,EAAQ,KAAK,CACxC,CACJ,CAAC,EC9jBM,MAAMqW,EAAI,CACb,YAAYh0B,EAAO,GAAI,CACnB,KAAK,QAAU,CAAA,EACf,KAAK,OAAS,EACV,OACA,KAAK,KAAOA,EACpB,CACA,SAAS2oB,EAAI,CACT,KAAK,QAAU,EACfA,EAAG,IAAI,EACP,KAAK,QAAU,CACnB,CACA,MAAMtF,EAAK,CACP,GAAI,OAAOA,GAAQ,WAAY,CAC3BA,EAAI,KAAM,CAAE,UAAW,MAAM,CAAE,EAC/BA,EAAI,KAAM,CAAE,UAAW,OAAO,CAAE,EAChC,MACJ,CAEA,MAAM4Q,EADU5Q,EACM,MAAM;AAAA,CAAI,EAAE,OAAQ9W,GAAMA,CAAC,EAC3C2nB,EAAY,KAAK,IAAI,GAAGD,EAAM,IAAK1nB,GAAMA,EAAE,OAASA,EAAE,UAAS,EAAG,MAAM,CAAC,EACzE4nB,EAAWF,EAAM,IAAK1nB,GAAMA,EAAE,MAAM2nB,CAAS,CAAC,EAAE,IAAK3nB,GAAM,IAAI,OAAO,KAAK,OAAS,CAAC,EAAIA,CAAC,EAChG,UAAW0C,KAAQklB,EACf,KAAK,QAAQ,KAAKllB,CAAI,CAE9B,CACA,SAAU,CACN,MAAM2b,EAAI,SACJ5qB,EAAO,uBAAM,KAEbi0B,EAAQ,CAAC,KADC,uBAAM,UAAW,CAAC,EAAE,GACV,IAAK1nB,GAAM,KAAKA,CAAC,EAAE,CAAC,EAE9C,OAAO,IAAIqe,EAAE,GAAG5qB,EAAMi0B,EAAM,KAAK;AAAA,CAAI,CAAC,CAC1C,CACJ,CClCO,MAAM7D,GAAU,CACnB,MAAO,EACP,MAAO,EACP,MAAO,CACX,ECGagE,GAAyBtC,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,OAC/E,IAAIpZ,EACJmZ,IAASA,EAAO,IAChBA,EAAK,KAAK,IAAMC,EAChBD,EAAK,KAAK,IAAMA,EAAK,KAAK,KAAO,GACjCA,EAAK,KAAK,QAAU8H,GACpB,MAAMrE,EAAS,CAAC,GAAIzD,EAAK,KAAK,IAAI,QAAU,CAAA,CAAG,EAE3CA,EAAK,KAAK,OAAO,IAAI,WAAW,GAChCyD,EAAO,QAAQzD,CAAI,EAEvB,UAAW+L,KAAMtI,EACb,UAAWpD,KAAM0L,EAAG,KAAK,SACrB1L,EAAGL,CAAI,EAGf,GAAIyD,EAAO,SAAW,GAGjB5c,EAAKmZ,EAAK,MAAM,WAAanZ,EAAG,SAAW,KAC5CA,EAAAmZ,EAAK,KAAK,WAAV,MAAAnZ,EAAoB,KAAK,IAAM,CAC3BmZ,EAAK,KAAK,IAAMA,EAAK,KAAK,KAC9B,OAEC,CACD,MAAMgM,EAAY,CAAC3W,EAASoO,EAAQiB,IAAQ,CACxC,IAAIuH,EAAYC,GAAa7W,CAAO,EAChC8W,EACJ,UAAWJ,KAAMtI,EAAQ,CACrB,GAAIsI,EAAG,KAAK,IAAI,MAIZ,GAHIK,GAAuB/W,CAAO,GAG9B,CADc0W,EAAG,KAAK,IAAI,KAAK1W,CAAO,EAEtC,iBAEC4W,EACL,SAEJ,MAAMI,EAAUhX,EAAQ,OAAO,OACzBzR,EAAImoB,EAAG,KAAK,MAAM1W,CAAO,EAC/B,GAAIzR,aAAa,UAAW8gB,GAAA,YAAAA,EAAK,SAAU,GACvC,MAAM,IAAIyB,GAEd,GAAIgG,GAAevoB,aAAa,QAC5BuoB,GAAeA,GAAe,QAAQ,QAAO,GAAI,KAAK,SAAY,CAC9D,MAAMvoB,EACUyR,EAAQ,OAAO,SACfgX,IAEXJ,IACDA,EAAYC,GAAa7W,EAASgX,CAAO,GACjD,CAAC,MAEA,CAED,GADgBhX,EAAQ,OAAO,SACfgX,EACZ,SACCJ,IACDA,EAAYC,GAAa7W,EAASgX,CAAO,EACjD,CACJ,CACA,OAAIF,EACOA,EAAY,KAAK,IACb9W,CACV,EAEEA,CACX,EACMiX,EAAqB,CAACC,EAAQlX,EAASqP,IAAQ,CAEjD,GAAIwH,GAAaK,CAAM,EACnB,OAAAA,EAAO,QAAU,GACVA,EAGX,MAAMC,EAAcR,EAAU3W,EAASoO,EAAQiB,CAAG,EAClD,GAAI8H,aAAuB,QAAS,CAChC,GAAI9H,EAAI,QAAU,GACd,MAAM,IAAIyB,GACd,OAAOqG,EAAY,KAAMA,GAAgBxM,EAAK,KAAK,MAAMwM,EAAa9H,CAAG,CAAC,CAC9E,CACA,OAAO1E,EAAK,KAAK,MAAMwM,EAAa9H,CAAG,CAC3C,EACA1E,EAAK,KAAK,IAAM,CAAC3K,EAASqP,IAAQ,CAC9B,GAAIA,EAAI,WACJ,OAAO1E,EAAK,KAAK,MAAM3K,EAASqP,CAAG,EAEvC,GAAIA,EAAI,YAAc,WAAY,CAG9B,MAAM6H,EAASvM,EAAK,KAAK,MAAM,CAAE,MAAO3K,EAAQ,MAAO,OAAQ,CAAA,CAAE,EAAI,CAAE,GAAGqP,EAAK,WAAY,GAAM,EACjG,OAAI6H,aAAkB,QACXA,EAAO,KAAMA,GACTD,EAAmBC,EAAQlX,EAASqP,CAAG,CACjD,EAEE4H,EAAmBC,EAAQlX,EAASqP,CAAG,CAClD,CAEA,MAAMvzB,EAAS6uB,EAAK,KAAK,MAAM3K,EAASqP,CAAG,EAC3C,GAAIvzB,aAAkB,QAAS,CAC3B,GAAIuzB,EAAI,QAAU,GACd,MAAM,IAAIyB,GACd,OAAOh1B,EAAO,KAAMA,GAAW66B,EAAU76B,EAAQsyB,EAAQiB,CAAG,CAAC,CACjE,CACA,OAAOsH,EAAU76B,EAAQsyB,EAAQiB,CAAG,CACxC,CACJ,CAEA+H,GAAgBzM,EAAM,YAAa,KAAO,CACtC,SAAW9zB,GAAU,OACjB,GAAI,CACA,MAAMgD,EAAIw3B,GAAU1G,EAAM9zB,CAAK,EAC/B,OAAOgD,EAAE,QAAU,CAAE,MAAOA,EAAE,IAAI,EAAK,CAAE,QAAQ2X,EAAA3X,EAAE,QAAF,YAAA2X,EAAS,MAAM,CACpE,MACU,CACN,OAAOggB,GAAe7G,EAAM9zB,CAAK,EAAE,KAAMgD,GAAC,OAAM,OAAAA,EAAE,QAAU,CAAE,MAAOA,EAAE,IAAI,EAAK,CAAE,QAAQ2X,EAAA3X,EAAE,QAAF,YAAA2X,EAAS,MAAM,EAAG,CAChH,CACJ,EACA,OAAQ,MACR,QAAS,CACjB,EAAM,CACN,CAAC,EAEY6lB,GAA2BlD,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,OACnF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,QAAU,CAAC,KAAInZ,EAAAmZ,GAAA,YAAAA,EAAM,KAAK,MAAX,YAAAnZ,EAAgB,WAAY,CAAA,CAAG,EAAE,IAAG,GAAM8lB,GAAe3M,EAAK,KAAK,GAAG,EAC/FA,EAAK,KAAK,MAAQ,CAAC3K,EAASzR,IAAM,CAC9B,GAAIqc,EAAI,OACJ,GAAI,CACA5K,EAAQ,MAAQ,OAAOA,EAAQ,KAAK,CACxC,MACU,CAAE,CAChB,OAAI,OAAOA,EAAQ,OAAU,UAE7BA,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,MAAOA,EAAQ,MACf,KAAA2K,CACZ,CAAS,EACM3K,CACX,CACJ,CAAC,EACYuX,GAAiCpD,EAAkB,mBAAoB,CAACxJ,EAAMC,IAAQ,CAE/F4M,GAA6B,KAAK7M,EAAMC,CAAG,EAC3CyM,GAAW,KAAK1M,EAAMC,CAAG,CAC7B,CAAC,EACY6M,GAAyBtD,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EA,EAAI,UAAYA,EAAI,QAAU8M,IAC9BH,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACY+M,GAAyBxD,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/E,GAAIA,EAAI,QAAS,CAWb,MAAMW,EAVa,CACf,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,CAChB,EAC6BX,EAAI,OAAO,EAChC,GAAIW,IAAM,OACN,MAAM,IAAI,MAAM,0BAA0BX,EAAI,OAAO,GAAG,EAC5DA,EAAI,UAAYA,EAAI,QAAUgN,GAAarM,CAAC,EAChD,MAEIX,EAAI,UAAYA,EAAI,QAAUgN,GAAY,GAC9CL,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYiN,GAA0B1D,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFA,EAAI,UAAYA,EAAI,QAAUkN,IAC9BP,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYmN,GAAwB5D,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAC7E2M,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,MAAS3K,GAAY,OAC3B,GAAI,CAEA,MAAMgY,EAAUhY,EAAQ,MAAM,KAAI,EAGlC,GAAI,CAAC4K,EAAI,aAAapZ,EAAAoZ,EAAI,WAAJ,YAAApZ,EAAc,UAAWymB,GAAqB,QAC5D,CAAC,gBAAgB,KAAKD,CAAO,EAAG,CAChChY,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,KAAM,qBACN,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KACvC,CAAqB,EACD,MACJ,CAGJ,MAAMsN,EAAM,IAAI,IAAIF,CAAO,EACvBpN,EAAI,WACJA,EAAI,SAAS,UAAY,EACpBA,EAAI,SAAS,KAAKsN,EAAI,QAAQ,GAC/BlY,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,KAAM,mBACN,QAAS4K,EAAI,SAAS,OACtB,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KACvC,CAAqB,GAGLA,EAAI,WACJA,EAAI,SAAS,UAAY,EACpBA,EAAI,SAAS,KAAKsN,EAAI,SAAS,SAAS,GAAG,EAAIA,EAAI,SAAS,MAAM,EAAG,EAAE,EAAIA,EAAI,QAAQ,GACxFlY,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,KAAM,mBACN,QAAS4K,EAAI,SAAS,OACtB,MAAO5K,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KACvC,CAAqB,GAILA,EAAI,UAEJ5K,EAAQ,MAAQkY,EAAI,KAIpBlY,EAAQ,MAAQgY,EAEpB,MACJ,MACU,CACNhY,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC/B,CAAa,CACL,CACJ,CACJ,CAAC,EACYuN,GAA0BhE,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFA,EAAI,UAAYA,EAAI,QAAUwN,GAAa,GAC3Cb,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYyN,GAA2BlE,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFA,EAAI,UAAYA,EAAI,QAAU0N,IAC9Bf,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EAMY2N,GAAyBpE,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EA,EAAI,UAAYA,EAAI,QAAU4N,IAC9BjB,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACY6N,GAA0BtE,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFA,EAAI,UAAYA,EAAI,QAAU8N,IAC9BnB,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACY+N,GAAyBxE,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EA,EAAI,UAAYA,EAAI,QAAUgO,IAC9BrB,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYiO,GAAwB1E,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAC7EA,EAAI,UAAYA,EAAI,QAAUkO,IAC9BvB,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYmO,GAA0B5E,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFA,EAAI,UAAYA,EAAI,QAAUoO,IAC9BzB,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYqO,GAAgC9E,EAAkB,kBAAmB,CAACxJ,EAAMC,IAAQ,CAC7FA,EAAI,UAAYA,EAAI,QAAUsO,GAAiBtO,CAAG,GAClD2M,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYuO,GAA4BhF,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrFA,EAAI,UAAYA,EAAI,QAAUwO,IAC9B7B,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYyO,GAA4BlF,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrFA,EAAI,UAAYA,EAAI,QAAU0O,GAAa1O,CAAG,GAC9C2M,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACY2O,GAAgCpF,EAAkB,kBAAmB,CAACxJ,EAAMC,IAAQ,CAC7FA,EAAI,UAAYA,EAAI,QAAU4O,IAC9BjC,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACY6O,GAAyBtF,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EA,EAAI,UAAYA,EAAI,QAAU8O,IAC9BnC,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,IAAI,OAAS,MAC3B,CAAC,EACYgP,GAAyBxF,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EA,EAAI,UAAYA,EAAI,QAAUgP,IAC9BrC,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,IAAI,OAAS,OACvBA,EAAK,KAAK,MAAS3K,GAAY,CAC3B,GAAI,CAEA,IAAI,IAAI,WAAWA,EAAQ,KAAK,GAAG,CAEvC,MACM,CACFA,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,OACR,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC/B,CAAa,CACL,CACJ,CACJ,CAAC,EAMYiP,GAA2B1F,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFA,EAAI,UAAYA,EAAI,QAAUkP,IAC9BvC,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EACYmP,GAA2B5F,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFA,EAAI,UAAYA,EAAI,QAAUoP,IAC9BzC,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,MAAS3K,GAAY,CAC3B,MAAMziB,EAAQyiB,EAAQ,MAAM,MAAM,GAAG,EACrC,GAAI,CACA,GAAIziB,EAAM,SAAW,EACjB,MAAM,IAAI,MACd,KAAM,CAAC08B,EAASt7B,CAAM,EAAIpB,EAC1B,GAAI,CAACoB,EACD,MAAM,IAAI,MACd,MAAMu7B,EAAY,OAAOv7B,CAAM,EAC/B,GAAI,GAAGu7B,CAAS,KAAOv7B,EACnB,MAAM,IAAI,MACd,GAAIu7B,EAAY,GAAKA,EAAY,IAC7B,MAAM,IAAI,MAEd,IAAI,IAAI,WAAWD,CAAO,GAAG,CACjC,MACM,CACFja,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,SACR,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC/B,CAAa,CACL,CACJ,CACJ,CAAC,EAEM,SAASuP,GAAcpN,EAAM,CAChC,GAAIA,IAAS,GACT,MAAO,GAIX,GAFI,KAAK,KAAKA,CAAI,GAEdA,EAAK,OAAS,IAAM,EACpB,MAAO,GACX,GAAI,CAEA,YAAKA,CAAI,EACF,EACX,MACM,CACF,MAAO,EACX,CACJ,CACO,MAAMqN,GAA2BjG,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFA,EAAI,UAAYA,EAAI,QAAUyP,IAC9B9C,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,IAAI,gBAAkB,SAChCA,EAAK,KAAK,MAAS3K,GAAY,CACvBma,GAAcna,EAAQ,KAAK,GAE/BA,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,SACR,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EAEM,SAAS0P,GAAiBvN,EAAM,CACnC,GAAI,CAACwN,GAAkB,KAAKxN,CAAI,EAC5B,MAAO,GACX,MAAMkG,EAASlG,EAAK,QAAQ,QAAUhO,GAAOA,IAAM,IAAM,IAAM,GAAI,EAC7Dyb,EAASvH,EAAO,OAAO,KAAK,KAAKA,EAAO,OAAS,CAAC,EAAI,EAAG,GAAG,EAClE,OAAOkH,GAAcK,CAAM,CAC/B,CACO,MAAMC,GAA8BtG,EAAkB,gBAAiB,CAACxJ,EAAMC,IAAQ,CACzFA,EAAI,UAAYA,EAAI,QAAU2P,IAC9BhD,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,IAAI,gBAAkB,YAChCA,EAAK,KAAK,MAAS3K,GAAY,CACvBsa,GAAiBta,EAAQ,KAAK,GAElCA,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,YACR,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EACY8P,GAAyBvG,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EA,EAAI,UAAYA,EAAI,QAAU+P,IAC9BpD,GAAiB,KAAK5M,EAAMC,CAAG,CACnC,CAAC,EAEM,SAASgQ,GAAWpY,EAAOqY,EAAY,KAAM,CAChD,GAAI,CACA,MAAMC,EAActY,EAAM,MAAM,GAAG,EACnC,GAAIsY,EAAY,SAAW,EACvB,MAAO,GACX,KAAM,CAACC,CAAM,EAAID,EACjB,GAAI,CAACC,EACD,MAAO,GAEX,MAAMC,EAAe,KAAK,MAAM,KAAKD,CAAM,CAAC,EAK5C,MAJI,UAASC,IAAgBA,GAAA,YAAAA,EAAc,OAAQ,OAE/C,CAACA,EAAa,KAEdH,IAAc,EAAE,QAASG,IAAiBA,EAAa,MAAQH,GAGvE,MACM,CACF,MAAO,EACX,CACJ,CACO,MAAMI,GAAwB9G,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAC7E2M,GAAiB,KAAK5M,EAAMC,CAAG,EAC/BD,EAAK,KAAK,MAAS3K,GAAY,CACvB4a,GAAW5a,EAAQ,MAAO4K,EAAI,GAAG,GAErC5K,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,MAAOA,EAAQ,MACf,KAAA2K,EACA,SAAU,CAACC,EAAI,KAC3B,CAAS,CACL,CACJ,CAAC,EAeYsQ,GAA2B/G,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,QAAUA,EAAK,KAAK,IAAI,SAAWwQ,GAC7CxQ,EAAK,KAAK,MAAQ,CAAC3K,EAAS6Q,IAAS,CACjC,GAAIjG,EAAI,OACJ,GAAI,CACA5K,EAAQ,MAAQ,OAAOA,EAAQ,KAAK,CACxC,MACU,CAAE,CAChB,MAAM2L,EAAQ3L,EAAQ,MACtB,GAAI,OAAO2L,GAAU,UAAY,CAAC,OAAO,MAAMA,CAAK,GAAK,OAAO,SAASA,CAAK,EAC1E,OAAO3L,EAEX,MAAMob,EAAW,OAAOzP,GAAU,SAC5B,OAAO,MAAMA,CAAK,EACd,MACC,OAAO,SAASA,CAAK,EAElB,OADA,WAER,OACN,OAAA3L,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,MAAA2L,EACA,KAAAhB,EACA,GAAIyQ,EAAW,CAAE,SAAAA,CAAQ,EAAK,EAC1C,CAAS,EACMpb,CACX,CACJ,CAAC,EACYqb,GAAiClH,EAAkB,mBAAoB,CAACxJ,EAAMC,IAAQ,CAC/F0Q,GAA6B,KAAK3Q,EAAMC,CAAG,EAC3CsQ,GAAW,KAAKvQ,EAAMC,CAAG,CAC7B,CAAC,EACY2Q,GAA4BpH,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,QAAU6Q,GACpB7Q,EAAK,KAAK,MAAQ,CAAC3K,EAAS6Q,IAAS,CACjC,GAAIjG,EAAI,OACJ,GAAI,CACA5K,EAAQ,MAAQ,EAAQA,EAAQ,KACpC,MACU,CAAE,CAChB,MAAM2L,EAAQ3L,EAAQ,MACtB,OAAI,OAAO2L,GAAU,WAErB3L,EAAQ,OAAO,KAAK,CAChB,SAAU,UACV,KAAM,eACN,MAAA2L,EACA,KAAAhB,CACZ,CAAS,EACM3K,CACX,CACJ,CAAC,EA8EYyb,GAA4BtH,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAS3K,GAAYA,CACnC,CAAC,EACY0b,GAA0BvH,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,CAAC3K,EAAS6Q,KACxB7Q,EAAQ,OAAO,KAAK,CAChB,SAAU,QACV,KAAM,eACN,MAAOA,EAAQ,MACf,KAAA2K,CACZ,CAAS,EACM3K,EAEf,CAAC,EAwCD,SAAS2b,GAAkB7/B,EAAQ8/B,EAAO18B,EAAO,CACzCpD,EAAO,OAAO,QACd8/B,EAAM,OAAO,KAAK,GAAGC,GAAkB38B,EAAOpD,EAAO,MAAM,CAAC,EAEhE8/B,EAAM,MAAM18B,CAAK,EAAIpD,EAAO,KAChC,CACO,MAAMggC,GAA0B3H,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,MAAM1D,EAAQ3L,EAAQ,MACtB,GAAI,CAAC,MAAM,QAAQ2L,CAAK,EACpB,OAAA3L,EAAQ,OAAO,KAAK,CAChB,SAAU,QACV,KAAM,eACN,MAAA2L,EACA,KAAAhB,CAChB,CAAa,EACM3K,EAEXA,EAAQ,MAAQ,MAAM2L,EAAM,MAAM,EAClC,MAAMoQ,EAAQ,CAAA,EACd,QAAS,EAAI,EAAG,EAAIpQ,EAAM,OAAQ,IAAK,CACnC,MAAM1R,EAAO0R,EAAM,CAAC,EACd7vB,EAAS8uB,EAAI,QAAQ,KAAK,IAAI,CAChC,MAAO3Q,EACP,OAAQ,CAAA,CACxB,EAAeoV,CAAG,EACFvzB,aAAkB,QAClBigC,EAAM,KAAKjgC,EAAO,KAAMA,GAAW6/B,GAAkB7/B,EAAQkkB,EAAS,CAAC,CAAC,CAAC,EAGzE2b,GAAkB7/B,EAAQkkB,EAAS,CAAC,CAE5C,CACA,OAAI+b,EAAM,OACC,QAAQ,IAAIA,CAAK,EAAE,KAAK,IAAM/b,CAAO,EAEzCA,CACX,CACJ,CAAC,EACD,SAASgc,GAAqBlgC,EAAQ8/B,EAAOjmC,EAAKg2B,EAAOsQ,EAAcC,EAAe,CAClF,MAAMC,EAAYxmC,KAAOg2B,EACzB,GAAI7vB,EAAO,OAAO,OAAQ,CAEtB,GAAImgC,GAAgBC,GAAiB,CAACC,EAClC,OAEJP,EAAM,OAAO,KAAK,GAAGC,GAAkBlmC,EAAKmG,EAAO,MAAM,CAAC,CAC9D,CACA,GAAI,CAACqgC,GAAa,CAACF,EAAc,CACxBngC,EAAO,OAAO,QACf8/B,EAAM,OAAO,KAAK,CACd,KAAM,eACN,SAAU,cACV,MAAO,OACP,KAAM,CAACjmC,CAAG,CAC1B,CAAa,EAEL,MACJ,CACImG,EAAO,QAAU,OACbqgC,IACAP,EAAM,MAAMjmC,CAAG,EAAI,QAIvBimC,EAAM,MAAMjmC,CAAG,EAAImG,EAAO,KAElC,CACA,SAASsgC,GAAaxR,EAAK,aACvB,MAAM/xB,EAAO,OAAO,KAAK+xB,EAAI,KAAK,EAClC,UAAW9xB,KAAKD,EACZ,GAAI,GAACy2B,GAAAjG,GAAA5X,GAAAD,EAAAoZ,EAAI,QAAJ,YAAApZ,EAAY1Y,KAAZ,YAAA2Y,EAAgB,OAAhB,YAAA4X,EAAsB,SAAtB,MAAAiG,EAA8B,IAAI,aACnC,MAAM,IAAI,MAAM,2BAA2Bx2B,CAAC,0BAA0B,EAG9E,MAAMujC,EAAQC,GAAkB1R,EAAI,KAAK,EACzC,MAAO,CACH,GAAGA,EACH,KAAA/xB,EACA,OAAQ,IAAI,IAAIA,CAAI,EACpB,QAASA,EAAK,OACd,aAAc,IAAI,IAAIwjC,CAAK,CACnC,CACA,CACA,SAASE,GAAeR,EAAOpQ,EAAO3L,EAASqP,EAAKzE,EAAKD,EAAM,CAC3D,MAAM6R,EAAe,CAAA,EACfC,EAAS7R,EAAI,OACb8R,EAAY9R,EAAI,SAAS,KACzB+R,EAAID,EAAU,IAAI,KAClBT,EAAeS,EAAU,QAAU,WACnCR,EAAgBQ,EAAU,SAAW,WAC3C,UAAW/mC,KAAOg2B,EAAO,CAKrB,GAFIh2B,IAAQ,aAER8mC,EAAO,IAAI9mC,CAAG,EACd,SACJ,GAAIgnC,IAAM,QAAS,CACfH,EAAa,KAAK7mC,CAAG,EACrB,QACJ,CACA,MAAMkE,EAAI6iC,EAAU,IAAI,CAAE,MAAO/Q,EAAMh2B,CAAG,EAAG,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EAC1Dx1B,aAAa,QACbkiC,EAAM,KAAKliC,EAAE,KAAMA,GAAMmiC,GAAqBniC,EAAGmmB,EAASrqB,EAAKg2B,EAAOsQ,EAAcC,CAAa,CAAC,CAAC,EAGnGF,GAAqBniC,EAAGmmB,EAASrqB,EAAKg2B,EAAOsQ,EAAcC,CAAa,CAEhF,CASA,OARIM,EAAa,QACbxc,EAAQ,OAAO,KAAK,CAChB,KAAM,oBACN,KAAMwc,EACN,MAAA7Q,EACA,KAAAhB,CACZ,CAAS,EAEAoR,EAAM,OAEJ,QAAQ,IAAIA,CAAK,EAAE,KAAK,IACpB/b,CACV,EAHUA,CAIf,CACO,MAAM4c,GAA2BzI,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CAEnF6L,GAAS,KAAK9L,EAAMC,CAAG,EAEvB,MAAMiS,EAAO,OAAO,yBAAyBjS,EAAK,OAAO,EACzD,GAAI,EAACiS,GAAA,MAAAA,EAAM,KAAK,CACZ,MAAMC,EAAKlS,EAAI,MACf,OAAO,eAAeA,EAAK,QAAS,CAChC,IAAK,IAAM,CACP,MAAMmS,EAAQ,CAAE,GAAGD,CAAE,EACrB,cAAO,eAAelS,EAAK,QAAS,CAChC,MAAOmS,CAC3B,CAAiB,EACMA,CACX,CACZ,CAAS,CACL,CACA,MAAMC,EAAcC,GAAY,IAAMb,GAAaxR,CAAG,CAAC,EACvDwM,GAAgBzM,EAAK,KAAM,aAAc,IAAM,CAC3C,MAAMmD,EAAQlD,EAAI,MACZsS,EAAa,CAAA,EACnB,UAAWvnC,KAAOm4B,EAAO,CACrB,MAAMxL,EAAQwL,EAAMn4B,CAAG,EAAE,KACzB,GAAI2sB,EAAM,OAAQ,CACd4a,EAAWvnC,CAAG,IAAMunC,EAAWvnC,CAAG,EAAI,IAAI,KAC1C,UAAW41B,KAAKjJ,EAAM,OAClB4a,EAAWvnC,CAAG,EAAE,IAAI41B,CAAC,CAC7B,CACJ,CACA,OAAO2R,CACX,CAAC,EACD,MAAMpQ,EAAWqQ,GACXC,EAAWxS,EAAI,SACrB,IAAI/zB,EACJ8zB,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChCx4B,IAAUA,EAAQmmC,EAAY,OAC9B,MAAMrR,EAAQ3L,EAAQ,MACtB,GAAI,CAAC8M,EAASnB,CAAK,EACf,OAAA3L,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,MAAA2L,EACA,KAAAhB,CAChB,CAAa,EACM3K,EAEXA,EAAQ,MAAQ,CAAA,EAChB,MAAM+b,EAAQ,CAAA,EACRjO,EAAQj3B,EAAM,MACpB,UAAWlB,KAAOkB,EAAM,KAAM,CAC1B,MAAM65B,EAAK5C,EAAMn4B,CAAG,EACdsmC,EAAevL,EAAG,KAAK,QAAU,WACjCwL,EAAgBxL,EAAG,KAAK,SAAW,WACnC72B,EAAI62B,EAAG,KAAK,IAAI,CAAE,MAAO/E,EAAMh2B,CAAG,EAAG,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EACxDx1B,aAAa,QACbkiC,EAAM,KAAKliC,EAAE,KAAMA,GAAMmiC,GAAqBniC,EAAGmmB,EAASrqB,EAAKg2B,EAAOsQ,EAAcC,CAAa,CAAC,CAAC,EAGnGF,GAAqBniC,EAAGmmB,EAASrqB,EAAKg2B,EAAOsQ,EAAcC,CAAa,CAEhF,CACA,OAAKkB,EAGEb,GAAeR,EAAOpQ,EAAO3L,EAASqP,EAAK2N,EAAY,MAAOrS,CAAI,EAF9DoR,EAAM,OAAS,QAAQ,IAAIA,CAAK,EAAE,KAAK,IAAM/b,CAAO,EAAIA,CAGvE,CACJ,CAAC,EACYqd,GAA8BlJ,EAAkB,gBAAiB,CAACxJ,EAAMC,IAAQ,CAEzFgS,GAAW,KAAKjS,EAAMC,CAAG,EACzB,MAAM0S,EAAa3S,EAAK,KAAK,MACvBqS,EAAcC,GAAY,IAAMb,GAAaxR,CAAG,CAAC,EACjD2S,EAAoBzP,GAAU,SAChC,MAAM0P,EAAM,IAAInH,GAAI,CAAC,QAAS,UAAW,KAAK,CAAC,EACzClO,EAAa6U,EAAY,MACzBS,EAAY9nC,GAAQ,CACtB,MAAMmD,EAAI4kC,GAAS/nC,CAAG,EACtB,MAAO,SAASmD,CAAC,6BAA6BA,CAAC,uBACnD,EACA0kC,EAAI,MAAM,8BAA8B,EACxC,MAAMG,EAAM,OAAO,OAAO,IAAI,EAC9B,IAAIC,EAAU,EACd,UAAWjoC,KAAOwyB,EAAW,KACzBwV,EAAIhoC,CAAG,EAAI,OAAOioC,GAAS,GAG/BJ,EAAI,MAAM,uBAAuB,EACjC,UAAW7nC,KAAOwyB,EAAW,KAAM,CAC/B,MAAM9S,EAAKsoB,EAAIhoC,CAAG,EACZmD,EAAI4kC,GAAS/nC,CAAG,EAChBs4B,EAASH,EAAMn4B,CAAG,EAClBsmC,IAAezqB,EAAAyc,GAAA,YAAAA,EAAQ,OAAR,YAAAzc,EAAc,SAAU,WACvC0qB,IAAgBzqB,EAAAwc,GAAA,YAAAA,EAAQ,OAAR,YAAAxc,EAAc,UAAW,WAC/C+rB,EAAI,MAAM,SAASnoB,CAAE,MAAMooB,EAAS9nC,CAAG,CAAC,GAAG,EACvCsmC,GAAgBC,EAEhBsB,EAAI,MAAM;AAAA,cACZnoB,CAAE;AAAA,gBACAvc,CAAC;AAAA,qDACoCuc,CAAE;AAAA;AAAA,kCAErBvc,CAAC,qBAAqBA,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAK3Cuc,CAAE;AAAA,gBACAvc,CAAC;AAAA,wBACOA,CAAC;AAAA;AAAA;AAAA,sBAGHA,CAAC,OAAOuc,CAAE;AAAA;AAAA;AAAA,OAGzB,EAEe4mB,EA6BNuB,EAAI,MAAM;AAAA,cACZnoB,CAAE;AAAA,mDACmCA,CAAE;AAAA;AAAA,gCAErBvc,CAAC,qBAAqBA,CAAC;AAAA;AAAA;AAAA;AAAA,cAIzCuc,CAAE;AAAA,gBACAvc,CAAC;AAAA,wBACOA,CAAC;AAAA;AAAA;AAAA,sBAGHA,CAAC,OAAOuc,CAAE;AAAA;AAAA;AAAA,OAGzB,EA5CSmoB,EAAI,MAAM;AAAA,gBACVnoB,CAAE,cAAcvc,CAAC;AAAA,cACnBuc,CAAE;AAAA,mDACmCA,CAAE;AAAA;AAAA,gCAErBvc,CAAC,qBAAqBA,CAAC;AAAA;AAAA;AAAA,eAGxCuc,CAAE,gBAAgBA,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKdvc,CAAC;AAAA;AAAA;AAAA;AAAA,cAIRuc,CAAE;AAAA,gBACAA,CAAE;AAAA,wBACMvc,CAAC;AAAA;AAAA,wBAEDA,CAAC,OAAOuc,CAAE;AAAA;AAAA;AAAA;AAAA,OAI3B,CAqBC,CACAmoB,EAAI,MAAM,4BAA4B,EACtCA,EAAI,MAAM,iBAAiB,EAC3B,MAAMxS,EAAKwS,EAAI,QAAO,EACtB,MAAO,CAACxd,EAASqP,IAAQrE,EAAG8C,EAAO9N,EAASqP,CAAG,CACnD,EACA,IAAIwO,EACJ,MAAM/Q,EAAWqQ,GACXW,EAAM,CAACC,GAAkB,QAEzBC,EAAcF,GADDG,GACmB,MAChCb,EAAWxS,EAAI,SACrB,IAAI/zB,EACJ8zB,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChCx4B,IAAUA,EAAQmmC,EAAY,OAC9B,MAAMrR,EAAQ3L,EAAQ,MACtB,OAAK8M,EAASnB,CAAK,EASfmS,GAAOE,IAAe3O,GAAA,YAAAA,EAAK,SAAU,IAASA,EAAI,UAAY,IAEzDwO,IACDA,EAAWN,EAAiB3S,EAAI,KAAK,GACzC5K,EAAU6d,EAAS7d,EAASqP,CAAG,EAC1B+N,EAEEb,GAAe,CAAA,EAAI5Q,EAAO3L,EAASqP,EAAKx4B,EAAO8zB,CAAI,EAD/C3K,GAGRsd,EAAWtd,EAASqP,CAAG,GAjB1BrP,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,MAAA2L,EACA,KAAAhB,CAChB,CAAa,EACM3K,EAYf,CACJ,CAAC,EACD,SAASke,GAAmBC,EAASvC,EAAOjR,EAAM0E,EAAK,CACnD,UAAWvzB,KAAUqiC,EACjB,GAAIriC,EAAO,OAAO,SAAW,EACzB,OAAA8/B,EAAM,MAAQ9/B,EAAO,MACd8/B,EAGf,MAAMwC,EAAaD,EAAQ,OAAQtkC,GAAM,CAACg9B,GAAah9B,CAAC,CAAC,EACzD,OAAIukC,EAAW,SAAW,GACtBxC,EAAM,MAAQwC,EAAW,CAAC,EAAE,MACrBA,EAAW,CAAC,IAEvBxC,EAAM,OAAO,KAAK,CACd,KAAM,gBACN,MAAOA,EAAM,MACb,KAAAjR,EACA,OAAQwT,EAAQ,IAAKriC,GAAWA,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAAC,CAC/G,CAAK,EACM4K,EACX,CACO,MAAMyC,GAA0BlK,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBwM,GAAgBzM,EAAK,KAAM,QAAS,IAAMC,EAAI,QAAQ,KAAMuC,GAAMA,EAAE,KAAK,QAAU,UAAU,EAAI,WAAa,MAAS,EACvHiK,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,QAAQ,KAAMuC,GAAMA,EAAE,KAAK,SAAW,UAAU,EAAI,WAAa,MAAS,EACzHiK,GAAgBzM,EAAK,KAAM,SAAU,IAAM,CACvC,GAAIC,EAAI,QAAQ,MAAOuC,GAAMA,EAAE,KAAK,MAAM,EACtC,OAAO,IAAI,IAAIvC,EAAI,QAAQ,QAAS1U,GAAW,MAAM,KAAKA,EAAO,KAAK,MAAM,CAAC,CAAC,CAGtF,CAAC,EACDkhB,GAAgBzM,EAAK,KAAM,UAAW,IAAM,CACxC,GAAIC,EAAI,QAAQ,MAAOuC,GAAMA,EAAE,KAAK,OAAO,EAAG,CAC1C,MAAMmR,EAAW1T,EAAI,QAAQ,IAAK,GAAM,EAAE,KAAK,OAAO,EACtD,OAAO,IAAI,OAAO,KAAK0T,EAAS,IAAKC,GAAMC,GAAgBD,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,CACvF,CAEJ,CAAC,EACD,MAAMviB,EAAQ4O,EAAI,QAAQ,SAAW,EAAIA,EAAI,QAAQ,CAAC,EAAE,KAAK,IAAM,KACnED,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIrT,EACA,OAAOA,EAAMgE,EAASqP,CAAG,EAE7B,IAAIoP,EAAQ,GACZ,MAAMN,EAAU,CAAA,EAChB,UAAWjoB,KAAU0U,EAAI,QAAS,CAC9B,MAAM9uB,EAASoa,EAAO,KAAK,IAAI,CAC3B,MAAO8J,EAAQ,MACf,OAAQ,CAAA,CACxB,EAAeqP,CAAG,EACN,GAAIvzB,aAAkB,QAClBqiC,EAAQ,KAAKriC,CAAM,EACnB2iC,EAAQ,OAEP,CACD,GAAI3iC,EAAO,OAAO,SAAW,EACzB,OAAOA,EACXqiC,EAAQ,KAAKriC,CAAM,CACvB,CACJ,CACA,OAAK2iC,EAEE,QAAQ,IAAIN,CAAO,EAAE,KAAMA,GACvBD,GAAmBC,EAASne,EAAS2K,EAAM0E,CAAG,CACxD,EAHU6O,GAAmBC,EAASne,EAAS2K,EAAM0E,CAAG,CAI7D,CACJ,CAAC,EAoIYqP,GAAiCvK,EAAkB,mBAAoB,CAACxJ,EAAMC,IAAQ,CAC/F6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,MAAM1D,EAAQ3L,EAAQ,MAChB1S,EAAOsd,EAAI,KAAK,KAAK,IAAI,CAAE,MAAOe,EAAO,OAAQ,CAAA,CAAE,EAAI0D,CAAG,EAC1DxI,EAAQ+D,EAAI,MAAM,KAAK,IAAI,CAAE,MAAOe,EAAO,OAAQ,CAAA,CAAE,EAAI0D,CAAG,EAElE,OADc/hB,aAAgB,SAAWuZ,aAAiB,QAE/C,QAAQ,IAAI,CAACvZ,EAAMuZ,CAAK,CAAC,EAAE,KAAK,CAAC,CAACvZ,EAAMuZ,CAAK,IACzC8X,GAA0B3e,EAAS1S,EAAMuZ,CAAK,CACxD,EAEE8X,GAA0B3e,EAAS1S,EAAMuZ,CAAK,CACzD,CACJ,CAAC,EACD,SAAS+X,GAAYrf,EAAGC,EAAG,CAGvB,GAAID,IAAMC,EACN,MAAO,CAAE,MAAO,GAAM,KAAMD,CAAC,EAEjC,GAAIA,aAAa,MAAQC,aAAa,MAAQ,CAACD,GAAM,CAACC,EAClD,MAAO,CAAE,MAAO,GAAM,KAAMD,CAAC,EAEjC,GAAIsf,GAAmBtf,CAAC,GAAKsf,GAAmBrf,CAAC,EAAG,CAChD,MAAMsf,EAAQ,OAAO,KAAKtf,CAAC,EACrBuf,EAAa,OAAO,KAAKxf,CAAC,EAAE,OAAQ5pB,GAAQmpC,EAAM,QAAQnpC,CAAG,IAAM,EAAE,EACrEqpC,EAAS,CAAE,GAAGzf,EAAG,GAAGC,CAAC,EAC3B,UAAW7pB,KAAOopC,EAAY,CAC1B,MAAME,EAAcL,GAAYrf,EAAE5pB,CAAG,EAAG6pB,EAAE7pB,CAAG,CAAC,EAC9C,GAAI,CAACspC,EAAY,MACb,MAAO,CACH,MAAO,GACP,eAAgB,CAACtpC,EAAK,GAAGspC,EAAY,cAAc,CACvE,EAEYD,EAAOrpC,CAAG,EAAIspC,EAAY,IAC9B,CACA,MAAO,CAAE,MAAO,GAAM,KAAMD,CAAM,CACtC,CACA,GAAI,MAAM,QAAQzf,CAAC,GAAK,MAAM,QAAQC,CAAC,EAAG,CACtC,GAAID,EAAE,SAAWC,EAAE,OACf,MAAO,CAAE,MAAO,GAAO,eAAgB,CAAA,CAAE,EAE7C,MAAM0f,EAAW,CAAA,EACjB,QAAShgC,EAAQ,EAAGA,EAAQqgB,EAAE,OAAQrgB,IAAS,CAC3C,MAAMigC,EAAQ5f,EAAErgB,CAAK,EACfkgC,EAAQ5f,EAAEtgB,CAAK,EACf+/B,EAAcL,GAAYO,EAAOC,CAAK,EAC5C,GAAI,CAACH,EAAY,MACb,MAAO,CACH,MAAO,GACP,eAAgB,CAAC//B,EAAO,GAAG+/B,EAAY,cAAc,CACzE,EAEYC,EAAS,KAAKD,EAAY,IAAI,CAClC,CACA,MAAO,CAAE,MAAO,GAAM,KAAMC,CAAQ,CACxC,CACA,MAAO,CAAE,MAAO,GAAO,eAAgB,CAAA,CAAE,CAC7C,CACA,SAASP,GAA0B7iC,EAAQwR,EAAMuZ,EAAO,CAEpD,MAAMwY,EAAY,IAAI,IACtB,IAAIC,EACJ,UAAWpQ,KAAO5hB,EAAK,OACnB,GAAI4hB,EAAI,OAAS,oBAAqB,CAClCoQ,IAAeA,EAAapQ,GAC5B,UAAWp2B,KAAKo2B,EAAI,KACXmQ,EAAU,IAAIvmC,CAAC,GAChBumC,EAAU,IAAIvmC,EAAG,EAAE,EACvBumC,EAAU,IAAIvmC,CAAC,EAAE,EAAI,EAE7B,MAEIgD,EAAO,OAAO,KAAKozB,CAAG,EAG9B,UAAWA,KAAOrI,EAAM,OACpB,GAAIqI,EAAI,OAAS,oBACb,UAAWp2B,KAAKo2B,EAAI,KACXmQ,EAAU,IAAIvmC,CAAC,GAChBumC,EAAU,IAAIvmC,EAAG,EAAE,EACvBumC,EAAU,IAAIvmC,CAAC,EAAE,EAAI,QAIzBgD,EAAO,OAAO,KAAKozB,CAAG,EAI9B,MAAMqQ,EAAW,CAAC,GAAGF,CAAS,EAAE,OAAO,CAAC,CAAA,CAAGvlC,CAAC,IAAMA,EAAE,GAAKA,EAAE,CAAC,EAAE,IAAI,CAAC,CAAChB,CAAC,IAAMA,CAAC,EAI5E,GAHIymC,EAAS,QAAUD,GACnBxjC,EAAO,OAAO,KAAK,CAAE,GAAGwjC,EAAY,KAAMC,EAAU,EAEpD1I,GAAa/6B,CAAM,EACnB,OAAOA,EACX,MAAM8nB,EAASgb,GAAYtxB,EAAK,MAAOuZ,EAAM,KAAK,EAClD,GAAI,CAACjD,EAAO,MACR,MAAM,IAAI,MAAM,wCAA6C,KAAK,UAAUA,EAAO,cAAc,CAAC,EAAE,EAExG,OAAA9nB,EAAO,MAAQ8nB,EAAO,KACf9nB,CACX,CA2HO,MAAM0jC,GAA2BrL,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,MAAM1D,EAAQ3L,EAAQ,MACtB,GAAI,CAAC6e,GAAmBlT,CAAK,EACzB,OAAA3L,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,MAAA2L,EACA,KAAAhB,CAChB,CAAa,EACM3K,EAEX,MAAM+b,EAAQ,CAAA,EACR5U,EAASyD,EAAI,QAAQ,KAAK,OAChC,GAAIzD,EAAQ,CACRnH,EAAQ,MAAQ,CAAA,EAChB,MAAMyf,EAAa,IAAI,IACvB,UAAW9pC,KAAOwxB,EACd,GAAI,OAAOxxB,GAAQ,UAAY,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,SAAU,CAC/E8pC,EAAW,IAAI,OAAO9pC,GAAQ,SAAWA,EAAI,SAAQ,EAAKA,CAAG,EAC7D,MAAM+pC,EAAY9U,EAAI,QAAQ,KAAK,IAAI,CAAE,MAAOj1B,EAAK,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EACtE,GAAIqQ,aAAqB,QACrB,MAAM,IAAI,MAAM,sDAAsD,EAE1E,GAAIA,EAAU,OAAO,OAAQ,CACzB1f,EAAQ,OAAO,KAAK,CAChB,KAAM,cACN,OAAQ,SACR,OAAQ0f,EAAU,OAAO,IAAKxQ,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,EACjF,MAAOr7B,EACP,KAAM,CAACA,CAAG,EACV,KAAAg1B,CAC5B,CAAyB,EACD,QACJ,CACA,MAAMgV,EAASD,EAAU,MACnB5jC,EAAS8uB,EAAI,UAAU,KAAK,IAAI,CAAE,MAAOe,EAAMh2B,CAAG,EAAG,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EACxEvzB,aAAkB,QAClBigC,EAAM,KAAKjgC,EAAO,KAAMA,GAAW,CAC3BA,EAAO,OAAO,QACdkkB,EAAQ,OAAO,KAAK,GAAG6b,GAAkBlmC,EAAKmG,EAAO,MAAM,CAAC,EAEhEkkB,EAAQ,MAAM2f,CAAM,EAAI7jC,EAAO,KACnC,CAAC,CAAC,GAGEA,EAAO,OAAO,QACdkkB,EAAQ,OAAO,KAAK,GAAG6b,GAAkBlmC,EAAKmG,EAAO,MAAM,CAAC,EAEhEkkB,EAAQ,MAAM2f,CAAM,EAAI7jC,EAAO,MAEvC,CAEJ,IAAI0gC,EACJ,UAAW7mC,KAAOg2B,EACT8T,EAAW,IAAI9pC,CAAG,IACnB6mC,EAAeA,GAAgB,CAAA,EAC/BA,EAAa,KAAK7mC,CAAG,GAGzB6mC,GAAgBA,EAAa,OAAS,GACtCxc,EAAQ,OAAO,KAAK,CAChB,KAAM,oBACN,MAAA2L,EACA,KAAAhB,EACA,KAAM6R,CAC1B,CAAiB,CAET,KACK,CACDxc,EAAQ,MAAQ,CAAA,EAEhB,UAAWrqB,KAAO,QAAQ,QAAQg2B,CAAK,EAAG,CAGtC,GAFIh2B,IAAQ,aAER,CAAC,OAAO,UAAU,qBAAqB,KAAKg2B,EAAOh2B,CAAG,EACtD,SACJ,IAAI+pC,EAAY9U,EAAI,QAAQ,KAAK,IAAI,CAAE,MAAOj1B,EAAK,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EACpE,GAAIqQ,aAAqB,QACrB,MAAM,IAAI,MAAM,sDAAsD,EAK1E,GADwB,OAAO/pC,GAAQ,UAAYwlC,GAAe,KAAKxlC,CAAG,GAAK+pC,EAAU,OAAO,OAC3E,CACjB,MAAME,EAAchV,EAAI,QAAQ,KAAK,IAAI,CAAE,MAAO,OAAOj1B,CAAG,EAAG,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EAChF,GAAIuQ,aAAuB,QACvB,MAAM,IAAI,MAAM,sDAAsD,EAEtEA,EAAY,OAAO,SAAW,IAC9BF,EAAYE,EAEpB,CACA,GAAIF,EAAU,OAAO,OAAQ,CACrB9U,EAAI,OAAS,QAEb5K,EAAQ,MAAMrqB,CAAG,EAAIg2B,EAAMh2B,CAAG,EAI9BqqB,EAAQ,OAAO,KAAK,CAChB,KAAM,cACN,OAAQ,SACR,OAAQ0f,EAAU,OAAO,IAAKxQ,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,EACjF,MAAOr7B,EACP,KAAM,CAACA,CAAG,EACV,KAAAg1B,CAC5B,CAAyB,EAEL,QACJ,CACA,MAAM7uB,EAAS8uB,EAAI,UAAU,KAAK,IAAI,CAAE,MAAOe,EAAMh2B,CAAG,EAAG,OAAQ,CAAA,CAAE,EAAI05B,CAAG,EACxEvzB,aAAkB,QAClBigC,EAAM,KAAKjgC,EAAO,KAAMA,GAAW,CAC3BA,EAAO,OAAO,QACdkkB,EAAQ,OAAO,KAAK,GAAG6b,GAAkBlmC,EAAKmG,EAAO,MAAM,CAAC,EAEhEkkB,EAAQ,MAAM0f,EAAU,KAAK,EAAI5jC,EAAO,KAC5C,CAAC,CAAC,GAGEA,EAAO,OAAO,QACdkkB,EAAQ,OAAO,KAAK,GAAG6b,GAAkBlmC,EAAKmG,EAAO,MAAM,CAAC,EAEhEkkB,EAAQ,MAAM0f,EAAU,KAAK,EAAI5jC,EAAO,MAEhD,CACJ,CACA,OAAIigC,EAAM,OACC,QAAQ,IAAIA,CAAK,EAAE,KAAK,IAAM/b,CAAO,EAEzCA,CACX,CACJ,CAAC,EAmGY6f,GAAyB1L,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/E6L,GAAS,KAAK9L,EAAMC,CAAG,EACvB,MAAMzD,EAAS2Y,GAAmBlV,EAAI,OAAO,EACvCmV,EAAY,IAAI,IAAI5Y,CAAM,EAChCwD,EAAK,KAAK,OAASoV,EACnBpV,EAAK,KAAK,QAAU,IAAI,OAAO,KAAKxD,EAC/B,OAAQruB,GAAMknC,GAAsB,IAAI,OAAOlnC,CAAC,CAAC,EACjD,IAAK,GAAO,OAAO,GAAM,SAAWk9B,GAAiB,CAAC,EAAI,EAAE,UAAW,EACvE,KAAK,GAAG,CAAC,IAAI,EAClBrL,EAAK,KAAK,MAAQ,CAAC3K,EAAS6Q,IAAS,CACjC,MAAMlF,EAAQ3L,EAAQ,MACtB,OAAI+f,EAAU,IAAIpU,CAAK,GAGvB3L,EAAQ,OAAO,KAAK,CAChB,KAAM,gBACN,OAAAmH,EACA,MAAAwE,EACA,KAAAhB,CACZ,CAAS,EACM3K,CACX,CACJ,CAAC,EAyCYigB,GAA8B9L,EAAkB,gBAAiB,CAACxJ,EAAMC,IAAQ,CACzF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,WAClBA,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIA,EAAI,YAAc,WAClB,MAAM,IAAI6Q,GAAqBvV,EAAK,YAAY,IAAI,EAExD,MAAMwV,EAAOvV,EAAI,UAAU5K,EAAQ,MAAOA,CAAO,EACjD,GAAIqP,EAAI,MAEJ,OADe8Q,aAAgB,QAAUA,EAAO,QAAQ,QAAQA,CAAI,GACtD,KAAMC,IAChBpgB,EAAQ,MAAQogB,EAChBpgB,EAAQ,SAAW,GACZA,EACV,EAEL,GAAImgB,aAAgB,QAChB,MAAM,IAAIrP,GAEd,OAAA9Q,EAAQ,MAAQmgB,EAChBngB,EAAQ,SAAW,GACZA,CACX,CACJ,CAAC,EACD,SAASqgB,GAAqBvkC,EAAQ6vB,EAAO,CACzC,OAAIA,IAAU,SAAc7vB,EAAO,OAAO,QAAUA,EAAO,UAChD,CAAE,OAAQ,GAAI,MAAO,MAAS,EAElCA,CACX,CACO,MAAMwkC,GAA6BnM,EAAkB,eAAgB,CAACxJ,EAAMC,IAAQ,CACvF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,WAClBA,EAAK,KAAK,OAAS,WACnByM,GAAgBzM,EAAK,KAAM,SAAU,IAC1BC,EAAI,UAAU,KAAK,OAAS,IAAI,IAAI,CAAC,GAAGA,EAAI,UAAU,KAAK,OAAQ,MAAS,CAAC,EAAI,MAC3F,EACDwM,GAAgBzM,EAAK,KAAM,UAAW,IAAM,CACxC,MAAMsL,EAAUrL,EAAI,UAAU,KAAK,QACnC,OAAOqL,EAAU,IAAI,OAAO,KAAKuI,GAAgBvI,EAAQ,MAAM,CAAC,KAAK,EAAI,MAC7E,CAAC,EACDtL,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIzE,EAAI,UAAU,KAAK,QAAU,WAAY,CACzC,MAAMe,EAAQ3L,EAAQ,MAChBlkB,EAAS8uB,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAClD,OAAIvzB,aAAkB,QACXA,EAAO,KAAMjC,GAAMwmC,GAAqBxmC,EAAG8xB,CAAK,CAAC,EACrD0U,GAAqBvkC,EAAQ6vB,CAAK,CAC7C,CACA,OAAI3L,EAAQ,QAAU,OACXA,EAEJ4K,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,CAC9C,CACJ,CAAC,EACYkR,GAAkCpM,EAAkB,oBAAqB,CAACxJ,EAAMC,IAAQ,CAEjG0V,GAAa,KAAK3V,EAAMC,CAAG,EAE3BwM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpEwM,GAAgBzM,EAAK,KAAM,UAAW,IAAMC,EAAI,UAAU,KAAK,OAAO,EAEtED,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IACjBzE,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,CAElD,CAAC,EACYmR,GAA6BrM,EAAkB,eAAgB,CAACxJ,EAAMC,IAAQ,CACvF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBwM,GAAgBzM,EAAK,KAAM,QAAS,IAAMC,EAAI,UAAU,KAAK,KAAK,EAClEwM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpEwM,GAAgBzM,EAAK,KAAM,UAAW,IAAM,CACxC,MAAMsL,EAAUrL,EAAI,UAAU,KAAK,QACnC,OAAOqL,EAAU,IAAI,OAAO,KAAKuI,GAAgBvI,EAAQ,MAAM,CAAC,SAAS,EAAI,MACjF,CAAC,EACDmB,GAAgBzM,EAAK,KAAM,SAAU,IAC1BC,EAAI,UAAU,KAAK,OAAS,IAAI,IAAI,CAAC,GAAGA,EAAI,UAAU,KAAK,OAAQ,IAAI,CAAC,EAAI,MACtF,EACDD,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAEpBrP,EAAQ,QAAU,KACXA,EACJ4K,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,CAElD,CAAC,EACYoR,GAA4BtM,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrF6L,GAAS,KAAK9L,EAAMC,CAAG,EAEvBD,EAAK,KAAK,MAAQ,WAClByM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpED,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIA,EAAI,YAAc,WAClB,OAAOzE,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAG9C,GAAIrP,EAAQ,QAAU,OAClB,OAAAA,EAAQ,MAAQ4K,EAAI,aAIb5K,EAGX,MAAMlkB,EAAS8uB,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAClD,OAAIvzB,aAAkB,QACXA,EAAO,KAAMA,GAAW4kC,GAAoB5kC,EAAQ8uB,CAAG,CAAC,EAE5D8V,GAAoB5kC,EAAQ8uB,CAAG,CAC1C,CACJ,CAAC,EACD,SAAS8V,GAAoB1gB,EAAS4K,EAAK,CACvC,OAAI5K,EAAQ,QAAU,SAClBA,EAAQ,MAAQ4K,EAAI,cAEjB5K,CACX,CACO,MAAM2gB,GAA6BxM,EAAkB,eAAgB,CAACxJ,EAAMC,IAAQ,CACvF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,WAClByM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpED,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,KACpBA,EAAI,YAAc,YAIlBrP,EAAQ,QAAU,SAClBA,EAAQ,MAAQ4K,EAAI,cAEjBA,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAElD,CAAC,EACYuR,GAAgCzM,EAAkB,kBAAmB,CAACxJ,EAAMC,IAAQ,CAC7F6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBwM,GAAgBzM,EAAK,KAAM,SAAU,IAAM,CACvC,MAAMY,EAAIX,EAAI,UAAU,KAAK,OAC7B,OAAOW,EAAI,IAAI,IAAI,CAAC,GAAGA,CAAC,EAAE,OAAQ3c,GAAMA,IAAM,MAAS,CAAC,EAAI,MAChE,CAAC,EACD+b,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,MAAMvzB,EAAS8uB,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAClD,OAAIvzB,aAAkB,QACXA,EAAO,KAAMA,GAAW+kC,GAAwB/kC,EAAQ6uB,CAAI,CAAC,EAEjEkW,GAAwB/kC,EAAQ6uB,CAAI,CAC/C,CACJ,CAAC,EACD,SAASkW,GAAwB7gB,EAAS2K,EAAM,CAC5C,MAAI,CAAC3K,EAAQ,OAAO,QAAUA,EAAQ,QAAU,QAC5CA,EAAQ,OAAO,KAAK,CAChB,KAAM,eACN,SAAU,cACV,MAAOA,EAAQ,MACf,KAAA2K,CACZ,CAAS,EAEE3K,CACX,CAkBO,MAAM8gB,GAA0B3M,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,WAClByM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpEwM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpED,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIA,EAAI,YAAc,WAClB,OAAOzE,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAG9C,MAAMvzB,EAAS8uB,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAClD,OAAIvzB,aAAkB,QACXA,EAAO,KAAMA,IAChBkkB,EAAQ,MAAQlkB,EAAO,MACnBA,EAAO,OAAO,SACdkkB,EAAQ,MAAQ4K,EAAI,WAAW,CAC3B,GAAG5K,EACH,MAAO,CACH,OAAQlkB,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAC1G,EACwB,MAAOhR,EAAQ,KACvC,CAAqB,EACDA,EAAQ,OAAS,CAAA,EACjBA,EAAQ,SAAW,IAEhBA,EACV,GAELA,EAAQ,MAAQlkB,EAAO,MACnBA,EAAO,OAAO,SACdkkB,EAAQ,MAAQ4K,EAAI,WAAW,CAC3B,GAAG5K,EACH,MAAO,CACH,OAAQlkB,EAAO,OAAO,IAAKozB,GAAQ6B,GAAmB7B,EAAKG,EAAK2B,GAAW,CAAE,CAAC,CAClG,EACgB,MAAOhR,EAAQ,KAC/B,CAAa,EACDA,EAAQ,OAAS,CAAA,EACjBA,EAAQ,SAAW,IAEhBA,EACX,CACJ,CAAC,EAgBY+gB,GAAyB5M,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/E6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBwM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,GAAG,KAAK,MAAM,EAC7DwM,GAAgBzM,EAAK,KAAM,QAAS,IAAMC,EAAI,GAAG,KAAK,KAAK,EAC3DwM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,IAAI,KAAK,MAAM,EAC9DwM,GAAgBzM,EAAK,KAAM,aAAc,IAAMC,EAAI,GAAG,KAAK,UAAU,EACrED,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIA,EAAI,YAAc,WAAY,CAC9B,MAAMxI,EAAQ+D,EAAI,IAAI,KAAK,IAAI5K,EAASqP,CAAG,EAC3C,OAAIxI,aAAiB,QACVA,EAAM,KAAMA,GAAUma,GAAiBna,EAAO+D,EAAI,GAAIyE,CAAG,CAAC,EAE9D2R,GAAiBna,EAAO+D,EAAI,GAAIyE,CAAG,CAC9C,CACA,MAAM/hB,EAAOsd,EAAI,GAAG,KAAK,IAAI5K,EAASqP,CAAG,EACzC,OAAI/hB,aAAgB,QACTA,EAAK,KAAMA,GAAS0zB,GAAiB1zB,EAAMsd,EAAI,IAAKyE,CAAG,CAAC,EAE5D2R,GAAiB1zB,EAAMsd,EAAI,IAAKyE,CAAG,CAC9C,CACJ,CAAC,EACD,SAAS2R,GAAiB1zB,EAAM7P,EAAM4xB,EAAK,CACvC,OAAI/hB,EAAK,OAAO,QAEZA,EAAK,QAAU,GACRA,GAEJ7P,EAAK,KAAK,IAAI,CAAE,MAAO6P,EAAK,MAAO,OAAQA,EAAK,OAAQ,SAAUA,EAAK,QAAQ,EAAI+hB,CAAG,CACjG,CA0DO,MAAM4R,GAA6B9M,EAAkB,eAAgB,CAACxJ,EAAMC,IAAQ,CACvF6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBwM,GAAgBzM,EAAK,KAAM,aAAc,IAAMC,EAAI,UAAU,KAAK,UAAU,EAC5EwM,GAAgBzM,EAAK,KAAM,SAAU,IAAMC,EAAI,UAAU,KAAK,MAAM,EACpEwM,GAAgBzM,EAAK,KAAM,QAAS,IAAA,SAAM,OAAAlZ,GAAAD,EAAAoZ,EAAI,YAAJ,YAAApZ,EAAe,OAAf,YAAAC,EAAqB,MAAK,EACpE2lB,GAAgBzM,EAAK,KAAM,SAAU,IAAA,SAAM,OAAAlZ,GAAAD,EAAAoZ,EAAI,YAAJ,YAAApZ,EAAe,OAAf,YAAAC,EAAqB,OAAM,EACtEkZ,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IAAQ,CAChC,GAAIA,EAAI,YAAc,WAClB,OAAOzE,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAE9C,MAAMvzB,EAAS8uB,EAAI,UAAU,KAAK,IAAI5K,EAASqP,CAAG,EAClD,OAAIvzB,aAAkB,QACXA,EAAO,KAAKolC,EAAoB,EAEpCA,GAAqBplC,CAAM,CACtC,CACJ,CAAC,EACD,SAASolC,GAAqBlhB,EAAS,CACnC,OAAAA,EAAQ,MAAQ,OAAO,OAAOA,EAAQ,KAAK,EACpCA,CACX,CAuIO,MAAMmhB,GAAyBhN,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/E6L,GAAS,KAAK9L,EAAMC,CAAG,EAIvBwM,GAAgBzM,EAAK,KAAM,YAAa,IAAM,CAC1C,MAAMhf,EAAIif,EACV,OAAKjf,EAAE,eACHA,EAAE,aAAeif,EAAI,OAAM,GACxBjf,EAAE,YACb,CAAC,EACDyrB,GAAgBzM,EAAK,KAAM,UAAW,IAAA,SAAM,OAAAlZ,GAAAD,EAAAmZ,EAAK,KAAK,YAAV,YAAAnZ,EAAqB,OAArB,YAAAC,EAA2B,QAAO,EAC9E2lB,GAAgBzM,EAAK,KAAM,aAAc,IAAA,SAAM,OAAAlZ,GAAAD,EAAAmZ,EAAK,KAAK,YAAV,YAAAnZ,EAAqB,OAArB,YAAAC,EAA2B,WAAU,EACpF2lB,GAAgBzM,EAAK,KAAM,QAAS,IAAA,SAAM,QAAAlZ,GAAAD,EAAAmZ,EAAK,KAAK,YAAV,YAAAnZ,EAAqB,OAArB,YAAAC,EAA2B,QAAS,OAAS,EACvF2lB,GAAgBzM,EAAK,KAAM,SAAU,IAAA,SAAM,QAAAlZ,GAAAD,EAAAmZ,EAAK,KAAK,YAAV,YAAAnZ,EAAqB,OAArB,YAAAC,EAA2B,SAAU,OAAS,EACzFkZ,EAAK,KAAK,MAAQ,CAAC3K,EAASqP,IACV1E,EAAK,KAAK,UACX,KAAK,IAAI3K,EAASqP,CAAG,CAE1C,CAAC,EACY+R,GAA2BjN,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFyW,GAAiB,KAAK1W,EAAMC,CAAG,EAC/B6L,GAAS,KAAK9L,EAAMC,CAAG,EACvBD,EAAK,KAAK,MAAQ,CAAC3K,EAASzR,IACjByR,EAEX2K,EAAK,KAAK,MAAS3K,GAAY,CAC3B,MAAM2L,EAAQ3L,EAAQ,MAChBnmB,EAAI+wB,EAAI,GAAGe,CAAK,EACtB,GAAI9xB,aAAa,QACb,OAAOA,EAAE,KAAMA,GAAMynC,GAAmBznC,EAAGmmB,EAAS2L,EAAOhB,CAAI,CAAC,EAEpE2W,GAAmBznC,EAAGmmB,EAAS2L,EAAOhB,CAAI,CAE9C,CACJ,CAAC,EACD,SAAS2W,GAAmBxlC,EAAQkkB,EAAS2L,EAAOhB,EAAM,CACtD,GAAI,CAAC7uB,EAAQ,CACT,MAAMylC,EAAO,CACT,KAAM,SACN,MAAA5V,EACA,KAAAhB,EACA,KAAM,CAAC,GAAIA,EAAK,KAAK,IAAI,MAAQ,CAAA,CAAG,EACpC,SAAU,CAACA,EAAK,KAAK,IAAI,KAErC,EACYA,EAAK,KAAK,IAAI,SACd4W,EAAK,OAAS5W,EAAK,KAAK,IAAI,QAChC3K,EAAQ,OAAO,KAAKwhB,GAAWD,CAAI,CAAC,CACxC,CACJ,CC9rEA,IAAI/vB,GAGG,MAAMiwB,EAAa,CACtB,aAAc,CACV,KAAK,KAAO,IAAI,QAChB,KAAK,OAAS,IAAI,GACtB,CACA,IAAIxT,KAAWyT,EAAO,CAClB,MAAMC,EAAOD,EAAM,CAAC,EACpB,YAAK,KAAK,IAAIzT,EAAQ0T,CAAI,EACtBA,GAAQ,OAAOA,GAAS,UAAY,OAAQA,GAC5C,KAAK,OAAO,IAAIA,EAAK,GAAI1T,CAAM,EAE5B,IACX,CACA,OAAQ,CACJ,YAAK,KAAO,IAAI,QAChB,KAAK,OAAS,IAAI,IACX,IACX,CACA,OAAOA,EAAQ,CACX,MAAM0T,EAAO,KAAK,KAAK,IAAI1T,CAAM,EACjC,OAAI0T,GAAQ,OAAOA,GAAS,UAAY,OAAQA,GAC5C,KAAK,OAAO,OAAOA,EAAK,EAAE,EAE9B,KAAK,KAAK,OAAO1T,CAAM,EAChB,IACX,CACA,IAAIA,EAAQ,CAGR,MAAMsQ,EAAItQ,EAAO,KAAK,OACtB,GAAIsQ,EAAG,CACH,MAAMqD,EAAK,CAAE,GAAI,KAAK,IAAIrD,CAAC,GAAK,CAAA,CAAG,EACnC,OAAOqD,EAAG,GACV,MAAM9nC,EAAI,CAAE,GAAG8nC,EAAI,GAAG,KAAK,KAAK,IAAI3T,CAAM,CAAC,EAC3C,OAAO,OAAO,KAAKn0B,CAAC,EAAE,OAASA,EAAI,MACvC,CACA,OAAO,KAAK,KAAK,IAAIm0B,CAAM,CAC/B,CACA,IAAIA,EAAQ,CACR,OAAO,KAAK,KAAK,IAAIA,CAAM,CAC/B,CACJ,CAEO,SAASzN,IAAW,CACvB,OAAO,IAAIihB,EACf,EACCjwB,GAAK,YAAY,uBAAyBA,GAAG,qBAAuBgP,GAAQ,GACtE,MAAMqhB,GAAiB,WAAW,qBC7ClC,SAASC,GAAQnT,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAUO,SAASuX,GAAOrT,EAAOlE,EAAQ,CAClC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASwX,GAAMtT,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASyX,GAAMvT,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS0X,GAAQxT,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS2X,GAAQzT,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS4X,GAAQ1T,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS6X,GAAK3T,EAAOlE,EAAQ,CAChC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASkI,GAAOhE,EAAOlE,EAAQ,CAClC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS8X,GAAQ5T,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAOO,SAAS+X,GAAM7T,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASgY,GAAO9T,EAAOlE,EAAQ,CAClC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASiY,GAAM/T,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASkY,GAAKhU,EAAOlE,EAAQ,CAChC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASmY,GAAOjU,EAAOlE,EAAQ,CAClC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASoY,GAAMlU,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASqY,GAAMnU,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAYO,SAASsY,GAAQpU,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASuY,GAAQrU,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASwY,GAAQtU,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASyY,GAAWvU,EAAOlE,EAAQ,CACtC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,YACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS0Y,GAAMxU,EAAOlE,EAAQ,CACjC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS2Y,GAAKzU,EAAOlE,EAAQ,CAChC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CASO,SAAS4Y,GAAa1U,EAAOlE,EAAQ,CACxC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,WACR,MAAO,gBACP,OAAQ,GACR,MAAO,GACP,UAAW,KACX,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS6Y,GAAS3U,EAAOlE,EAAQ,CACpC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS8Y,GAAS5U,EAAOlE,EAAQ,CACpC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,UAAW,KACX,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAAS+Y,GAAa7U,EAAOlE,EAAQ,CACxC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,WACR,MAAO,gBACP,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASgZ,GAAQ9U,EAAOlE,EAAQ,CACnC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,OAAQ,CAAA,EACR,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAWO,SAASiZ,GAAK/U,EAAOlE,EAAQ,CAChC,OAAO,IAAIkE,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,UACR,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CA0CO,SAASkZ,GAAShV,EAAOlE,EAAQ,CACpC,OAAO,IAAIkE,EAAM,CACb,KAAM,UACN,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAwEO,SAASmZ,GAASjV,EAAO,CAC5B,OAAO,IAAIA,EAAM,CACb,KAAM,SACd,CAAK,CACL,CAEO,SAASkV,GAAOlV,EAAOlE,EAAQ,CAClC,OAAO,IAAIkE,EAAM,CACb,KAAM,QACN,GAAGoT,EAAqBtX,CAAM,CACtC,CAAK,CACL,CA+BO,SAASqZ,GAAIjtC,EAAO4zB,EAAQ,CAC/B,OAAO,IAAIsZ,GAAyB,CAChC,MAAO,YACP,GAAGhC,EAAqBtX,CAAM,EAC9B,MAAA5zB,EACA,UAAW,EACnB,CAAK,CACL,CAEO,SAASmtC,GAAKntC,EAAO4zB,EAAQ,CAChC,OAAO,IAAIsZ,GAAyB,CAChC,MAAO,YACP,GAAGhC,EAAqBtX,CAAM,EAC9B,MAAA5zB,EACA,UAAW,EACnB,CAAK,CACL,CAKO,SAASotC,GAAIptC,EAAO4zB,EAAQ,CAC/B,OAAO,IAAIyZ,GAA4B,CACnC,MAAO,eACP,GAAGnC,EAAqBtX,CAAM,EAC9B,MAAA5zB,EACA,UAAW,EACnB,CAAK,CACL,CAEO,SAASstC,GAAKttC,EAAO4zB,EAAQ,CAChC,OAAO,IAAIyZ,GAA4B,CACnC,MAAO,eACP,GAAGnC,EAAqBtX,CAAM,EAC9B,MAAA5zB,EACA,UAAW,EACnB,CAAK,CACL,CAwBO,SAASutC,GAAYvtC,EAAO4zB,EAAQ,CACvC,OAAO,IAAI4Z,GAA2B,CAClC,MAAO,cACP,GAAGtC,EAAqBtX,CAAM,EAC9B,MAAA5zB,CACR,CAAK,CACL,CA0BO,SAASytC,GAAWxP,EAASrK,EAAQ,CAMxC,OALW,IAAI8Z,GAA0B,CACrC,MAAO,aACP,GAAGxC,EAAqBtX,CAAM,EAC9B,QAAAqK,CACR,CAAK,CAEL,CAEO,SAAS0P,GAAW3P,EAASpK,EAAQ,CACxC,OAAO,IAAIga,GAA0B,CACjC,MAAO,aACP,GAAG1C,EAAqBtX,CAAM,EAC9B,QAAAoK,CACR,CAAK,CACL,CAEO,SAAS6P,GAAQpP,EAAQ7K,EAAQ,CACpC,OAAO,IAAIka,GAA6B,CACpC,MAAO,gBACP,GAAG5C,EAAqBtX,CAAM,EAC9B,OAAA6K,CACR,CAAK,CACL,CAEO,SAASsP,GAAO3O,EAASxL,EAAQ,CACpC,OAAO,IAAIoa,GAAsB,CAC7B,MAAO,gBACP,OAAQ,QACR,GAAG9C,EAAqBtX,CAAM,EAC9B,QAAAwL,CACR,CAAK,CACL,CAEO,SAAS6O,GAAWra,EAAQ,CAC/B,OAAO,IAAIsa,GAA0B,CACjC,MAAO,gBACP,OAAQ,YACR,GAAGhD,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASua,GAAWva,EAAQ,CAC/B,OAAO,IAAIwa,GAA0B,CACjC,MAAO,gBACP,OAAQ,YACR,GAAGlD,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAEO,SAASya,GAAUC,EAAU1a,EAAQ,CACxC,OAAO,IAAI2a,GAAyB,CAChC,MAAO,gBACP,OAAQ,WACR,GAAGrD,EAAqBtX,CAAM,EAC9B,SAAA0a,CACR,CAAK,CACL,CAEO,SAASE,GAAY1mC,EAAQ8rB,EAAQ,CACxC,OAAO,IAAI6a,GAA2B,CAClC,MAAO,gBACP,OAAQ,cACR,GAAGvD,EAAqBtX,CAAM,EAC9B,OAAA9rB,CACR,CAAK,CACL,CAEO,SAAS4mC,GAAU14B,EAAQ4d,EAAQ,CACtC,OAAO,IAAI+a,GAAyB,CAChC,MAAO,gBACP,OAAQ,YACR,GAAGzD,EAAqBtX,CAAM,EAC9B,OAAA5d,CACR,CAAK,CACL,CAmBO,SAAS44B,GAAWC,EAAI,CAC3B,OAAO,IAAIC,GAA0B,CACjC,MAAO,YACP,GAAAD,CACR,CAAK,CACL,CAGO,SAASE,GAAWC,EAAM,CAC7B,OAAOJ,GAAY9Z,GAAUA,EAAM,UAAUka,CAAI,CAAC,CACtD,CAGO,SAASC,IAAQ,CACpB,OAAOL,GAAY9Z,GAAUA,EAAM,KAAI,CAAE,CAC7C,CAGO,SAASoa,IAAe,CAC3B,OAAON,GAAY9Z,GAAUA,EAAM,YAAW,CAAE,CACpD,CAGO,SAASqa,IAAe,CAC3B,OAAOP,GAAY9Z,GAAUA,EAAM,YAAW,CAAE,CACpD,CAGO,SAASsa,IAAW,CACvB,OAAOR,GAAY9Z,GAAUua,GAAava,CAAK,CAAC,CACpD,CAEO,SAASwa,GAAOxX,EAAOriB,EAASme,EAAQ,CAC3C,OAAO,IAAIkE,EAAM,CACb,KAAM,QACN,QAAAriB,EAIA,GAAGy1B,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAwOO,SAAS2b,GAAQzX,EAAO3D,EAAI4C,EAAS,CAOxC,OANe,IAAIe,EAAM,CACrB,KAAM,SACN,MAAO,SACP,GAAI3D,EACJ,GAAG+W,EAAqBnU,CAAO,CACvC,CAAK,CAEL,CAEO,SAASyY,GAAarb,EAAIP,EAAQ,CACrC,MAAMiM,EAAK4P,GAAQtmB,IACfA,EAAQ,SAAY6P,GAAU,CAC1B,GAAI,OAAOA,GAAU,SACjB7P,EAAQ,OAAO,KAAKwhB,GAAW3R,EAAO7P,EAAQ,MAAO0W,EAAG,KAAK,GAAG,CAAC,MAEhE,CAED,MAAM6P,EAAS1W,EACX0W,EAAO,QACPA,EAAO,SAAW,IACtBA,EAAO,OAASA,EAAO,KAAO,UAC9BA,EAAO,QAAUA,EAAO,MAAQvmB,EAAQ,OACxCumB,EAAO,OAASA,EAAO,KAAO7P,GAC9B6P,EAAO,WAAaA,EAAO,SAAW,CAAC7P,EAAG,KAAK,IAAI,OACnD1W,EAAQ,OAAO,KAAKwhB,GAAW+E,CAAM,CAAC,CAC1C,CACJ,EACOvb,EAAGhL,EAAQ,MAAOA,CAAO,GACjCyK,CAAM,EACT,OAAOiM,CACX,CAEO,SAAS4P,GAAOtb,EAAIP,EAAQ,CAC/B,MAAMiM,EAAK,IAAI2K,GAAiB,CAC5B,MAAO,SACP,GAAGU,EAAqBtX,CAAM,CACtC,CAAK,EACD,OAAAiM,EAAG,KAAK,MAAQ1L,EACT0L,CACX,CCt9BO,SAAS8P,GAAkB/b,EAAQ,CAEtC,IAAIxM,GAASwM,GAAA,YAAAA,EAAQ,SAAU,gBAC/B,OAAIxM,IAAW,YACXA,EAAS,YACTA,IAAW,YACXA,EAAS,YACN,CACH,WAAYwM,EAAO,YAAc,CAAA,EACjC,kBAAkBA,GAAA,YAAAA,EAAQ,WAAYoX,GACtC,OAAA5jB,EACA,iBAAiBwM,GAAA,YAAAA,EAAQ,kBAAmB,QAC5C,UAAUA,GAAA,YAAAA,EAAQ,YAAa,IAAM,CAAE,GACvC,IAAIA,GAAA,YAAAA,EAAQ,KAAM,SAClB,QAAS,EACT,KAAM,IAAI,IACV,QAAQA,GAAA,YAAAA,EAAQ,SAAU,MAC1B,QAAQA,GAAA,YAAAA,EAAQ,SAAU,SAC1B,UAAUA,GAAA,YAAAA,EAAQ,WAAY,MACtC,CACA,CACO,SAASgc,GAAQxY,EAAQoB,EAAKzB,EAAU,CAAE,KAAM,CAAA,EAAI,WAAY,CAAA,GAAM,SACzE,IAAIpc,EACJ,MAAMoZ,EAAMqD,EAAO,KAAK,IAElByY,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChC,GAAIyY,EACA,OAAAA,EAAK,QAEW9Y,EAAQ,WAAW,SAASK,CAAM,IAE9CyY,EAAK,MAAQ9Y,EAAQ,MAElB8Y,EAAK,OAGhB,MAAM5qC,EAAS,CAAE,OAAQ,CAAA,EAAI,MAAO,EAAG,MAAO,OAAW,KAAM8xB,EAAQ,IAAI,EAC3EyB,EAAI,KAAK,IAAIpB,EAAQnyB,CAAM,EAE3B,MAAM6qC,GAAiBl1B,GAAAD,EAAAyc,EAAO,MAAK,eAAZ,YAAAxc,EAAA,KAAAD,GACvB,GAAIm1B,EACA7qC,EAAO,OAAS6qC,MAEf,CACD,MAAMlc,EAAS,CACX,GAAGmD,EACH,WAAY,CAAC,GAAGA,EAAQ,WAAYK,CAAM,EAC1C,KAAML,EAAQ,IAC1B,EACQ,GAAIK,EAAO,KAAK,kBACZA,EAAO,KAAK,kBAAkBoB,EAAKvzB,EAAO,OAAQ2uB,CAAM,MAEvD,CACD,MAAMmc,EAAQ9qC,EAAO,OACf+qC,EAAYxX,EAAI,WAAWzE,EAAI,IAAI,EACzC,GAAI,CAACic,EACD,MAAM,IAAI,MAAM,uDAAuDjc,EAAI,IAAI,EAAE,EAErFic,EAAU5Y,EAAQoB,EAAKuX,EAAOnc,CAAM,CACxC,CACA,MAAMqc,EAAS7Y,EAAO,KAAK,OACvB6Y,IAEKhrC,EAAO,MACRA,EAAO,IAAMgrC,GACjBL,GAAQK,EAAQzX,EAAK5E,CAAM,EAC3B4E,EAAI,KAAK,IAAIyX,CAAM,EAAE,SAAW,GAExC,CAEA,MAAMnF,EAAOtS,EAAI,iBAAiB,IAAIpB,CAAM,EAC5C,OAAI0T,GACA,OAAO,OAAO7lC,EAAO,OAAQ6lC,CAAI,EACjCtS,EAAI,KAAO,SAAW0X,GAAe9Y,CAAM,IAE3C,OAAOnyB,EAAO,OAAO,SACrB,OAAOA,EAAO,OAAO,SAGrBuzB,EAAI,KAAO,SAAW,cAAevzB,EAAO,UAC3C0V,EAAK1V,EAAO,QAAQ,UAAY0V,EAAG,QAAU1V,EAAO,OAAO,YAChE,OAAOA,EAAO,OAAO,UAELuzB,EAAI,KAAK,IAAIpB,CAAM,EACpB,MACnB,CACO,SAAS+Y,GAAY3X,EAAKpB,EAE/B,aAEE,MAAMgZ,EAAO5X,EAAI,KAAK,IAAIpB,CAAM,EAChC,GAAI,CAACgZ,EACD,MAAM,IAAI,MAAM,2CAA2C,EAE/D,MAAMC,EAAa,IAAI,IACvB,UAAW16B,KAAS6iB,EAAI,KAAK,QAAO,EAAI,CACpC,MAAMha,GAAK7D,EAAA6d,EAAI,iBAAiB,IAAI7iB,EAAM,CAAC,CAAC,IAAjC,YAAAgF,EAAoC,GAC/C,GAAI6D,EAAI,CACJ,MAAMqO,EAAWwjB,EAAW,IAAI7xB,CAAE,EAClC,GAAIqO,GAAYA,IAAalX,EAAM,CAAC,EAChC,MAAM,IAAI,MAAM,wBAAwB6I,CAAE,mHAAmH,EAEjK6xB,EAAW,IAAI7xB,EAAI7I,EAAM,CAAC,CAAC,CAC/B,CACJ,CAGA,MAAM26B,EAAW36B,GAAU,OAKvB,MAAM46B,EAAc/X,EAAI,SAAW,gBAAkB,QAAU,cAC/D,GAAIA,EAAI,SAAU,CACd,MAAMgY,GAAa71B,EAAA6d,EAAI,SAAS,SAAS,IAAI7iB,EAAM,CAAC,CAAC,IAAlC,YAAAgF,EAAqC,GAElD81B,EAAejY,EAAI,SAAS,MAASha,GAAOA,GAClD,GAAIgyB,EACA,MAAO,CAAE,IAAKC,EAAaD,CAAU,CAAC,EAG1C,MAAMhyB,EAAK7I,EAAM,CAAC,EAAE,OAASA,EAAM,CAAC,EAAE,OAAO,IAAM,SAAS6iB,EAAI,SAAS,GACzE,OAAA7iB,EAAM,CAAC,EAAE,MAAQ6I,EACV,CAAE,MAAOA,EAAI,IAAK,GAAGiyB,EAAa,UAAU,CAAC,KAAKF,CAAW,IAAI/xB,CAAE,EAAE,CAChF,CACA,GAAI7I,EAAM,CAAC,IAAMy6B,EACb,MAAO,CAAE,IAAK,GAAG,EAIrB,MAAMM,EAAe,KAAgBH,CAAW,IAC1CI,EAAQh7B,EAAM,CAAC,EAAE,OAAO,IAAM,WAAW6iB,EAAI,SAAS,GAC5D,MAAO,CAAE,MAAAmY,EAAO,IAAKD,EAAeC,CAAK,CAC7C,EAGMC,EAAgBj7B,GAAU,CAE5B,GAAIA,EAAM,CAAC,EAAE,OAAO,KAChB,OAEJ,MAAMk6B,EAAOl6B,EAAM,CAAC,EACd,CAAE,IAAAR,EAAK,MAAAw7B,GAAUL,EAAQ36B,CAAK,EACpCk6B,EAAK,IAAM,CAAE,GAAGA,EAAK,MAAM,EAGvBc,IACAd,EAAK,MAAQc,GAEjB,MAAMvZ,EAASyY,EAAK,OACpB,UAAW/wC,KAAOs4B,EACd,OAAOA,EAAOt4B,CAAG,EAErBs4B,EAAO,KAAOjiB,CAClB,EAGA,GAAIqjB,EAAI,SAAW,QACf,UAAW7iB,KAAS6iB,EAAI,KAAK,QAAO,EAAI,CACpC,MAAMqX,EAAOl6B,EAAM,CAAC,EACpB,GAAIk6B,EAAK,MACL,MAAM,IAAI,MAAM,sBACPj1B,EAAAi1B,EAAK,QAAL,YAAAj1B,EAAY,KAAK,IAAI;AAAA;AAAA,iFACwD,CAE9F,CAGJ,UAAWjF,KAAS6iB,EAAI,KAAK,QAAO,EAAI,CACpC,MAAMqX,EAAOl6B,EAAM,CAAC,EAEpB,GAAIyhB,IAAWzhB,EAAM,CAAC,EAAG,CACrBi7B,EAAaj7B,CAAK,EAClB,QACJ,CAEA,GAAI6iB,EAAI,SAAU,CACd,MAAMqY,GAAMre,EAAAgG,EAAI,SAAS,SAAS,IAAI7iB,EAAM,CAAC,CAAC,IAAlC,YAAA6c,EAAqC,GACjD,GAAI4E,IAAWzhB,EAAM,CAAC,GAAKk7B,EAAK,CAC5BD,EAAaj7B,CAAK,EAClB,QACJ,CACJ,CAGA,IADW8iB,EAAAD,EAAI,iBAAiB,IAAI7iB,EAAM,CAAC,CAAC,IAAjC,YAAA8iB,EAAoC,GACvC,CACJmY,EAAaj7B,CAAK,EAClB,QACJ,CAEA,GAAIk6B,EAAK,MAAO,CAEZe,EAAaj7B,CAAK,EAClB,QACJ,CAEA,GAAIk6B,EAAK,MAAQ,GACTrX,EAAI,SAAW,MAAO,CACtBoY,EAAaj7B,CAAK,EAElB,QACJ,CAER,CACJ,CACO,SAASm7B,GAAStY,EAAKpB,EAAQ,aAClC,MAAMgZ,EAAO5X,EAAI,KAAK,IAAIpB,CAAM,EAChC,GAAI,CAACgZ,EACD,MAAM,IAAI,MAAM,2CAA2C,EAE/D,MAAMW,EAAcC,GAAc,CAC9B,MAAMnB,EAAOrX,EAAI,KAAK,IAAIwY,CAAS,EAEnC,GAAInB,EAAK,MAAQ,KACb,OACJ,MAAMzY,EAASyY,EAAK,KAAOA,EAAK,OAC1BoB,EAAU,CAAE,GAAG7Z,CAAM,EACrBjiB,EAAM06B,EAAK,IAEjB,GADAA,EAAK,IAAM,KACP16B,EAAK,CACL47B,EAAW57B,CAAG,EACd,MAAM+7B,EAAU1Y,EAAI,KAAK,IAAIrjB,CAAG,EAC1Bg8B,EAAYD,EAAQ,OAc1B,GAZIC,EAAU,OAAS3Y,EAAI,SAAW,YAAcA,EAAI,SAAW,YAAcA,EAAI,SAAW,gBAE5FpB,EAAO,MAAQA,EAAO,OAAS,CAAA,EAC/BA,EAAO,MAAM,KAAK+Z,CAAS,GAG3B,OAAO,OAAO/Z,EAAQ+Z,CAAS,EAGnC,OAAO,OAAO/Z,EAAQ6Z,CAAO,EACTD,EAAU,KAAK,SAAW77B,EAG1C,UAAWrW,KAAOs4B,EACVt4B,IAAQ,QAAUA,IAAQ,SAExBA,KAAOmyC,GACT,OAAO7Z,EAAOt4B,CAAG,EAK7B,GAAIqyC,EAAU,MAAQD,EAAQ,IAC1B,UAAWpyC,KAAOs4B,EACVt4B,IAAQ,QAAUA,IAAQ,SAE1BA,KAAOoyC,EAAQ,KAAO,KAAK,UAAU9Z,EAAOt4B,CAAG,CAAC,IAAM,KAAK,UAAUoyC,EAAQ,IAAIpyC,CAAG,CAAC,GACrF,OAAOs4B,EAAOt4B,CAAG,CAIjC,CAIA,MAAMmxC,EAASe,EAAU,KAAK,OAC9B,GAAIf,GAAUA,IAAW96B,EAAK,CAE1B47B,EAAWd,CAAM,EACjB,MAAMmB,EAAa5Y,EAAI,KAAK,IAAIyX,CAAM,EACtC,GAAImB,GAAA,MAAAA,EAAY,OAAO,OACnBha,EAAO,KAAOga,EAAW,OAAO,KAE5BA,EAAW,KACX,UAAWtyC,KAAOs4B,EACVt4B,IAAQ,QAAUA,IAAQ,SAE1BA,KAAOsyC,EAAW,KAAO,KAAK,UAAUha,EAAOt4B,CAAG,CAAC,IAAM,KAAK,UAAUsyC,EAAW,IAAItyC,CAAG,CAAC,GAC3F,OAAOs4B,EAAOt4B,CAAG,CAKrC,CAEA05B,EAAI,SAAS,CACT,UAAWwY,EACX,WAAY5Z,EACZ,KAAMyY,EAAK,MAAQ,CAAA,CAC/B,CAAS,CACL,EACA,UAAWl6B,IAAS,CAAC,GAAG6iB,EAAI,KAAK,QAAO,CAAE,EAAE,UACxCuY,EAAWp7B,EAAM,CAAC,CAAC,EAEvB,MAAM1Q,EAAS,CAAA,EAgBf,GAfIuzB,EAAI,SAAW,gBACfvzB,EAAO,QAAU,+CAEZuzB,EAAI,SAAW,WACpBvzB,EAAO,QAAU,0CAEZuzB,EAAI,SAAW,WACpBvzB,EAAO,QAAU,0CAEZuzB,EAAI,QAMT7d,EAAA6d,EAAI,WAAJ,MAAA7d,EAAc,IAAK,CACnB,MAAM6D,GAAK5D,EAAA4d,EAAI,SAAS,SAAS,IAAIpB,CAAM,IAAhC,YAAAxc,EAAmC,GAC9C,GAAI,CAAC4D,EACD,MAAM,IAAI,MAAM,oCAAoC,EACxDvZ,EAAO,IAAMuzB,EAAI,SAAS,IAAIha,CAAE,CACpC,CACA,OAAO,OAAOvZ,EAAQmrC,EAAK,KAAOA,EAAK,MAAM,EAK7C,MAAMiB,GAAa7e,EAAAgG,EAAI,iBAAiB,IAAIpB,CAAM,IAA/B,YAAA5E,EAAkC,GACjD6e,IAAe,QAAapsC,EAAO,KAAOosC,GAC1C,OAAOpsC,EAAO,GAElB,MAAMwwB,IAAOgD,EAAAD,EAAI,WAAJ,YAAAC,EAAc,OAAQ,CAAA,EACnC,UAAW9iB,KAAS6iB,EAAI,KAAK,QAAO,EAAI,CACpC,MAAMqX,EAAOl6B,EAAM,CAAC,EAChBk6B,EAAK,KAAOA,EAAK,QACbA,EAAK,IAAI,KAAOA,EAAK,OACrB,OAAOA,EAAK,IAAI,GACpBpa,EAAKoa,EAAK,KAAK,EAAIA,EAAK,IAEhC,CAEIrX,EAAI,UAGA,OAAO,KAAK/C,CAAI,EAAE,OAAS,IACvB+C,EAAI,SAAW,gBACfvzB,EAAO,MAAQwwB,EAGfxwB,EAAO,YAAcwwB,GAIjC,GAAI,CAIA,MAAM6b,EAAY,KAAK,MAAM,KAAK,UAAUrsC,CAAM,CAAC,EACnD,cAAO,eAAeqsC,EAAW,YAAa,CAC1C,MAAO,CACH,GAAGla,EAAO,WAAW,EACrB,WAAY,CACR,MAAOma,GAA+Bna,EAAQ,QAASoB,EAAI,UAAU,EACrE,OAAQ+Y,GAA+Bna,EAAQ,SAAUoB,EAAI,UAAU,CAC3F,CACA,EACY,WAAY,GACZ,SAAU,EACtB,CAAS,EACM8Y,CACX,MACa,CACT,MAAM,IAAI,MAAM,kCAAkC,CACtD,CACJ,CACA,SAASpB,GAAesB,EAASxX,EAAM,CACnC,MAAMxB,EAAMwB,GAAQ,CAAE,KAAM,IAAI,GAAK,EACrC,GAAIxB,EAAI,KAAK,IAAIgZ,CAAO,EACpB,MAAO,GACXhZ,EAAI,KAAK,IAAIgZ,CAAO,EACpB,MAAMzd,EAAMyd,EAAQ,KAAK,IACzB,GAAIzd,EAAI,OAAS,YACb,MAAO,GACX,GAAIA,EAAI,OAAS,QACb,OAAOmc,GAAenc,EAAI,QAASyE,CAAG,EAC1C,GAAIzE,EAAI,OAAS,MACb,OAAOmc,GAAenc,EAAI,UAAWyE,CAAG,EAC5C,GAAIzE,EAAI,OAAS,OACb,OAAOmc,GAAenc,EAAI,OAAM,EAAIyE,CAAG,EAC3C,GAAIzE,EAAI,OAAS,WACbA,EAAI,OAAS,YACbA,EAAI,OAAS,eACbA,EAAI,OAAS,YACbA,EAAI,OAAS,YACbA,EAAI,OAAS,WACbA,EAAI,OAAS,WACb,OAAOmc,GAAenc,EAAI,UAAWyE,CAAG,EAE5C,GAAIzE,EAAI,OAAS,eACb,OAAOmc,GAAenc,EAAI,KAAMyE,CAAG,GAAK0X,GAAenc,EAAI,MAAOyE,CAAG,EAEzE,GAAIzE,EAAI,OAAS,UAAYA,EAAI,OAAS,MACtC,OAAOmc,GAAenc,EAAI,QAASyE,CAAG,GAAK0X,GAAenc,EAAI,UAAWyE,CAAG,EAEhF,GAAIzE,EAAI,OAAS,OACb,OAAIyd,EAAQ,KAAK,OAAO,IAAI,WAAW,EAC5B,GACJtB,GAAenc,EAAI,GAAIyE,CAAG,GAAK0X,GAAenc,EAAI,IAAKyE,CAAG,EAErE,GAAIzE,EAAI,OAAS,SAAU,CACvB,UAAWj1B,KAAOi1B,EAAI,MAClB,GAAImc,GAAenc,EAAI,MAAMj1B,CAAG,EAAG05B,CAAG,EAClC,MAAO,GAEf,MAAO,EACX,CACA,GAAIzE,EAAI,OAAS,QAAS,CACtB,UAAW1U,KAAU0U,EAAI,QACrB,GAAImc,GAAe7wB,EAAQmZ,CAAG,EAC1B,MAAO,GAEf,MAAO,EACX,CACA,GAAIzE,EAAI,OAAS,QAAS,CACtB,UAAW3Q,KAAQ2Q,EAAI,MACnB,GAAImc,GAAe9sB,EAAMoV,CAAG,EACxB,MAAO,GAEf,MAAI,GAAAzE,EAAI,MAAQmc,GAAenc,EAAI,KAAMyE,CAAG,EAGhD,CACA,MAAO,EACX,CAKO,MAAMiZ,GAA2B,CAACra,EAAQsa,EAAa,CAAA,IAAQ9d,GAAW,CAC7E,MAAM4E,EAAMmX,GAAkB,CAAE,GAAG/b,EAAQ,WAAA8d,CAAU,CAAE,EACvD9B,OAAAA,GAAQxY,EAAQoB,CAAG,EACnB2X,GAAY3X,EAAKpB,CAAM,EAChB0Z,GAAStY,EAAKpB,CAAM,CAC/B,EACama,GAAiC,CAACna,EAAQua,EAAID,EAAa,CAAA,IAAQ9d,GAAW,CACvF,KAAM,CAAE,eAAAge,EAAgB,OAAAxqB,CAAM,EAAKwM,GAAU,CAAA,EACvC4E,EAAMmX,GAAkB,CAAE,GAAIiC,GAAkB,CAAA,EAAK,OAAAxqB,EAAQ,GAAAuqB,EAAI,WAAAD,EAAY,EACnF9B,OAAAA,GAAQxY,EAAQoB,CAAG,EACnB2X,GAAY3X,EAAKpB,CAAM,EAChB0Z,GAAStY,EAAKpB,CAAM,CAC/B,EC7bMya,GAAY,CACd,KAAM,OACN,IAAK,MACL,SAAU,YACV,YAAa,cACb,MAAO,EACX,EAEaC,GAAkB,CAAC1a,EAAQoB,EAAKuX,EAAOhZ,IAAY,CAC5D,MAAMgb,EAAOhC,EACbgC,EAAK,KAAO,SACZ,KAAM,CAAE,QAAA/T,EAAS,QAAAC,EAAS,OAAApqB,EAAQ,SAAA4zB,EAAU,gBAAAuK,CAAe,EAAK5a,EAAO,KAClE,IAkBL,GAjBI,OAAO4G,GAAY,WACnB+T,EAAK,UAAY/T,GACjB,OAAOC,GAAY,WACnB8T,EAAK,UAAY9T,GAEjBpqB,IACAk+B,EAAK,OAASF,GAAUh+B,CAAM,GAAKA,EAC/Bk+B,EAAK,SAAW,IAChB,OAAOA,EAAK,OAGZl+B,IAAW,QACX,OAAOk+B,EAAK,QAGhBC,IACAD,EAAK,gBAAkBC,GACvBvK,GAAYA,EAAS,KAAO,EAAG,CAC/B,MAAMwK,EAAU,CAAC,GAAGxK,CAAQ,EACxBwK,EAAQ,SAAW,EACnBF,EAAK,QAAUE,EAAQ,CAAC,EAAE,OACrBA,EAAQ,OAAS,IACtBF,EAAK,MAAQ,CACT,GAAGE,EAAQ,IAAKlV,IAAW,CACvB,GAAIvE,EAAI,SAAW,YAAcA,EAAI,SAAW,YAAcA,EAAI,SAAW,cACvE,CAAE,KAAM,QAAQ,EAChB,GACN,QAASuE,EAAM,MACnC,EAAkB,CAClB,EAEI,CACJ,EACamV,GAAkB,CAAC9a,EAAQoB,EAAKuX,EAAOhZ,IAAY,CAC5D,MAAMgb,EAAOhC,EACP,CAAE,QAAA/R,EAAS,QAAAC,EAAS,OAAApqB,EAAQ,WAAAs+B,EAAY,iBAAAC,EAAkB,iBAAAC,CAAgB,EAAKjb,EAAO,KAAK,IAC7F,OAAOvjB,GAAW,UAAYA,EAAO,SAAS,KAAK,EACnDk+B,EAAK,KAAO,UAEZA,EAAK,KAAO,SAEhB,MAAMO,EAAQ,OAAOD,GAAqB,UAAYA,IAAqBrU,GAAW,OAAO,mBACvFuU,EAAQ,OAAOH,GAAqB,UAAYA,IAAqBnU,GAAW,OAAO,mBACvFuU,EAASha,EAAI,SAAW,YAAcA,EAAI,SAAW,cACvD8Z,EACIE,GACAT,EAAK,QAAUM,EACfN,EAAK,iBAAmB,IAGxBA,EAAK,iBAAmBM,EAGvB,OAAOrU,GAAY,WACxB+T,EAAK,QAAU/T,GAEfuU,EACIC,GACAT,EAAK,QAAUK,EACfL,EAAK,iBAAmB,IAGxBA,EAAK,iBAAmBK,EAGvB,OAAOnU,GAAY,WACxB8T,EAAK,QAAU9T,GAEf,OAAOkU,GAAe,WACtBJ,EAAK,WAAaI,EAC1B,EACaM,GAAmB,CAACjB,EAASxX,EAAM+X,EAAMhb,IAAY,CAC9Dgb,EAAK,KAAO,SAChB,EACaW,GAAkB,CAAClB,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC7D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,6CAA6C,CAErE,EACama,GAAkB,CAACnB,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC7D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,8CAA8C,CAEtE,EACaoa,GAAgB,CAACpB,EAAShZ,EAAKuZ,EAAMhb,IAAY,CACtDyB,EAAI,SAAW,eACfuZ,EAAK,KAAO,SACZA,EAAK,SAAW,GAChBA,EAAK,KAAO,CAAC,IAAI,GAGjBA,EAAK,KAAO,MAEpB,EACac,GAAqB,CAACrB,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAChE,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,gDAAgD,CAExE,EACasa,GAAgB,CAACtB,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC3D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,2CAA2C,CAEnE,EACaua,GAAiB,CAACvB,EAASxX,EAAM+X,EAAMhb,IAAY,CAC5Dgb,EAAK,IAAM,CAAA,CACf,EACaiB,GAAe,CAACxB,EAASxX,EAAM+V,EAAOhZ,IAAY,CAE/D,EACakc,GAAmB,CAACzB,EAASxX,EAAM+V,EAAOhZ,IAAY,CAEnE,EACamc,GAAgB,CAAC1B,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC3D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,2CAA2C,CAEnE,EACa2a,GAAgB,CAAC/b,EAAQ4C,EAAM+X,EAAMhb,IAAY,CAC1D,MAAMhD,EAAMqD,EAAO,KAAK,IAClB9G,EAASkE,GAAcT,EAAI,OAAO,EAEpCzD,EAAO,MAAOoE,GAAM,OAAOA,GAAM,QAAQ,IACzCqd,EAAK,KAAO,UACZzhB,EAAO,MAAOoE,GAAM,OAAOA,GAAM,QAAQ,IACzCqd,EAAK,KAAO,UAChBA,EAAK,KAAOzhB,CAChB,EACa8iB,GAAmB,CAAChc,EAAQoB,EAAKuZ,EAAMhb,IAAY,CAC5D,MAAMhD,EAAMqD,EAAO,KAAK,IAClBic,EAAO,CAAA,EACb,UAAWhnB,KAAO0H,EAAI,OAClB,GAAI1H,IAAQ,QACR,GAAImM,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,0DAA0D,UAMzE,OAAOnM,GAAQ,SAAU,CAC9B,GAAImM,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,sDAAsD,EAGtE6a,EAAK,KAAK,OAAOhnB,CAAG,CAAC,CAE7B,MAEIgnB,EAAK,KAAKhnB,CAAG,EAGrB,GAAIgnB,EAAK,SAAW,EAGf,GAAIA,EAAK,SAAW,EAAG,CACxB,MAAMhnB,EAAMgnB,EAAK,CAAC,EAClBtB,EAAK,KAAO1lB,IAAQ,KAAO,OAAS,OAAOA,EACvCmM,EAAI,SAAW,YAAcA,EAAI,SAAW,cAC5CuZ,EAAK,KAAO,CAAC1lB,CAAG,EAGhB0lB,EAAK,MAAQ1lB,CAErB,MAEQgnB,EAAK,MAAO3e,GAAM,OAAOA,GAAM,QAAQ,IACvCqd,EAAK,KAAO,UACZsB,EAAK,MAAO3e,GAAM,OAAOA,GAAM,QAAQ,IACvCqd,EAAK,KAAO,UACZsB,EAAK,MAAO3e,GAAM,OAAOA,GAAM,SAAS,IACxCqd,EAAK,KAAO,WACZsB,EAAK,MAAO3e,GAAMA,IAAM,IAAI,IAC5Bqd,EAAK,KAAO,QAChBA,EAAK,KAAOsB,CAEpB,EACaC,GAAe,CAAC9B,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC1D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,0CAA0C,CAElE,EACa+a,GAA2B,CAACnc,EAAQ4C,EAAM+X,EAAMhb,IAAY,CACrE,MAAMgZ,EAAQgC,EACR3S,EAAUhI,EAAO,KAAK,QAC5B,GAAI,CAACgI,EACD,MAAM,IAAI,MAAM,uCAAuC,EAC3D2Q,EAAM,KAAO,SACbA,EAAM,QAAU3Q,EAAQ,MAC5B,EACaoU,GAAgB,CAACpc,EAAQ4C,EAAM+X,EAAMhb,IAAY,CAC1D,MAAMgZ,EAAQgC,EACR0B,EAAO,CACT,KAAM,SACN,OAAQ,SACR,gBAAiB,QACzB,EACU,CAAE,QAAAzV,EAAS,QAAAC,EAAS,KAAAyV,CAAI,EAAKtc,EAAO,KAAK,IAC3C4G,IAAY,SACZyV,EAAK,UAAYzV,GACjBC,IAAY,SACZwV,EAAK,UAAYxV,GACjByV,EACIA,EAAK,SAAW,GAChBD,EAAK,iBAAmBC,EAAK,CAAC,EAC9B,OAAO,OAAO3D,EAAO0D,CAAI,IAGzB,OAAO,OAAO1D,EAAO0D,CAAI,EACzB1D,EAAM,MAAQ2D,EAAK,IAAKC,IAAO,CAAE,iBAAkBA,CAAC,EAAG,GAI3D,OAAO,OAAO5D,EAAO0D,CAAI,CAEjC,EACaG,GAAmB,CAACpC,EAASxX,EAAM+X,EAAMhb,IAAY,CAC9Dgb,EAAK,KAAO,SAChB,EACa8B,GAAkB,CAACrC,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC7D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,mDAAmD,CAE3E,EACasb,GAAoB,CAACtC,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC/D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,qDAAqD,CAE7E,EACaub,GAAqB,CAACvC,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAChE,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,iDAAiD,CAEzE,EACawb,GAAe,CAACxC,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC1D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,0CAA0C,CAElE,EACayb,GAAe,CAACzC,EAAShZ,EAAKuX,EAAOhZ,IAAY,CAC1D,GAAIyB,EAAI,kBAAoB,QACxB,MAAM,IAAI,MAAM,0CAA0C,CAElE,EAEa0b,GAAiB,CAAC9c,EAAQoB,EAAKuX,EAAOnc,IAAW,CAC1D,MAAMme,EAAOhC,EACPhc,EAAMqD,EAAO,KAAK,IAClB,CAAE,QAAA4G,EAAS,QAAAC,CAAO,EAAK7G,EAAO,KAAK,IACrC,OAAO4G,GAAY,WACnB+T,EAAK,SAAW/T,GAChB,OAAOC,GAAY,WACnB8T,EAAK,SAAW9T,GACpB8T,EAAK,KAAO,QACZA,EAAK,MAAQnC,GAAQ7b,EAAI,QAASyE,EAAK,CACnC,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,OAAO,CACtC,CAAK,CACL,EACaugB,GAAkB,CAAC/c,EAAQoB,EAAKuX,EAAOnc,IAAW,OAC3D,MAAMme,EAAOhC,EACPhc,EAAMqD,EAAO,KAAK,IACxB2a,EAAK,KAAO,SACZA,EAAK,WAAa,CAAA,EAClB,MAAM9a,EAAQlD,EAAI,MAClB,UAAWj1B,KAAOm4B,EACd8a,EAAK,WAAWjzC,CAAG,EAAI8wC,GAAQ3Y,EAAMn4B,CAAG,EAAG05B,EAAK,CAC5C,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,aAAc90B,CAAG,CACpD,CAAS,EAGL,MAAMs1C,EAAU,IAAI,IAAI,OAAO,KAAKnd,CAAK,CAAC,EACpCod,EAAe,IAAI,IAAI,CAAC,GAAGD,CAAO,EAAE,OAAQt1C,GAAQ,CACtD,MAAM41B,EAAIX,EAAI,MAAMj1B,CAAG,EAAE,KACzB,OAAI05B,EAAI,KAAO,QACJ9D,EAAE,QAAU,OAGZA,EAAE,SAAW,MAE5B,CAAC,CAAC,EACE2f,EAAa,KAAO,IACpBtC,EAAK,SAAW,MAAM,KAAKsC,CAAY,KAGvC15B,EAAAoZ,EAAI,WAAJ,YAAApZ,EAAc,KAAK,IAAI,QAAS,QAEhCo3B,EAAK,qBAAuB,GAEtBhe,EAAI,SAKLA,EAAI,WACTge,EAAK,qBAAuBnC,GAAQ7b,EAAI,SAAUyE,EAAK,CACnD,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,sBAAsB,CACzD,CAAS,GAPG4E,EAAI,KAAO,WACXuZ,EAAK,qBAAuB,GAQxC,EACauC,GAAiB,CAACld,EAAQoB,EAAKuZ,EAAMne,IAAW,CACzD,MAAMG,EAAMqD,EAAO,KAAK,IAGlBmd,EAAcxgB,EAAI,YAAc,GAChChgB,EAAUggB,EAAI,QAAQ,IAAI,CAAChc,EAAGxU,IAAMqsC,GAAQ73B,EAAGygB,EAAK,CACtD,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM2gB,EAAc,QAAU,QAAShxC,CAAC,CACjE,CAAK,CAAC,EACEgxC,EACAxC,EAAK,MAAQh+B,EAGbg+B,EAAK,MAAQh+B,CAErB,EACaygC,GAAwB,CAACpd,EAAQoB,EAAKuZ,EAAMne,IAAW,CAChE,MAAMG,EAAMqD,EAAO,KAAK,IAClB1O,EAAIknB,GAAQ7b,EAAI,KAAMyE,EAAK,CAC7B,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,QAAS,CAAC,CACzC,CAAK,EACKjL,EAAIinB,GAAQ7b,EAAI,MAAOyE,EAAK,CAC9B,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,QAAS,CAAC,CACzC,CAAK,EACK6gB,EAAwBpoB,GAAQ,UAAWA,GAAO,OAAO,KAAKA,CAAG,EAAE,SAAW,EAC9EqoB,EAAQ,CACV,GAAID,EAAqB/rB,CAAC,EAAIA,EAAE,MAAQ,CAACA,CAAC,EAC1C,GAAI+rB,EAAqB9rB,CAAC,EAAIA,EAAE,MAAQ,CAACA,CAAC,CAClD,EACIopB,EAAK,MAAQ2C,CACjB,EACaC,GAAiB,CAACvd,EAAQoB,EAAKuX,EAAOnc,IAAW,CAC1D,MAAMme,EAAOhC,EACPhc,EAAMqD,EAAO,KAAK,IACxB2a,EAAK,KAAO,QACZ,MAAM6C,EAAapc,EAAI,SAAW,gBAAkB,cAAgB,QAC9Dqc,EAAWrc,EAAI,SAAW,iBAA4BA,EAAI,SAAW,cAAzB,QAAmD,kBAC/Fsc,EAAc/gB,EAAI,MAAM,IAAI,CAAChc,EAAGxU,IAAMqsC,GAAQ73B,EAAGygB,EAAK,CACxD,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAMghB,EAAYrxC,CAAC,CAC5C,CAAK,CAAC,EACI6nB,EAAO2I,EAAI,KACX6b,GAAQ7b,EAAI,KAAMyE,EAAK,CACrB,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAMihB,EAAU,GAAIrc,EAAI,SAAW,cAAgB,CAACzE,EAAI,MAAM,MAAM,EAAI,CAAA,CAAG,CACxG,CAAS,EACC,KACFyE,EAAI,SAAW,iBACfuZ,EAAK,YAAc+C,EACf1pB,IACA2mB,EAAK,MAAQ3mB,IAGZoN,EAAI,SAAW,eACpBuZ,EAAK,MAAQ,CACT,MAAO+C,CACnB,EACY1pB,GACA2mB,EAAK,MAAM,MAAM,KAAK3mB,CAAI,EAE9B2mB,EAAK,SAAW+C,EAAY,OACvB1pB,IACD2mB,EAAK,SAAW+C,EAAY,UAIhC/C,EAAK,MAAQ+C,EACT1pB,IACA2mB,EAAK,gBAAkB3mB,IAI/B,KAAM,CAAE,QAAA4S,EAAS,QAAAC,CAAO,EAAK7G,EAAO,KAAK,IACrC,OAAO4G,GAAY,WACnB+T,EAAK,SAAW/T,GAChB,OAAOC,GAAY,WACnB8T,EAAK,SAAW9T,EACxB,EACa8W,GAAkB,CAAC3d,EAAQoB,EAAKuX,EAAOnc,IAAW,CAC3D,MAAMme,EAAOhC,EACPhc,EAAMqD,EAAO,KAAK,IACxB2a,EAAK,KAAO,SAIZ,MAAMiD,EAAUjhB,EAAI,QACdkhB,EAASD,EAAQ,KAAK,IACtBvN,EAAWwN,GAAA,YAAAA,EAAQ,SACzB,GAAIlhB,EAAI,OAAS,SAAW0T,GAAYA,EAAS,KAAO,EAAG,CAEvD,MAAMyN,EAActF,GAAQ7b,EAAI,UAAWyE,EAAK,CAC5C,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,oBAAqB,GAAG,CAC3D,CAAS,EACDme,EAAK,kBAAoB,CAAA,EACzB,UAAW3S,KAAWqI,EAClBsK,EAAK,kBAAkB3S,EAAQ,MAAM,EAAI8V,CAEjD,MAGQ1c,EAAI,SAAW,YAAcA,EAAI,SAAW,mBAC5CuZ,EAAK,cAAgBnC,GAAQ7b,EAAI,QAASyE,EAAK,CAC3C,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,eAAe,CACtD,CAAa,GAELme,EAAK,qBAAuBnC,GAAQ7b,EAAI,UAAWyE,EAAK,CACpD,GAAG5E,EACH,KAAM,CAAC,GAAGA,EAAO,KAAM,sBAAsB,CACzD,CAAS,EAGL,MAAMuhB,EAAYH,EAAQ,KAAK,OAC/B,GAAIG,EAAW,CACX,MAAMC,EAAiB,CAAC,GAAGD,CAAS,EAAE,OAAQzgB,GAAM,OAAOA,GAAM,UAAY,OAAOA,GAAM,QAAQ,EAC9F0gB,EAAe,OAAS,IACxBrD,EAAK,SAAWqD,EAExB,CACJ,EACaC,GAAoB,CAACje,EAAQoB,EAAKuZ,EAAMne,IAAW,CAC5D,MAAMG,EAAMqD,EAAO,KAAK,IAClBke,EAAQ1F,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAC1Cic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAC5BoB,EAAI,SAAW,eACfqX,EAAK,IAAM9b,EAAI,UACfge,EAAK,SAAW,IAGhBA,EAAK,MAAQ,CAACuD,EAAO,CAAE,KAAM,MAAM,CAAE,CAE7C,EACaC,GAAuB,CAACne,EAAQoB,EAAKuX,EAAOnc,IAAW,CAChE,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,SACnB,EACayhB,GAAmB,CAACpe,EAAQoB,EAAKuZ,EAAMne,IAAW,CAC3D,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,UACfge,EAAK,QAAU,KAAK,MAAM,KAAK,UAAUhe,EAAI,YAAY,CAAC,CAC9D,EACa0hB,GAAoB,CAACre,EAAQoB,EAAKuZ,EAAMne,IAAW,CAC5D,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,UACXyE,EAAI,KAAO,UACXuZ,EAAK,UAAY,KAAK,MAAM,KAAK,UAAUhe,EAAI,YAAY,CAAC,EACpE,EACa2hB,GAAiB,CAACte,EAAQoB,EAAKuZ,EAAMne,IAAW,CACzD,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,UACf,IAAI4hB,EACJ,GAAI,CACAA,EAAa5hB,EAAI,WAAW,MAAS,CACzC,MACM,CACF,MAAM,IAAI,MAAM,uDAAuD,CAC3E,CACAge,EAAK,QAAU4D,CACnB,EACaC,GAAgB,CAACxe,EAAQoB,EAAKuX,EAAOnc,IAAW,CACzD,MAAMG,EAAMqD,EAAO,KAAK,IAClBye,EAAgB9hB,EAAI,GAAG,KAAK,OAAO,IAAI,eAAe,EACtDn0B,EAAY44B,EAAI,KAAO,QAAWqd,EAAgB9hB,EAAI,IAAMA,EAAI,GAAMA,EAAI,IAChF6b,GAAQhwC,EAAW44B,EAAK5E,CAAM,EAC9B,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAMjwC,CACf,EACak2C,GAAoB,CAAC1e,EAAQoB,EAAKuZ,EAAMne,IAAW,CAC5D,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,UACfge,EAAK,SAAW,EACpB,EACagE,GAAmB,CAAC3e,EAAQoB,EAAKuX,EAAOnc,IAAW,CAC5D,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,SACnB,EACaiiB,GAAoB,CAAC5e,EAAQoB,EAAKuX,EAAOnc,IAAW,CAC7D,MAAMG,EAAMqD,EAAO,KAAK,IACxBwY,GAAQ7b,EAAI,UAAWyE,EAAK5E,CAAM,EAClC,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAM9b,EAAI,SACnB,EACakiB,GAAgB,CAAC7e,EAAQoB,EAAKuX,EAAOnc,IAAW,CACzD,MAAMh0B,EAAYw3B,EAAO,KAAK,UAC9BwY,GAAQhwC,EAAW44B,EAAK5E,CAAM,EAC9B,MAAMic,EAAOrX,EAAI,KAAK,IAAIpB,CAAM,EAChCyY,EAAK,IAAMjwC,CACf,EAEas2C,GAAgB,CACzB,OAAQpE,GACR,OAAQI,GACR,QAASO,GACT,OAAQC,GACR,OAAQC,GACR,KAAMC,GACN,UAAWC,GACX,KAAMC,GACN,MAAOC,GACP,IAAKC,GACL,QAASC,GACT,KAAMC,GACN,KAAMC,GACN,QAASC,GACT,IAAKE,GACL,iBAAkBC,GAClB,KAAMC,GACN,QAASI,GACT,OAAQC,GACR,SAAUC,GACV,UAAWC,GACX,IAAKC,GACL,IAAKC,GACL,MAAOC,GACP,OAAQC,GACR,MAAOG,GACP,aAAcE,GACd,MAAOG,GACP,OAAQI,GACR,SAAUM,GACV,YAAaE,GACb,QAASC,GACT,SAAUC,GACV,MAAOC,GACP,KAAME,GACN,SAAUE,GACV,QAASC,GACT,SAAUC,GACV,KAAMC,EACV,EACO,SAASE,GAAarhB,EAAOlB,EAAQ,CACxC,GAAI,WAAYkB,EAAO,CAEnB,MAAMnL,EAAWmL,EACX0D,EAAMmX,GAAkB,CAAE,GAAG/b,EAAQ,WAAYsiB,GAAe,EAChEzgB,EAAO,CAAA,EAEb,UAAW9f,KAASgU,EAAS,OAAO,QAAO,EAAI,CAC3C,KAAM,CAACjS,EAAG0f,CAAM,EAAIzhB,EACpBi6B,GAAQxY,EAAQoB,CAAG,CACvB,CACA,MAAM4d,EAAU,CAAA,EACVC,EAAW,CACb,SAAA1sB,EACA,IAAKiK,GAAA,YAAAA,EAAQ,IACb,KAAA6B,CACZ,EAEQ+C,EAAI,SAAW6d,EAEf,UAAW1gC,KAASgU,EAAS,OAAO,QAAO,EAAI,CAC3C,KAAM,CAAC7qB,EAAKs4B,CAAM,EAAIzhB,EACtBw6B,GAAY3X,EAAKpB,CAAM,EACvBgf,EAAQt3C,CAAG,EAAIgyC,GAAStY,EAAKpB,CAAM,CACvC,CACA,GAAI,OAAO,KAAK3B,CAAI,EAAE,OAAS,EAAG,CAC9B,MAAM8a,EAAc/X,EAAI,SAAW,gBAAkB,QAAU,cAC/D4d,EAAQ,SAAW,CACf,CAAC7F,CAAW,EAAG9a,CAC/B,CACQ,CACA,MAAO,CAAE,QAAA2gB,CAAO,CACpB,CAEA,MAAM5d,EAAMmX,GAAkB,CAAE,GAAG/b,EAAQ,WAAYsiB,GAAe,EACtEtG,OAAAA,GAAQ9a,EAAO0D,CAAG,EAClB2X,GAAY3X,EAAK1D,CAAK,EACfgc,GAAStY,EAAK1D,CAAK,CAC9B,CCtlBO,MAAMwhB,GAA+BhZ,EAAkB,iBAAkB,CAACxJ,EAAMC,IAAQ,CAC3FwiB,GAAqB,KAAKziB,EAAMC,CAAG,EACnCyiB,GAAwB,KAAK1iB,EAAMC,CAAG,CAC1C,CAAC,EACM,SAAS6I,GAAShJ,EAAQ,CAC7B,OAAO6iB,GAAkBH,GAAgB1iB,CAAM,CACnD,CACO,MAAM8iB,GAA2BpZ,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnF4iB,GAAiB,KAAK7iB,EAAMC,CAAG,EAC/ByiB,GAAwB,KAAK1iB,EAAMC,CAAG,CAC1C,CAAC,EACM,SAAS5f,GAAKyf,EAAQ,CACzB,OAAOgjB,GAAcF,GAAY9iB,CAAM,CAC3C,CACO,MAAMijB,GAA2BvZ,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnF+iB,GAAiB,KAAKhjB,EAAMC,CAAG,EAC/ByiB,GAAwB,KAAK1iB,EAAMC,CAAG,CAC1C,CAAC,EACM,SAAS4I,GAAK/I,EAAQ,CACzB,OAAOmjB,GAAcF,GAAYjjB,CAAM,CAC3C,CACO,MAAMojB,GAA+B1Z,EAAkB,iBAAkB,CAACxJ,EAAMC,IAAQ,CAC3FkjB,GAAqB,KAAKnjB,EAAMC,CAAG,EACnCyiB,GAAwB,KAAK1iB,EAAMC,CAAG,CAC1C,CAAC,EACM,SAASpO,GAASiO,EAAQ,CAC7B,OAAOsjB,GAAkBF,GAAgBpjB,CAAM,CACnD,CC1BA,MAAMD,GAAc,CAACG,EAAMsE,IAAW,CAClCc,GAAU,KAAKpF,EAAMsE,CAAM,EAC3BtE,EAAK,KAAO,WACZ,OAAO,iBAAiBA,EAAM,CAC1B,OAAQ,CACJ,MAAQuF,GAAW8d,GAAiBrjB,EAAMuF,CAAM,CAE5D,EACQ,QAAS,CACL,MAAQA,GAAW+d,GAAkBtjB,EAAMuF,CAAM,CAE7D,EACQ,SAAU,CACN,MAAQL,GAAU,CACdlF,EAAK,OAAO,KAAKkF,CAAK,EACtBlF,EAAK,QAAU,KAAK,UAAUA,EAAK,OAAQmF,GAA4B,CAAC,CAC5E,CAEZ,EACQ,UAAW,CACP,MAAQb,GAAW,CACftE,EAAK,OAAO,KAAK,GAAGsE,CAAM,EAC1BtE,EAAK,QAAU,KAAK,UAAUA,EAAK,OAAQmF,GAA4B,CAAC,CAC5E,CAEZ,EACQ,QAAS,CACL,KAAM,CACF,OAAOnF,EAAK,OAAO,SAAW,CAClC,CAEZ,CACA,CAAK,CAML,EAEaujB,GAA6B/Z,EAAkB,WAAY3J,GAAa,CACjF,OAAQ,KACZ,CAAC,EC3CY2jB,GAAwBC,GAAYF,EAAY,EAChDG,GAA6BC,GAAiBJ,EAAY,EAC1D7c,GAA4Bkd,GAAgBL,EAAY,EACxD1c,GAAiCgd,GAAqBN,EAAY,EAElEO,GAAyBC,GAAaR,EAAY,EAClDS,GAAyBC,GAAaV,EAAY,EAClDW,GAA8BC,GAAkBZ,EAAY,EAC5Da,GAA8BC,GAAkBd,EAAY,EAC5De,GAA6BC,GAAiBhB,EAAY,EAC1DiB,GAA6BC,GAAiBlB,EAAY,EAC1DmB,GAAkCC,GAAsBpB,EAAY,EACpEqB,GAAkCC,GAAsBtB,EAAY,ECI3EuB,GAAmC,IAAI,QAC7C,SAASC,GAAoB/kB,EAAMnuB,EAAOmzC,EAAS,CAC/C,MAAM9kB,EAAQ,OAAO,eAAeF,CAAI,EACxC,IAAIilB,EAAYH,GAAiB,IAAI5kB,CAAK,EAK1C,GAJK+kB,IACDA,EAAY,IAAI,IAChBH,GAAiB,IAAI5kB,EAAO+kB,CAAS,GAErC,CAAAA,EAAU,IAAIpzC,CAAK,EAEvB,CAAAozC,EAAU,IAAIpzC,CAAK,EACnB,UAAW7G,KAAOg6C,EAAS,CACvB,MAAM3kB,EAAK2kB,EAAQh6C,CAAG,EACtB,OAAO,eAAek1B,EAAOl1B,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,KAAM,CACF,MAAMk6C,EAAQ7kB,EAAG,KAAK,IAAI,EAC1B,cAAO,eAAe,KAAMr1B,EAAK,CAC7B,aAAc,GACd,SAAU,GACV,WAAY,GACZ,MAAOk6C,CAC3B,CAAiB,EACMA,CACX,EACA,IAAItkB,EAAG,CACH,OAAO,eAAe,KAAM51B,EAAK,CAC7B,aAAc,GACd,SAAU,GACV,WAAY,GACZ,MAAO41B,CAC3B,CAAiB,CACL,CACZ,CAAS,CACL,EACJ,CACO,MAAMukB,GAAwB3b,EAAkB,UAAW,CAACxJ,EAAMC,KACrEmlB,GAAc,KAAKplB,EAAMC,CAAG,EAC5B,OAAO,OAAOD,EAAK,WAAW,EAAG,CAC7B,WAAY,CACR,MAAOyd,GAA+Bzd,EAAM,OAAO,EACnD,OAAQyd,GAA+Bzd,EAAM,QAAQ,CACjE,CACA,CAAK,EACDA,EAAK,aAAe2d,GAAyB3d,EAAM,CAAA,CAAE,EACrDA,EAAK,IAAMC,EACXD,EAAK,KAAOC,EAAI,KAChB,OAAO,eAAeD,EAAM,OAAQ,CAAE,MAAOC,EAAK,EAMlDD,EAAK,MAAQ,CAACoC,EAAMtC,IAAWulB,GAAYrlB,EAAMoC,EAAMtC,EAAQ,CAAE,OAAQE,EAAK,KAAK,CAAE,EACrFA,EAAK,UAAY,CAACoC,EAAMtC,IAAWwlB,GAAgBtlB,EAAMoC,EAAMtC,CAAM,EACrEE,EAAK,WAAa,MAAOoC,EAAMtC,IAAWylB,GAAiBvlB,EAAMoC,EAAMtC,EAAQ,CAAE,OAAQE,EAAK,UAAU,CAAE,EAC1GA,EAAK,eAAiB,MAAOoC,EAAMtC,IAAW0lB,GAAqBxlB,EAAMoC,EAAMtC,CAAM,EACrFE,EAAK,IAAMA,EAAK,eAChBA,EAAK,OAAS,CAACoC,EAAMtC,IAAW2lB,GAAazlB,EAAMoC,EAAMtC,CAAM,EAC/DE,EAAK,OAAS,CAACoC,EAAMtC,IAAW4lB,GAAa1lB,EAAMoC,EAAMtC,CAAM,EAC/DE,EAAK,YAAc,MAAOoC,EAAMtC,IAAW6lB,GAAkB3lB,EAAMoC,EAAMtC,CAAM,EAC/EE,EAAK,YAAc,MAAOoC,EAAMtC,IAAW8lB,GAAkB5lB,EAAMoC,EAAMtC,CAAM,EAC/EE,EAAK,WAAa,CAACoC,EAAMtC,IAAW+lB,GAAiB7lB,EAAMoC,EAAMtC,CAAM,EACvEE,EAAK,WAAa,CAACoC,EAAMtC,IAAWgmB,GAAiB9lB,EAAMoC,EAAMtC,CAAM,EACvEE,EAAK,gBAAkB,MAAOoC,EAAMtC,IAAWimB,GAAsB/lB,EAAMoC,EAAMtC,CAAM,EACvFE,EAAK,gBAAkB,MAAOoC,EAAMtC,IAAWkmB,GAAsBhmB,EAAMoC,EAAMtC,CAAM,EAOvFilB,GAAoB/kB,EAAM,UAAW,CACjC,SAASimB,EAAM,CACX,MAAMhmB,EAAM,KAAK,IACjB,OAAO,KAAK,MAAMimB,GAAejmB,EAAK,CAClC,OAAQ,CACJ,GAAIA,EAAI,QAAU,GAClB,GAAGgmB,EAAK,IAAKla,GAAO,OAAOA,GAAO,WAAa,CAAE,KAAM,CAAE,MAAOA,EAAI,IAAK,CAAE,MAAO,QAAQ,EAAI,SAAU,CAAA,CAAE,CAAE,EAAKA,CAAE,CACvI,CACA,CAAa,EAAG,CAAE,OAAQ,GAAM,CACxB,EACA,QAAQka,EAAM,CACV,OAAO,KAAK,MAAM,GAAGA,CAAI,CAC7B,EACA,MAAMhmB,EAAKH,EAAQ,CACf,OAAOqmB,GAAW,KAAMlmB,EAAKH,CAAM,CACvC,EACA,OAAQ,CACJ,OAAO,IACX,EACA,SAASsmB,EAAKpP,EAAM,CAChB,OAAAoP,EAAI,IAAI,KAAMpP,CAAI,EACX,IACX,EACA,OAAOqP,EAAOvmB,EAAQ,CAClB,OAAO,KAAK,MAAMwmB,GAAOD,EAAOvmB,CAAM,CAAC,CAC3C,EACA,YAAYymB,EAAYzmB,EAAQ,CAC5B,OAAO,KAAK,MAAM0mB,GAAYD,EAAYzmB,CAAM,CAAC,CACrD,EACA,UAAUO,EAAI,CACV,OAAO,KAAK,MAAMomB,GAAiBpmB,CAAE,CAAC,CAC1C,EACA,UAAW,CACP,OAAOqmB,GAAS,IAAI,CACxB,EACA,eAAgB,CACZ,OAAOC,GAAc,IAAI,CAC7B,EACA,UAAW,CACP,OAAOC,GAAS,IAAI,CACxB,EACA,SAAU,CACN,OAAOF,GAASE,GAAS,IAAI,CAAC,CAClC,EACA,YAAY9mB,EAAQ,CAChB,OAAO+mB,GAAY,KAAM/mB,CAAM,CACnC,EACA,OAAQ,CACJ,OAAOgnB,GAAM,IAAI,CACrB,EACA,GAAG/rB,EAAK,CACJ,OAAOgsB,GAAM,CAAC,KAAMhsB,CAAG,CAAC,CAC5B,EACA,IAAIA,EAAK,CACL,OAAOisB,GAAa,KAAMjsB,CAAG,CACjC,EACA,UAAUggB,EAAI,CACV,OAAOkM,GAAK,KAAMC,GAAUnM,CAAE,CAAC,CACnC,EACA,QAAQ/5B,EAAG,CACP,OAAOmmC,GAAS,KAAMnmC,CAAC,CAC3B,EACA,SAASA,EAAG,CACR,OAAOomC,GAAS,KAAMpmC,CAAC,CAC3B,EACA,MAAM8e,EAAQ,CACV,OAAOunB,GAAO,KAAMvnB,CAAM,CAC9B,EACA,KAAKxM,EAAQ,CACT,OAAO2zB,GAAK,KAAM3zB,CAAM,CAC5B,EACA,UAAW,CACP,OAAOg0B,GAAS,IAAI,CACxB,EACA,SAASlyB,EAAa,CAClB,MAAM2N,EAAK,KAAK,MAAK,EACrBwkB,OAAAA,GAAoB,IAAIxkB,EAAI,CAAE,YAAA3N,CAAW,CAAE,EACpC2N,CACX,EACA,QAAQrrB,EAAM,CAKV,GAAIA,EAAK,SAAW,EAChB,OAAO6vC,GAAoB,IAAI,IAAI,EACvC,MAAMxkB,EAAK,KAAK,MAAK,EACrBwkB,OAAAA,GAAoB,IAAIxkB,EAAIrrB,EAAK,CAAC,CAAC,EAC5BqrB,CACX,EACA,YAAa,CACT,OAAO,KAAK,UAAU,MAAS,EAAE,OACrC,EACA,YAAa,CACT,OAAO,KAAK,UAAU,IAAI,EAAE,OAChC,EACA,MAAM1C,EAAI,CACN,OAAOA,EAAG,IAAI,CAClB,CACR,CAAK,EACD,OAAO,eAAeL,EAAM,cAAe,CACvC,KAAM,OACF,OAAOunB,EAAAA,GAAoB,IAAIvnB,CAAI,IAA5BunB,YAAAA,EAA+B,WAC1C,EACA,aAAc,EACtB,CAAK,EACMvnB,EACV,EAEYwnB,GAA2Bhe,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFwnB,GAAgB,KAAKznB,EAAMC,CAAG,EAC9BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW4nB,GAA2B1nB,EAAM0E,EAAKuZ,CAAY,EACvG,MAAMrU,EAAM5J,EAAK,KAAK,IACtBA,EAAK,OAAS4J,EAAI,QAAU,KAC5B5J,EAAK,UAAY4J,EAAI,SAAW,KAChC5J,EAAK,UAAY4J,EAAI,SAAW,KAChCmb,GAAoB/kB,EAAM,aAAc,CACpC,SAAStoB,EAAM,CACX,OAAO,KAAK,MAAMiwC,GAAa,GAAGjwC,CAAI,CAAC,CAC3C,EACA,YAAYA,EAAM,CACd,OAAO,KAAK,MAAMkwC,GAAgB,GAAGlwC,CAAI,CAAC,CAC9C,EACA,cAAcA,EAAM,CAChB,OAAO,KAAK,MAAMmwC,GAAkB,GAAGnwC,CAAI,CAAC,CAChD,EACA,YAAYA,EAAM,CACd,OAAO,KAAK,MAAMowC,GAAgB,GAAGpwC,CAAI,CAAC,CAC9C,EACA,OAAOA,EAAM,CACT,OAAO,KAAK,MAAMqwC,GAAiB,GAAGrwC,CAAI,CAAC,CAC/C,EACA,OAAOA,EAAM,CACT,OAAO,KAAK,MAAMswC,GAAiB,GAAGtwC,CAAI,CAAC,CAC/C,EACA,UAAUA,EAAM,CACZ,OAAO,KAAK,MAAMuwC,GAAc,GAAGvwC,CAAI,CAAC,CAC5C,EACA,YAAYA,EAAM,CACd,OAAO,KAAK,MAAMqwC,GAAiB,EAAG,GAAGrwC,CAAI,CAAC,CAClD,EACA,UAAUooB,EAAQ,CACd,OAAO,KAAK,MAAMooB,GAAiBpoB,CAAM,CAAC,CAC9C,EACA,UAAUA,EAAQ,CACd,OAAO,KAAK,MAAMqoB,GAAiBroB,CAAM,CAAC,CAC9C,EACA,MAAO,CACH,OAAO,KAAK,MAAMsoB,IAAa,CACnC,EACA,aAAa1wC,EAAM,CACf,OAAO,KAAK,MAAM2wC,GAAiB,GAAG3wC,CAAI,CAAC,CAC/C,EACA,aAAc,CACV,OAAO,KAAK,MAAM4wC,IAAoB,CAC1C,EACA,aAAc,CACV,OAAO,KAAK,MAAMC,IAAoB,CAC1C,EACA,SAAU,CACN,OAAO,KAAK,MAAMC,IAAgB,CACtC,CACR,CAAK,CACL,CAAC,EACYC,GAA0Bjf,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFwnB,GAAgB,KAAKznB,EAAMC,CAAG,EAC9BunB,GAAW,KAAKxnB,EAAMC,CAAG,EACzBD,EAAK,MAASF,GAAWE,EAAK,MAAM0oB,GAAYC,GAAU7oB,CAAM,CAAC,EACjEE,EAAK,IAAOF,GAAWE,EAAK,MAAM4oB,GAAUC,GAAQ/oB,CAAM,CAAC,EAC3DE,EAAK,IAAOF,GAAWE,EAAK,MAAM8oB,GAAUC,GAAQjpB,CAAM,CAAC,EAC3DE,EAAK,MAASF,GAAWE,EAAK,MAAMgpB,GAAYC,GAAUnpB,CAAM,CAAC,EACjEE,EAAK,KAAQF,GAAWE,EAAK,MAAMkpB,GAAWC,GAASrpB,CAAM,CAAC,EAC9DE,EAAK,KAAQF,GAAWE,EAAK,MAAMopB,GAAWC,GAASvpB,CAAM,CAAC,EAC9DE,EAAK,OAAUF,GAAWE,EAAK,MAAMspB,GAAaD,GAASvpB,CAAM,CAAC,EAClEE,EAAK,OAAUF,GAAWE,EAAK,MAAMupB,GAAaF,GAASvpB,CAAM,CAAC,EAClEE,EAAK,OAAUF,GAAWE,EAAK,MAAMwpB,GAAaH,GAASvpB,CAAM,CAAC,EAClEE,EAAK,OAAUF,GAAWE,EAAK,MAAMypB,GAAaC,GAAW5pB,CAAM,CAAC,EACpEE,EAAK,KAAQF,GAAWE,EAAK,MAAMkpB,GAAWC,GAASrpB,CAAM,CAAC,EAC9DE,EAAK,KAAQF,GAAWE,EAAK,MAAM2pB,GAAWC,GAAS9pB,CAAM,CAAC,EAC9DE,EAAK,MAASF,GAAWE,EAAK,MAAM6pB,GAAYC,GAAUhqB,CAAM,CAAC,EACjEE,EAAK,KAAQF,GAAWE,EAAK,MAAM+pB,GAAWC,GAASlqB,CAAM,CAAC,EAC9DE,EAAK,OAAUF,GAAWE,EAAK,MAAMiqB,GAAaC,GAAWpqB,CAAM,CAAC,EACpEE,EAAK,UAAaF,GAAWE,EAAK,MAAMmqB,GAAgBC,GAActqB,CAAM,CAAC,EAC7EE,EAAK,IAAOF,GAAWE,EAAK,MAAMqqB,GAAUC,GAAQxqB,CAAM,CAAC,EAC3DE,EAAK,MAASF,GAAWE,EAAK,MAAMuqB,GAAYC,GAAU1qB,CAAM,CAAC,EACjEE,EAAK,KAAQF,GAAWE,EAAK,MAAMyqB,GAAWC,GAAS5qB,CAAM,CAAC,EAC9DE,EAAK,KAAQF,GAAWE,EAAK,MAAM2qB,GAAWC,GAAS9qB,CAAM,CAAC,EAC9DE,EAAK,OAAUF,GAAWE,EAAK,MAAM6qB,GAAaC,GAAWhrB,CAAM,CAAC,EACpEE,EAAK,OAAUF,GAAWE,EAAK,MAAM+qB,GAAaC,GAAWlrB,CAAM,CAAC,EACpEE,EAAK,KAAQF,GAAWE,EAAK,MAAMirB,GAAWC,GAASprB,CAAM,CAAC,EAE9DE,EAAK,SAAYF,GAAWE,EAAK,MAAMmrB,GAAarrB,CAAM,CAAC,EAC3DE,EAAK,KAAQF,GAAWE,EAAK,MAAMorB,GAAStrB,CAAM,CAAC,EACnDE,EAAK,KAAQF,GAAWE,EAAK,MAAMqrB,GAASvrB,CAAM,CAAC,EACnDE,EAAK,SAAYF,GAAWE,EAAK,MAAMsrB,GAAaxrB,CAAM,CAAC,CAC/D,CAAC,EACM,SAASlpB,EAAOkpB,EAAQ,CAC3B,OAAOyrB,GAAa9C,GAAW3oB,CAAM,CACzC,CACO,MAAM0rB,GAAgChiB,EAAkB,kBAAmB,CAACxJ,EAAMC,IAAQ,CAC7FwrB,GAAsB,KAAKzrB,EAAMC,CAAG,EACpCunB,GAAW,KAAKxnB,EAAMC,CAAG,CAC7B,CAAC,EACY0oB,GAAyBnf,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAE/EyrB,GAAe,KAAK1rB,EAAMC,CAAG,EAC7BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYkpB,GAAwB3f,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7E0rB,GAAc,KAAK3rB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYopB,GAAwB7f,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7E2rB,GAAc,KAAK5rB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAeY4oB,GAAuBrf,EAAkB,SAAU,CAACxJ,EAAMC,IAAQ,CAE3E4rB,GAAa,KAAK7rB,EAAMC,CAAG,EAC3BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAWYgpB,GAAyBzf,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAE/E6rB,GAAe,KAAK9rB,EAAMC,CAAG,EAC7BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYypB,GAA0BlgB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CAEjF8rB,GAAgB,KAAK/rB,EAAMC,CAAG,EAC9BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EASY2pB,GAAwBpgB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7E+rB,GAAc,KAAKhsB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAWY6pB,GAAyBtgB,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAE/EgsB,GAAe,KAAKjsB,EAAMC,CAAG,EAC7BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIY+pB,GAAwBxgB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7EisB,GAAc,KAAKlsB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYqqB,GAAuB9gB,EAAkB,SAAU,CAACxJ,EAAMC,IAAQ,CAE3EksB,GAAa,KAAKnsB,EAAMC,CAAG,EAC3BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYuqB,GAAyBhhB,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAE/EmsB,GAAe,KAAKpsB,EAAMC,CAAG,EAC7BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYyqB,GAAwBlhB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7EosB,GAAc,KAAKrsB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAYY2qB,GAAwBphB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7EqsB,GAAc,KAAKtsB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIY6qB,GAA0BthB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFssB,GAAgB,KAAKvsB,EAAMC,CAAG,EAC9BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIY+qB,GAA0BxhB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFusB,GAAgB,KAAKxsB,EAAMC,CAAG,EAC9BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYiqB,GAA0B1gB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CAEjFwsB,GAAgB,KAAKzsB,EAAMC,CAAG,EAC9BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYmqB,GAA6B5gB,EAAkB,eAAgB,CAACxJ,EAAMC,IAAQ,CAEvFysB,GAAmB,KAAK1sB,EAAMC,CAAG,EACjCurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIYirB,GAAwB1hB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAE7E0sB,GAAc,KAAK3sB,EAAMC,CAAG,EAC5BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EAIY8oB,GAAuBvf,EAAkB,SAAU,CAACxJ,EAAMC,IAAQ,CAE3E2sB,GAAa,KAAK5sB,EAAMC,CAAG,EAC3BurB,GAAgB,KAAKxrB,EAAMC,CAAG,CAClC,CAAC,EA0BY4sB,GAA0BrjB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF6sB,GAAgB,KAAK9sB,EAAMC,CAAG,EAC9BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWitB,GAA2B/sB,EAAM0E,EAAKuZ,CAAY,EACvG8G,GAAoB/kB,EAAM,YAAa,CACnC,GAAG9zB,EAAO4zB,EAAQ,CACd,OAAO,KAAK,MAAMktB,GAAU9gD,EAAO4zB,CAAM,CAAC,CAC9C,EACA,IAAI5zB,EAAO4zB,EAAQ,CACf,OAAO,KAAK,MAAMmtB,GAAW/gD,EAAO4zB,CAAM,CAAC,CAC/C,EACA,IAAI5zB,EAAO4zB,EAAQ,CACf,OAAO,KAAK,MAAMmtB,GAAW/gD,EAAO4zB,CAAM,CAAC,CAC/C,EACA,GAAG5zB,EAAO4zB,EAAQ,CACd,OAAO,KAAK,MAAMotB,GAAUhhD,EAAO4zB,CAAM,CAAC,CAC9C,EACA,IAAI5zB,EAAO4zB,EAAQ,CACf,OAAO,KAAK,MAAMqtB,GAAWjhD,EAAO4zB,CAAM,CAAC,CAC/C,EACA,IAAI5zB,EAAO4zB,EAAQ,CACf,OAAO,KAAK,MAAMqtB,GAAWjhD,EAAO4zB,CAAM,CAAC,CAC/C,EACA,IAAIA,EAAQ,CACR,OAAO,KAAK,MAAMstB,GAAIttB,CAAM,CAAC,CACjC,EACA,KAAKA,EAAQ,CACT,OAAO,KAAK,MAAMstB,GAAIttB,CAAM,CAAC,CACjC,EACA,SAASA,EAAQ,CACb,OAAO,KAAK,MAAMktB,GAAU,EAAGltB,CAAM,CAAC,CAC1C,EACA,YAAYA,EAAQ,CAChB,OAAO,KAAK,MAAMmtB,GAAW,EAAGntB,CAAM,CAAC,CAC3C,EACA,SAASA,EAAQ,CACb,OAAO,KAAK,MAAMotB,GAAU,EAAGptB,CAAM,CAAC,CAC1C,EACA,YAAYA,EAAQ,CAChB,OAAO,KAAK,MAAMqtB,GAAW,EAAGrtB,CAAM,CAAC,CAC3C,EACA,WAAW5zB,EAAO4zB,EAAQ,CACtB,OAAO,KAAK,MAAMutB,GAAkBnhD,EAAO4zB,CAAM,CAAC,CACtD,EACA,KAAK5zB,EAAO4zB,EAAQ,CAChB,OAAO,KAAK,MAAMutB,GAAkBnhD,EAAO4zB,CAAM,CAAC,CACtD,EACA,QAAS,CACL,OAAO,IACX,CACR,CAAK,EACD,MAAM8J,EAAM5J,EAAK,KAAK,IACtBA,EAAK,SACD,KAAK,IAAI4J,EAAI,SAAW,OAAO,kBAAmBA,EAAI,kBAAoB,OAAO,iBAAiB,GAAK,KAC3G5J,EAAK,SACD,KAAK,IAAI4J,EAAI,SAAW,OAAO,kBAAmBA,EAAI,kBAAoB,OAAO,iBAAiB,GAAK,KAC3G5J,EAAK,OAAS4J,EAAI,QAAU,IAAI,SAAS,KAAK,GAAK,OAAO,cAAcA,EAAI,YAAc,EAAG,EAC7F5J,EAAK,SAAW,GAChBA,EAAK,OAAS4J,EAAI,QAAU,IAChC,CAAC,EACM,SAAST,GAAOrJ,EAAQ,CAC3B,OAAOwtB,GAAaT,GAAW/sB,CAAM,CACzC,CACO,MAAMytB,GAAgC/jB,EAAkB,kBAAmB,CAACxJ,EAAMC,IAAQ,CAC7FutB,GAAsB,KAAKxtB,EAAMC,CAAG,EACpC4sB,GAAU,KAAK7sB,EAAMC,CAAG,CAC5B,CAAC,EACM,SAASmtB,GAAIttB,EAAQ,CACxB,OAAO2tB,GAAUF,GAAiBztB,CAAM,CAC5C,CAaO,MAAM4tB,GAA2BlkB,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnF0tB,GAAiB,KAAK3tB,EAAMC,CAAG,EAC/BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW8tB,GAA4B5tB,EAAM0E,EAAKuZ,CAAY,CAC5G,CAAC,EACM,SAAS7U,GAAQtJ,EAAQ,CAC5B,OAAO+tB,GAAcH,GAAY5tB,CAAM,CAC3C,CAwEO,MAAMguB,GAA2BtkB,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnF8tB,GAAiB,KAAK/tB,EAAMC,CAAG,EAC/BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWkuB,GAAmD,CAC5G,CAAC,EACM,SAASC,IAAU,CACtB,OAAOC,GAAcJ,EAAU,CACnC,CACO,MAAMK,GAAyB3kB,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EmuB,GAAe,KAAKpuB,EAAMC,CAAG,EAC7BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWuuB,GAA0BruB,EAAM0E,EAAKuZ,CAAY,CAC1G,CAAC,EACM,SAASqQ,GAAMxuB,EAAQ,CAC1B,OAAOyuB,GAAYJ,GAAUruB,CAAM,CACvC,CAuBO,MAAM0uB,GAAyBhlB,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/EwuB,GAAe,KAAKzuB,EAAMC,CAAG,EAC7BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW4uB,GAA0B1uB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACtGE,EAAK,QAAUC,EAAI,QACnB8kB,GAAoB/kB,EAAM,WAAY,CAClC,IAAI2uB,EAAG7uB,EAAQ,CACX,OAAO,KAAK,MAAMioB,GAAiB4G,EAAG7uB,CAAM,CAAC,CACjD,EACA,SAASA,EAAQ,CACb,OAAO,KAAK,MAAMioB,GAAiB,EAAGjoB,CAAM,CAAC,CACjD,EACA,IAAI6uB,EAAG7uB,EAAQ,CACX,OAAO,KAAK,MAAMkoB,GAAiB2G,EAAG7uB,CAAM,CAAC,CACjD,EACA,OAAO6uB,EAAG7uB,EAAQ,CACd,OAAO,KAAK,MAAMmoB,GAAc0G,EAAG7uB,CAAM,CAAC,CAC9C,EACA,QAAS,CACL,OAAO,KAAK,OAChB,CACR,CAAK,CACL,CAAC,EACM,SAASgnB,GAAMnlC,EAASme,EAAQ,CACnC,OAAO8uB,GAAYJ,GAAU7sC,EAASme,CAAM,CAChD,CAMO,MAAM+uB,GAA0BrlB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF6uB,GAAmB,KAAK9uB,EAAMC,CAAG,EACjCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWivB,GAA2B/uB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACvG2M,GAAgBzM,EAAM,QAAS,IACpBC,EAAI,KACd,EACD8kB,GAAoB/kB,EAAM,YAAa,CACnC,OAAQ,CACJ,OAAOgvB,GAAM,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,CACjD,EACA,SAASvc,EAAU,CACf,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUA,EAAU,CAC9D,EACA,aAAc,CACV,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUwb,GAAO,EAAI,CAC/D,EACA,OAAQ,CACJ,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUA,GAAO,EAAI,CAC/D,EACA,QAAS,CACL,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUK,GAAK,EAAI,CAC7D,EACA,OAAQ,CACJ,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAU,OAAW,CAC/D,EACA,OAAOW,EAAU,CACb,OAAOC,GAAY,KAAMD,CAAQ,CACrC,EACA,WAAWA,EAAU,CACjB,OAAOE,GAAgB,KAAMF,CAAQ,CACzC,EACA,MAAMG,EAAO,CACT,OAAOC,GAAW,KAAMD,CAAK,CACjC,EACA,KAAK7rB,EAAM,CACP,OAAO+rB,GAAU,KAAM/rB,CAAI,CAC/B,EACA,KAAKA,EAAM,CACP,OAAOgsB,GAAU,KAAMhsB,CAAI,CAC/B,EACA,WAAW7rB,EAAM,CACb,OAAO83C,GAAaC,GAAa,KAAM/3C,EAAK,CAAC,CAAC,CAClD,EACA,YAAYA,EAAM,CACd,OAAOg4C,GAAcC,GAAgB,KAAMj4C,EAAK,CAAC,CAAC,CACtD,CACR,CAAK,CACL,CAAC,EACM,SAASnJ,EAAO40B,EAAOrD,EAAQ,CAClC,MAAMG,EAAM,CACR,KAAM,SACN,MAAOkD,GAAS,CAAA,EAChB,GAAGiU,EAAqBtX,CAAM,CACtC,EACI,OAAO,IAAI+uB,GAAU5uB,CAAG,CAC5B,CAmBO,MAAM2vB,GAAyBpmB,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/E4vB,GAAe,KAAK7vB,EAAMC,CAAG,EAC7BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWgwB,GAA0B9vB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACtGE,EAAK,QAAUC,EAAI,OACvB,CAAC,EACM,SAAS8mB,GAAM9mC,EAAS6f,EAAQ,CACnC,OAAO,IAAI8vB,GAAS,CAChB,KAAM,QACN,QAAS3vC,EACT,GAAGm3B,EAAqBtX,CAAM,CACtC,CAAK,CACL,CA+BO,MAAMiwB,GAAgCvmB,EAAkB,kBAAmB,CAACxJ,EAAMC,IAAQ,CAC7F+vB,GAAsB,KAAKhwB,EAAMC,CAAG,EACpCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWmwB,GAAiCjwB,EAAM0E,EAAKuZ,EAAMne,CAAM,CACjH,CAAC,EACM,SAASknB,GAAarkC,EAAMuZ,EAAO,CACtC,OAAO,IAAI6zB,GAAgB,CACvB,KAAM,eACN,KAAMptC,EACN,MAAOuZ,CACf,CAAK,CACL,CAqBO,MAAMg0B,GAA0B1mB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjFkwB,GAAgB,KAAKnwB,EAAMC,CAAG,EAC9BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWswB,GAA2BpwB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACvGE,EAAK,QAAUC,EAAI,QACnBD,EAAK,UAAYC,EAAI,SACzB,CAAC,EACM,SAASowB,EAAOnP,EAASoP,EAAWxwB,EAAQ,CAE/C,MAAI,CAACwwB,GAAa,CAACA,EAAU,KAClB,IAAIJ,GAAU,CACjB,KAAM,SACN,QAASt5C,EAAM,EACf,UAAWsqC,EACX,GAAG9J,EAAqBkZ,CAAS,CAC7C,CAAS,EAEE,IAAIJ,GAAU,CACjB,KAAM,SACN,QAAAhP,EACA,UAAWoP,EACX,GAAGlZ,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAwDO,MAAMywB,GAAwB/mB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAC7EuwB,GAAc,KAAKxwB,EAAMC,CAAG,EAC5BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW2wB,GAAyBzwB,EAAM0E,EAAKuZ,CAAY,EACrGje,EAAK,KAAOC,EAAI,QAChBD,EAAK,QAAU,OAAO,OAAOC,EAAI,OAAO,EACxC,MAAM/xB,EAAO,IAAI,IAAI,OAAO,KAAK+xB,EAAI,OAAO,CAAC,EAC7CD,EAAK,QAAU,CAACxD,EAAQsD,IAAW,CAC/B,MAAM4wB,EAAa,CAAA,EACnB,UAAWxkD,KAASswB,EAChB,GAAItuB,EAAK,IAAIhC,CAAK,EACdwkD,EAAWxkD,CAAK,EAAI+zB,EAAI,QAAQ/zB,CAAK,MAGrC,OAAM,IAAI,MAAM,OAAOA,CAAK,oBAAoB,EAExD,OAAO,IAAIqkD,GAAQ,CACf,GAAGtwB,EACH,OAAQ,CAAA,EACR,GAAGmX,EAAqBtX,CAAM,EAC9B,QAAS4wB,CACrB,CAAS,CACL,EACA1wB,EAAK,QAAU,CAACxD,EAAQsD,IAAW,CAC/B,MAAM4wB,EAAa,CAAE,GAAGzwB,EAAI,OAAO,EACnC,UAAW/zB,KAASswB,EAChB,GAAItuB,EAAK,IAAIhC,CAAK,EACd,OAAOwkD,EAAWxkD,CAAK,MAGvB,OAAM,IAAI,MAAM,OAAOA,CAAK,oBAAoB,EAExD,OAAO,IAAIqkD,GAAQ,CACf,GAAGtwB,EACH,OAAQ,CAAA,EACR,GAAGmX,EAAqBtX,CAAM,EAC9B,QAAS4wB,CACrB,CAAS,CACL,CACJ,CAAC,EACD,SAAS1B,GAAMxyB,EAAQsD,EAAQ,CAC3B,MAAMrtB,EAAU,MAAM,QAAQ+pB,CAAM,EAAI,OAAO,YAAYA,EAAO,IAAKoE,GAAM,CAACA,EAAGA,CAAC,CAAC,CAAC,EAAIpE,EACxF,OAAO,IAAI+zB,GAAQ,CACf,KAAM,OACN,QAAA99C,EACA,GAAG2kC,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAgDO,MAAM6wB,GAA6BnnB,EAAkB,eAAgB,CAACxJ,EAAMC,IAAQ,CACvF2wB,GAAmB,KAAK5wB,EAAMC,CAAG,EACjCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW+wB,GAA8B7wB,EAAM0E,CAAiB,EAC1G1E,EAAK,KAAK,MAAQ,CAAC3K,EAAS6Q,IAAS,CACjC,GAAIA,EAAK,YAAc,WACnB,MAAM,IAAIqP,GAAqBvV,EAAK,YAAY,IAAI,EAExD3K,EAAQ,SAAY6P,GAAU,CAC1B,GAAI,OAAOA,GAAU,SACjB7P,EAAQ,OAAO,KAAKwhB,GAAW3R,EAAO7P,EAAQ,MAAO4K,CAAG,CAAC,MAExD,CAED,MAAM2b,EAAS1W,EACX0W,EAAO,QACPA,EAAO,SAAW,IACtBA,EAAO,OAASA,EAAO,KAAO,UAC9BA,EAAO,QAAUA,EAAO,MAAQvmB,EAAQ,OACxCumB,EAAO,OAASA,EAAO,KAAO5b,GAE9B3K,EAAQ,OAAO,KAAKwhB,GAAW+E,CAAM,CAAC,CAC1C,CACJ,EACA,MAAMnG,EAASxV,EAAI,UAAU5K,EAAQ,MAAOA,CAAO,EACnD,OAAIogB,aAAkB,QACXA,EAAO,KAAMA,IAChBpgB,EAAQ,MAAQogB,EAChBpgB,EAAQ,SAAW,GACZA,EACV,GAELA,EAAQ,MAAQogB,EAChBpgB,EAAQ,SAAW,GACZA,EACX,CACJ,CAAC,EACM,SAAS6xB,GAAU7mB,EAAI,CAC1B,OAAO,IAAIswB,GAAa,CACpB,KAAM,YACN,UAAWtwB,CACnB,CAAK,CACL,CACO,MAAMovB,GAA4BjmB,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrF6wB,GAAkB,KAAK9wB,EAAMC,CAAG,EAChCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWixB,GAA6B/wB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACzGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,SACtC,CAAC,EACM,SAAS0mB,GAAS56C,EAAW,CAChC,OAAO,IAAI2jD,GAAY,CACnB,KAAM,WACN,UAAW3jD,CACnB,CAAK,CACL,CACO,MAAMklD,GAAiCxnB,EAAkB,mBAAoB,CAACxJ,EAAMC,IAAQ,CAC/FgxB,GAAuB,KAAKjxB,EAAMC,CAAG,EACrCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWixB,GAA6B/wB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACzGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,SACtC,CAAC,EACM,SAAS2mB,GAAc76C,EAAW,CACrC,OAAO,IAAIklD,GAAiB,CACxB,KAAM,WACN,UAAWllD,CACnB,CAAK,CACL,CACO,MAAMolD,GAA4B1nB,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrFkxB,GAAkB,KAAKnxB,EAAMC,CAAG,EAChCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWsxB,GAA6BpxB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACzGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,SACtC,CAAC,EACM,SAAS4mB,GAAS96C,EAAW,CAChC,OAAO,IAAIolD,GAAY,CACnB,KAAM,WACN,UAAWplD,CACnB,CAAK,CACL,CAKO,MAAMulD,GAA2B7nB,EAAkB,aAAc,CAACxJ,EAAMC,IAAQ,CACnFqxB,GAAiB,KAAKtxB,EAAMC,CAAG,EAC/BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWyxB,GAA4BvxB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACxGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,UAClCA,EAAK,cAAgBA,EAAK,MAC9B,CAAC,EACM,SAASmnB,GAASr7C,EAAW0lD,EAAc,CAC9C,OAAO,IAAIH,GAAW,CAClB,KAAM,UACN,UAAWvlD,EACX,IAAI,cAAe,CACf,OAAO,OAAO0lD,GAAiB,WAAaA,EAAY,EAAKC,GAAkBD,CAAY,CAC/F,CACR,CAAK,CACL,CACO,MAAME,GAA4BloB,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrF0xB,GAAkB,KAAK3xB,EAAMC,CAAG,EAChCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW8xB,GAA6B5xB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACzGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,SACtC,CAAC,EACM,SAASonB,GAASt7C,EAAW0lD,EAAc,CAC9C,OAAO,IAAIE,GAAY,CACnB,KAAM,WACN,UAAW5lD,EACX,IAAI,cAAe,CACf,OAAO,OAAO0lD,GAAiB,WAAaA,EAAY,EAAKC,GAAkBD,CAAY,CAC/F,CACR,CAAK,CACL,CACO,MAAM7B,GAA+BnmB,EAAkB,iBAAkB,CAACxJ,EAAMC,IAAQ,CAC3F4xB,GAAqB,KAAK7xB,EAAMC,CAAG,EACnCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWgyB,GAAgC9xB,EAAM0E,EAAKuZ,EAAMne,CAAM,EAC5GE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,SACtC,CAAC,EACM,SAAS6mB,GAAY/6C,EAAWg0B,EAAQ,CAC3C,OAAO,IAAI6vB,GAAe,CACtB,KAAM,cACN,UAAW7jD,EACX,GAAGsrC,EAAqBtX,CAAM,CACtC,CAAK,CACL,CAaO,MAAMiyB,GAAyBvoB,EAAkB,WAAY,CAACxJ,EAAMC,IAAQ,CAC/E+xB,GAAe,KAAKhyB,EAAMC,CAAG,EAC7BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWmyB,GAA0BjyB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACtGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,UAClCA,EAAK,YAAcA,EAAK,MAC5B,CAAC,EACD,SAASqnB,GAAOv7C,EAAW+1C,EAAY,CACnC,OAAO,IAAIkQ,GAAS,CAChB,KAAM,QACN,UAAWjmD,EACX,WAAa,OAAO+1C,GAAe,WAAaA,EAAa,IAAMA,CAC3E,CAAK,CACL,CAUO,MAAMqQ,GAAwB1oB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAC7EkyB,GAAc,KAAKnyB,EAAMC,CAAG,EAC5BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWsyB,GAAyBpyB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACrGE,EAAK,GAAKC,EAAI,GACdD,EAAK,IAAMC,EAAI,GACnB,CAAC,EACM,SAASgnB,GAAKoL,EAAKC,EAAK,CAC3B,OAAO,IAAIJ,GAAQ,CACf,KAAM,OACN,GAAIG,EACJ,IAAKC,CAEb,CAAK,CACL,CA4BO,MAAMC,GAA4B/oB,EAAkB,cAAe,CAACxJ,EAAMC,IAAQ,CACrFuyB,GAAkB,KAAKxyB,EAAMC,CAAG,EAChCklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW2yB,GAA6BzyB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACzGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,SACtC,CAAC,EACM,SAASsnB,GAASx7C,EAAW,CAChC,OAAO,IAAIymD,GAAY,CACnB,KAAM,WACN,UAAWzmD,CACnB,CAAK,CACL,CAaO,MAAM4mD,GAAwBlpB,EAAkB,UAAW,CAACxJ,EAAMC,IAAQ,CAC7E0yB,GAAc,KAAK3yB,EAAMC,CAAG,EAC5BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAW8yB,GAAyB5yB,EAAM0E,EAAKuZ,EAAMne,CAAM,EACrGE,EAAK,OAAS,IAAMA,EAAK,KAAK,IAAI,OAAM,CAC5C,CAAC,EACM,SAAS6yB,GAAK9lD,EAAQ,CACzB,OAAO,IAAI2lD,GAAQ,CACf,KAAM,OACN,OAAQ3lD,CAChB,CAAK,CACL,CA0BO,MAAM+lD,GAA0BtpB,EAAkB,YAAa,CAACxJ,EAAMC,IAAQ,CACjF8yB,GAAgB,KAAK/yB,EAAMC,CAAG,EAC9BklB,GAAQ,KAAKnlB,EAAMC,CAAG,EACtBD,EAAK,KAAK,kBAAoB,CAAC0E,EAAKuZ,EAAMne,IAAWkzB,GAA2BhzB,EAAM0E,CAAiB,CAC3G,CAAC,EAaM,SAAS4hB,GAAOjmB,EAAI4C,EAAU,GAAI,CACrC,OAAOgwB,GAAaH,GAAWzyB,EAAI4C,CAAO,CAC9C,CAEO,SAASujB,GAAYnmB,EAAIP,EAAQ,CACpC,OAAOozB,GAAkB7yB,EAAIP,CAAM,CACvC,CCh0CO,MAAMqzB,GAAwBC,EAAS,CAC5C,WAAYC,EAAE,EAAS,SAAA,EACvB,SAAUA,EAAE,EAAS,SAAA,EACrB,WAAYC,GAAQ,CAACC,GAAE,EAAUF,EAAE,CAAQ,CAAC,EAAE,SAAA,EAC9C,WAAYA,EAAE,EAAS,SAAA,EACvB,cAAeA,EAAE,EAAS,SAAA,CAC5B,CAAC,EAED,SAASG,EAAyBpS,EAA2B,CAC3D,OAAOkS,GAAQ,CACblS,EACAgS,EAAS,CACP,KAAMhS,EAAY,SAAA,CAAS,CAC5B,EAAE,OAAQ5qB,GAAQ,OAAO,KAAKA,CAAG,EAAE,OAAS,EAAG,CAC9C,QAAS,4DAAA,CACV,CAAA,CACF,CACH,CAEO,MAAMi9B,GAAoBL,EAAS,CACxC,IAAKI,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACvC,QAASG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC3C,WAAYG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC9C,aAAcG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAChD,cAAeG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACjD,YAAaG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC/C,OAAQG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC1C,UAAWG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC7C,YAAaG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC/C,aAAcG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAChD,WAAYG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC9C,MAAOG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACzC,OAAQG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC1C,SAAUG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC5C,SAAUG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC5C,UAAWG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC7C,UAAWG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC7C,cAAeG,EACbE,GAAO,CAAC,MAAO,SAAU,cAAe,gBAAgB,CAAC,CAAA,EACzD,SAAA,EACF,eAAgBF,EACdE,GAAO,CACL,QACA,SACA,MACA,gBACA,eACA,cAAA,CACD,CAAA,EACD,SAAA,EACF,WAAYF,EACVE,GAAO,CAAC,QAAS,SAAU,MAAO,UAAW,UAAU,CAAC,CAAA,EACxD,SAAA,EACF,QAASF,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC3C,SAAUG,EACRE,GAAO,CAAC,SAAU,WAAY,WAAY,QAAS,QAAQ,CAAC,CAAA,EAC5D,SAAA,EACF,MAAOF,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACzC,IAAKG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACvC,MAAOG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACzC,OAAQG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC1C,KAAMG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACxC,OAAQG,EAAsBD,GAAE,CAAQ,EAAE,SAAA,EAC1C,WAAYC,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC9C,MAAOG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACzC,SAAUG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC5C,WAAYG,EAAsBF,GAAQ,CAACC,GAAE,EAAUF,EAAE,CAAQ,CAAC,CAAC,EAAE,SAAA,EACrE,WAAYG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC9C,cAAeG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EACjD,aAAcG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAChD,YAAaG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC/C,YAAaG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC/C,OAAQG,EAAsBH,EAAE,CAAQ,EAAE,SAAA,EAC1C,QAASG,EAAsBD,GAAE,CAAQ,EAAE,SAAA,EAC3C,WAAYF,EAAE,EAAS,SAAA,CACzB,CAAC,EAEYM,GAAyBP,EAAS,CAC7C,KAAMC,EAAE,EACR,MAAOO,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EACzC,MAAOJ,GAAkB,SAAA,EACzB,UAAWJ,EAAE,EAAS,SAAA,CACxB,CAAC,EAEYS,GAAoDV,EAAS,CACxE,MAAOQ,EAASP,IAAYA,GAAU,EACtC,QAASO,EAASP,IAAYA,GAAU,EACxC,OAAQO,EAASP,IAAYA,GAAU,EACvC,OAAQO,EAASP,IAAYA,GAAU,EACvC,KAAMO,EAASP,IAAYA,GAAU,EACrC,OAAQO,EAASP,IAAYA,GAAU,CACzC,CAAC,EAEYU,GAAkDX,EAAS,CACtE,MAAOQ,EAASP,IAAYA,GAAU,EACtC,QAASO,EAASP,IAAYA,GAAU,EACxC,OAAQO,EAASP,IAAYA,GAAU,EACvC,OAAQO,EAASP,IAAYA,GAAU,EACvC,WAAYO,EAASP,EAAE,EAAUF,EAAqB,CACxD,CAAC,EAEYa,GAAgCZ,EAAS,CACpD,GAAIC,EAAE,EACN,KAAMA,EAAE,EACR,KAAMK,GAAO,CAAC,QAAS,MAAM,CAAC,EAC9B,YAAaE,EAASP,IAAYA,GAAU,EAC5C,WAAYS,GACZ,UAAWC,GACX,SAAUH,EAASP,IAAYY,GAAQN,EAAsB,CAAC,CAChE,CAAC,EAEYO,GAA4Cd,EAAS,CAChE,GAAIC,EAAE,EACN,MAAOA,EAAE,EACT,KAAMK,GAAO,CAAC,QAAS,MAAM,CAAC,EAC9B,MAAOM,EACT,CAAC,ECpHKG,OAAoB,IACpBC,OAAqB,IAEpB,SAASC,GAAc3iD,EAAc,CAC1C,MAAM4iD,EAASN,GAAY,MAAMtiD,CAAK,EACtCyiD,GAAc,IAAIG,EAAO,GAAIA,CAAM,CACrC,CAEO,SAASC,GAAoBC,EAAqB,CACvD,MAAMF,EAASJ,GAAkB,MAAMM,CAAM,EAC7CJ,GAAe,IAAIE,EAAO,GAAIA,CAAM,EACpCH,GAAc,IAAIG,EAAO,MAAM,GAAIA,EAAO,KAAK,CACjD,CAEO,SAASG,GAAS/pC,EAA+B,CACtD,OAAOypC,GAAc,IAAIzpC,CAAE,CAC7B,CAEO,SAASgqC,GAAehqC,EAAqC,CAClE,OAAO0pC,GAAe,IAAI1pC,CAAE,CAC9B,CAEO,SAASiqC,IAAsB,CACpC,OAAO,MAAM,KAAKR,GAAc,OAAA,CAAQ,CAC1C,CAEO,SAASS,IAA6B,CAC3C,OAAO,MAAM,KAAKR,GAAe,OAAA,CAAQ,CAC3C,CAEO,SAASS,IAAsB,CACpC,MAAO,CACL,cAAAR,GACA,oBAAAE,GACA,SAAAE,GACA,eAAAC,GACA,WAAAC,GACA,YAAAC,EAAA,CAEJ,CClCO,SAASE,GAAuBpjD,EAAsC,CAC3E,MAAMqjD,EAA+B,CAAA,EAErC,SAAW,CAAC/pD,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,KAAK,EAC9DqjD,EAAK,WAAW/pD,CAAG,EAAE,EAAIkB,EAE3B,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,OAAO,EAChEqjD,EAAK,aAAa/pD,CAAG,EAAE,EAAIkB,EAE7B,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/DqjD,EAAK,YAAY/pD,CAAG,EAAE,EAAIkB,EAE5B,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/DqjD,EAAK,YAAY/pD,CAAG,EAAE,EAAIkB,EAE5B,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,IAAI,EAC7DqjD,EAAK,UAAU/pD,CAAG,EAAE,EAAIkB,EAE1B,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/DqjD,EAAK,YAAY/pD,CAAG,EAAE,EAAIkB,EAG5B,OAAO6oD,CACT,CAEO,SAASC,GAAoBtjD,EAAsB,CACxD,MAAMi6B,EAAkB,CAAA,EAEpBj6B,EAAM,OAAS,OACjBi6B,EAAM,KAAK,SAAS,EAEpBA,EAAM,KAAK,SAAS,EAGtB,SAAW,CAAC3gC,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,KAAK,EAC9Di6B,EAAM,KAAK,aAAa3gC,CAAG,KAAKkB,CAAK,GAAG,EAE1C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,OAAO,EAChEi6B,EAAM,KAAK,eAAe3gC,CAAG,KAAKkB,CAAK,GAAG,EAE5C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/Di6B,EAAM,KAAK,cAAc3gC,CAAG,KAAKkB,CAAK,GAAG,EAE3C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/Di6B,EAAM,KAAK,cAAc3gC,CAAG,KAAKkB,CAAK,GAAG,EAE3C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,IAAI,EAC7Di6B,EAAM,KAAK,YAAY3gC,CAAG,KAAKkB,CAAK,GAAG,EAGzC,OAAAy/B,EAAM,KAAK,GAAG,EAEPA,EAAM,KAAK;AAAA,CAAI,CACxB,CAEO,SAASspB,GAAkBvjD,EAAsB,CACtD,MAAMi6B,EAAkB,CAAC,yBAA4B,EAAE,EAEvDA,EAAM,KAAK,UAAU,EAErB,SAAW,CAAC3gC,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,KAAK,EAC9Di6B,EAAM,KAAK,aAAa3gC,CAAG,KAAKkB,CAAK,GAAG,EAE1C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,OAAO,EAChEi6B,EAAM,KAAK,eAAe3gC,CAAG,KAAKkB,CAAK,GAAG,EAE5C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/Di6B,EAAM,KAAK,cAAc3gC,CAAG,KAAKkB,CAAK,GAAG,EAE3C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,MAAM,EAC/Di6B,EAAM,KAAK,cAAc3gC,CAAG,KAAKkB,CAAK,GAAG,EAE3C,SAAW,CAAClB,EAAKkB,CAAK,IAAK,OAAO,QAAQwF,EAAM,WAAW,IAAI,EAC7Di6B,EAAM,KAAK,YAAY3gC,CAAG,KAAKkB,CAAK,GAAG,EAGzC,SAAW,CAACM,EAAMqrB,CAAK,IAAK,OAAO,QAAQnmB,EAAM,UAAU,UAAU,EAC/DmmB,EAAM,YAAY8T,EAAM,KAAK,YAAYn/B,CAAI,KAAKqrB,EAAM,UAAU,GAAG,EACrEA,EAAM,UAAU8T,EAAM,KAAK,YAAYn/B,CAAI,KAAKqrB,EAAM,QAAQ,GAAG,EAGvE,OAAA8T,EAAM,KAAK,GAAG,EAEPA,EAAM,KAAK;AAAA,CAAI,CACxB,CAEO,SAASupB,GAAkBxjD,EAAuC,CACvE,MAAM6M,EAAkC,CACtC,OAAQ,CAAE,GAAG7M,EAAM,WAAW,KAAA,EAC9B,QAAS,OAAO,YACd,OAAO,QAAQA,EAAM,WAAW,OAAO,EAAE,IAAI,CAAC,CAACvD,EAAGyyB,CAAC,IAAM,CAACzyB,EAAGyyB,CAAC,CAAC,CAAA,EAEjE,aAAc,OAAO,YACnB,OAAO,QAAQlvB,EAAM,WAAW,MAAM,EAAE,IAAI,CAAC,CAACvD,EAAGyyB,CAAC,IAAM,CAACzyB,EAAGyyB,CAAC,CAAC,CAAA,EAEhE,UAAW,OAAO,YAChB,OAAO,QAAQlvB,EAAM,WAAW,MAAM,EAAE,IAAI,CAAC,CAACvD,EAAGyyB,CAAC,IAAM,CAACzyB,EAAGyyB,CAAC,CAAC,CAAA,EAEhE,WAAY,OAAO,YACjB,OAAO,QAAQlvB,EAAM,WAAW,IAAI,EAAE,IAAI,CAAC,CAACvD,EAAGyyB,CAAC,IAAM,CAACzyB,EAAGyyB,CAAC,CAAC,CAAA,CAC9D,EAGIu0B,EAAsC,CAAA,EAC5C,SAAW,CAAC3oD,EAAMqrB,CAAK,IAAK,OAAO,QAAQnmB,EAAM,UAAU,UAAU,EACnEyjD,EAAW3oD,CAAI,EAAI,CACjB,WAAYqrB,EAAM,WAClB,SAAUA,EAAM,SAChB,WAAYA,EAAM,WAClB,WAAYA,EAAM,WAClB,cAAeA,EAAM,aAAA,EAIzB,MAAO,CAAE,OAAQ,CAAE,GAAGtZ,EAAQ,WAAA42C,EAAW,CAC3C,CC3GO,MAAMC,WAAkB,KAAM,CAKnC,YAAY5hC,EAAiBkB,EAAqB2gC,EAAiC,CACjF,MAAM7hC,CAAO,EALN8hC,GAAA,aAEAA,GAAA,eAIP,KAAK,KAAO,YACZ,KAAK,KAAO5gC,EACZ,KAAK,OAAS2gC,CAChB,CACF,CAEO,SAASE,GAAYrpD,EAAoC,CAC9D,OAAOA,aAAiBkpD,EAC1B,CCjBO,SAASI,IAAgD,CAC9D,MAAO,CACL,QAAQC,EAAqB3qD,EAA0B,CACrD,GAAI,MAAM,QAAQA,CAAM,EACtB,OAAOA,CAGX,CAAA,CAEJ,CAsBO,SAAS4qD,GAAkBxpD,EAA0C,CAC1E,MAAO,CAAC,CAACA,GAAS,OAAOA,GAAU,UAAY,WAAaA,CAC9D,CAWA,SAASypD,GAAgBzpD,EAAgB6vB,EAA2B,CAClE,GAAI,MAAM,QAAQ7vB,CAAK,EAAG,OAAOA,EAAM,IAAKojB,GAASqmC,GAAgBrmC,EAAMyM,CAAK,CAAC,EACjF,GAAI7vB,GAAS,OAAOA,GAAU,SAAU,CACtC,MAAMsqB,EAAMtqB,EACZ,GAAI,OAAOsqB,EAAI,OAAU,UAAY,OAAO,KAAKA,CAAG,EAAE,SAAW,EAAG,CAClE,MAAM9jB,EAAO8jB,EAAI,MACjB,OAAI9jB,EAAK,WAAW,QAAQ,EAAUqpB,EAAM,MAAQJ,GAAUI,EAAM,MAAOrpB,EAAK,MAAM,CAAe,CAAC,EAAI,OACtGA,EAAK,WAAW,UAAU,GAAUqpB,EAAM,QAAUJ,GAAUI,EAAM,QAASrpB,EAAK,MAAM,CAAiB,CAAC,EAC9G,MACF,CACA,MAAM4/C,EAA+B,CAAA,EACrC,SAAW,CAACtnD,EAAKw2C,CAAK,IAAK,OAAO,QAAQhrB,CAAG,EAAG87B,EAAItnD,CAAG,EAAI2qD,GAAgBnU,EAAOzlB,CAAK,EACvF,OAAOu2B,CACT,CACA,OAAOpmD,CACT,CAEO,SAAS0pD,GAAuBC,EAA6B95B,EAAyB,CAC3F,OAAO45B,GAAgBE,EAAW,OAAQ95B,CAAK,CACjD,CAsBA,eAAsB+5B,GACpBC,EACA91C,EACe,CACf,GAAI,CAAC81C,EAAa,OAElB,MAAMtjD,EAAU,OAAO,QAAQsjD,CAAW,EAAE,OAAQl0C,GAA8C6zC,GAAkB7zC,EAAM,CAAC,CAAC,CAAC,EAC7H,GAAIpP,EAAQ,SAAW,EAEvB,UAAW,CAACjG,CAAI,IAAKiG,EACnBwN,EAAQ,WAAW,SAAS,SAASzT,CAAI,UAAW,SAAoC,EAG1F,MAAM,QAAQ,IACZiG,EAAQ,IAAI,MAAO,CAACjG,EAAMqpD,CAAU,IAAM,CACxC,GAAI,CACF,MAAMG,EAAQJ,GAAuBC,EAAY,CAC/C,MAAO51C,EAAQ,WAAW,SAAA,EAC1B,QAASA,EAAQ,OAAA,CAClB,EACK9O,EAAS,MAAM8O,EAAQ,QAAQ,MAAM+1C,EAAO/1C,EAAQ,MAAM,EAChEA,EAAQ,WAAW,SAAS,SAASzT,CAAI,UAAW,SAAoC,EACxFyT,EAAQ,WAAW,SAAS,SAASzT,CAAI,QAAS2E,EAAO,IAAI,EAC7D8O,EAAQ,WAAW,SAAS,SAASzT,CAAI,SAAU2E,EAAO,KAAK,EAC/D8O,EAAQ,WAAW,SAAS,SAASzT,CAAI,SAAU,IAAI,CACzD,OAASkc,EAAO,CACd,GAAIA,aAAiB,cAAgBA,EAAM,OAAS,aAAc,OAClE,MAAMutC,EAAYvtC,aAAiB0sC,GAAY1sC,EAAQ,IAAI0sC,GAAU,OAAO1sC,CAAK,EAAG,QAAQ,EAC5FzI,EAAQ,WAAW,SAAS,SAASzT,CAAI,UAAW,OAAkC,EACtFyT,EAAQ,WAAW,SAAS,SAASzT,CAAI,SAAU,CAAE,KAAMypD,EAAU,KAAM,QAASA,EAAU,OAAA,CAAS,CACzG,CACF,CAAC,CAAA,EAEL,CAIO,SAASC,GAAyBH,EAAkDh6B,EAA0C,CACnI,GAAI,CAACg6B,EAAa,MAAO,CAAA,EACzB,MAAMzD,EAA8B,CAAA,EACpC,SAAW,CAAC9lD,EAAM1B,CAAM,IAAK,OAAO,QAAQirD,CAAW,EACjDL,GAAkB5qD,CAAM,IAAGwnD,EAAI9lD,CAAI,EAAI,KAAK,UAAUopD,GAAuB9qD,EAAQixB,CAAK,CAAC,GAEjG,OAAOu2B,CACT,CCvIO,SAAS6D,IAA2B,CACzC,MAAMh8B,MAAgB,IAEtB,MAAO,CACL,GAAI,CAACi8B,EAAO37B,KACLN,EAAU,IAAIi8B,CAAK,GACtBj8B,EAAU,IAAIi8B,EAAO,IAAI,GAAK,EAEhCj8B,EAAU,IAAIi8B,CAAK,EAAG,IAAI37B,CAAQ,EAE3B,IAAM,QACX5T,EAAAsT,EAAU,IAAIi8B,CAAK,IAAnB,MAAAvvC,EAAsB,OAAO4T,EAC/B,GAEF,KAAM,CAAC27B,EAAO/gC,IAAY,CACxB,MAAMghC,EAAiBl8B,EAAU,IAAIi8B,CAAK,EAC1C,GAAIC,EACF,UAAW57B,KAAY47B,EACrB57B,EAASpF,CAAO,CAGtB,EACA,IAAK,CAAC+gC,EAAO37B,IAAa,QACxB5T,EAAAsT,EAAU,IAAIi8B,CAAK,IAAnB,MAAAvvC,EAAsB,OAAO4T,EAC/B,CAAA,CAEJ,CCXA,SAAS67B,GAAiB33B,EAAkB43B,EAA8B,CACxE,GAAI53B,IAAa,QAAS,OAAO43B,EACjC,GAAI53B,EAAS,WAAW,QAAQ,GAAK43B,GAAc,OAAOA,GAAe,SACvE,OAAO56B,GAAU46B,EAAuC53B,EAAS,MAAM,CAAe,CAAC,CAG3F,CAEA,SAAS63B,GAAStqD,EAAkD,CAClE,OAAO,OAAOA,GAAU,UAAYA,IAAU,MAAQ,CAAC,MAAM,QAAQA,CAAK,CAC5E,CAEA,SAASuqD,GAAmBvqD,EAA4C,CACtE,OAAOsqD,GAAStqD,CAAK,GAAK,OAAOA,EAAM,OAAU,QACnD,CAEA,SAASwqD,GAAkBxqD,EAA6C,CACtE,OAAOsqD,GAAStqD,CAAK,GAAK,UAAWA,CACvC,CAEA,SAASyqD,GAAmBzqD,EAAgBqqD,EAAqBx6B,EAA6B,CAC5F,OAAI06B,GAAmBvqD,CAAK,EACnBoqD,GAAiBpqD,EAAM,MAAOqqD,CAAU,EAE7CG,GAAkBxqD,CAAK,EAClB2vB,GAAS3vB,EAAM,MAAO6vB,CAAK,EAEhC,MAAM,QAAQ7vB,CAAK,EACdA,EAAM,IAAKojB,GAASqnC,GAAmBrnC,EAAMinC,EAAYx6B,CAAK,CAAC,EAEpEy6B,GAAStqD,CAAK,EACT,OAAO,YACZ,OAAO,QAAQA,CAAK,EAAE,IAAI,CAAC,CAAClB,EAAKskB,CAAI,IAAM,CAACtkB,EAAK2rD,GAAmBrnC,EAAMinC,EAAYx6B,CAAK,CAAC,CAAC,CAAA,EAG1F7vB,CACT,CAEA,SAAS0qD,GAAsB1qD,EAAgByrB,EAAuB,CACpE,GAAI,OAAOzrB,GAAU,UAAYA,EAAM,SAAW,EAChD,MAAM,IAAI,MAAM,IAAIyrB,CAAK,sCAAsC,EAEjE,OAAOzrB,CACT,CAEA,SAAS2qD,GAAuB3qD,EAAgByrB,EAAmC,CACjF,GAA2BzrB,GAAU,KACrC,OAAO0qD,GAAsB1qD,EAAOyrB,CAAK,CAC3C,CAEA,SAASm/B,GAAmB5qD,EAAgByrB,EAA4C,CACtF,GAA2BzrB,GAAU,KACrC,IAAI,OAAOA,GAAU,SAAU,CAC7B,GAAIA,EAAM,SAAW,EAAG,MAAM,IAAI,MAAM,IAAIyrB,CAAK,gDAAgD,EACjG,OAAOzrB,CACT,CACA,GAAI,OAAOA,GAAU,UAAY,OAAO,SAASA,CAAK,EAAG,OAAOA,EAChE,MAAM,IAAI,MAAM,IAAIyrB,CAAK,uDAAuD,EAClF,CAEA,SAASo/B,GAAuB7qD,EAAgByrB,EAAmC,CACjF,GAA2BzrB,GAAU,KACrC,IAAI,OAAOA,GAAU,UAAY,OAAO,SAASA,CAAK,EAAG,OAAOA,EAChE,MAAM,IAAI,MAAM,IAAIyrB,CAAK,mCAAmC,EAC9D,CAEA,SAASq/B,GAAuB9qD,EAAgByrB,EAAoD,CAClG,GAA2BzrB,GAAU,KACrC,IAAI,CAACsqD,GAAStqD,CAAK,QAAS,IAAI,MAAM,IAAIyrB,CAAK,6BAA6B,EAC5E,OAAOzrB,EACT,CAEA,SAAS+qD,GAAgB/qD,EAAoD,CAC3E,GAAI,CAACsqD,GAAStqD,CAAK,EAAG,OACtB,MAAMuG,EAAU,OAAO,QAAQvG,CAAK,EACpC,GAAKuG,EAAQ,MAAM,CAAC,CAAA,CAAG6c,CAAI,IAAM,OAAOA,GAAS,QAAQ,EACzD,OAAO,OAAO,YAAY7c,CAAO,CACnC,CAEA,SAASykD,GAAuBxuC,EAAqF,CACnH,MAAM8K,EAAU9K,aAAiB,MAAQA,EAAM,QAAU,kBACzD,GAAI,CAAC8tC,GAAS9tC,CAAK,EAAG,MAAO,CAAE,QAAA8K,CAAA,EAC/B,MAAMkB,EAAO,OAAOhM,EAAM,MAAS,SAAWA,EAAM,KAAO,OACrD2sC,EAAS4B,GAAgBvuC,EAAM,MAAM,EAC3C,MAAO,CAAE,QAAA8K,EAAS,KAAAkB,EAAM,OAAA2gC,CAAA,CAC1B,CAEA,MAAM8B,GAAiB,KACjBC,GAAiC,EAAI,KAAO,KAC5CC,GAAmC,EA4BzC,SAASC,GAAcC,EAAcC,EAA8B,CACjE,OAAOA,EAAU,KAAM31C,GAAU,CAC/B,GAAIA,EAAM,WAAW,IAAI,EAAG,CAC1B,MAAMK,EAASL,EAAM,MAAM,CAAC,EAC5B,OAAO01C,IAAS11C,EAAM,MAAM,CAAC,GAAK01C,EAAK,SAASr1C,CAAM,CACxD,CACA,OAAOq1C,IAAS11C,CAClB,CAAC,CACH,CAEO,MAAM41C,EAAkB,CAa7B,YAAYC,EAAyB,GAAI,CAZjCpC,GAAA,mBACAA,GAAA,cACAA,GAAA,gBACAA,GAAA,aACAA,GAAA,iBACAA,GAAA,wBACAA,GAAA,uBACAA,GAAA,qBACAA,GAAA,4BACAA,GAAA,8BACAA,GAAA,wBAAmB,GAGzB,KAAK,WAAaoC,EAAQ,WAC1B,KAAK,MAAQA,EAAQ,OAAS,CAAA,EAC9B,KAAK,QAAUA,EAAQ,SAAW,CAAA,EAClC,KAAK,KAAOA,EAAQ,MAAQ,CAAA,EAC5B,KAAK,SAAWA,EAAQ,UAAYvB,GAAA,EACpC,KAAK,gBAAkBuB,EAAQ,gBAC/B,KAAK,eAAiBA,EAAQ,eAC9B,KAAK,aAAeA,EAAQ,aAC5B,KAAK,oBAAsBA,EAAQ,qBAAuBN,GAC1D,KAAK,sBAAwBM,EAAQ,uBAAyBL,EAChE,CAEA,aAAiD,CAC/C,OAAO,KAAK,QACd,CAEA,QAAQtpC,EAAgBwoC,EAA4B,CAClD,GAAI,CACF,KAAK,cAAcxoC,EAAQwoC,CAAU,CACvC,OAAS7tC,EAAO,CACV,QAAQ,IAAI,WAAa,cAC3B,QAAQ,KAAK,0CAA2CA,EAAOqF,CAAM,CAEzE,CACF,CAEQ,cAAcA,EAAgBwoC,EAA4B,OAChE,GAAI,aAAcxoC,EAAQ,CACxB,UAAW4pC,KAAa5pC,EAAO,SAC7B,KAAK,cAAc4pC,EAAWpB,CAAU,EAE1C,MACF,CAEA,GAAI,OAAQxoC,EAAQ,CAClB,KAAM,CAAE,UAAAmR,EAAW,KAAM04B,EAAY,KAAMC,CAAA,EAAe9pC,EAAO,GAC3DgO,EAAQ,KAAK,WAAA,EACb5qB,EAAS,EAAQ0qB,GAASqD,EAAWnD,CAAK,EAC5C5qB,GAAUymD,EACZ,KAAK,cAAcA,EAAYrB,CAAU,EAChC,CAACplD,GAAU0mD,GACpB,KAAK,cAAcA,EAAYtB,CAAU,EAE3C,MACF,CAEA,GAAI,aAAcxoC,EAAQ,CACxB,KAAM,CAAE,KAAArb,EAAM,MAAAxG,CAAA,EAAU6hB,EAAO,SACzBgO,EAAQ,KAAK,WAAA,EACnB,IAAIplB,EAEA,OAAOzK,GAAU,UAAYA,IAAU,MAAQ,UAAWA,EAC5DyK,EAAgB2/C,GAAkBpqD,EAA4B,MAAOqqD,CAAU,EACtErqD,IAAU,MAAQqqD,IAAe,OAM1C5/C,EAAgB4/C,EACP,OAAOrqD,GAAU,UAAYA,IAAU,MAAQ,UAAWA,EACnEyK,EAAgBklB,GAAU3vB,EAA6B,MAAO6vB,CAAK,EAEnEplB,EAAgBzK,GAGlB2a,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAASnU,EAAMiE,GAChC,MACF,CAEA,GAAI,aAAcoX,EAAQ,CACxB,KAAM,CAAE,MAAO+pC,CAAA,EAAe/pC,EAAO,SACrC,IAAIgqC,EACJ,GAAI,OAAOD,GAAe,UAAYA,IAAe,MAAQ,UAAWA,EACtEC,EAAgBzB,GAAkBwB,EAAiC,MAAOvB,CAAU,MAC/E,CACL,MAAMx6B,EAAQ,KAAK,WAAA,EACnBg8B,EAAgB,OAAOD,GAAe,UAAYA,IAAe,MAAQ,UAAWA,EAChFj8B,GAAUi8B,EAAkC,MAAO/7B,CAAK,EACxD+7B,CACN,CACI,OAAOC,GAAkB,SAC3B,KAAK,SAAS,KAAK,eAAgBA,CAAa,EACvC,OAAOA,GAAkB,UAAYA,IAAkB,MAChE,KAAK,SAAS,KAAK,eAAgBA,CAAa,EAElD,MACF,CAEA,GAAI,QAAShqC,EAAQ,CACnB,KAAK,WAAWA,EAAO,GAAG,EAC1B,MACF,CAEA,GAAI,WAAYA,EAAQ,CACtB,KAAK,gBAAgBA,EAAO,OAAQwoC,CAAU,EAC9C,MACF,CAEA,GAAI,YAAaxoC,EAAQ,CACvB,KAAK,eAAeA,EAAO,QAASwoC,CAAU,EAC9C,MACF,CAEA,GAAI,iBAAkBxoC,EAAQ,CAC5B,KAAM,CAAE,QAAAyF,EAAS,SAAA3B,CAAA,EAAa9D,EAAO,aACrC,KAAK,SAAS,KAAK,WAAY,CAAE,QAAAyF,EAAS,SAAU3B,GAAY,IAAM,EACtE,MACF,CAEA,GAAI,eAAgB9D,EAAQ,CAC1B,KAAK,SAAS,KAAK,SAAUA,EAAO,UAAU,EAC9C,MACF,CAEA,GAAI,aAAcA,EAAQ,CACxB,KAAK,SAAS,KAAK,WAAYA,EAAO,QAAQ,EAC9C,MACF,CACF,CAEQ,gBAAgBjjB,EAA8ByrD,EAA4B,WAC5EzrD,EAAO,cAAY+b,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS/b,EAAO,WAAY,YAChEA,EAAO,aAAWgc,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAShc,EAAO,UAAW,SAC9DA,EAAO,mBAAiB4zB,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS5zB,EAAO,gBAAiB,KACzE,KAAK,YAAYA,EAAQyrD,CAAU,CAC1C,CAEA,MAAc,YAAYzrD,EAA8ByrD,EAAqC,mBAC3F,IAAIyB,EACJ,GAAI,CAEF,GADAA,EAAU,KAAK,qBAAqBltD,EAAQyrD,CAAU,EAClD,CAAC,KAAK,gBACR,MAAM,IAAI,MACR,oJAAA,EAIJ,MAAMn0B,EAAO,MAAM,KAAK,gBAAgB41B,CAAO,EAC3CltD,EAAO,cAAY+b,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS/b,EAAO,WAAYs3B,IAChEt3B,EAAO,aAAWgc,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAShc,EAAO,UAAW,SAC9DA,EAAO,mBAAiB4zB,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS5zB,EAAO,gBAAiB,KAC1EA,EAAO,cAAY65B,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS75B,EAAO,WAAY,YAEpE,MAAMmtD,EAA6B,CAAE,QAAS,GAAM,QAAAD,EAAS,KAAA51B,CAAA,EAC7D,KAAK,SAAS,KAAK,oBAAqB61B,CAAQ,EAC5CntD,EAAO,WACT,KAAK,cAAcA,EAAO,UAAWs3B,CAAI,CAE7C,OAAS1Z,EAAO,CACd,MAAM8U,EAAa05B,GAAuBxuC,CAAK,EAC3C5d,EAAO,cAAY85B,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS95B,EAAO,WAAY,UAChEA,EAAO,aAAW+5B,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS/5B,EAAO,UAAW0yB,EAAW,UACzE1yB,EAAO,mBAAiBotD,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAASptD,EAAO,gBAAiB0yB,EAAW,QAAU,KAEnG,MAAMy6B,EAA6B,CACjC,QAAS,GACT,GAAID,EAAU,CAAE,QAAAA,CAAA,EAAY,CAAA,EAC5B,MAAOx6B,EAAW,QAClB,GAAIA,EAAW,KAAO,CAAE,KAAMA,EAAW,IAAA,EAAS,CAAA,EAClD,GAAIA,EAAW,OAAS,CAAE,OAAQA,EAAW,MAAA,EAAW,CAAA,CAAC,EAE3D,KAAK,SAAS,KAAK,oBAAqBy6B,CAAQ,EAChD,KAAK,SAAS,KAAK,WAAY,CAAE,QAASz6B,EAAW,QAAS,SAAU,IAAM,EAC1E1yB,EAAO,SACT,KAAK,cAAcA,EAAO,QAASmtD,CAAQ,CAE/C,CACF,CAEQ,qBAAqBntD,EAA8ByrD,EAAuC,CAChG,MAAMx6B,EAAQ,KAAK,WAAA,EACbi8B,EAA2B,CAC/B,UAAWltD,EAAO,UAClB,WAAY8rD,GACVD,GAAmB7rD,EAAO,WAAYyrD,EAAYx6B,CAAK,EACvD,mBAAA,CACF,EAGIrR,EAAKosC,GAAmBH,GAAmB7rD,EAAO,GAAIyrD,EAAYx6B,CAAK,EAAG,WAAW,EACvFrR,IAAO,SAAWstC,EAAQ,GAAKttC,GAEnC,MAAM2K,EAAU2hC,GAAuBL,GAAmB7rD,EAAO,QAASyrD,EAAYx6B,CAAK,EAAG,gBAAgB,EAC1G1G,IAAY,SAAW2iC,EAAQ,QAAU3iC,GAE7C,MAAM8iC,EAAatB,GACjBF,GAAmB7rD,EAAO,WAAYyrD,EAAYx6B,CAAK,EACvD,mBAAA,EAEEo8B,IAAe,SAAWH,EAAQ,WAAaG,GAEnD,MAAMrwB,EAAUivB,GAAuBJ,GAAmB7rD,EAAO,QAASyrD,EAAYx6B,CAAK,EAAG,gBAAgB,EAG9G,GAFI+L,IAAY,SAAWkwB,EAAQ,QAAUlwB,IAG1Ch9B,EAAO,YAAc,UAAYA,EAAO,YAAc,UAAYA,EAAO,YAAc,eACxFktD,EAAQ,KAAO,OAEf,MAAM,IAAI,MAAM,WAAWltD,EAAO,SAAS,kBAAkB,EAE/D,GAAIA,EAAO,YAAc,cAAgB,CAACktD,EAAQ,WAChD,MAAM,IAAI,MAAM,uDAAuD,EAGzE,OAAOA,CACT,CAEQ,eAAeltD,EAA6ByrD,EAA4B,SAC1EzrD,EAAO,cAAY+b,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS/b,EAAO,WAAY,YAChEA,EAAO,aAAWgc,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAShc,EAAO,UAAW,SAC7D,KAAK,WAAWA,EAAQyrD,CAAU,CACzC,CAEA,MAAc,WAAWzrD,EAA6ByrD,EAAqC,eACzF,IAAIyB,EACJ,GAAI,CAEF,GADAA,EAAU,KAAK,oBAAoBltD,EAAQyrD,CAAU,EACjD,CAAC,KAAK,eACR,MAAM,IAAI,MACR,kJAAA,EAIJ,MAAMn0B,EAAO,MAAM,KAAK,eAAe41B,CAAO,EAC1CltD,EAAO,cAAY+b,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS/b,EAAO,WAAYs3B,IAChEt3B,EAAO,aAAWgc,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAShc,EAAO,UAAW,SAC9DA,EAAO,cAAY4zB,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS5zB,EAAO,WAAY,YAEpE,MAAMmtD,EAA4B,CAAE,QAAS,GAAM,QAAAD,EAAS,KAAA51B,CAAA,EAC5D,KAAK,SAAS,KAAK,mBAAoB61B,CAAQ,EAC3CntD,EAAO,WACT,KAAK,cAAcA,EAAO,UAAWs3B,CAAI,CAE7C,OAAS1Z,EAAO,CACd,MAAM8U,EAAa05B,GAAuBxuC,CAAK,EAC3C5d,EAAO,cAAY65B,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS75B,EAAO,WAAY,UAChEA,EAAO,aAAW85B,EAAA,KAAK,aAAL,MAAAA,EAAiB,SAAS95B,EAAO,UAAW0yB,EAAW,UAE7E,MAAMy6B,EAA4B,CAChC,QAAS,GACT,GAAID,EAAU,CAAE,QAAAA,CAAA,EAAY,CAAA,EAC5B,MAAOx6B,EAAW,QAClB,GAAIA,EAAW,KAAO,CAAE,KAAMA,EAAW,IAAA,EAAS,CAAA,EAClD,GAAIA,EAAW,OAAS,CAAE,OAAQA,EAAW,MAAA,EAAW,CAAA,CAAC,EAE3D,KAAK,SAAS,KAAK,mBAAoBy6B,CAAQ,EAC/C,KAAK,SAAS,KAAK,WAAY,CAAE,QAASz6B,EAAW,QAAS,SAAU,IAAM,EAC1E1yB,EAAO,SACT,KAAK,cAAcA,EAAO,QAASmtD,CAAQ,CAE/C,CACF,CAEQ,oBAAoBntD,EAA6ByrD,EAAsC,CAC7F,MAAMx6B,EAAQ,KAAK,WAAA,EACbi8B,EAA0B,CAC9B,KAAMpB,GACJD,GAAmB7rD,EAAO,KAAMyrD,EAAYx6B,CAAK,EACjD,cAAA,CACF,EAEI1G,EAAU2hC,GAAuBL,GAAmB7rD,EAAO,QAASyrD,EAAYx6B,CAAK,EAAG,iBAAiB,EAC/G,OAAI1G,IAAY,SAAW2iC,EAAQ,QAAU3iC,GACtC2iC,CACT,CAEQ,WAAWltD,EAAoG,CAChH,KAAK,SAASA,CAAM,CAC3B,CAEA,MAAc,SAASA,EAA6G,aAClI,GAAI,KAAK,kBAAoB,KAAK,sBAAuB,CACvD,KAAK,SAAS,KAAK,eAAgB,CACjC,QAAS,GACT,MAAO,uDAAuD,KAAK,qBAAqB,GAAA,CACzF,EACD,KAAK,SAAS,KAAK,WAAY,CAAE,QAAS,kCAAmC,SAAU,IAAM,EAC7F,MACF,CAEA,KAAK,mBACL,GAAI,CACF,IAAIstD,EACJ,GAAI,CACFA,EAAY,IAAI,IAAIttD,EAAO,IAAK,OAAO,OAAW,IAAc,OAAO,SAAS,KAAO,MAAS,CAClG,MAAQ,CACN,MAAM,IAAI,MAAM,oBAAoBA,EAAO,GAAG,EAAE,CAClD,CACA,GAAIstD,EAAU,WAAa,SAAWA,EAAU,WAAa,SAC3D,MAAM,IAAI,MAAM,+BAA+BA,EAAU,QAAQ,EAAE,EAGrE,GAAI,CAAC,KAAK,gBAAgBA,CAAS,EACjC,MAAM,IAAI,MACR,KAAK,aACD,aAAaA,EAAU,IAAI,0CAC3B,kKAAA,EAIR,MAAMC,EAAa,IAAI,gBACjBC,EAAU,WAAW,IAAMD,EAAW,MAAA,EAASlB,EAAc,EAEnE,IAAIc,EACJ,GAAI,CACFA,EAAW,MAAM,MAAMG,EAAW,CAChC,OAAQttD,EAAO,OACf,QAAS,CACP,eAAgB,kBAAA,EAElB,KAAMA,EAAO,KAAO,KAAK,UAAUA,EAAO,IAAI,EAAI,OAClD,OAAQutD,EAAW,MAAA,CACpB,CACH,QAAA,CACE,aAAaC,CAAO,CACtB,CAEA,GAAI,CAACL,EAAS,GACZ,MAAM,IAAI,MAAM,cAAcA,EAAS,MAAM,EAAE,EAGjD,MAAMM,GAAczxC,GAAAD,EAAAoxC,EAAS,UAAT,YAAApxC,EAAkB,MAAlB,YAAAC,EAAA,KAAAD,EAAwB,gBAC5C,GAAI0xC,GAAe,CAACA,EAAY,SAAS,MAAM,EAC7C,MAAM,IAAI,MAAM,8BAA8BA,CAAW,eAAe,EAG1E,MAAMC,GAAiB7zB,GAAAjG,EAAAu5B,EAAS,UAAT,YAAAv5B,EAAkB,MAAlB,YAAAiG,EAAA,KAAAjG,EAAwB,kBAC/C,GAAI85B,GAAkB,OAAOA,CAAc,EAAI,KAAK,oBAClD,MAAM,IAAI,MACR,2BAA2BA,CAAc,iBAAiB,KAAK,mBAAmB,GAAA,EAItF,MAAM1qC,EAAO,MAAMmqC,EAAS,KAAA,EACtBQ,EAAc,IAAI,YAAA,EAAc,OAAO3qC,CAAI,EAAE,OACnD,GAAI2qC,EAAc,KAAK,oBACrB,MAAM,IAAI,MACR,2BAA2BA,CAAW,iBAAiB,KAAK,mBAAmB,GAAA,EAInF,MAAMr2B,EAAO,KAAK,MAAMtU,CAAI,EAExBhjB,EAAO,YAAc,KAAK,YAC5B,KAAK,WAAW,SAASA,EAAO,WAAYs3B,CAAI,EAGlD,KAAK,SAAS,KAAK,eAAgB,CAAE,QAAS,GAAM,KAAAA,EAAM,CAC5D,OAAS1Z,EAAO,CACd,KAAK,SAAS,KAAK,eAAgB,CACjC,QAAS,GACT,MAAOA,aAAiB,MAAQA,EAAM,QAAU,eAAA,CACjD,EACD,KAAK,SAAS,KAAK,WAAY,CAC7B,QAASA,aAAiB,MAAQA,EAAM,QAAU,qBAClD,SAAU,GAAA,CACX,CACH,QAAA,CACE,KAAK,kBACP,CACF,CAEQ,gBAAgB6kB,EAAmB,CACzC,OAAK,KAAK,aACN,OAAO,KAAK,cAAiB,WAAmB,KAAK,aAAaA,CAAG,EAClE+pB,GAAc/pB,EAAI,KAAM,KAAK,YAAY,EAFjB,EAGjC,CAEQ,YAA0B,OAEhC,MAAO,CACL,OAFoB1mB,EAAA,KAAK,aAAL,YAAAA,EAAiB,WAGrC,QAAS,KAAK,QACd,MAAO,KAAK,MACZ,KAAM,KAAK,IAAA,CAEf,CACF,CCheO,SAAS6xC,GAAoBC,EAAwB14C,EAAyB,GAAmB,CACtG,MAAMvO,EAAQuO,EAAQ,OAASw0C,GAASkE,EAAS,OAAS,EAAE,EACtDC,EAAa34C,EAAQ,WACrB81C,EAAc91C,EAAQ,aAAe04C,EAAS,YAE9Cv2B,EAAgC,CAAA,EAEtC,GAAI2zB,GACF,SAAW,CAACvpD,EAAM1B,CAAM,IAAK,OAAO,QAAQirD,CAAW,EACrD,GAAI,MAAM,QAAQjrD,CAAM,EACtBs3B,EAAK51B,CAAI,EAAI1B,UACJ4qD,GAAkB5qD,CAAM,EAAG,CAKpC,MAAM+tD,EAAeD,GAAA,YAAAA,EAAY,SAAS,SAASpsD,CAAI,SACvD41B,EAAK51B,CAAI,EAAI,MAAM,QAAQqsD,CAAY,EAAIA,EAAe,CAAA,CAC5D,EAIJ,MAAMC,EAAgBF,GAAA,YAAAA,EAAY,WAE5BG,EAAW5C,GAAA,EACbl2C,EAAQ,eACV84C,EAAS,GAAG,eAAiBC,GAAU,CACrC/4C,EAAQ,cAAe+4C,CAAyC,CAClE,CAAC,EAGH,MAAM55B,EAAc,IAAIq4B,GAAkB,CACxC,WAAAmB,EACA,QAAS34C,EAAQ,QACjB,KAAAmiB,EACA,SAAA22B,EACA,gBAAiB94C,EAAQ,gBACzB,eAAgBA,EAAQ,eACxB,aAAcA,EAAQ,aACtB,oBAAqBA,EAAQ,oBAC7B,sBAAuBA,EAAQ,qBAAA,CAChC,EAED,MAAO,CAAE,MAAAvO,EAAO,KAAA0wB,EAAM,cAAA02B,EAAe,QAAS74C,EAAQ,QAAS,SAAA84C,EAAU,YAAA35B,CAAA,CAC3E,CAUA,IAAI65B,GAA6B,GAQjC,SAASC,GAAsBP,EAA8B,CACvDM,IAA8B,CAACN,EAAS,aAExC,CADa,OAAO,OAAOA,EAAS,WAAW,EAAE,KAAKjD,EAAiB,IAE3EuD,GAA6B,GAC7B,QAAQ,KACN,qWAAA,EAKJ,CAEO,SAASE,GACdR,EACA14C,EAAyB,GACR,CACjBi5C,GAAsBP,CAAQ,EAC9B,KAAM,CAAE,MAAAjnD,EAAO,KAAA0wB,EAAM,cAAA02B,EAAe,QAAAM,EAAS,YAAAh6B,GAAgBs5B,GAAoBC,EAAU14C,CAAO,EAE5Fo5C,EAAW/7B,GAAWq7B,EAAS,KAAM,CACzC,MAAAjnD,EACA,MAAOonD,EACP,QAAAM,EACA,KAAAh3B,EACA,kBAAmBhD,EACnB,SAAUnf,EAAQ,SAClB,YAAa04C,EAAS,WAAA,CACvB,EAED,OAAOW,GAAsBD,EAAU3nD,CAAK,CAC9C,CAOO,SAAS4nD,GAAsBD,EAA2B3nD,EAA2C,CAC1G,GAAIA,GAASlD,EAAM,eAAe6qD,CAAQ,EAAG,CAC3C,MAAME,EAAezE,GAAuBpjD,CAAK,EAC3C8nD,EAAiBH,EAAS,MAA8C,MAC9E,OAAO7qD,EAAM,aAAa6qD,EAAqE,CAC7F,MAAO,CAAE,GAAGE,EAAc,GAAGC,CAAA,CAAc,CAC5C,CACH,CAEA,OAAOH,CACT,CC/IO,SAASI,GAAmB,CACjC,SAAAd,EACA,MAAAjnD,EACA,WAAAknD,EACA,QAAAQ,EACA,YAAArD,EACA,YAAA2D,EACA,gBAAAC,EACA,eAAAC,EACA,cAAAC,EACA,SAAAhkC,EACA,aAAAikC,EACA,oBAAAC,EACA,sBAAAC,CACF,EAA4B,CAK1B,KAAM,CAACC,EAAcC,CAAe,EAAIz4C,EAAAA,SAAS,CAAC,EAElDC,EAAAA,UAAU,IAAM,CACd,GAAKk3C,EACL,OAAOA,EAAW,UAAU,IAAMsB,EAAiBt5B,GAAMA,EAAI,CAAC,CAAC,CACjE,EAAG,CAACg4B,CAAU,CAAC,EAQf,MAAMuB,EAAyB74C,EAAAA,OAA+B,EAAE,EAC1D84C,EAAoB94C,EAAAA,OAA+B,IAAI,EAEvD+4C,EAAuBtE,GAAe4C,EAAS,YAErDj3C,EAAAA,UAAU,IAAM,CACd,GAAI,CAACg4C,GAAe,CAACd,GAAc,CAACyB,EAAsB,OAE1D,MAAMC,EAAe,IAAM,OACzB,MAAMv+B,EAAQ,CAAE,MAAO68B,EAAW,SAAA,EAAuC,QAAAQ,CAAA,EACnEj4C,EAAW+0C,GAAyBmE,EAAsBt+B,CAAK,EAErE,GAAI,CADY,OAAO,KAAK5a,CAAQ,EAAE,KAAM3U,GAAS2tD,EAAuB,QAAQ3tD,CAAI,IAAM2U,EAAS3U,CAAI,CAAC,EAC9F,OACd2tD,EAAuB,QAAUh5C,GAEjC0F,EAAAuzC,EAAkB,UAAlB,MAAAvzC,EAA2B,QAC3B,MAAMwxC,EAAa,IAAI,gBACvB+B,EAAkB,QAAU/B,EACvBvC,GAAeuE,EAAsB,CAAE,QAASX,EAAa,WAAAd,EAAY,QAAAQ,EAAS,OAAQf,EAAW,OAAQ,CACpH,EAEAiC,EAAA,EACA,MAAMC,EAAc3B,EAAW,UAAU0B,CAAY,EAErD,MAAO,IAAM,OACXC,EAAA,GACA1zC,EAAAuzC,EAAkB,UAAlB,MAAAvzC,EAA2B,QAQ3BszC,EAAuB,QAAU,CAAA,CACnC,CACF,EAAG,CAACT,EAAad,EAAYyB,EAAsBjB,CAAO,CAAC,EAE3D,MAAM1B,EAAUz0C,EAAAA,QACd,IAKSy1C,GAAoBC,EAAU,CACnC,MAAAjnD,EACA,WAAAknD,EACA,QAAAQ,EACA,YAAaiB,EACb,YAAAX,EACA,gBAAAC,EACA,eAAAC,EACA,cAAAC,EACA,SAAAhkC,EACA,aAAAikC,EACA,oBAAAC,EACA,sBAAAC,CAAA,CACD,EAEH,CACErB,EACAjnD,EACAknD,EACAQ,EACAiB,EACAX,EACAC,EACAC,EACAC,EACAhkC,EACAikC,EACAC,EACAC,EACAC,CAAA,CACF,EAGI,CAACO,EAAQC,CAAS,EAAIh5C,EAAAA,SAA6B,IAAI,EAIvD,CAACi5C,EAAUC,CAAW,EAAIl5C,EAAAA,SAA+B,IAAI,EAEnEC,EAAAA,UAAU,IAAM,CACd,MAAMk5C,EAAYlD,EAAQ,SAAS,GAAG,SAAWriC,GAAY,CAC3DolC,EAAUplC,CAAsB,CAClC,CAAC,EACKwlC,EAAcnD,EAAQ,SAAS,GAAG,WAAariC,GAAY,CAC/DslC,EAAYtlC,CAAwB,CACtC,CAAC,EAED,MAAO,IAAM,CACXulC,EAAA,EACAC,EAAA,CACF,CACF,EAAG,CAACnD,EAAQ,QAAQ,CAAC,EAErB,MAAM2B,EAAW/7B,GAAWq7B,EAAS,KAAM,CACzC,MAAOjB,EAAQ,MACf,MAAOA,EAAQ,cACf,QAASA,EAAQ,QACjB,KAAMA,EAAQ,KACd,kBAAmBA,EAAQ,YAC3B,SAAA7hC,EACA,YAAa8iC,EAAS,WAAA,CACvB,EAED,OACEtyC,EAAAA,KAAAsH,WAAA,CACG,SAAA,CAAA2rC,GAAsBD,EAAU3B,EAAQ,KAAK,EAC9C32C,EAAAA,IAAC0S,GAAA,CACC,KAAM+mC,IAAW,KACjB,MAAOA,GAAA,YAAAA,EAAQ,MACf,QAASA,GAAA,YAAAA,EAAQ,QACjB,QAAS,IAAMC,EAAU,IAAI,CAAA,CAAA,EAE/B15C,EAAAA,IAACwS,GAAA,CACC,QAASmnC,GAAA,YAAAA,EAAU,QACnB,SAAUA,GAAA,YAAAA,EAAU,SACpB,QAAS,IAAMC,EAAY,IAAI,CAAA,CAAA,CACjC,EACF,CAEJ,CCtLO,MAAMG,GAAuB,QAQ7B,SAASC,IAA0C,CACxD,MAAMC,EAAUhlC,GAAgB,KAAA,EAChC,MAAO,CACL,QAAS8kC,GACT,eAAgBE,EAAQ,OACxB,WAAYA,EAAQ,IAAKC,GAAA,SACvB,SAAGA,EAAE,IAAI,KAAIp0C,EAAAo0C,EAAE,kBAAF,YAAAp0C,EAAmB,IAAK+sB,GAAMA,EAAE,MAAM,KAAK,IAAI,KAAI9sB,EAAAm0C,EAAE,mBAAF,YAAAn0C,EAAoB,IAAKqK,GAAMA,EAAE,MAAM,KAAK,IAAI,GAAA,CAClH,CAEJ,CAEO,MAAM+pC,GAAoCH,GAAA,EAE1C,SAASI,IAAsC,CACpD,OAAOD,EACT,CAEO,SAASE,IAAiC,CAC/C,OAAOF,GAAiB,WAAW,KAAK;AAAA,CAAI,CAC9C,CCzBqCtH,EAASP,IAAYQ,IAAW,EAE9D,MAAMwH,GAAmBjI,EAAS,CACvC,UAAWS,GAAE,EAAU,SAAA,EACvB,YAAaI,GAAQP,GAAO,CAAC,SAAU,SAAU,UAAW,MAAM,CAAC,CAAC,EAAE,SAAA,CACxE,CAAC,EAEY4H,GAAelI,EAAS,CACnC,WAAYE,GAAQ,CAACW,GAAQJ,GAAE,CAAS,EAAGR,EAAE,CAAQ,CAAC,EAAE,SAAA,EACxD,SAAUA,EAAE,EAAS,SAAA,EACrB,SAAUkI,GAAE,EAAU,SAAA,CACxB,CAAC,EAEYC,GAAkCpI,EAAS,CACtD,GAAIC,EAAE,EACN,KAAMA,EAAE,EACR,KAAMA,EAAE,EAAS,SAAA,EACjB,MAAOO,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EACzC,MAAOD,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EACzC,SAAUI,GAAQwH,GAAO,IAAMD,EAAU,CAAC,EAAE,SAAA,EAC5C,MAAO5H,EAASP,IAAYY,GAAQwH,GAAO,IAAMD,EAAU,CAAC,CAAC,EAAE,SAAA,EAC/D,WAAY5H,EACFP,IAAYQ,GAAE,CAAS,EAC9B,SAAA,EACA,SAAS,4HAA4H,EACxI,WAAYwH,GAAiB,SAAA,EAC7B,SAAUzH,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EAC5C,OAAQD,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EAC1C,OAAQyH,GAAa,SAAA,EACrB,IAAKjI,EAAE,EAAS,SAAA,EAChB,YAAaA,EAAE,EAAS,SAAA,EACxB,SAAUA,EAAE,EAAS,SAAA,EACrB,OAAQA,EAAE,EAAS,SAAA,CACrB,CAAC,EAEYqI,GAAqBzH,GAAQC,EAAiB,EAE9CyH,GAAiBvI,EAAS,CACrC,QAASC,EAAE,EAAS,SAAA,EACpB,QAASA,EAAE,EACX,GAAIA,EAAE,EACN,KAAMA,EAAE,EACR,MAAOA,EAAE,EAAS,SAAA,EAClB,MAAOA,EAAE,EAAS,SAAA,EAClB,MAAOO,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EAOzC,YAAaD,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EAC/C,YAAaD,EAASP,IAAYmI,EAAU,EAAE,SAAA,EAC9C,KAAMA,EACR,CAAC,EAEYI,GAA8CxI,EAAS,CAClE,MAAOQ,EAASP,EAAE,EAAUA,EAAE,CAAQ,EAAE,SAAA,EACxC,KAAMO,EAASP,EAAE,EAAUA,EAAE,CAAQ,EAAE,SAAA,EACvC,QAASO,EAASP,EAAE,EAAUA,EAAE,CAAQ,EAAE,SAAA,EAC1C,OAAQO,EAASP,EAAE,EAAUA,EAAE,CAAQ,EAAE,SAAA,EACzC,OAAQO,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,CAC5C,CAAC,EC/DKgI,GAAuBzI,EAAS,CACpC,SAAUA,EAAS,CACjB,KAAMC,EAAE,EACR,MAAOQ,GAAE,CAAQ,CAClB,CACH,CAAC,EAEKiI,GAAuB1I,EAAS,CACpC,SAAUA,EAAS,CACjB,MAAOE,GAAQ,CAACD,IAAYO,EAASP,IAAYQ,GAAE,CAAS,CAAC,CAAC,CAAA,CAC/D,CACH,CAAC,EAEKkI,GAAkB3I,EAAS,CAC/B,IAAKA,EAAS,CACZ,IAAKC,EAAE,EACP,OAAQK,GAAO,CAAC,MAAO,OAAQ,MAAO,QAAQ,CAAC,EAC/C,KAAME,EAASP,EAAE,EAAUQ,GAAE,CAAS,EAAE,SAAA,EACxC,WAAYR,EAAE,EAAS,SAAA,CAAS,CACjC,CACH,CAAC,EAEK2I,GAAyB5I,EAAS,CAAE,MAAOC,EAAE,EAAU,EACvD4I,GAAwB7I,EAAS,CAAE,MAAOS,GAAE,EAAW,EACvDqI,GAAyB5I,GAAQ,CAACD,EAAE,EAAU2I,GAAwBC,EAAqB,CAAC,EAC5FE,GAAqB7I,GAAQ,CAACD,EAAE,EAAUE,KAAYyI,GAAwBC,EAAqB,CAAC,EACpGG,GAAyB9I,GAAQ,CACrCM,EAASP,IAAYQ,IAAW,EAChCmI,GACAC,EACF,CAAC,EACKI,GAAyB/I,GAAQ,CAACC,GAAE,EAAUyI,GAAwBC,EAAqB,CAAC,EAE5FK,GAAuBlJ,EAAS,CACpC,OAAQA,EAAS,CACf,UAAWM,GAAO,CAAC,SAAU,SAAU,SAAU,YAAY,CAAC,EAC9D,WAAYwI,GACZ,GAAIC,GAAmB,SAAA,EACvB,QAASC,GAAuB,SAAA,EAChC,WAAYF,GAAuB,SAAA,EACnC,QAASG,GAAuB,SAAA,EAChC,WAAYhJ,EAAE,EAAS,SAAA,EACvB,UAAWA,EAAE,EAAS,SAAA,EACtB,gBAAiBA,EAAE,EAAS,SAAA,EAC5B,WAAYA,EAAE,EAAS,SAAA,EACvB,UAAWoI,GAAO,IAAMc,EAAY,EAAE,SAAA,EACtC,QAASd,GAAO,IAAMc,EAAY,EAAE,SAAA,CAAS,CAC9C,CACH,CAAC,EAEKC,GAAsBpJ,EAAS,CACnC,QAASA,EAAS,CAChB,KAAM8I,GACN,QAASE,GAAuB,SAAA,EAChC,WAAY/I,EAAE,EAAS,SAAA,EACvB,UAAWA,EAAE,EAAS,SAAA,EACtB,WAAYA,EAAE,EAAS,SAAA,EACvB,UAAWoI,GAAO,IAAMc,EAAY,EAAE,SAAA,EACtC,QAASd,GAAO,IAAMc,EAAY,EAAE,SAAA,CAAS,CAC9C,CACH,CAAC,EAEKE,GAA2BrJ,EAAS,CACxC,aAAcA,EAAS,CACrB,QAASC,EAAE,EACX,SAAUE,GAAE,EAAS,SAAA,CAAS,CAC/B,CACH,CAAC,EAEKmJ,GAAyBtJ,EAAS,CACtC,WAAYA,EAAS,CACnB,MAAOC,EAAE,EACT,QAASA,EAAE,CAAO,CACnB,CACH,CAAC,EAEKsJ,GAAuBvJ,EAAS,CACpC,SAAUA,EAAS,CACjB,OAAQa,GAAQZ,GAAU,CAAA,CAC3B,CACH,CAAC,EAEKuJ,GAAuBxJ,EAAS,CACpC,SAAUa,GAAQwH,GAAO,IAAMc,EAAY,CAAC,CAC9C,CAAC,EAEKM,GAAiBzJ,EAAS,CAC9B,GAAIA,EAAS,CACX,UAAWQ,EAASP,IAAYQ,IAAW,EAC3C,KAAM4H,GAAO,IAAMc,EAAY,EAC/B,KAAMd,GAAO,IAAMc,EAAY,EAAE,SAAA,CAAS,CAC3C,CACH,CAAC,EAEYA,GAAkCjJ,GAAQ,CACrDuI,GACAC,GACAC,GACAO,GACAE,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,CAAC,EAEYC,GAAgB7I,GAAQsI,EAAY,ECpG3CQ,GAAkB,oCAExB,SAASC,GAAaC,EAAkB/f,EAAwC,CAC9E,MAAMxyB,EAAK,GAAGqyC,EAAe,IAAIE,CAAQ,GACnC35B,EAAS45B,GAAehgB,EAAW,CAAE,OAAQ,gBAAiB,EACpE,OAAA5Z,EAAO,IAAM5Y,EACN,CAAE,SAAAuyC,EAAU,GAAAvyC,EAAI,OAAA4Y,CAAA,CACzB,CAOO,SAAS65B,IAA0C,CACxD,MAAO,CACLH,GAAa,4BAA6BrB,EAAc,EACxDqB,GAAa,qBAAsBT,EAAY,EAC/CS,GAAa,4BAA6BtB,EAAkB,EAC5DsB,GAAa,4BAA6BpB,EAAkB,CAAA,CAEhE,CC7BA,MAAMwB,GAAmC,CACvC,MAAO,CACL,QAAS,UACT,UAAW,UACX,SAAU,UACV,MAAO,UACP,QAAS,UACT,QAAS,UACT,WAAY,UACZ,QAAS,UACT,mBAAoB,UACpB,OAAQ,UACR,eAAgB,UAChB,eAAgB,UAChB,iBAAkB,UAClB,aAAc,UACd,eAAgB,UAChB,OAAU,UACV,eAAgB,UAChB,gBAAiB,SAAA,EAEnB,QAAS,CACP,EAAK,MACL,MAAO,WACP,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,OACL,EAAK,UACL,EAAK,SACL,EAAK,OACL,GAAM,SACN,GAAM,OACN,GAAM,OACN,GAAM,OACN,GAAM,MAAA,EAER,OAAQ,CACN,KAAM,MACN,GAAI,WACJ,GAAI,WACJ,GAAI,SACJ,GAAI,UACJ,MAAO,OACP,KAAM,QAAA,EAER,OAAQ,CACN,KAAM,OACN,GAAI,gCACJ,GAAI,mEACJ,GAAI,qEACJ,GAAI,qEAAA,EAEN,KAAM,CACJ,KAAM,uCACN,MAAO,2BACP,KAAM,yCAAA,EAER,OAAQ,CACN,UAAW,MACX,aAAc,MACd,eAAgB,MAChB,cAAe,MACf,cAAe,QACf,eAAgB,SAChB,eAAgB,SAChB,aAAc,MAAA,CAElB,EAEMC,GAAiC,CACrC,MAAO,CACL,aAAc,6BACd,eAAgB,+BAChB,aAAc,6BACd,WAAY,2BACZ,aAAc,6BACd,gBAAiB,gCACjB,aAAc,6BACd,sBAAuB,sCACvB,YAAa,4BACb,eAAgB,kCAChB,iBAAkB,oCAClB,aAAc,gCACd,eAAgB,kCAChB,kBAAmB,kCACnB,iBAAkB,4BAClB,eAAgB,iCAAA,EAElB,QAAS,CACP,GAAI,yBACJ,GAAI,yBACJ,GAAI,yBACJ,GAAI,yBACJ,GAAI,yBACJ,MAAO,yBAAA,EAET,OAAQ,CACN,GAAI,yBACJ,GAAI,yBACJ,GAAI,yBACJ,GAAI,yBACJ,KAAM,0BAAA,EAER,OAAQ,CACN,GAAI,yBACJ,GAAI,yBACJ,GAAI,yBACJ,GAAI,wBAAA,EAEN,WAAY,CACV,gBAAiB,CACf,WAAY,yBACZ,SAAU,WACV,WAAY,IACZ,WAAY,gBACZ,cAAe,gBAAA,EAEjB,kBAAmB,CACjB,WAAY,yBACZ,SAAU,WACV,WAAY,IACZ,WAAY,eACZ,cAAe,gBAAA,EAEjB,iBAAkB,CAChB,WAAY,yBACZ,SAAU,UACV,WAAY,IACZ,WAAY,eACZ,cAAe,gBAAA,EAEjB,cAAe,CACb,WAAY,yBACZ,SAAU,UACV,WAAY,IACZ,WAAY,eACZ,cAAe,iBAAA,EAEjB,eAAgB,CACd,WAAY,yBACZ,SAAU,YACV,WAAY,IACZ,WAAY,iBACZ,cAAe,iBAAA,EAEjB,aAAc,CACZ,WAAY,yBACZ,SAAU,YACV,WAAY,IACZ,WAAY,kBACZ,cAAe,iBAAA,EAEjB,cAAe,CACb,WAAY,yBACZ,SAAU,UACV,WAAY,IACZ,WAAY,iBACZ,cAAe,iBAAA,EAEjB,cAAe,CACb,WAAY,yBACZ,SAAU,UACV,WAAY,IACZ,WAAY,iBACZ,cAAe,eAAA,EAEjB,eAAgB,CACd,WAAY,yBACZ,SAAU,UACV,WAAY,IACZ,WAAY,iBACZ,cAAe,eAAA,CACjB,CAEJ,EAEaC,GAA2B,CACtC,GAAI,cACJ,KAAM,QACN,KAAM,QACN,YAAa,CACX,GAAI,QACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,MAAO,QAAA,EAET,WAAYF,GACZ,UAAWC,GACX,SAAU,CACR,OAAQ,CACN,CACE,KAAM,UACN,MAAO,CAAE,QAAS,SAAA,EAClB,MAAO,CACL,WAAY,6BACZ,MAAO,kCACP,QAAS,YACT,aAAc,yBACd,WAAY,GAAA,CACd,EAEF,CACE,KAAM,YACN,MAAO,CAAE,QAAS,WAAA,EAClB,MAAO,CACL,WAAY,cACZ,MAAO,6BACP,QAAS,YACT,aAAc,yBACd,YAAa,iCACb,YAAa,4BACb,WAAY,GAAA,CACd,EAEF,CACE,KAAM,QACN,MAAO,CAAE,QAAS,OAAA,EAClB,MAAO,CACL,WAAY,cACZ,MAAO,oCACP,QAAS,YACT,aAAc,yBACd,WAAY,GAAA,CACd,EAEF,CACE,KAAM,SACN,MAAO,CAAE,QAAS,QAAA,EAClB,MAAO,CACL,WAAY,2BACZ,MAAO,kCACP,QAAS,YACT,aAAc,yBACd,WAAY,GAAA,CACd,CACF,EAEF,KAAM,CACJ,CACE,KAAM,WACN,MAAO,CAAE,QAAS,UAAA,EAClB,MAAO,CACL,WAAY,6BACZ,QAAS,MACT,aAAc,yBACd,OAAQ,yBACR,YAAa,iCACb,YAAa,2BAAA,CACf,EAEF,CACE,KAAM,WACN,MAAO,CAAE,QAAS,UAAA,EAClB,MAAO,CACL,WAAY,cACZ,QAAS,MACT,aAAc,yBACd,YAAa,iCACb,YAAa,2BAAA,CACf,CACF,EAEF,UAAW,CACT,CACE,KAAM,UACN,MAAO,CAAE,QAAS,SAAA,EAClB,MAAO,CACL,QAAS,YACT,aAAc,yBACd,YAAa,iCACb,YAAa,4BACb,WAAY,4BAAA,CACd,EAEF,CACE,KAAM,SACN,MAAO,CAAE,QAAS,QAAA,EAClB,MAAO,CACL,QAAS,YACT,aAAc,yBACd,WAAY,gCACZ,YAAa,6BAAA,CACf,CACF,EAEF,MAAO,CACL,CACE,KAAM,QACN,MAAO,CAAE,QAAS,OAAA,EAClB,MAAO,CACL,WAAY,6BACZ,MAAO,kCACP,QAAS,cACT,aAAc,2BACd,SAAU,UACV,WAAY,GAAA,CACd,EAEF,CACE,KAAM,SACN,MAAO,CAAE,QAAS,QAAA,EAClB,MAAO,CACL,WAAY,mCACZ,MAAO,6BACP,QAAS,cACT,aAAc,2BACd,SAAU,UACV,WAAY,GAAA,CACd,CACF,CACF,CAEJ,EAEME,GAAkC,CACtC,GAAGH,GACH,MAAO,CACL,QAAS,UACT,UAAW,UACX,SAAU,UACV,MAAO,UACP,QAAS,UACT,QAAS,UACT,WAAY,UACZ,QAAS,UACT,mBAAoB,UACpB,OAAQ,UACR,eAAgB,UAChB,eAAgB,UAChB,iBAAkB,UAClB,aAAc,UACd,eAAgB,UAChB,OAAQ,UACR,eAAgB,UAChB,gBAAiB,SAAA,CAErB,EAEMI,GAAgC,CACpC,GAAGH,GACH,MAAO,CACL,GAAGA,GAAe,MAClB,gBAAiB,gCACjB,aAAc,6BACd,sBAAuB,sCACvB,YAAa,4BACb,eAAgB,kCAChB,iBAAkB,oCAClB,aAAc,gCACd,eAAgB,kCAChB,kBAAmB,kCACnB,iBAAkB,4BAClB,eAAgB,iCAAA,CAEpB,EAEaI,GAA0B,CACrC,GAAGH,GACH,GAAI,aACJ,KAAM,OACN,KAAM,OACN,WAAYC,GACZ,UAAWC,EACb,EAEaE,GAAkC,CAC7C,GAAI,eACJ,MAAO,QACP,KAAM,QACN,MAAOJ,EACT,EAEaK,GAAiC,CAC5C,GAAI,cACJ,MAAO,OACP,KAAM,OACN,MAAOF,EACT,EC1WMG,GAAO,CACX,GAAI,UAGJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UAEL,IAAK,UACL,IAAK,UACL,IAAK,SACP,EAEMC,GAA2C,CAC/C,GAAGP,GAAkB,WACrB,MAAO,CAEL,QAAS,UACT,UAAWM,GAAK,GAAG,EACnB,SAAU,UACV,MAAO,UACP,QAAS,UACT,QAAS,UAET,WAAY,UACZ,QAASA,GAAK,EAAE,EAChB,mBAAoB,UACpB,OAAQA,GAAK,GAAG,EAChB,eAAgBA,GAAK,GAAG,EACxB,eAAgB,UAChB,iBAAkBA,GAAK,GAAG,EAC1B,aAAcA,GAAK,GAAG,EACtB,eAAgB,UAChB,OAAQ,UACR,eAAgB,UAChB,gBAAiB,SAAA,EAEnB,OAAQ,CACN,KAAM,MACN,GAAI,UACJ,GAAI,WACJ,GAAI,SACJ,GAAI,UACJ,MAAO,OACP,KAAM,QAAA,EAER,OAAQ,CACN,KAAM,OACN,GAAI,kCACJ,GAAI,kCACJ,GAAI,iEACJ,GAAI,gEAAA,EAEN,KAAM,CACJ,GAAGN,GAAkB,WAAW,KAChC,KAAM,wEAAA,CAEV,EAEMQ,GAA0C,CAC9C,GAAGD,GACH,MAAO,CACL,GAAGA,GAAwB,MAC3B,QAASD,GAAK,GAAG,EACjB,UAAWA,GAAK,GAAG,EACnB,WAAYA,GAAK,GAAG,EACpB,QAASA,GAAK,GAAG,EACjB,mBAAoBA,GAAK,GAAG,EAC5B,OAAQA,GAAK,GAAG,EAChB,eAAgBA,GAAK,GAAG,EACxB,eAAgBA,GAAK,EAAE,EACvB,iBAAkBA,GAAK,GAAG,EAC1B,aAAcA,GAAK,GAAG,EACtB,eAAgBA,GAAK,GAAG,EACxB,OAAQ,UACR,eAAgB,UAChB,gBAAiB,SAAA,CAErB,EAGMG,GAAoCT,GAAkB,UAE/CU,GAA4B,CACvC,GAAGV,GACH,GAAI,uBACJ,KAAM,iBACN,KAAM,QACN,WAAYO,GACZ,UAAWE,GACX,SAAU,CACR,GAAGT,GAAkB,SAGrB,OAAQ,CACN,CACE,KAAM,UACN,MAAO,CAAE,QAAS,SAAA,EAClB,MAAO,CAAE,QAAS,OAAQ,aAAc,yBAA0B,SAAU,SAAA,CAAU,EAExF,CACE,KAAM,YACN,MAAO,CAAE,QAAS,WAAA,EAClB,MAAO,CAAE,QAAS,OAAQ,aAAc,yBAA0B,SAAU,SAAA,CAAU,EAExF,CACE,KAAM,OACN,MAAO,CAAE,QAAS,YAAa,KAAM,EAAA,EACrC,MAAO,CAAE,QAAS,OAAQ,aAAc,yBAA0B,SAAU,SAAA,CAAU,CACxF,CACF,CAEJ,EAEaW,GAA2B,CACtC,GAAGD,GACH,GAAI,sBACJ,KAAM,gBACN,KAAM,OACN,WAAYF,EACd,EAEaI,GAAmC,CAC9C,GAAI,wBACJ,MAAO,iBACP,KAAM,QACN,MAAOF,EACT,EAEaG,GAAkC,CAC7C,GAAI,uBACJ,MAAO,gBACP,KAAM,OACN,MAAOF,EACT,EC3JO,SAASG,GAAe1sD,EAAsB,CACnD,OAAO,KAAK,UAAUA,EAAO,KAAM,CAAC,CACtC,CAEO,SAAS2sD,GAAqB7J,EAA6B,CAChE,OAAO,KAAK,UAAUA,EAAQ,KAAM,CAAC,CACvC,CAEO,SAAS8J,GAAiBrgB,EAAqB,CAEpD,OADe,KAAK,MAAMA,CAAI,CAEhC,CAEO,SAASsgB,GAAuBtgB,EAA2B,CAEhE,OADe,KAAK,MAAMA,CAAI,CAEhC,CCXO,SAASugB,GACdtyD,EACAwF,EAC6B,CAC7B,MAAM+sD,EAAsC,CAAA,EAE5C,GAAI,CAACvyD,GAAS,OAAOA,GAAU,UAAY,MAAM,QAAQA,CAAK,EAC5D,OAAOuyD,EAGT,MAAMpO,EAASnkD,EAEf,SAAW,CAAClB,EAAKutB,CAAG,IAAK,OAAO,QAAQ83B,CAAM,EACxCrlD,IAAQ,SAEP0G,EAAM,YAAY1G,CAAG,GACxByzD,EAAO,KAAK,CACV,KAAMzzD,EACN,QAAS,uBAAuBA,CAAG,uBAAuB,OAAO,KAAK0G,EAAM,WAAW,EAAE,KAAK,IAAI,CAAC,EAAA,CACpG,EAGsB6mB,GAAQ,MAC/BkmC,EAAO,KAAK,CACV,KAAMzzD,EACN,QAAS,wBAAwBA,CAAG,wBAAA,CACrC,GAIL,OAAOyzD,CACT,CAEO,SAASC,GACd/9C,EACAjP,EAC6B,CAC7B,MAAM+sD,EAAsC,CAAA,EAE5C,SAAW,CAACzzD,EAAKkB,CAAK,IAAK,OAAO,QAAQyU,CAAK,EAAG,CAChD,GAAI,CAACzU,GAAS,OAAOA,GAAU,UAAY,MAAM,QAAQA,CAAK,EAAG,SAEjE,MAAMyyD,EAAmBH,GAAwBtyD,EAAOwF,CAAK,EAC7D,UAAWgX,KAASi2C,EAClBF,EAAO,KAAK,CACV,KAAM,GAAGzzD,CAAG,IAAI0d,EAAM,IAAI,GAC1B,QAASA,EAAM,OAAA,CAChB,CAEL,CAEA,OAAO+1C,CACT,CC/BA,SAASG,GAAcvO,EAAiCwO,EAA8B,CACpF,GAAIA,EAAO,QAAU,QAAaA,EAAO,QAAU,MAAQA,EAAO,QAAU,GAAI,MAAO,GACvF,MAAM3yD,EAAQmkD,EAAOwO,EAAO,KAAK,EACjC,OAAQA,EAAO,GAAA,CACb,IAAK,KACH,OAAO3yD,IAAU2yD,EAAO,MAC1B,IAAK,KACH,OAAO3yD,IAAU2yD,EAAO,MAC1B,IAAK,KACH,OAAO,MAAM,QAAQA,EAAO,KAAK,GAAKA,EAAO,MAAM,SAAS3yD,CAAK,EACnE,IAAK,KACH,OAAO,OAAOA,GAAU,UAAY,OAAO2yD,EAAO,OAAU,UAAY3yD,EAAQ2yD,EAAO,MACzF,IAAK,MACH,OAAO,OAAO3yD,GAAU,UAAY,OAAO2yD,EAAO,OAAU,UAAY3yD,GAAS2yD,EAAO,MAC1F,IAAK,KACH,OAAO,OAAO3yD,GAAU,UAAY,OAAO2yD,EAAO,OAAU,UAAY3yD,EAAQ2yD,EAAO,MACzF,IAAK,MACH,OAAO,OAAO3yD,GAAU,UAAY,OAAO2yD,EAAO,OAAU,UAAY3yD,GAAS2yD,EAAO,MAC1F,IAAK,OACH,OAAO,OAAO3yD,GAAU,UAAY,OAAO2yD,EAAO,OAAU,UAAY3yD,EAAM,YAAA,EAAc,SAAS2yD,EAAO,MAAM,aAAa,EACjI,IAAK,UAAW,CACd,GAAI,CAAC,MAAM,QAAQA,EAAO,KAAK,GAAKA,EAAO,MAAM,SAAW,EAAG,MAAO,GACtE,KAAM,CAACC,EAAIC,CAAE,EAAIF,EAAO,MAExB,OADI,OAAO3yD,GAAU,UAAY,OAAO4yD,GAAO,UAAY,OAAOC,GAAO,UACrE,OAAO7yD,GAAU,UAAY,OAAO4yD,GAAO,UAAY,OAAOC,GAAO,SAAiB7yD,GAAS4yD,GAAM5yD,GAAS6yD,EAC3G,EACT,CACA,QACE,MAAO,EAAA,CAEb,CAEA,SAASC,GAAcpqC,EAAYC,EAAoB,CACrD,OAAID,IAAMC,EAAU,EAChBD,GAAK,KAAa,GAClBC,GAAK,KAAa,EAClB,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAAiBD,EAAIC,EACxD,OAAOD,CAAC,EAAI,OAAOC,CAAC,EAAI,GAAK,CACtC,CAKO,MAAMoqC,EAAuC,CASlD,YAAYh/C,EAAkC,GAAI,CAR1Cq1C,GAAA,kBAAa,KACJA,GAAA,gBACAA,GAAA,mBACAA,GAAA,kBACAA,GAAA,oBACAA,GAAA,YACAA,GAAA,eAGf,KAAK,QAAUr1C,EAAQ,SAAW,OAClC,KAAK,WAAaA,EAAQ,YAAc,4BACxC,KAAK,UAAYA,EAAQ,WAAa,EACtC,KAAK,YAAcA,EAAQ,aAAe,EAC1C,KAAK,IAAMA,EAAQ,MAAQ,IAAM,KAAK,OACtC,KAAK,OAASA,EAAQ,SAAW,IAAM,KAAK,UAE5C,MAAMi/C,EAAS,KAAK,UAAY,eAAiB,KAAK,kBAAoB,OAC1E,GAAIA,EACF,SAAW,CAACC,EAAYC,CAAO,IAAK,OAAO,QAAQF,CAAM,EAAG,KAAK,OAAO,IAAIC,EAAYC,CAAO,UACtFn/C,EAAQ,KAAM,CACvB,SAAW,CAACk/C,EAAYzzC,CAAI,IAAK,OAAO,QAAQzL,EAAQ,IAAI,EAC1D,KAAK,OAAO,IACVk/C,EACAzzC,EAAK,IAAK0W,IAAU,CAAE,KAAM,CAAE,GAAGA,CAAA,EAAQ,QAAS,GAAI,CAAA,EAG1D,KAAK,cAAA,CACP,CACF,CAEA,MAAc,SAASi9B,EAAqC,CAC1D,GAAIA,GAAA,MAAAA,EAAQ,QAAS,MAAM,IAAI,aAAa,UAAW,YAAY,EAcnE,GAbI,KAAK,UAAY,GACnB,MAAM,IAAI,QAAc,CAACC,EAASC,IAAW,CAC3C,MAAM7sC,EAAQ,WAAW4sC,EAAS,KAAK,SAAS,EAChDD,GAAA,MAAAA,EAAQ,iBACN,QACA,IAAM,CACJ,aAAa3sC,CAAK,EAClB6sC,EAAO,IAAI,aAAa,UAAW,YAAY,CAAC,CAClD,EACA,CAAE,KAAM,EAAA,EAEZ,CAAC,EAECF,GAAA,MAAAA,EAAQ,QAAS,MAAM,IAAI,aAAa,UAAW,YAAY,EACnE,GAAI,KAAK,YAAc,GAAK,KAAK,OAAA,EAAW,KAAK,YAC/C,MAAM,IAAIjK,GAAU,kCAAmC,QAAQ,CAEnE,CAEQ,WAAW5oD,EAA8B,CAC/C,OAAO,KAAK,OAAO,IAAIA,CAAI,GAAK,CAAA,CAClC,CAEA,MAAM,MAAmCwpD,EAAcqJ,EAA+C,SACpG,MAAM,KAAK,SAASA,CAAM,EAE1B,IAAI3zC,EAAO,KAAK,WAAWsqC,EAAM,UAAU,EAAE,IAAK9mD,GAAMA,EAAE,IAAI,EAE9D,UAAW2vD,KAAU7I,EAAM,SAAW,CAAA,EAAItqC,EAAOA,EAAK,OAAQxc,GAAM0vD,GAAc1vD,EAAG2vD,CAAM,CAAC,EAE5F,GAAI7I,EAAM,OAAQ,CAChB,MAAMwJ,EAAIxJ,EAAM,OAAO,YAAA,EACvBtqC,EAAOA,EAAK,OAAQxc,GAAM,OAAO,OAAOA,CAAC,EAAE,KAAM0xB,GAAM,OAAOA,GAAM,UAAYA,EAAE,YAAA,EAAc,SAAS4+B,CAAC,CAAC,CAAC,CAC9G,CAEA,UAAWC,IAAQ,CAAC,GAAIzJ,EAAM,MAAQ,CAAA,CAAG,EAAE,UAAW,CACpD,MAAM0J,EAAMD,EAAK,MAAQ,OAAS,GAAK,EACvC/zC,EAAO,CAAC,GAAGA,CAAI,EAAE,KAAK,CAACkJ,EAAGC,IAAM6qC,EAAMV,GAAcpqC,EAAE6qC,EAAK,KAAK,EAAG5qC,EAAE4qC,EAAK,KAAK,CAAC,CAAC,CACnF,CAEA,MAAM/3C,EAAQgE,EAAK,OACbi0C,IAAa94C,EAAAmvC,EAAM,OAAN,YAAAnvC,EAAY,SAAU,EACnCkG,IAAWjG,EAAAkvC,EAAM,OAAN,YAAAlvC,EAAY,QAASY,GAAS,GAC/C,GAAIsuC,EAAM,KAAM,CACd,MAAMjuC,GAAS43C,EAAa,GAAK5yC,EACjCrB,EAAOA,EAAK,MAAM3D,EAAOA,EAAQgF,CAAQ,CAC3C,CAEA,GAAIipC,EAAM,QAAUA,EAAM,OAAO,OAAS,EAAG,CAC3C,MAAMX,EAASW,EAAM,OACrBtqC,EAAOA,EAAK,IAAKxc,GAAM,OAAO,YAAYmmD,EAAO,IAAKlmD,GAAM,CAACA,EAAGD,EAAEC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE,CAEA,MAAO,CAAE,KAAAuc,EAAmB,MAAAhE,EAAO,KAAMi4C,EAAY,SAAA5yC,CAAA,CACvD,CAEA,MAAM,IACJoyC,EACAz0C,EACA20C,EACsD,CACtD,MAAM,KAAK,SAASA,CAAM,EAC1B,MAAMO,EAAQ,KAAK,WAAWT,CAAU,EAAE,KAAMjwD,GAAMA,EAAE,KAAK,KAAOwb,CAAE,EACtE,GAAKk1C,EACL,MAAO,CAAE,OAAQ,CAAE,GAAGA,EAAM,IAAA,EAAa,KAAM,CAAE,QAASA,EAAM,QAAQ,CAC1E,CAEA,MAAM,OAAoCC,EAAoBR,EAAgE,OAC5H,MAAM,KAAK,SAASA,CAAM,EAC1B,MAAMS,EAAO,KAAK,OAAO,IAAID,EAAS,UAAU,GAAK,CAAA,EAC/Cn1C,IAAM7D,EAAAg5C,EAAS,OAAT,YAAAh5C,EAAe,KAA6B,KAAK,WAAWg5C,EAAS,UAAU,EAC3F,GAAIC,EAAK,KAAM5wD,GAAMA,EAAE,KAAK,KAAOwb,CAAE,EACnC,MAAM,IAAI0qC,GAAU,WAAW1qC,CAAE,wBAAwBm1C,EAAS,UAAU,IAAK,UAAU,EAE7F,MAAMxP,EAAuB,CAAE,KAAM,CAAE,GAAGwP,EAAS,KAAM,GAAAn1C,CAAA,EAAM,QAAS,CAAA,EACxE,OAAAo1C,EAAK,KAAKzP,CAAM,EAChB,KAAK,OAAO,IAAIwP,EAAS,WAAYC,CAAI,EACzC,KAAK,cAAA,EACE,CAAE,OAAQ,CAAE,GAAGzP,EAAO,IAAA,EAAa,KAAM,CAAE,QAASA,EAAO,QAAQ,CAC5E,CAEA,MAAM,OAAoCwP,EAAoBR,EAAgE,CAE5H,GADA,MAAM,KAAK,SAASA,CAAM,EACtB,CAACQ,EAAS,SAAU,IAAIzK,GAAU,wBAAyB,YAAY,EAC3E,MAAM0K,EAAO,KAAK,OAAO,IAAID,EAAS,UAAU,GAAK,CAAA,EAC/CtrD,EAAQurD,EAAK,UAAW5wD,GAAMA,EAAE,KAAK,KAAO2wD,EAAS,EAAE,EAC7D,GAAItrD,IAAU,GAAI,MAAM,IAAI6gD,GAAU,WAAWyK,EAAS,EAAE,mBAAmBA,EAAS,UAAU,IAAK,WAAW,EAClH,MAAM9mC,EAAW+mC,EAAKvrD,CAAK,EAC3B,GAAIsrD,EAAS,UAAY,QAAaA,EAAS,UAAY9mC,EAAS,QAClE,MAAM,IAAIq8B,GAAU,WAAWyK,EAAS,EAAE,kCAAmC,UAAU,EAEzF,MAAME,EAAwB,CAAE,KAAM,CAAE,GAAGhnC,EAAS,KAAM,GAAG8mC,EAAS,IAAA,EAAQ,QAAS9mC,EAAS,QAAU,CAAA,EAC1G,OAAA+mC,EAAKvrD,CAAK,EAAIwrD,EACd,KAAK,OAAO,IAAIF,EAAS,WAAYC,CAAI,EACzC,KAAK,cAAA,EACE,CAAE,OAAQ,CAAE,GAAGC,EAAQ,IAAA,EAAa,KAAM,CAAE,QAASA,EAAQ,QAAQ,CAC9E,CAEA,MAAM,OAAOZ,EAAoBz0C,EAAY20C,EAAqC,CAChF,MAAM,KAAK,SAASA,CAAM,EAC1B,MAAMS,EAAO,KAAK,OAAO,IAAIX,CAAU,GAAK,CAAA,EACtCa,EAAWF,EAAK,OAAQ5wD,GAAMA,EAAE,KAAK,KAAOwb,CAAE,EACpD,GAAIs1C,EAAS,SAAWF,EAAK,OAAQ,MAAM,IAAI1K,GAAU,WAAW1qC,CAAE,mBAAmBy0C,CAAU,IAAK,WAAW,EACnH,KAAK,OAAO,IAAIA,EAAYa,CAAQ,EACpC,KAAK,cAAA,CACP,CAEA,MAAM,WACJH,EACAR,EAC0C,CAM1C,OAAO,KAAK,OAAU,CAAE,GAAGQ,EAAU,KAAM,CAAE,GAAGA,EAAS,KAAM,OAAQA,EAAS,UAAA,CAAW,EAAKR,CAAM,CACxG,CAEA,MAAM,OAAoBY,EAAeh9B,EAAkCo8B,EAAkC,CAC3G,YAAM,KAAK,SAASA,CAAM,EACpB,IAAIjK,GAAU,yEAA0E,WAAW,CAC3G,CAGA,MAAM8K,EAA6D,CAEjE,GADA,KAAK,OAAO,MAAA,EACRA,EACF,SAAW,CAACf,EAAYzzC,CAAI,IAAK,OAAO,QAAQw0C,CAAI,EAClD,KAAK,OAAO,IACVf,EACAzzC,EAAK,IAAK0W,IAAU,CAAE,KAAM,CAAE,GAAGA,CAAA,EAAQ,QAAS,GAAI,CAAA,EAI5D,KAAK,cAAA,CACP,CAEQ,WAAW+8B,EAA4B,CAE7C,MAAO,GADQA,EAAW,MAAM,EAAG,CAAC,EAAE,YAAA,CACtB,IAAI,KAAK,MAAM,SAAS,EAAE,CAAC,IAAI,KAAK,MAAM,KAAK,OAAA,EAAW,GAAG,EAAE,SAAS,EAAE,CAAC,EAC7F,CAEQ,eAAsB,CAC5B,GAAI,OAAK,UAAY,gBAAkB,OAAO,OAAW,KACzD,GAAI,CACF,MAAM3oC,EAAsC,CAAA,EAC5C,SAAW,CAACroB,EAAGyyB,CAAC,IAAK,KAAK,OAAO,UAAWpK,EAAIroB,CAAC,EAAIyyB,EACrD,OAAO,aAAa,QAAQ,KAAK,WAAY,KAAK,UAAUpK,CAAG,CAAC,CAClE,MAAQ,CAER,CACF,CAEQ,iBAA8D,CACpE,GAAI,SAAO,OAAW,KACtB,GAAI,CACF,MAAMhL,EAAM,OAAO,aAAa,QAAQ,KAAK,UAAU,EACvD,OAAKA,EACU,KAAK,MAAMA,CAAG,EADnB,MAGZ,MAAQ,CACN,MACF,CACF,CACF,CAEO,SAAS20C,GAAsBlgD,EAAmD,CACvF,OAAO,IAAIg/C,GAAgBh/C,CAAO,CACpC,CC/PA,MAAMmgD,GAAoD,CACxD,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,WACL,IAAK,SACP,EAEO,MAAMC,EAAmC,CAM9C,YAAYpgD,EAA6B,CALxBq1C,GAAA,gBACAA,GAAA,kBACAA,GAAA,gBACAA,GAAA,kBAGf,KAAK,QAAUr1C,EAAQ,QAAQ,QAAQ,OAAQ,EAAE,EAGjD,KAAK,UAAYA,EAAQ,WAAa,MAAM,KAAK,UAAU,EAC3D,KAAK,QAAUA,EAAQ,QACvB,KAAK,UAAYA,EAAQ,WAAa,IACxC,CAEA,MAAM,MAAmC+1C,EAAcqJ,EAA+C,CACpG,OAAO,KAAK,QAAwB,SAAU,CAAE,OAAQ,OAAQ,KAAMrJ,CAAA,EAASqJ,CAAM,CACvF,CAEA,MAAM,IACJF,EACAz0C,EACA20C,EACsD,CACtD,OAAO,KAAK,QACV,YAAY,mBAAmBF,CAAU,CAAC,IAAI,mBAAmBz0C,CAAE,CAAC,GACpE,CAAE,OAAQ,MAAO,cAAe,EAAA,EAChC20C,CAAA,CAEJ,CAEA,MAAM,OAAoCQ,EAAoBR,EAAgE,CAC5H,OAAO,KAAK,QACV,YAAY,mBAAmBQ,EAAS,UAAU,CAAC,GACnD,CAAE,OAAQ,OAAQ,KAAMA,CAAA,EACxBR,CAAA,CAEJ,CAEA,MAAM,OAAoCQ,EAAoBR,EAAgE,CAC5H,GAAI,CAACQ,EAAS,SAAU,IAAIzK,GAAU,wBAAyB,YAAY,EAC3E,OAAO,KAAK,QACV,YAAY,mBAAmByK,EAAS,UAAU,CAAC,IAAI,mBAAmBA,EAAS,EAAE,CAAC,GACtF,CAAE,OAAQ,QAAS,KAAMA,CAAA,EACzBR,CAAA,CAEJ,CAEA,MAAM,OAAOF,EAAoBz0C,EAAY20C,EAAqC,CAChF,MAAM,KAAK,QAAc,YAAY,mBAAmBF,CAAU,CAAC,IAAI,mBAAmBz0C,CAAE,CAAC,GAAI,CAAE,OAAQ,QAAA,EAAY20C,CAAM,CAC/H,CAEA,MAAM,WACJQ,EACAR,EAC0C,CAC1C,GAAI,CAACQ,EAAS,SAAU,IAAIzK,GAAU,4BAA6B,YAAY,EAC/E,OAAO,KAAK,QACV,YAAY,mBAAmByK,EAAS,UAAU,CAAC,IAAI,mBAAmBA,EAAS,EAAE,CAAC,cACtF,CAAE,OAAQ,OAAQ,KAAMA,CAAA,EACxBR,CAAA,CAEJ,CAEA,MAAM,OAAoB7yD,EAAcszB,EAAiCu/B,EAAkC,CACzG,OAAO,KAAK,QAAW,YAAY,mBAAmB7yD,CAAI,CAAC,GAAI,CAAE,OAAQ,OAAQ,KAAM,CAAE,OAAAszB,CAAA,CAAO,EAAKu/B,CAAM,CAC7G,CAEA,MAAc,QACZ3sD,EACAuN,EACAo/C,EACY,CACZ,MAAMhH,EAAa,IAAI,gBACjBC,EAAU,WAAW,IAAMD,EAAW,MAAA,EAAS,KAAK,SAAS,EAC7DiI,EAAkB,IAAMjI,EAAW,MAAA,EACzCgH,GAAA,MAAAA,EAAQ,iBAAiB,QAASiB,EAAiB,CAAE,KAAM,KAE3D,GAAI,CACF,MAAMrI,EAAW,MAAM,KAAK,UAAU,GAAG,KAAK,OAAO,GAAGvlD,CAAI,GAAI,CAC9D,OAAQuN,EAAQ,OAChB,QAAS,CACP,OAAQ,mBACR,GAAIA,EAAQ,OAAS,OAAY,CAAA,EAAK,CAAE,eAAgB,kBAAA,EACxD,GAAG,KAAK,OAAA,EAEV,KAAMA,EAAQ,OAAS,OAAY,OAAY,KAAK,UAAUA,EAAQ,IAAI,EAC1E,OAAQo4C,EAAW,MAAA,CACpB,EAED,GAAIp4C,EAAQ,eAAiBg4C,EAAS,SAAW,IAAK,OACtD,GAAI,CAACA,EAAS,GAAI,MAAM,MAAMsI,GAAYtI,CAAQ,EAClD,OAAIA,EAAS,SAAW,IAAK,OACrB,MAAMA,EAAS,KAAA,CACzB,OAASvvC,EAAO,CACd,MAAIA,aAAiB0sC,GAAiB1sC,EAClCA,aAAiB,cAAgBA,EAAM,OAAS,aAC5C,IAAI0sC,GAAU,wCAAyCiK,GAAA,MAAAA,EAAQ,QAAU,UAAY,SAAS,EAEhG,IAAIjK,GAAU1sC,aAAiB,MAAQA,EAAM,QAAU,sBAAuB,SAAS,CAC/F,QAAA,CACE,aAAa4vC,CAAO,EACpB+G,GAAA,MAAAA,EAAQ,oBAAoB,QAASiB,EACvC,CACF,CACF,CAEA,eAAeC,GAAYtI,EAAwC,WACjE,IAAI3D,EACJ,GAAI,CACFA,EAAU,MAAM2D,EAAS,KAAA,CAC3B,MAAQ,CACN3D,EAAS,MACX,CACA,MAAM5/B,EAAO0rC,GAAenI,EAAS,MAAM,IAAMA,EAAS,QAAU,IAAM,SAAW,cACrF,OAAO,IAAI7C,KAAUvuC,EAAAytC,GAAA,YAAAA,EAAQ,QAAR,YAAAztC,EAAe,UAAW,QAAQoxC,EAAS,MAAM,MAAInxC,EAAAwtC,GAAA,YAAAA,EAAQ,QAAR,YAAAxtC,EAAe,QAAS4N,EAAOA,IAAagK,EAAA41B,GAAA,YAAAA,EAAQ,QAAR,YAAA51B,EAAe,MAAM,CAC7I,CAEO,SAAS8hC,GAAkBvgD,EAA0C,CAC1E,OAAO,IAAIogD,GAAYpgD,CAAO,CAChC,CC/IO,SAASwgD,GAAiBnkB,EAAuC,CACtE,MAAM9jB,MAAU,IAEhB,SAASkoC,EAASryD,EAAsB,CACtCmqB,EAAI,IAAInqB,EAAK,GAAIA,CAAI,EAErB,UAAW8hB,KAAS9hB,EAAK,UAAY,CAAA,EACnCqyD,EAASvwC,CAAK,EAGhB,UAAW0M,KAAa,OAAO,OAAOxuB,EAAK,OAAS,CAAA,CAAE,EACpD,UAAWyuB,KAAYD,EACrB6jC,EAAS5jC,CAAQ,CAGvB,CAEA,OAAA4jC,EAASpkB,CAAI,EACN9jB,CACT,CA0BO,SAASmoC,GAAaC,EAAgCC,EAAoC,CAC/F,SAAW,CAACn2C,EAAIrc,CAAI,IAAKuyD,EAAQ,UAAW,CAC1C,IAAKvyD,EAAK,UAAY,IAAI,KAAM8hB,GAAUA,EAAM,KAAO0wC,CAAM,EAC3D,OAAOn2C,EAET,GAAIrc,EAAK,OACP,UAAWwuB,KAAa,OAAO,OAAOxuB,EAAK,KAAK,EAC9C,GAAIwuB,EAAU,KAAM1M,GAAUA,EAAM,KAAO0wC,CAAM,EAC/C,OAAOn2C,EAIf,CAEF,CAEO,SAASo2C,GAAoB3kB,EAAkB0kB,EAA0B,OAC9E,IAAIh6C,EAAAs1B,EAAO,WAAP,MAAAt1B,EAAiB,KAAMsJ,GAAUA,EAAM,KAAO0wC,GAChD,MAAO,CACL,GAAG1kB,EACH,SAAUA,EAAO,SAAS,OAAQhsB,GAAUA,EAAM,KAAO0wC,CAAM,CAAA,EAInE,GAAI1kB,EAAO,OACT,SAAW,CAACvf,EAAUC,CAAS,IAAK,OAAO,QAAQsf,EAAO,KAAK,EAC7D,GAAItf,EAAU,KAAM1M,GAAUA,EAAM,KAAO0wC,CAAM,EAC/C,MAAO,CACL,GAAG1kB,EACH,MAAO,CACL,GAAGA,EAAO,MACV,CAACvf,CAAQ,EAAGC,EAAU,OAAQ1M,GAAUA,EAAM,KAAO0wC,CAAM,CAAA,CAC7D,EAMR,OAAO1kB,CACT,CChDO,SAAS4kB,GAAkBC,EAAgC,CAChE,MAAMC,EAAqBD,EAAkBP,GAAiBO,EAAgB,IAAI,MAAQ,IAE1F,OAAO3lC,GAAA,EAAsB,CAACG,EAAKC,KAAS,CAC1C,SAAUulC,GAAmBE,GAAA,EAC7B,YAAaD,EACb,QAAS,CAAE,KAAM,GAAI,OAAQ,CAAA,CAAC,EAC9B,eAAgB,KAChB,cAAe,KACf,iBAAkB,OAClB,UAAW,QACX,gBAAiB,CACf,QAAS,GACT,OAAQ,GACR,WAAY,GACZ,MAAO,EAAA,EAET,iBAAkB,CAAA,EAClB,QAAS,GACT,QAAS,GACT,QAAS,GAET,WAAaJ,GAAWrlC,EAAI,CAAE,eAAgBqlC,EAAQ,EAEtD,UAAYA,GAAWrlC,EAAI,CAAE,cAAeqlC,EAAQ,EAEpD,WAAY,CAACA,EAAQM,IAAY,CAC/B,KAAM,CAAE,YAAAC,EAAa,SAAAzI,EAAU,QAAA0I,CAAA,EAAY5lC,EAAA,EACrCptB,EAAO+yD,EAAY,IAAIP,CAAM,EACnC,GAAI,CAACxyD,EAAM,OAEX,MAAMizD,EAAc,CAAE,GAAGjzD,EAAM,GAAG8yD,CAAA,EAC5BI,EAAiB,IAAI,IAAIH,CAAW,EAC1CG,EAAe,IAAIV,EAAQS,CAAW,EAEtC,MAAME,EAAUC,GAAiB9I,EAAS,KAAMkI,EAAQS,CAAW,EAC7DI,EAAc,CAAE,GAAG/I,EAAU,KAAM6I,CAAA,EAEzChmC,EAAI,CACF,SAAUkmC,EACV,YAAaH,EACb,QAAS,CAAE,KAAM,CAAC,GAAGF,EAAQ,KAAM1I,CAAQ,EAAG,OAAQ,EAAC,EACvD,QAAS,GACT,QAAS,GACT,QAAS,EAAA,CACV,CACH,EAEA,SAAU,CAACgJ,EAAUC,EAAWC,IAAW,CACzC,KAAM,CAAE,YAAAT,EAAa,SAAAzI,EAAU,QAAA0I,CAAA,EAAY5lC,EAAA,EACrC0gB,EAASilB,EAAY,IAAIO,CAAQ,EACvC,GAAI,CAACxlB,EAAQ,OAEb,MAAM2lB,EAAqB,CACzB,GAAI,QAAQ,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,EAAG,CAAC,CAAC,GAChE,KAAMF,EACN,MAAO,CAAA,EACP,MAAO,CAAA,EACP,SAAU,CAAA,CAAC,EAGPL,EAAiB,IAAI,IAAIH,CAAW,EAC1CG,EAAe,IAAIO,EAAS,GAAIA,CAAQ,EAExC,MAAMC,EAAgB,CACpB,GAAG5lB,EACH,SAAU,CAAC,GAAIA,EAAO,UAAY,CAAA,EAAK2lB,CAAQ,CAAA,EAEjDP,EAAe,IAAII,EAAUI,CAAa,EAE1C,MAAMP,EAAUC,GAAiB9I,EAAS,KAAMgJ,EAAUI,CAAa,EACjEL,EAAc,CAAE,GAAG/I,EAAU,KAAM6I,CAAA,EAEzChmC,EAAI,CACF,SAAUkmC,EACV,YAAaH,EACb,eAAgBO,EAAS,GACzB,QAAS,CAAE,KAAM,CAAC,GAAGT,EAAQ,KAAM1I,CAAQ,EAAG,OAAQ,EAAC,EACvD,QAAS,GACT,QAAS,GACT,QAAS,EAAA,CACV,CACH,EAEA,WAAakI,GAAW,CACtB,KAAM,CAAE,YAAAO,EAAa,SAAAzI,EAAU,eAAAqJ,EAAgB,QAAAX,CAAA,EAAY5lC,EAAA,EAC3D,GAAIolC,IAAWlI,EAAS,KAAK,GAAI,OAEjC,MAAMgJ,EAAWhB,GAAaS,EAAaP,CAAM,EACjD,GAAI,CAACc,EAAU,OAEf,MAAMxlB,EAASilB,EAAY,IAAIO,CAAQ,EACvC,GAAI,CAACxlB,EAAQ,OAEb,MAAMolB,EAAiB,IAAI,IAAIH,CAAW,EAC1CG,EAAe,OAAOV,CAAM,EAE5B,MAAMkB,EAAgBjB,GAAoB3kB,EAAQ0kB,CAAM,EACxDU,EAAe,IAAII,EAAUI,CAAa,EAE1C,MAAMP,EAAUC,GAAiB9I,EAAS,KAAMgJ,EAAUI,CAAa,EACjEL,EAAc,CAAE,GAAG/I,EAAU,KAAM6I,CAAA,EAEzChmC,EAAI,CACF,SAAUkmC,EACV,YAAaH,EACb,eAAgBS,IAAmBnB,EAASc,EAAWK,EACvD,QAAS,CAAE,KAAM,CAAC,GAAGX,EAAQ,KAAM1I,CAAQ,EAAG,OAAQ,EAAC,EACvD,QAAS,GACT,QAAS,GACT,QAAS,EAAA,CACV,CACH,EAEA,SAAU,CAACkI,EAAQoB,EAAgBJ,IAAW,CAC5C,KAAM,CAAE,YAAAT,EAAa,SAAAzI,EAAU,QAAA0I,CAAA,EAAY5lC,EAAA,EACrCptB,EAAO+yD,EAAY,IAAIP,CAAM,EACnC,GAAI,CAACxyD,EAAM,OAEX,MAAM6zD,EAAkBvB,GAAaS,EAAaP,CAAM,EACxD,GAAI,CAACqB,EAAiB,OAEtB,MAAMC,EAAgBf,EAAY,IAAIc,CAAe,EAC/CE,EAAehB,EAAY,IAAIa,CAAc,EACnD,GAAI,CAACE,GAAiB,CAACC,EAAc,OAErC,MAAMb,EAAiB,IAAI,IAAIH,CAAW,EAEpCiB,EAAuBvB,GAAoBqB,EAAetB,CAAM,EACtEU,EAAe,IAAIW,EAAiBG,CAAoB,EAExD,MAAMC,EAAwBJ,IAAoBD,EAAiBI,EAAuBD,EACpFG,EAAiB,CAAC,GAAID,EAAsB,UAAY,CAAA,CAAG,EAC3DE,EAAcX,GAAUU,EAAe,OAC7CA,EAAe,OAAOC,EAAa,EAAGn0D,CAAI,EAC1C,MAAMo0D,EAAsB,CAC1B,GAAGH,EACH,SAAUC,CAAA,EAEZhB,EAAe,IAAIU,EAAgBQ,CAAmB,EAEtD,MAAMjB,EAAUkB,GAAuBnB,EAAgB5I,EAAS,KAAK,EAAE,EACjE+I,EAAc,CAAE,GAAG/I,EAAU,KAAM6I,CAAA,EAEzChmC,EAAI,CACF,SAAUkmC,EACV,YAAaH,EACb,QAAS,CAAE,KAAM,CAAC,GAAGF,EAAQ,KAAM1I,CAAQ,EAAG,OAAQ,EAAC,EACvD,QAAS,GACT,QAAS,GACT,QAAS,EAAA,CACV,CACH,EAEA,cAAgBrgC,GAAekD,EAAI,CAAE,iBAAkBlD,EAAY,EAEnE,aAAeqqC,GAASnnC,EAAI,CAAE,UAAWmnC,EAAM,EAE/C,YAAcC,GACZpnC,EAAK3B,IAAW,CACd,gBAAiB,CACf,GAAGA,EAAM,gBACT,CAAC+oC,CAAK,EAAG,CAAC/oC,EAAM,gBAAgB+oC,CAAK,CAAA,CACvC,EACA,EAEJ,YAAcjK,GAAa,CACzB,MAAMyI,EAAcX,GAAiB9H,EAAS,IAAI,EAClDn9B,EAAI,CACF,SAAAm9B,EACA,YAAAyI,EACA,QAAS,CAAE,KAAM,GAAI,OAAQ,CAAA,CAAC,EAC9B,QAAS,GACT,eAAgB,KAChB,QAAS,GACT,QAAS,EAAA,CACV,CACH,EAEA,oBAAsB3C,GAAWjjC,EAAI,CAAE,iBAAkBijC,EAAQ,EAEjE,UAAW,IAAMjjC,EAAI,CAAE,QAAS,GAAO,EAEvC,KAAM,IAAM,CACV,KAAM,CAAE,QAAA6lC,EAAS,SAAA1I,CAAA,EAAal9B,EAAA,EACxBonC,EAAWxB,EAAQ,KAAKA,EAAQ,KAAK,OAAS,CAAC,EACrD,GAAI,CAACwB,EAAU,OAEf,MAAMC,EAAUzB,EAAQ,KAAK,MAAM,EAAG,EAAE,EAClCE,EAAiBd,GAAiBoC,EAAS,IAAI,EAErDrnC,EAAI,CACF,SAAUqnC,EACV,YAAatB,EACb,QAAS,CAAE,KAAMuB,EAAS,OAAQ,CAACnK,EAAU,GAAG0I,EAAQ,MAAM,CAAA,EAC9D,eAAgB,KAChB,QAAS,GACT,QAASyB,EAAQ,OAAS,EAC1B,QAAS,EAAA,CACV,CACH,EAEA,KAAM,IAAM,CACV,KAAM,CAAE,QAAAzB,EAAS,SAAA1I,CAAA,EAAal9B,EAAA,EACxB,CAAC3oB,EAAM,GAAGiwD,CAAU,EAAI1B,EAAQ,OACtC,GAAI,CAACvuD,EAAM,OAEX,MAAMyuD,EAAiBd,GAAiB3tD,EAAK,IAAI,EAEjD0oB,EAAI,CACF,SAAU1oB,EACV,YAAayuD,EACb,QAAS,CAAE,KAAM,CAAC,GAAGF,EAAQ,KAAM1I,CAAQ,EAAG,OAAQoK,CAAA,EACtD,eAAgB,KAChB,QAAS,GACT,QAAS,GACT,QAASA,EAAW,OAAS,CAAA,CAC9B,CACH,CAAA,EACA,CACJ,CAEA,SAAS7B,IAAoC,CAC3C,MAAO,CACL,QAAS,QACT,GAAI,iBACJ,KAAM,WACN,KAAM,CACJ,GAAI,OACJ,KAAM,YACN,MAAO,CAAA,EACP,MAAO,CAAA,EACP,SAAU,CAAA,CAAC,CACb,CAEJ,CAEA,SAASO,GAAiBpzD,EAAgB20D,EAAkB1B,EAAiC,OAC3F,OAAIjzD,EAAK,KAAO20D,EACP1B,EAGF,CACL,GAAGjzD,EACH,UAAUwY,EAAAxY,EAAK,WAAL,YAAAwY,EAAe,IAAKsJ,GAAUsxC,GAAiBtxC,EAAO6yC,EAAU1B,CAAW,GACrF,MAAOjzD,EAAK,MACR,OAAO,YACL,OAAO,QAAQA,EAAK,KAAK,EAAE,IAAI,CAAC,CAACuuB,EAAUC,CAAS,IAAM,CACxDD,EACAC,EAAU,IAAKC,GAAa2kC,GAAiB3kC,EAAUkmC,EAAU1B,CAAW,CAAC,CAAA,CAC9E,CAAA,EAEH,MAAA,CAER,CAEA,SAASoB,GAAuBtB,EAAoC6B,EAA0B,CAC5F,MAAM3mB,EAAO8kB,EAAY,IAAI6B,CAAM,EACnC,GAAI,CAAC3mB,EAAM,MAAM,IAAI,MAAM,aAAa2mB,CAAM,YAAY,EAE1D,MAAO,CACL,GAAG3mB,EACH,UAAWA,EAAK,UAAY,CAAA,GAAI,IAAKnsB,GAAUuyC,GAAuBtB,EAAajxC,EAAM,EAAE,CAAC,EAC5F,MAAOmsB,EAAK,MACR,OAAO,YACL,OAAO,QAAQA,EAAK,KAAK,EAAE,IAAI,CAAC,CAAC1f,EAAUC,CAAS,IAAM,CACxDD,EACAC,EAAU,IAAKC,GAAa4lC,GAAuBtB,EAAatkC,EAAS,EAAE,CAAC,CAAA,CAC7E,CAAA,EAEH,MAAA,CAER,CClRA,MAAMomC,WAA4B10D,EAAM,SAA8D,CAAtG,kCACE8mD,GAAA,aAAkC,CAAE,MAAO,IAAA,GAE3C,OAAO,yBAAyB5sC,EAAwC,CACtE,MAAO,CAAE,MAAAA,CAAA,CACX,CAEA,kBAAkBA,EAAc,CAC9B,QAAQ,MAAM,6BAA8BA,CAAK,CACnD,CAEA,QAAS,CACP,OAAI,KAAK,MAAM,MAEXrC,EAAAA,KAAC,MAAA,CAAI,UAAU,mBAAmB,SAAA,CAAA,8BACJ,KAAK,MAAM,MAAM,OAAA,EAC/C,EAIG,KAAK,MAAM,QACpB,CACF,CAEO,SAAS88C,GAAO,CACrB,SAAAxK,EACA,aAAAyK,EACA,YAAAC,EACA,UAAAC,EAAY,QACZ,WAAA1K,EACA,YAAA7C,EACA,gBAAA4D,EACA,eAAAC,EACA,aAAAE,EACA,oBAAAC,EACA,sBAAAC,EACA,UAAAxpD,CACF,EAAgB,CACd,MAAMkB,EAAQuR,EAAAA,QAAQ,IAChBqgD,IAAc,OACT7F,GAEFH,GACN,CAACgG,CAAS,CAAC,EAERC,EAAoBC,EAAAA,YACvBryC,GAAwB,OAEvB,MAAM0vC,GAASh6C,EADAsK,EAAE,OACK,QAAQ,gBAAgB,IAA/B,YAAAtK,EAAkC,aAAa,gBAC9Du8C,EAAavC,GAAU,IAAI,CAC7B,EACA,CAACuC,CAAY,CAAA,EAGTK,EAAwBD,EAAAA,YAC3BryC,GAAwB,OAEvB,MAAM0vC,GAASh6C,EADAsK,EAAE,OACK,QAAQ,gBAAgB,IAA/B,YAAAtK,EAAkC,aAAa,gBAC9Dw8C,EAAYxC,GAAU,IAAI,CAC5B,EACA,CAACwC,CAAW,CAAA,EAGd,OACEtiD,EAAAA,IAAC,MAAA,CACC,UAAW,mDAAmDvQ,GAAa,EAAE,GAC7E,QAAS+yD,EACT,YAAaE,EAEb,SAAA1iD,EAAAA,IAAC,MAAA,CAAI,UAAU,oBACb,eAACmiD,GAAA,CACC,SAAAniD,EAAAA,IAAC04C,GAAA,CACC,SAAAd,EACA,MAAAjnD,EACA,WAAAknD,EACA,YAAA7C,EACA,gBAAA4D,EACA,eAAAC,EACA,aAAAE,EACA,oBAAAC,EACA,sBAAAC,CAAA,CAAA,GAVsBrB,EAAS,EAYnC,CAAA,CACF,CAAA,CAAA,CAGN,CCnHA,MAAM+K,GAAa,CACjB,CAAE,GAAI,SAAU,MAAO,QAAA,EACvB,CAAE,GAAI,OAAQ,MAAO,MAAA,EACrB,CAAE,GAAI,OAAQ,MAAO,MAAA,EACrB,CAAE,GAAI,OAAQ,MAAO,MAAA,EACrB,CAAE,GAAI,aAAc,MAAO,YAAA,EAC3B,CAAE,GAAI,WAAY,MAAO,UAAA,CAC3B,EAEO,SAASC,GAAc,CAC5B,eAAAC,EACA,eAAA5B,EACA,UAAAxxD,CACF,EAAuB,CACrB,MAAMwqD,EAAUhlC,GAAgB,KAAA,EAAO,OAAQF,GAAW,CAACA,EAAO,eAAe,EAE3E+tC,EAAUH,GAAW,OAAuC,CAAC5vC,EAAKwC,KACtExC,EAAIwC,EAAS,EAAE,EAAI0kC,EAAQ,OAAQllC,GAAWA,EAAO,WAAaQ,EAAS,EAAE,EACtExC,GACN,CAAA,CAAoC,EAEvC,cACG,MAAA,CAAI,UAAW,+CAA+CtjB,GAAa,EAAE,GAC5E,SAAA,CAAA6V,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,0CAA0C,SAAA,UAAO,EAC/DsF,EAAAA,KAAC,IAAA,CAAE,UAAU,mCACV,SAAA,CAAA20C,EAAQ,OAAO,uBAAA,CAAA,CAClB,CAAA,EACF,QACC,MAAA,CAAI,UAAU,6BACZ,SAAA0I,GAAW,IAAKptC,GAAa,CAC5B,MAAMwtC,EAAkBD,EAAQvtC,EAAS,EAAE,EAC3C,OAAIwtC,EAAgB,SAAW,EAAU,KAGvCz9C,EAAAA,KAAC,MAAA,CAAsB,UAAU,OAC/B,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,yEACX,SAAAuV,EAAS,MACZ,QACC,MAAA,CAAI,UAAU,yBACZ,SAAAwtC,EAAgB,IAAKhuC,GACpBzP,EAAAA,KAAC,SAAA,CAEC,QAAS,IAAMu9C,EAAe9tC,EAAO,IAAI,EACzC,SAAU,CAACksC,EACX,UAAU,8KACV,MAAOlsC,EAAO,KAEd,SAAA,CAAA/U,EAAAA,IAAC,MAAA,CAAI,UAAU,wCAAyC,SAAA+U,EAAO,KAAK,QACnE,MAAA,CAAI,UAAU,mCACZ,SAAAA,EAAO,gBAAkB,YAAc,MAAA,CAC1C,CAAA,CAAA,EATKA,EAAO,IAAA,CAWf,CAAA,CACH,CAAA,CAAA,EAnBQQ,EAAS,EAoBnB,CAEJ,CAAC,CAAA,CACH,CAAA,EACF,CAEJ,CCnEA,SAASytC,IAAkB,CACzB,QAASC,EAAO,UAAU,OAAQC,EAAO,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,CAAI,EAAI,UAAUA,CAAI,EAG7B,OAAOjhD,EAAAA,QAAQ,IAAM5U,GAAQ,CAC3B41D,EAAK,QAAQ5iD,GAAOA,EAAIhT,CAAI,CAAC,CAC/B,EACA41D,CAAI,CACN,CAGA,MAAME,GAAY,OAAO,OAAW,KAAe,OAAO,OAAO,SAAa,KAAe,OAAO,OAAO,SAAS,cAAkB,IAEtI,SAASC,GAASziD,EAAS,CACzB,MAAM0iD,EAAgB,OAAO,UAAU,SAAS,KAAK1iD,CAAO,EAC5D,OAAO0iD,IAAkB,mBACzBA,IAAkB,iBACpB,CAEA,SAASC,GAAOj2D,EAAM,CACpB,MAAO,aAAcA,CACvB,CAEA,SAASk2D,GAAUjxC,EAAQ,CACzB,IAAIkxC,EAAuBC,EAE3B,OAAKnxC,EAID8wC,GAAS9wC,CAAM,EACVA,EAGJgxC,GAAOhxC,CAAM,IAIVkxC,GAAyBC,EAAyBnxC,EAAO,gBAAkB,KAAO,OAASmxC,EAAuB,cAAgB,KAAOD,EAHxI,OARA,MAYX,CAEA,SAASE,GAAWr2D,EAAM,CACxB,KAAM,CACJ,SAAAs2D,CACJ,EAAMJ,GAAUl2D,CAAI,EAClB,OAAOA,aAAgBs2D,CACzB,CAEA,SAASC,GAAcv2D,EAAM,CAC3B,OAAI+1D,GAAS/1D,CAAI,EACR,GAGFA,aAAgBk2D,GAAUl2D,CAAI,EAAE,WACzC,CAEA,SAASw2D,GAAax2D,EAAM,CAC1B,OAAOA,aAAgBk2D,GAAUl2D,CAAI,EAAE,UACzC,CAEA,SAASy2D,GAAiBxxC,EAAQ,CAChC,OAAKA,EAID8wC,GAAS9wC,CAAM,EACVA,EAAO,SAGXgxC,GAAOhxC,CAAM,EAIdoxC,GAAWpxC,CAAM,EACZA,EAGLsxC,GAActxC,CAAM,GAAKuxC,GAAavxC,CAAM,EACvCA,EAAO,cAGT,SAXE,SARA,QAoBX,CAOA,MAAMyxC,GAA4BZ,GAAYa,EAAAA,gBAAkBtjD,EAAAA,UAEhE,SAASujD,GAASC,EAAS,CACzB,MAAMC,EAAa7jD,EAAAA,OAAO4jD,CAAO,EACjC,OAAAH,GAA0B,IAAM,CAC9BI,EAAW,QAAUD,CACvB,CAAC,EACM1B,EAAAA,YAAY,UAAY,CAC7B,QAASQ,EAAO,UAAU,OAAQtsD,EAAO,IAAI,MAAMssD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/ExsD,EAAKwsD,CAAI,EAAI,UAAUA,CAAI,EAG7B,OAAOiB,EAAW,SAAW,KAAO,OAASA,EAAW,QAAQ,GAAGztD,CAAI,CACzE,EAAG,CAAA,CAAE,CACP,CAEA,SAAS0tD,IAAc,CACrB,MAAMC,EAAc/jD,EAAAA,OAAO,IAAI,EACzBka,EAAMgoC,EAAAA,YAAY,CAAC/oC,EAAU5I,IAAa,CAC9CwzC,EAAY,QAAU,YAAY5qC,EAAU5I,CAAQ,CACtD,EAAG,CAAA,CAAE,EACCyzC,EAAQ9B,EAAAA,YAAY,IAAM,CAC1B6B,EAAY,UAAY,OAC1B,cAAcA,EAAY,OAAO,EACjCA,EAAY,QAAU,KAE1B,EAAG,CAAA,CAAE,EACL,MAAO,CAAC7pC,EAAK8pC,CAAK,CACpB,CAEA,SAASC,GAAer5D,EAAOs5D,EAAc,CACvCA,IAAiB,SACnBA,EAAe,CAACt5D,CAAK,GAGvB,MAAMu5D,EAAWnkD,EAAAA,OAAOpV,CAAK,EAC7B,OAAA64D,GAA0B,IAAM,CAC1BU,EAAS,UAAYv5D,IACvBu5D,EAAS,QAAUv5D,EAEvB,EAAGs5D,CAAY,EACRC,CACT,CAEA,SAASC,GAAYC,EAAUH,EAAc,CAC3C,MAAMC,EAAWnkD,EAAAA,OAAM,EACvB,OAAO2B,EAAAA,QAAQ,IAAM,CACnB,MAAM2iD,EAAWD,EAASF,EAAS,OAAO,EAC1C,OAAAA,EAAS,QAAUG,EACZA,CACT,EACA,CAAC,GAAGJ,CAAY,CAAC,CACnB,CAEA,SAASK,GAAWj6C,EAAU,CAC5B,MAAMk6C,EAAkBb,GAASr5C,CAAQ,EACnCvd,EAAOiT,EAAAA,OAAO,IAAI,EAClBykD,EAAavC,EAAAA,YAAY7hD,GAAW,CACpCA,IAAYtT,EAAK,UACnBy3D,GAAmB,MAAgBA,EAAgBnkD,EAAStT,EAAK,OAAO,GAG1EA,EAAK,QAAUsT,CACjB,EACA,EAAE,EACF,MAAO,CAACtT,EAAM03D,CAAU,CAC1B,CAEA,SAASC,GAAY95D,EAAO,CAC1B,MAAMmV,EAAMC,EAAAA,OAAM,EAClBI,OAAAA,EAAAA,UAAU,IAAM,CACdL,EAAI,QAAUnV,CAChB,EAAG,CAACA,CAAK,CAAC,EACHmV,EAAI,OACb,CAEA,IAAI2xB,GAAM,CAAA,EACV,SAASizB,GAAYjyD,EAAQ9H,EAAO,CAClC,OAAO+W,EAAAA,QAAQ,IAAM,CACnB,GAAI/W,EACF,OAAOA,EAGT,MAAMwe,EAAKsoB,GAAIh/B,CAAM,GAAK,KAAO,EAAIg/B,GAAIh/B,CAAM,EAAI,EACnD,OAAAg/B,GAAIh/B,CAAM,EAAI0W,EACP1W,EAAS,IAAM0W,CACxB,EAAG,CAAC1W,EAAQ9H,CAAK,CAAC,CACpB,CAEA,SAASg6D,GAAmBlxD,EAAU,CACpC,OAAO,SAAUzG,EAAQ,CACvB,QAASy1D,EAAO,UAAU,OAAQmC,EAAc,IAAI,MAAMnC,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IACzGiC,EAAYjC,EAAO,CAAC,EAAI,UAAUA,CAAI,EAGxC,OAAOiC,EAAY,OAAO,CAACC,EAAaC,IAAe,CACrD,MAAM5zD,EAAU,OAAO,QAAQ4zD,CAAU,EAEzC,SAAW,CAACr7D,EAAKs7D,CAAe,IAAK7zD,EAAS,CAC5C,MAAMvG,EAAQk6D,EAAYp7D,CAAG,EAEzBkB,GAAS,OACXk6D,EAAYp7D,CAAG,EAAIkB,EAAQ8I,EAAWsxD,EAE1C,CAEA,OAAOF,CACT,EAAG,CAAE,GAAG73D,CACZ,CAAK,CACH,CACF,CAEA,MAAMg4D,GAAmBL,GAAmB,CAAC,EACvCM,GAAwBN,GAAmB,EAAE,EAEnD,SAASO,GAA+Bz6C,EAAO,CAC7C,MAAO,YAAaA,GAAS,YAAaA,CAC5C,CAEA,SAAS06C,GAAgB16C,EAAO,CAC9B,GAAI,CAACA,EACH,MAAO,GAGT,KAAM,CACJ,cAAA26C,CACJ,EAAMpC,GAAUv4C,EAAM,MAAM,EAC1B,OAAO26C,GAAiB36C,aAAiB26C,CAC3C,CAEA,SAASC,GAAa56C,EAAO,CAC3B,GAAI,CAACA,EACH,MAAO,GAGT,KAAM,CACJ,WAAA66C,CACJ,EAAMtC,GAAUv4C,EAAM,MAAM,EAC1B,OAAO66C,GAAc76C,aAAiB66C,CACxC,CAMA,SAASC,GAAoB96C,EAAO,CAClC,GAAI46C,GAAa56C,CAAK,GACpB,GAAIA,EAAM,SAAWA,EAAM,QAAQ,OAAQ,CACzC,KAAM,CACJ,QAAS/H,EACT,QAASQ,CACjB,EAAUuH,EAAM,QAAQ,CAAC,EACnB,MAAO,CACL,EAAA/H,EACA,EAAAQ,CACR,CACI,SAAWuH,EAAM,gBAAkBA,EAAM,eAAe,OAAQ,CAC9D,KAAM,CACJ,QAAS/H,EACT,QAASQ,CACjB,EAAUuH,EAAM,eAAe,CAAC,EAC1B,MAAO,CACL,EAAA/H,EACA,EAAAQ,CACR,CACI,EAGF,OAAIgiD,GAA+Bz6C,CAAK,EAC/B,CACL,EAAGA,EAAM,QACT,EAAGA,EAAM,OACf,EAGS,IACT,CAEA,MAAM+6C,GAAmB,OAAO,OAAO,CACrC,UAAW,CACT,SAAS7f,EAAW,CAClB,GAAI,CAACA,EACH,OAGF,KAAM,CACJ,EAAAjjC,EACA,EAAAQ,CACR,EAAUyiC,EACJ,MAAO,gBAAkBjjC,EAAI,KAAK,MAAMA,CAAC,EAAI,GAAK,QAAUQ,EAAI,KAAK,MAAMA,CAAC,EAAI,GAAK,QACvF,CAEJ,EACE,MAAO,CACL,SAASyiC,EAAW,CAClB,GAAI,CAACA,EACH,OAGF,KAAM,CACJ,OAAA8f,EACA,OAAAC,CACR,EAAU/f,EACJ,MAAO,UAAY8f,EAAS,YAAcC,EAAS,GACrD,CAEJ,EACE,UAAW,CACT,SAAS/f,EAAW,CAClB,GAAKA,EAIL,MAAO,CAAC6f,GAAI,UAAU,SAAS7f,CAAS,EAAG6f,GAAI,MAAM,SAAS7f,CAAS,CAAC,EAAE,KAAK,GAAG,CACpF,CAEJ,EACE,WAAY,CACV,SAASggB,EAAM,CACb,GAAI,CACF,SAAAz1D,EACA,SAAAogB,EACA,OAAAs1C,CACR,EAAUD,EACJ,OAAOz1D,EAAW,IAAMogB,EAAW,MAAQs1C,CAC7C,CAEJ,CACA,CAAC,EAEKC,GAAW,yIACjB,SAASC,GAAuB1lD,EAAS,CACvC,OAAIA,EAAQ,QAAQylD,EAAQ,EACnBzlD,EAGFA,EAAQ,cAAcylD,EAAQ,CACvC,CCvUA,MAAME,GAAe,CACnB,QAAS,MACX,EACA,SAASC,GAAWL,EAAM,CACxB,GAAI,CACF,GAAAx8C,EACA,MAAAxe,CACJ,EAAMg7D,EACJ,OAAO14D,EAAM,cAAc,MAAO,CAChC,GAAIkc,EACJ,MAAO48C,EACX,EAAKp7D,CAAK,CACV,CAEA,SAASs7D,GAAWN,EAAM,CACxB,GAAI,CACF,GAAAx8C,EACA,aAAA+8C,EACA,aAAAC,EAAe,WACnB,EAAMR,EAEJ,MAAMS,EAAiB,CACrB,SAAU,QACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,OAAQ,GACR,OAAQ,EACR,QAAS,EACT,SAAU,SACV,KAAM,gBACN,SAAU,cACV,WAAY,QAChB,EACE,OAAOn5D,EAAM,cAAc,MAAO,CAChC,GAAIkc,EACJ,MAAOi9C,EACP,KAAM,SACN,YAAaD,EACb,cAAe,EACnB,EAAKD,CAAY,CACjB,CAEA,SAASG,IAAkB,CACzB,KAAM,CAACH,EAAcI,CAAe,EAAIpmD,EAAAA,SAAS,EAAE,EAMnD,MAAO,CACL,SANe+hD,EAAAA,YAAYt3D,GAAS,CAChCA,GAAS,MACX27D,EAAgB37D,CAAK,CAEzB,EAAG,CAAA,CAAE,EAGH,aAAAu7D,CACJ,CACA,CCpDA,MAAMK,GAAiCC,EAAAA,cAAc,IAAI,EAEzD,SAASC,GAAcvtC,EAAU,CAC/B,MAAMwtC,EAAmBC,EAAAA,WAAWJ,EAAiB,EACrDpmD,EAAAA,UAAU,IAAM,CACd,GAAI,CAACumD,EACH,MAAM,IAAI,MAAM,8DAA8D,EAIhF,OADoBA,EAAiBxtC,CAAQ,CAE/C,EAAG,CAACA,EAAUwtC,CAAgB,CAAC,CACjC,CAEA,SAASE,IAAwB,CAC/B,KAAM,CAAChuC,CAAS,EAAI1Y,EAAAA,SAAS,IAAM,IAAI,GAAK,EACtCwmD,EAAmBzE,EAAAA,YAAY/oC,IACnCN,EAAU,IAAIM,CAAQ,EACf,IAAMN,EAAU,OAAOM,CAAQ,GACrC,CAACN,CAAS,CAAC,EAYd,MAAO,CAXUqpC,EAAAA,YAAY0D,GAAQ,CACnC,GAAI,CACF,KAAAr8D,EACA,MAAAmhB,CACN,EAAQk7C,EACJ/sC,EAAU,QAAQM,GAAY,CAC5B,IAAI2tC,EAEJ,OAAQA,EAAiB3tC,EAAS5vB,CAAI,IAAM,KAAO,OAASu9D,EAAe,KAAK3tC,EAAUzO,CAAK,CACjG,CAAC,CACH,EAAG,CAACmO,CAAS,CAAC,EACI8tC,CAAgB,CACpC,CAEA,MAAMI,GAAkC,CACtC,UAAW;AAAA;AAAA;AAAA;AAAA,GACb,EACMC,GAAuB,CAC3B,YAAYpB,EAAM,CAChB,GAAI,CACF,OAAA31C,CACN,EAAQ21C,EACJ,MAAO,4BAA8B31C,EAAO,GAAK,GACnD,EAEA,WAAWg3C,EAAO,CAChB,GAAI,CACF,OAAAh3C,EACA,KAAAi3C,CACN,EAAQD,EAEJ,OAAIC,EACK,kBAAoBj3C,EAAO,GAAK,kCAAoCi3C,EAAK,GAAK,IAGhF,kBAAoBj3C,EAAO,GAAK,sCACzC,EAEA,UAAUk3C,EAAO,CACf,GAAI,CACF,OAAAl3C,EACA,KAAAi3C,CACN,EAAQC,EAEJ,OAAID,EACK,kBAAoBj3C,EAAO,GAAK,oCAAsCi3C,EAAK,GAG7E,kBAAoBj3C,EAAO,GAAK,eACzC,EAEA,aAAam3C,EAAO,CAClB,GAAI,CACF,OAAAn3C,CACN,EAAQm3C,EACJ,MAAO,0CAA4Cn3C,EAAO,GAAK,eACjE,CAEF,EAEA,SAASo3C,GAAczB,EAAM,CAC3B,GAAI,CACF,cAAA0B,EAAgBN,GAChB,UAAAt3C,EACA,wBAAA63C,EACA,yBAAAC,EAA2BT,EAC/B,EAAMnB,EACJ,KAAM,CACJ,SAAA6B,EACA,aAAAtB,CACJ,EAAMG,GAAe,EACboB,EAAe/C,GAAY,eAAe,EAC1C,CAAC/zC,EAASC,CAAU,EAAI1Q,EAAAA,SAAS,EAAK,EA+D5C,GA9DAC,EAAAA,UAAU,IAAM,CACdyQ,EAAW,EAAI,CACjB,EAAG,CAAA,CAAE,EACL61C,GAAc/kD,EAAAA,QAAQ,KAAO,CAC3B,YAAYslD,EAAO,CACjB,GAAI,CACF,OAAAh3C,CACR,EAAUg3C,EACJQ,EAASH,EAAc,YAAY,CACjC,OAAAr3C,CACR,CAAO,CAAC,CACJ,EAEA,WAAWk3C,EAAO,CAChB,GAAI,CACF,OAAAl3C,EACA,KAAAi3C,CACR,EAAUC,EAEAG,EAAc,YAChBG,EAASH,EAAc,WAAW,CAChC,OAAAr3C,EACA,KAAAi3C,CACV,CAAS,CAAC,CAEN,EAEA,WAAWE,EAAO,CAChB,GAAI,CACF,OAAAn3C,EACA,KAAAi3C,CACR,EAAUE,EACJK,EAASH,EAAc,WAAW,CAChC,OAAAr3C,EACA,KAAAi3C,CACR,CAAO,CAAC,CACJ,EAEA,UAAUS,EAAO,CACf,GAAI,CACF,OAAA13C,EACA,KAAAi3C,CACR,EAAUS,EACJF,EAASH,EAAc,UAAU,CAC/B,OAAAr3C,EACA,KAAAi3C,CACR,CAAO,CAAC,CACJ,EAEA,aAAaU,EAAO,CAClB,GAAI,CACF,OAAA33C,EACA,KAAAi3C,CACR,EAAUU,EACJH,EAASH,EAAc,aAAa,CAClC,OAAAr3C,EACA,KAAAi3C,CACR,CAAO,CAAC,CACJ,CAEJ,GAAM,CAACO,EAAUH,CAAa,CAAC,CAAC,EAE1B,CAAC12C,EACH,OAAO,KAGT,MAAMi3C,EAAS36D,EAAM,cAAcA,EAAM,SAAU,KAAMA,EAAM,cAAc+4D,GAAY,CACvF,GAAIsB,EACJ,MAAOC,EAAyB,SACpC,CAAG,EAAGt6D,EAAM,cAAcg5D,GAAY,CAClC,GAAIwB,EACJ,aAAcvB,CAClB,CAAG,CAAC,EACF,OAAOz2C,EAAYo4C,GAAAA,aAAaD,EAAQn4C,CAAS,EAAIm4C,CACvD,CAEA,IAAIE,IAEH,SAAUA,EAAQ,CACjBA,EAAO,UAAe,YACtBA,EAAO,SAAc,WACrBA,EAAO,QAAa,UACpBA,EAAO,WAAgB,aACvBA,EAAO,SAAc,WACrBA,EAAO,kBAAuB,oBAC9BA,EAAO,qBAA0B,uBACjCA,EAAO,oBAAyB,qBAClC,GAAGA,KAAWA,GAAS,CAAA,EAAG,EAE1B,SAASC,IAAO,CAAC,CAEjB,SAASC,GAAUC,EAAQvpD,EAAS,CAClC,OAAOgD,EAAAA,QAAQ,KAAO,CACpB,OAAAumD,EACA,QAASvpD,GAA4B,CAAA,CACzC,GACE,CAACupD,EAAQvpD,CAAO,CAAC,CACnB,CAEA,SAASwpD,IAAa,CACpB,QAASzF,EAAO,UAAU,OAAQ0F,EAAU,IAAI,MAAM1F,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAClFwF,EAAQxF,CAAI,EAAI,UAAUA,CAAI,EAGhC,OAAOjhD,EAAAA,QAAQ,IAAM,CAAC,GAAGymD,CAAO,EAAE,OAAOF,GAAUA,GAAU,IAAI,EACjE,CAAC,GAAGE,CAAO,CAAC,CACd,CAEA,MAAMC,GAAkC,OAAO,OAAO,CACpD,EAAG,EACH,EAAG,CACL,CAAC,EASD,SAASC,GAA2B59C,EAAO1F,EAAM,CAC/C,MAAMujD,EAAmB/C,GAAoB96C,CAAK,EAElD,GAAI,CAAC69C,EACH,MAAO,MAGT,MAAMC,EAAkB,CACtB,GAAID,EAAiB,EAAIvjD,EAAK,MAAQA,EAAK,MAAQ,IACnD,GAAIujD,EAAiB,EAAIvjD,EAAK,KAAOA,EAAK,OAAS,GACvD,EACE,OAAOwjD,EAAgB,EAAI,KAAOA,EAAgB,EAAI,GACxD,CAsBA,SAASC,GAAmBtB,EAAOC,EAAO,CACxC,GAAI,CACF,KAAM,CACJ,MAAO9zC,CACb,CACA,EAAM6zC,EACA,CACF,KAAM,CACJ,MAAO5zC,CACb,CACA,EAAM6zC,EACJ,OAAO7zC,EAAID,CACb,CA2BA,SAASo1C,GAAkBC,EAAYx4D,EAAU,CAC/C,GAAI,CAACw4D,GAAcA,EAAW,SAAW,EACvC,OAAO,KAGT,KAAM,CAACC,CAAc,EAAID,EACzB,OAAkBC,EAAez4D,CAAQ,CAC3C,CAmGA,SAAS04D,GAAqBtoD,EAAOyR,EAAQ,CAC3C,MAAM82C,EAAM,KAAK,IAAI92C,EAAO,IAAKzR,EAAM,GAAG,EACpCc,EAAO,KAAK,IAAI2Q,EAAO,KAAMzR,EAAM,IAAI,EACvCqa,EAAQ,KAAK,IAAI5I,EAAO,KAAOA,EAAO,MAAOzR,EAAM,KAAOA,EAAM,KAAK,EACrEe,EAAS,KAAK,IAAI0Q,EAAO,IAAMA,EAAO,OAAQzR,EAAM,IAAMA,EAAM,MAAM,EACtEN,EAAQ2a,EAAQvZ,EAChBqM,EAASpM,EAASwnD,EAExB,GAAIznD,EAAOuZ,GAASkuC,EAAMxnD,EAAQ,CAChC,MAAMynD,EAAa/2C,EAAO,MAAQA,EAAO,OACnCg3C,EAAYzoD,EAAM,MAAQA,EAAM,OAChC0oD,EAAmBhpD,EAAQyN,EAC3Bw7C,EAAoBD,GAAoBF,EAAaC,EAAYC,GACvE,OAAO,OAAOC,EAAkB,QAAQ,CAAC,CAAC,CAC5C,CAGA,MAAO,EACT,CAMA,MAAMC,GAAmBvD,GAAQ,CAC/B,GAAI,CACF,cAAAwD,EACA,eAAAC,EACA,oBAAAC,CACJ,EAAM1D,EACJ,MAAM+C,EAAa,CAAA,EAEnB,UAAWY,KAAsBD,EAAqB,CACpD,KAAM,CACJ,GAAAlgD,CACN,EAAQmgD,EACEvkD,EAAOqkD,EAAe,IAAIjgD,CAAE,EAElC,GAAIpE,EAAM,CACR,MAAMkkD,EAAoBL,GAAqB7jD,EAAMokD,CAAa,EAE9DF,EAAoB,GACtBP,EAAW,KAAK,CACd,GAAAv/C,EACA,KAAM,CACJ,mBAAAmgD,EACA,MAAOL,CACnB,CACA,CAAS,CAEL,CACF,CAEA,OAAOP,EAAW,KAAKF,EAAkB,CAC3C,EA+DA,SAASe,GAAY5jB,EAAW6jB,EAAOC,EAAO,CAC5C,MAAO,CAAE,GAAG9jB,EACV,OAAQ6jB,GAASC,EAAQD,EAAM,MAAQC,EAAM,MAAQ,EACrD,OAAQD,GAASC,EAAQD,EAAM,OAASC,EAAM,OAAS,CAC3D,CACA,CAEA,SAASC,GAAaF,EAAOC,EAAO,CAClC,OAAOD,GAASC,EAAQ,CACtB,EAAGD,EAAM,KAAOC,EAAM,KACtB,EAAGD,EAAM,IAAMC,EAAM,GACzB,EAAMrB,EACN,CAEA,SAASuB,GAAuBl2D,EAAU,CACxC,OAAO,SAA0BsR,EAAM,CACrC,QAAS09C,EAAO,UAAU,OAAQmC,EAAc,IAAI,MAAMnC,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IACzGiC,EAAYjC,EAAO,CAAC,EAAI,UAAUA,CAAI,EAGxC,OAAOiC,EAAY,OAAO,CAACryC,EAAKuyC,KAAgB,CAAE,GAAGvyC,EACnD,IAAKA,EAAI,IAAM9e,EAAWqxD,EAAW,EACrC,OAAQvyC,EAAI,OAAS9e,EAAWqxD,EAAW,EAC3C,KAAMvyC,EAAI,KAAO9e,EAAWqxD,EAAW,EACvC,MAAOvyC,EAAI,MAAQ9e,EAAWqxD,EAAW,CAC/C,GAAQ,CAAE,GAAG//C,CACb,CAAK,CACH,CACF,CACA,MAAM6kD,GAA+BD,GAAuB,CAAC,EAE7D,SAASE,GAAelkB,EAAW,CACjC,GAAIA,EAAU,WAAW,WAAW,EAAG,CACrC,MAAMmkB,EAAiBnkB,EAAU,MAAM,EAAG,EAAE,EAAE,MAAM,IAAI,EACxD,MAAO,CACL,EAAG,CAACmkB,EAAe,EAAE,EACrB,EAAG,CAACA,EAAe,EAAE,EACrB,OAAQ,CAACA,EAAe,CAAC,EACzB,OAAQ,CAACA,EAAe,CAAC,CAC/B,CACE,SAAWnkB,EAAU,WAAW,SAAS,EAAG,CAC1C,MAAMmkB,EAAiBnkB,EAAU,MAAM,EAAG,EAAE,EAAE,MAAM,IAAI,EACxD,MAAO,CACL,EAAG,CAACmkB,EAAe,CAAC,EACpB,EAAG,CAACA,EAAe,CAAC,EACpB,OAAQ,CAACA,EAAe,CAAC,EACzB,OAAQ,CAACA,EAAe,CAAC,CAC/B,CACE,CAEA,OAAO,IACT,CAEA,SAASC,GAAiBhlD,EAAM4gC,EAAW4iB,EAAiB,CAC1D,MAAMyB,EAAkBH,GAAelkB,CAAS,EAEhD,GAAI,CAACqkB,EACH,OAAOjlD,EAGT,KAAM,CACJ,OAAA0gD,EACA,OAAAC,EACA,EAAGuE,EACH,EAAGC,CACP,EAAMF,EACEtnD,EAAIqC,EAAK,KAAOklD,GAAc,EAAIxE,GAAU,WAAW8C,CAAe,EACtErlD,EAAI6B,EAAK,IAAMmlD,GAAc,EAAIxE,GAAU,WAAW6C,EAAgB,MAAMA,EAAgB,QAAQ,GAAG,EAAI,CAAC,CAAC,EAC7G7O,EAAI+L,EAAS1gD,EAAK,MAAQ0gD,EAAS1gD,EAAK,MACxColD,EAAIzE,EAAS3gD,EAAK,OAAS2gD,EAAS3gD,EAAK,OAC/C,MAAO,CACL,MAAO20C,EACP,OAAQyQ,EACR,IAAKjnD,EACL,MAAOR,EAAIg3C,EACX,OAAQx2C,EAAIinD,EACZ,KAAMznD,CACV,CACA,CAEA,MAAM0nD,GAAiB,CACrB,gBAAiB,EACnB,EAKA,SAASC,GAAcjqD,EAAS1B,EAAS,CACnCA,IAAY,SACdA,EAAU0rD,IAGZ,IAAIrlD,EAAO3E,EAAQ,sBAAqB,EAExC,GAAI1B,EAAQ,gBAAiB,CAC3B,KAAM,CACJ,UAAAinC,EACA,gBAAA4iB,CACN,EAAQvF,GAAU5iD,CAAO,EAAE,iBAAiBA,CAAO,EAE3CulC,IACF5gC,EAAOglD,GAAiBhlD,EAAM4gC,EAAW4iB,CAAe,EAE5D,CAEA,KAAM,CACJ,IAAAM,EACA,KAAAznD,EACA,MAAApB,EACA,OAAAyN,EACA,OAAApM,EACA,MAAAsZ,CACJ,EAAM5V,EACJ,MAAO,CACL,IAAA8jD,EACA,KAAAznD,EACA,MAAApB,EACA,OAAAyN,EACA,OAAApM,EACA,MAAAsZ,CACJ,CACA,CAUA,SAAS2vC,GAA+BlqD,EAAS,CAC/C,OAAOiqD,GAAcjqD,EAAS,CAC5B,gBAAiB,EACrB,CAAG,CACH,CAEA,SAASmqD,GAAoBnqD,EAAS,CACpC,MAAMJ,EAAQI,EAAQ,WAChBqN,EAASrN,EAAQ,YACvB,MAAO,CACL,IAAK,EACL,KAAM,EACN,MAAOJ,EACP,OAAQyN,EACR,MAAAzN,EACA,OAAAyN,CACJ,CACA,CAEA,SAAS+8C,GAAQ19D,EAAM29D,EAAe,CACpC,OAAIA,IAAkB,SACpBA,EAAgBzH,GAAUl2D,CAAI,EAAE,iBAAiBA,CAAI,GAGhD29D,EAAc,WAAa,OACpC,CAEA,SAASC,GAAatqD,EAASqqD,EAAe,CACxCA,IAAkB,SACpBA,EAAgBzH,GAAU5iD,CAAO,EAAE,iBAAiBA,CAAO,GAG7D,MAAMuqD,EAAgB,wBAEtB,MADmB,CAAC,WAAY,YAAa,WAAW,EACtC,KAAKz6D,GAAY,CACjC,MAAMvF,EAAQ8/D,EAAcv6D,CAAQ,EACpC,OAAO,OAAOvF,GAAU,SAAWggE,EAAc,KAAKhgE,CAAK,EAAI,EACjE,CAAC,CACH,CAEA,SAASigE,GAAuBxqD,EAASyqD,EAAO,CAC9C,MAAMC,EAAgB,CAAA,EAEtB,SAASC,EAAwBj+D,EAAM,CAKrC,GAJI+9D,GAAS,MAAQC,EAAc,QAAUD,GAIzC,CAAC/9D,EACH,OAAOg+D,EAGT,GAAI3H,GAAWr2D,CAAI,GAAKA,EAAK,kBAAoB,MAAQ,CAACg+D,EAAc,SAASh+D,EAAK,gBAAgB,EACpG,OAAAg+D,EAAc,KAAKh+D,EAAK,gBAAgB,EACjCg+D,EAOT,GAJI,CAACzH,GAAcv2D,CAAI,GAAKw2D,GAAax2D,CAAI,GAIzCg+D,EAAc,SAASh+D,CAAI,EAC7B,OAAOg+D,EAGT,MAAML,EAAgBzH,GAAU5iD,CAAO,EAAE,iBAAiBtT,CAAI,EAQ9D,OANIA,IAASsT,GACPsqD,GAAa59D,EAAM29D,CAAa,GAClCK,EAAc,KAAKh+D,CAAI,EAIvB09D,GAAQ19D,EAAM29D,CAAa,EACtBK,EAGFC,EAAwBj+D,EAAK,UAAU,CAChD,CAEA,OAAKsT,EAIE2qD,EAAwB3qD,CAAO,EAH7B0qD,CAIX,CACA,SAASE,GAA2Bl+D,EAAM,CACxC,KAAM,CAACm+D,CAAuB,EAAIL,GAAuB99D,EAAM,CAAC,EAChE,OAAOm+D,GAA4D,IACrE,CAEA,SAASC,GAAqB9qD,EAAS,CACrC,MAAI,CAACwiD,IAAa,CAACxiD,EACV,KAGLyiD,GAASziD,CAAO,EACXA,EAGJ2iD,GAAO3iD,CAAO,EAIf+iD,GAAW/iD,CAAO,GAAKA,IAAYmjD,GAAiBnjD,CAAO,EAAE,iBACxD,OAGLijD,GAAcjjD,CAAO,EAChBA,EAGF,KAXE,IAYX,CAEA,SAAS+qD,GAAqB/qD,EAAS,CACrC,OAAIyiD,GAASziD,CAAO,EACXA,EAAQ,QAGVA,EAAQ,UACjB,CACA,SAASgrD,GAAqBhrD,EAAS,CACrC,OAAIyiD,GAASziD,CAAO,EACXA,EAAQ,QAGVA,EAAQ,SACjB,CACA,SAASirD,GAAqBjrD,EAAS,CACrC,MAAO,CACL,EAAG+qD,GAAqB/qD,CAAO,EAC/B,EAAGgrD,GAAqBhrD,CAAO,CACnC,CACA,CAEA,IAAIkrD,IAEH,SAAUA,EAAW,CACpBA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,SAAc,EAAE,EAAI,UAC1C,GAAGA,KAAcA,GAAY,CAAA,EAAG,EAEhC,SAASC,GAA2BnrD,EAAS,CAC3C,MAAI,CAACwiD,IAAa,CAACxiD,EACV,GAGFA,IAAY,SAAS,gBAC9B,CAEA,SAASorD,GAAkBC,EAAoB,CAC7C,MAAMC,EAAY,CAChB,EAAG,EACH,EAAG,CACP,EACQC,EAAaJ,GAA2BE,CAAkB,EAAI,CAClE,OAAQ,OAAO,YACf,MAAO,OAAO,UAClB,EAAM,CACF,OAAQA,EAAmB,aAC3B,MAAOA,EAAmB,WAC9B,EACQG,EAAY,CAChB,EAAGH,EAAmB,YAAcE,EAAW,MAC/C,EAAGF,EAAmB,aAAeE,EAAW,MACpD,EACQE,EAAQJ,EAAmB,WAAaC,EAAU,EAClDI,EAASL,EAAmB,YAAcC,EAAU,EACpDK,EAAWN,EAAmB,WAAaG,EAAU,EACrDI,EAAUP,EAAmB,YAAcG,EAAU,EAC3D,MAAO,CACL,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAJ,EACA,UAAAF,CACJ,CACA,CAEA,MAAMO,GAAmB,CACvB,EAAG,GACH,EAAG,EACL,EACA,SAASC,GAA2BC,EAAiBC,EAAqBzG,EAAM0G,EAAcC,EAAqB,CACjH,GAAI,CACF,IAAAzD,EACA,KAAAznD,EACA,MAAAuZ,EACA,OAAAtZ,CACJ,EAAMskD,EAEA0G,IAAiB,SACnBA,EAAe,IAGbC,IAAwB,SAC1BA,EAAsBL,IAGxB,KAAM,CACJ,MAAAJ,EACA,SAAAE,EACA,OAAAD,EACA,QAAAE,CACJ,EAAMR,GAAkBW,CAAe,EAC/B/+C,EAAY,CAChB,EAAG,EACH,EAAG,CACP,EACQm/C,EAAQ,CACZ,EAAG,EACH,EAAG,CACP,EACQC,EAAY,CAChB,OAAQJ,EAAoB,OAASE,EAAoB,EACzD,MAAOF,EAAoB,MAAQE,EAAoB,CAC3D,EAEE,MAAI,CAACT,GAAShD,GAAOuD,EAAoB,IAAMI,EAAU,QAEvDp/C,EAAU,EAAIk+C,GAAU,SACxBiB,EAAM,EAAIF,EAAe,KAAK,KAAKD,EAAoB,IAAMI,EAAU,OAAS3D,GAAO2D,EAAU,MAAM,GAC9F,CAACT,GAAY1qD,GAAU+qD,EAAoB,OAASI,EAAU,SAEvEp/C,EAAU,EAAIk+C,GAAU,QACxBiB,EAAM,EAAIF,EAAe,KAAK,KAAKD,EAAoB,OAASI,EAAU,OAASnrD,GAAUmrD,EAAU,MAAM,GAG3G,CAACR,GAAWrxC,GAASyxC,EAAoB,MAAQI,EAAU,OAE7Dp/C,EAAU,EAAIk+C,GAAU,QACxBiB,EAAM,EAAIF,EAAe,KAAK,KAAKD,EAAoB,MAAQI,EAAU,MAAQ7xC,GAAS6xC,EAAU,KAAK,GAChG,CAACV,GAAU1qD,GAAQgrD,EAAoB,KAAOI,EAAU,QAEjEp/C,EAAU,EAAIk+C,GAAU,SACxBiB,EAAM,EAAIF,EAAe,KAAK,KAAKD,EAAoB,KAAOI,EAAU,MAAQprD,GAAQorD,EAAU,KAAK,GAGlG,CACL,UAAAp/C,EACA,MAAAm/C,CACJ,CACA,CAEA,SAASE,GAAqBrsD,EAAS,CACrC,GAAIA,IAAY,SAAS,iBAAkB,CACzC,KAAM,CACJ,WAAAssD,EACA,YAAAC,CACN,EAAQ,OACJ,MAAO,CACL,IAAK,EACL,KAAM,EACN,MAAOD,EACP,OAAQC,EACR,MAAOD,EACP,OAAQC,CACd,CACE,CAEA,KAAM,CACJ,IAAA9D,EACA,KAAAznD,EACA,MAAAuZ,EACA,OAAAtZ,CACJ,EAAMjB,EAAQ,sBAAqB,EACjC,MAAO,CACL,IAAAyoD,EACA,KAAAznD,EACA,MAAAuZ,EACA,OAAAtZ,EACA,MAAOjB,EAAQ,YACf,OAAQA,EAAQ,YACpB,CACA,CAEA,SAASwsD,GAAiBC,EAAqB,CAC7C,OAAOA,EAAoB,OAAO,CAACt6C,EAAKzlB,IAC/Bk4D,GAAIzyC,EAAK84C,GAAqBv+D,CAAI,CAAC,EACzCs7D,EAAkB,CACvB,CACA,SAAS0E,GAAiBD,EAAqB,CAC7C,OAAOA,EAAoB,OAAO,CAACt6C,EAAKzlB,IAC/BylB,EAAM44C,GAAqBr+D,CAAI,EACrC,CAAC,CACN,CACA,SAASigE,GAAiBF,EAAqB,CAC7C,OAAOA,EAAoB,OAAO,CAACt6C,EAAKzlB,IAC/BylB,EAAM64C,GAAqBt+D,CAAI,EACrC,CAAC,CACN,CAEA,SAASkgE,GAAuB5sD,EAAS6sD,EAAS,CAKhD,GAJIA,IAAY,SACdA,EAAU5C,IAGR,CAACjqD,EACH,OAGF,KAAM,CACJ,IAAAyoD,EACA,KAAAznD,EACA,OAAAC,EACA,MAAAsZ,CACJ,EAAMsyC,EAAQ7sD,CAAO,EACa4qD,GAA2B5qD,CAAO,IAM9DiB,GAAU,GAAKsZ,GAAS,GAAKkuC,GAAO,OAAO,aAAeznD,GAAQ,OAAO,aAC3EhB,EAAQ,eAAe,CACrB,MAAO,SACP,OAAQ,QACd,CAAK,CAEL,CAEA,MAAM8sD,GAAa,CAAC,CAAC,IAAK,CAAC,OAAQ,OAAO,EAAGJ,EAAgB,EAAG,CAAC,IAAK,CAAC,MAAO,QAAQ,EAAGC,EAAgB,CAAC,EAC1G,MAAMI,EAAK,CACT,YAAYpoD,EAAM3E,EAAS,CACzB,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,KAAO,OACZ,MAAMysD,EAAsBjC,GAAuBxqD,CAAO,EACpDgtD,EAAgBR,GAAiBC,CAAmB,EAC1D,KAAK,KAAO,CAAE,GAAG9nD,CACrB,EACI,KAAK,MAAQA,EAAK,MAClB,KAAK,OAASA,EAAK,OAEnB,SAAW,CAACsoD,EAAM1gE,EAAM2gE,CAAe,IAAKJ,GAC1C,UAAWzjE,KAAOkD,EAChB,OAAO,eAAe,KAAMlD,EAAK,CAC/B,IAAK,IAAM,CACT,MAAM8jE,EAAiBD,EAAgBT,CAAmB,EACpDW,EAAsBJ,EAAcC,CAAI,EAAIE,EAClD,OAAO,KAAK,KAAK9jE,CAAG,EAAI+jE,CAC1B,EACA,WAAY,EACtB,CAAS,EAIL,OAAO,eAAe,KAAM,OAAQ,CAClC,WAAY,EAClB,CAAK,CACH,CAEF,CAEA,MAAMC,EAAU,CACd,YAAY17C,EAAQ,CAClB,KAAK,OAAS,OACd,KAAK,UAAY,CAAA,EAEjB,KAAK,UAAY,IAAM,CACrB,KAAK,UAAU,QAAQmH,GAAY,CACjC,IAAIw0C,EAEJ,OAAQA,EAAe,KAAK,SAAW,KAAO,OAASA,EAAa,oBAAoB,GAAGx0C,CAAQ,CACrG,CAAC,CACH,EAEA,KAAK,OAASnH,CAChB,CAEA,IAAI47C,EAAWhK,EAASjlD,EAAS,CAC/B,IAAIkvD,GAEHA,EAAgB,KAAK,SAAW,MAAgBA,EAAc,iBAAiBD,EAAWhK,EAASjlD,CAAO,EAC3G,KAAK,UAAU,KAAK,CAACivD,EAAWhK,EAASjlD,CAAO,CAAC,CACnD,CAEF,CAEA,SAASmvD,GAAuB97C,EAAQ,CAMtC,KAAM,CACJ,YAAA+7C,CACJ,EAAM9K,GAAUjxC,CAAM,EACpB,OAAOA,aAAkB+7C,EAAc/7C,EAASwxC,GAAiBxxC,CAAM,CACzE,CAEA,SAASg8C,GAAoBC,EAAOC,EAAa,CAC/C,MAAMC,EAAK,KAAK,IAAIF,EAAM,CAAC,EACrBG,EAAK,KAAK,IAAIH,EAAM,CAAC,EAE3B,OAAI,OAAOC,GAAgB,SAClB,KAAK,KAAKC,GAAM,EAAIC,GAAM,CAAC,EAAIF,EAGpC,MAAOA,GAAe,MAAOA,EACxBC,EAAKD,EAAY,GAAKE,EAAKF,EAAY,EAG5C,MAAOA,EACFC,EAAKD,EAAY,EAGtB,MAAOA,EACFE,EAAKF,EAAY,EAGnB,EACT,CAEA,IAAIG,IAEH,SAAUA,EAAW,CACpBA,EAAU,MAAW,QACrBA,EAAU,UAAe,YACzBA,EAAU,QAAa,UACvBA,EAAU,YAAiB,cAC3BA,EAAU,OAAY,SACtBA,EAAU,gBAAqB,kBAC/BA,EAAU,iBAAsB,kBAClC,GAAGA,KAAcA,GAAY,CAAA,EAAG,EAEhC,SAASC,GAAe5jD,EAAO,CAC7BA,EAAM,eAAc,CACtB,CACA,SAAS6jD,GAAgB7jD,EAAO,CAC9BA,EAAM,gBAAe,CACvB,CAEA,IAAI8jD,IAEH,SAAUA,EAAc,CACvBA,EAAa,MAAW,QACxBA,EAAa,KAAU,YACvBA,EAAa,MAAW,aACxBA,EAAa,KAAU,YACvBA,EAAa,GAAQ,UACrBA,EAAa,IAAS,SACtBA,EAAa,MAAW,QACxBA,EAAa,IAAS,KACxB,GAAGA,KAAiBA,GAAe,CAAA,EAAG,EAEtC,MAAMC,GAAuB,CAC3B,MAAO,CAACD,GAAa,MAAOA,GAAa,KAAK,EAC9C,OAAQ,CAACA,GAAa,GAAG,EACzB,IAAK,CAACA,GAAa,MAAOA,GAAa,MAAOA,GAAa,GAAG,CAChE,EACME,GAAkC,CAAChkD,EAAOk7C,IAAS,CACvD,GAAI,CACF,mBAAA+I,CACJ,EAAM/I,EAEJ,OAAQl7C,EAAM,KAAI,CAChB,KAAK8jD,GAAa,MAChB,MAAO,CAAE,GAAGG,EACV,EAAGA,EAAmB,EAAI,EAClC,EAEI,KAAKH,GAAa,KAChB,MAAO,CAAE,GAAGG,EACV,EAAGA,EAAmB,EAAI,EAClC,EAEI,KAAKH,GAAa,KAChB,MAAO,CAAE,GAAGG,EACV,EAAGA,EAAmB,EAAI,EAClC,EAEI,KAAKH,GAAa,GAChB,MAAO,CAAE,GAAGG,EACV,EAAGA,EAAmB,EAAI,EAClC,CACA,CAGA,EAEA,MAAMC,EAAe,CACnB,YAAYjjE,EAAO,CACjB,KAAK,MAAQ,OACb,KAAK,kBAAoB,GACzB,KAAK,qBAAuB,OAC5B,KAAK,UAAY,OACjB,KAAK,gBAAkB,OACvB,KAAK,MAAQA,EACb,KAAM,CACJ,MAAO,CACL,OAAAqmB,CACR,CACA,EAAQrmB,EACJ,KAAK,MAAQA,EACb,KAAK,UAAY,IAAI+hE,GAAUlK,GAAiBxxC,CAAM,CAAC,EACvD,KAAK,gBAAkB,IAAI07C,GAAUzK,GAAUjxC,CAAM,CAAC,EACtD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,OAAM,CACb,CAEA,QAAS,CACP,KAAK,YAAW,EAChB,KAAK,gBAAgB,IAAIq8C,GAAU,OAAQ,KAAK,YAAY,EAC5D,KAAK,gBAAgB,IAAIA,GAAU,iBAAkB,KAAK,YAAY,EACtE,WAAW,IAAM,KAAK,UAAU,IAAIA,GAAU,QAAS,KAAK,aAAa,CAAC,CAC5E,CAEA,aAAc,CACZ,KAAM,CACJ,WAAAQ,EACA,QAAAC,CACN,EAAQ,KAAK,MACH/hE,EAAO8hE,EAAW,KAAK,QAEzB9hE,GACFkgE,GAAuBlgE,CAAI,EAG7B+hE,EAAQzG,EAAkB,CAC5B,CAEA,cAAc39C,EAAO,CACnB,GAAI06C,GAAgB16C,CAAK,EAAG,CAC1B,KAAM,CACJ,OAAAuF,EACA,QAAAmmC,EACA,QAAAz3C,CACR,EAAU,KAAK,MACH,CACJ,cAAAowD,EAAgBN,GAChB,iBAAAO,EAAmBN,GACnB,eAAAO,EAAiB,QACzB,EAAUtwD,EACE,CACJ,KAAAyU,CACR,EAAU1I,EAEJ,GAAIqkD,EAAc,IAAI,SAAS37C,CAAI,EAAG,CACpC,KAAK,UAAU1I,CAAK,EACpB,MACF,CAEA,GAAIqkD,EAAc,OAAO,SAAS37C,CAAI,EAAG,CACvC,KAAK,aAAa1I,CAAK,EACvB,MACF,CAEA,KAAM,CACJ,cAAA0+C,CACR,EAAUhT,EAAQ,QACNuY,EAAqBvF,EAAgB,CACzC,EAAGA,EAAc,KACjB,EAAGA,EAAc,GACzB,EAAUf,GAEC,KAAK,uBACR,KAAK,qBAAuBsG,GAG9B,MAAMO,EAAiBF,EAAiBtkD,EAAO,CAC7C,OAAAuF,EACA,QAASmmC,EAAQ,QACjB,mBAAAuY,CACR,CAAO,EAED,GAAIO,EAAgB,CAClB,MAAMC,EAAmBjK,GAASgK,EAAgBP,CAAkB,EAC9DS,EAAc,CAClB,EAAG,EACH,EAAG,CACb,EACc,CACJ,oBAAAtC,CACV,EAAY1W,EAAQ,QAEZ,UAAWgW,KAAmBU,EAAqB,CACjD,MAAMz/C,EAAY3C,EAAM,KAClB,CACJ,MAAAohD,EACA,QAAAG,EACA,OAAAF,EACA,SAAAC,EACA,UAAAH,EACA,UAAAF,CACZ,EAAcF,GAAkBW,CAAe,EAC/BiD,EAAoB3C,GAAqBN,CAAe,EACxDkD,EAAqB,CACzB,EAAG,KAAK,IAAIjiD,IAAcmhD,GAAa,MAAQa,EAAkB,MAAQA,EAAkB,MAAQ,EAAIA,EAAkB,MAAO,KAAK,IAAIhiD,IAAcmhD,GAAa,MAAQa,EAAkB,KAAOA,EAAkB,KAAOA,EAAkB,MAAQ,EAAGH,EAAe,CAAC,CAAC,EAC5Q,EAAG,KAAK,IAAI7hD,IAAcmhD,GAAa,KAAOa,EAAkB,OAASA,EAAkB,OAAS,EAAIA,EAAkB,OAAQ,KAAK,IAAIhiD,IAAcmhD,GAAa,KAAOa,EAAkB,IAAMA,EAAkB,IAAMA,EAAkB,OAAS,EAAGH,EAAe,CAAC,CAAC,CACxR,EACgBK,EAAaliD,IAAcmhD,GAAa,OAAS,CAACvC,GAAW5+C,IAAcmhD,GAAa,MAAQ,CAACzC,EACjGyD,EAAaniD,IAAcmhD,GAAa,MAAQ,CAACxC,GAAY3+C,IAAcmhD,GAAa,IAAM,CAAC1C,EAErG,GAAIyD,GAAcD,EAAmB,IAAMJ,EAAe,EAAG,CAC3D,MAAMO,EAAuBrD,EAAgB,WAAa+C,EAAiB,EACrEO,EAA4BriD,IAAcmhD,GAAa,OAASiB,GAAwB5D,EAAU,GAAKx+C,IAAcmhD,GAAa,MAAQiB,GAAwB9D,EAAU,EAElL,GAAI+D,GAA6B,CAACP,EAAiB,EAAG,CAGpD/C,EAAgB,SAAS,CACvB,KAAMqD,EACN,SAAUR,CAC1B,CAAe,EACD,MACF,CAEIS,EACFN,EAAY,EAAIhD,EAAgB,WAAaqD,EAE7CL,EAAY,EAAI/hD,IAAcmhD,GAAa,MAAQpC,EAAgB,WAAaP,EAAU,EAAIO,EAAgB,WAAaT,EAAU,EAGnIyD,EAAY,GACdhD,EAAgB,SAAS,CACvB,KAAM,CAACgD,EAAY,EACnB,SAAUH,CAC1B,CAAe,EAGH,KACF,SAAWO,GAAcF,EAAmB,IAAMJ,EAAe,EAAG,CAClE,MAAMO,EAAuBrD,EAAgB,UAAY+C,EAAiB,EACpEO,EAA4BriD,IAAcmhD,GAAa,MAAQiB,GAAwB5D,EAAU,GAAKx+C,IAAcmhD,GAAa,IAAMiB,GAAwB9D,EAAU,EAE/K,GAAI+D,GAA6B,CAACP,EAAiB,EAAG,CAGpD/C,EAAgB,SAAS,CACvB,IAAKqD,EACL,SAAUR,CAC1B,CAAe,EACD,MACF,CAEIS,EACFN,EAAY,EAAIhD,EAAgB,UAAYqD,EAE5CL,EAAY,EAAI/hD,IAAcmhD,GAAa,KAAOpC,EAAgB,UAAYP,EAAU,EAAIO,EAAgB,UAAYT,EAAU,EAGhIyD,EAAY,GACdhD,EAAgB,SAAS,CACvB,IAAK,CAACgD,EAAY,EAClB,SAAUH,CAC1B,CAAe,EAGH,KACF,CACF,CAEA,KAAK,WAAWvkD,EAAOu6C,GAAIC,GAASgK,EAAgB,KAAK,oBAAoB,EAAGE,CAAW,CAAC,CAC9F,CACF,CACF,CAEA,WAAW1kD,EAAOilD,EAAa,CAC7B,KAAM,CACJ,OAAAC,CACN,EAAQ,KAAK,MACTllD,EAAM,eAAc,EACpBklD,EAAOD,CAAW,CACpB,CAEA,UAAUjlD,EAAO,CACf,KAAM,CACJ,MAAAmlD,CACN,EAAQ,KAAK,MACTnlD,EAAM,eAAc,EACpB,KAAK,OAAM,EACXmlD,EAAK,CACP,CAEA,aAAanlD,EAAO,CAClB,KAAM,CACJ,SAAAolD,CACN,EAAQ,KAAK,MACTplD,EAAM,eAAc,EACpB,KAAK,OAAM,EACXolD,EAAQ,CACV,CAEA,QAAS,CACP,KAAK,UAAU,UAAS,EACxB,KAAK,gBAAgB,UAAS,CAChC,CAEF,CACAlB,GAAe,WAAa,CAAC,CAC3B,UAAW,YACX,QAAS,CAAClkD,EAAOk7C,EAAMqB,IAAU,CAC/B,GAAI,CACF,cAAA8H,EAAgBN,GAChB,aAAAsB,CACN,EAAQnK,EACA,CACF,OAAA31C,CACN,EAAQg3C,EACJ,KAAM,CACJ,KAAA7zC,CACN,EAAQ1I,EAAM,YAEV,GAAIqkD,EAAc,MAAM,SAAS37C,CAAI,EAAG,CACtC,MAAM48C,EAAY//C,EAAO,cAAc,QAEvC,OAAI+/C,GAAatlD,EAAM,SAAWslD,EACzB,IAGTtlD,EAAM,eAAc,EACpBqlD,GAAgB,MAAgBA,EAAa,CAC3C,MAAOrlD,EAAM,WACrB,CAAO,EACM,GACT,CAEA,MAAO,EACT,CACF,CAAC,EAED,SAASulD,GAAqBC,EAAY,CACxC,MAAO,GAAQA,GAAc,aAAcA,EAC7C,CAEA,SAASC,GAAkBD,EAAY,CACrC,MAAO,GAAQA,GAAc,UAAWA,EAC1C,CAEA,MAAME,EAAsB,CAC1B,YAAYzkE,EAAOkyB,EAAQwyC,EAAgB,CACzC,IAAIC,EAEAD,IAAmB,SACrBA,EAAiBvC,GAAuBniE,EAAM,MAAM,MAAM,GAG5D,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,kBAAoB,GACzB,KAAK,SAAW,OAChB,KAAK,UAAY,GACjB,KAAK,mBAAqB,OAC1B,KAAK,UAAY,KACjB,KAAK,UAAY,OACjB,KAAK,kBAAoB,OACzB,KAAK,gBAAkB,OACvB,KAAK,MAAQA,EACb,KAAK,OAASkyB,EACd,KAAM,CACJ,MAAAnT,CACN,EAAQ/e,EACE,CACJ,OAAAqmB,CACN,EAAQtH,EACJ,KAAK,MAAQ/e,EACb,KAAK,OAASkyB,EACd,KAAK,SAAW2lC,GAAiBxxC,CAAM,EACvC,KAAK,kBAAoB,IAAI07C,GAAU,KAAK,QAAQ,EACpD,KAAK,UAAY,IAAIA,GAAU2C,CAAc,EAC7C,KAAK,gBAAkB,IAAI3C,GAAUzK,GAAUjxC,CAAM,CAAC,EACtD,KAAK,oBAAsBs+C,EAAuB9K,GAAoB96C,CAAK,IAAM,KAAO4lD,EAAuBjI,GAC/G,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,EACzC,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,OAAM,CACb,CAEA,QAAS,CACP,KAAM,CACJ,OAAAxqC,EACA,MAAO,CACL,QAAS,CACP,qBAAA0yC,EACA,2BAAAC,CACV,CACA,CACA,EAAQ,KAgBJ,GAfA,KAAK,UAAU,IAAI3yC,EAAO,KAAK,KAAM,KAAK,WAAY,CACpD,QAAS,EACf,CAAK,EACD,KAAK,UAAU,IAAIA,EAAO,IAAI,KAAM,KAAK,SAAS,EAE9CA,EAAO,QACT,KAAK,UAAU,IAAIA,EAAO,OAAO,KAAM,KAAK,YAAY,EAG1D,KAAK,gBAAgB,IAAIwwC,GAAU,OAAQ,KAAK,YAAY,EAC5D,KAAK,gBAAgB,IAAIA,GAAU,UAAWC,EAAc,EAC5D,KAAK,gBAAgB,IAAID,GAAU,iBAAkB,KAAK,YAAY,EACtE,KAAK,gBAAgB,IAAIA,GAAU,YAAaC,EAAc,EAC9D,KAAK,kBAAkB,IAAID,GAAU,QAAS,KAAK,aAAa,EAE5DkC,EAAsB,CACxB,GAAIC,GAA8B,MAAQA,EAA2B,CACnE,MAAO,KAAK,MAAM,MAClB,WAAY,KAAK,MAAM,WACvB,QAAS,KAAK,MAAM,OAC5B,CAAO,EACC,OAAO,KAAK,YAAW,EAGzB,GAAIL,GAAkBI,CAAoB,EAAG,CAC3C,KAAK,UAAY,WAAW,KAAK,YAAaA,EAAqB,KAAK,EACxE,KAAK,cAAcA,CAAoB,EACvC,MACF,CAEA,GAAIN,GAAqBM,CAAoB,EAAG,CAC9C,KAAK,cAAcA,CAAoB,EACvC,MACF,CACF,CAEA,KAAK,YAAW,CAClB,CAEA,QAAS,CACP,KAAK,UAAU,UAAS,EACxB,KAAK,gBAAgB,YAGrB,WAAW,KAAK,kBAAkB,UAAW,EAAE,EAE3C,KAAK,YAAc,OACrB,aAAa,KAAK,SAAS,EAC3B,KAAK,UAAY,KAErB,CAEA,cAAcL,EAAYO,EAAQ,CAChC,KAAM,CACJ,OAAAxgD,EACA,UAAAygD,CACN,EAAQ,KAAK,MACTA,EAAUzgD,EAAQigD,EAAY,KAAK,mBAAoBO,CAAM,CAC/D,CAEA,aAAc,CACZ,KAAM,CACJ,mBAAAE,CACN,EAAQ,KACE,CACJ,QAAA7B,CACN,EAAQ,KAAK,MAEL6B,IACF,KAAK,UAAY,GAEjB,KAAK,kBAAkB,IAAItC,GAAU,MAAOE,GAAiB,CAC3D,QAAS,EACjB,CAAO,EAED,KAAK,oBAAmB,EAExB,KAAK,kBAAkB,IAAIF,GAAU,gBAAiB,KAAK,mBAAmB,EAC9ES,EAAQ6B,CAAkB,EAE9B,CAEA,WAAWjmD,EAAO,CAChB,IAAIkmD,EAEJ,KAAM,CACJ,UAAAC,EACA,mBAAAF,EACA,MAAAhlE,CACN,EAAQ,KACE,CACJ,OAAAikE,EACA,QAAS,CACP,qBAAAW,CACR,CACA,EAAQ5kE,EAEJ,GAAI,CAACglE,EACH,OAGF,MAAMhB,GAAeiB,EAAwBpL,GAAoB96C,CAAK,IAAM,KAAOkmD,EAAwBvI,GACrG4F,EAAQ/I,GAASyL,EAAoBhB,CAAW,EAEtD,GAAI,CAACkB,GAAaN,EAAsB,CACtC,GAAIN,GAAqBM,CAAoB,EAAG,CAC9C,GAAIA,EAAqB,WAAa,MAAQvC,GAAoBC,EAAOsC,EAAqB,SAAS,EACrG,OAAO,KAAK,aAAY,EAG1B,GAAIvC,GAAoBC,EAAOsC,EAAqB,QAAQ,EAC1D,OAAO,KAAK,YAAW,CAE3B,CAEA,GAAIJ,GAAkBI,CAAoB,GACpCvC,GAAoBC,EAAOsC,EAAqB,SAAS,EAC3D,OAAO,KAAK,aAAY,EAI5B,KAAK,cAAcA,EAAsBtC,CAAK,EAC9C,MACF,CAEIvjD,EAAM,YACRA,EAAM,eAAc,EAGtBklD,EAAOD,CAAW,CACpB,CAEA,WAAY,CACV,KAAM,CACJ,QAAAmB,EACA,MAAAjB,CACN,EAAQ,KAAK,MACT,KAAK,OAAM,EAEN,KAAK,WACRiB,EAAQ,KAAK,MAAM,MAAM,EAG3BjB,EAAK,CACP,CAEA,cAAe,CACb,KAAM,CACJ,QAAAiB,EACA,SAAAhB,CACN,EAAQ,KAAK,MACT,KAAK,OAAM,EAEN,KAAK,WACRgB,EAAQ,KAAK,MAAM,MAAM,EAG3BhB,EAAQ,CACV,CAEA,cAAcplD,EAAO,CACfA,EAAM,OAAS8jD,GAAa,KAC9B,KAAK,aAAY,CAErB,CAEA,qBAAsB,CACpB,IAAIuC,GAEHA,EAAwB,KAAK,SAAS,aAAY,IAAO,MAAgBA,EAAsB,gBAAe,CACjH,CAEF,CAEA,MAAMlzC,GAAS,CACb,OAAQ,CACN,KAAM,eACV,EACE,KAAM,CACJ,KAAM,aACV,EACE,IAAK,CACH,KAAM,WACV,CACA,EACA,MAAMmzC,WAAsBZ,EAAsB,CAChD,YAAYzkE,EAAO,CACjB,KAAM,CACJ,MAAA+e,CACN,EAAQ/e,EAGE0kE,EAAiB7M,GAAiB94C,EAAM,MAAM,EACpD,MAAM/e,EAAOkyB,GAAQwyC,CAAc,CACrC,CAEF,CACAW,GAAc,WAAa,CAAC,CAC1B,UAAW,gBACX,QAAS,CAACpL,EAAMqB,IAAU,CACxB,GAAI,CACF,YAAav8C,CACnB,EAAQk7C,EACA,CACF,aAAAmK,CACN,EAAQ9I,EAEJ,MAAI,CAACv8C,EAAM,WAAaA,EAAM,SAAW,EAChC,IAGTqlD,GAAgB,MAAgBA,EAAa,CAC3C,MAAArlD,CACN,CAAK,EACM,GACT,CACF,CAAC,EAED,MAAMumD,GAAW,CACf,KAAM,CACJ,KAAM,WACV,EACE,IAAK,CACH,KAAM,SACV,CACA,EACA,IAAIC,IAEH,SAAUA,EAAa,CACtBA,EAAYA,EAAY,WAAgB,CAAC,EAAI,YAC/C,GAAGA,KAAgBA,GAAc,CAAA,EAAG,EAEpC,MAAMC,WAAoBf,EAAsB,CAC9C,YAAYzkE,EAAO,CACjB,MAAMA,EAAOslE,GAAUzN,GAAiB73D,EAAM,MAAM,MAAM,CAAC,CAC7D,CAEF,CACAwlE,GAAY,WAAa,CAAC,CACxB,UAAW,cACX,QAAS,CAACvL,EAAMqB,IAAU,CACxB,GAAI,CACF,YAAav8C,CACnB,EAAQk7C,EACA,CACF,aAAAmK,CACN,EAAQ9I,EAEJ,OAAIv8C,EAAM,SAAWwmD,GAAY,WACxB,IAGTnB,GAAgB,MAAgBA,EAAa,CAC3C,MAAArlD,CACN,CAAK,EACM,GACT,CACF,CAAC,EAED,MAAM0mD,GAAW,CACf,OAAQ,CACN,KAAM,aACV,EACE,KAAM,CACJ,KAAM,WACV,EACE,IAAK,CACH,KAAM,UACV,CACA,EACA,MAAMC,WAAoBjB,EAAsB,CAC9C,YAAYzkE,EAAO,CACjB,MAAMA,EAAOylE,EAAQ,CACvB,CAEA,OAAO,OAAQ,CAIb,cAAO,iBAAiBA,GAAS,KAAK,KAAMpJ,EAAM,CAChD,QAAS,GACT,QAAS,EACf,CAAK,EACM,UAAoB,CACzB,OAAO,oBAAoBoJ,GAAS,KAAK,KAAMpJ,CAAI,CACrD,EAGA,SAASA,GAAO,CAAC,CACnB,CAEF,CACAqJ,GAAY,WAAa,CAAC,CACxB,UAAW,eACX,QAAS,CAACzL,EAAMqB,IAAU,CACxB,GAAI,CACF,YAAav8C,CACnB,EAAQk7C,EACA,CACF,aAAAmK,CACN,EAAQ9I,EACJ,KAAM,CACJ,QAAAqK,CACN,EAAQ5mD,EAEJ,OAAI4mD,EAAQ,OAAS,EACZ,IAGTvB,GAAgB,MAAgBA,EAAa,CAC3C,MAAArlD,CACN,CAAK,EACM,GACT,CACF,CAAC,EAED,IAAI6mD,IAEH,SAAUA,EAAqB,CAC9BA,EAAoBA,EAAoB,QAAa,CAAC,EAAI,UAC1DA,EAAoBA,EAAoB,cAAmB,CAAC,EAAI,eAClE,GAAGA,KAAwBA,GAAsB,CAAA,EAAG,EAEpD,IAAIC,IAEH,SAAUA,EAAgB,CACzBA,EAAeA,EAAe,UAAe,CAAC,EAAI,YAClDA,EAAeA,EAAe,kBAAuB,CAAC,EAAI,mBAC5D,GAAGA,KAAmBA,GAAiB,CAAA,EAAG,EAE1C,SAASC,GAAgB7L,EAAM,CAC7B,GAAI,CACF,aAAA0G,EACA,UAAA0D,EAAYuB,GAAoB,QAChC,UAAAG,EACA,aAAAC,EACA,QAAAC,EACA,SAAAC,EAAW,EACX,MAAAC,EAAQN,GAAe,UACvB,mBAAAO,EACA,oBAAAjF,EACA,wBAAAkF,EACA,MAAA/D,EACA,UAAAxB,CACJ,EAAM7G,EACJ,MAAMqM,EAAeC,GAAgB,CACnC,MAAAjE,EACA,SAAU,CAAC2D,CACf,CAAG,EACK,CAACO,EAAuBC,CAAuB,EAAItO,GAAW,EAC9DuO,EAAcryD,EAAAA,OAAO,CACzB,EAAG,EACH,EAAG,CACP,CAAG,EACKsyD,EAAkBtyD,EAAAA,OAAO,CAC7B,EAAG,EACH,EAAG,CACP,CAAG,EACKgF,EAAOrD,EAAAA,QAAQ,IAAM,CACzB,OAAQquD,EAAS,CACf,KAAKuB,GAAoB,QACvB,OAAOQ,EAAqB,CAC1B,IAAKA,EAAmB,EACxB,OAAQA,EAAmB,EAC3B,KAAMA,EAAmB,EACzB,MAAOA,EAAmB,CACpC,EAAY,KAEN,KAAKR,GAAoB,cACvB,OAAOI,CACf,CACE,EAAG,CAAC3B,EAAW2B,EAAcI,CAAkB,CAAC,EAC1CQ,EAAqBvyD,EAAAA,OAAO,IAAI,EAChCwyD,EAAatQ,EAAAA,YAAY,IAAM,CACnC,MAAMkK,EAAkBmG,EAAmB,QAE3C,GAAI,CAACnG,EACH,OAGF,MAAMqG,EAAaJ,EAAY,QAAQ,EAAIC,EAAgB,QAAQ,EAC7DI,EAAYL,EAAY,QAAQ,EAAIC,EAAgB,QAAQ,EAClElG,EAAgB,SAASqG,EAAYC,CAAS,CAChD,EAAG,CAAA,CAAE,EACCC,EAA4BhxD,EAAAA,QAAQ,IAAMmwD,IAAUN,GAAe,UAAY,CAAC,GAAG1E,CAAmB,EAAE,QAAO,EAAKA,EAAqB,CAACgF,EAAOhF,CAAmB,CAAC,EAC3K1sD,EAAAA,UAAU,IAAM,CACd,GAAI,CAACwxD,GAAW,CAAC9E,EAAoB,QAAU,CAAC9nD,EAAM,CACpDotD,EAAuB,EACvB,MACF,CAEA,UAAWhG,KAAmBuG,EAA2B,CACvD,IAAKjB,GAAa,KAAO,OAASA,EAAUtF,CAAe,KAAO,GAChE,SAGF,MAAMn5D,EAAQ65D,EAAoB,QAAQV,CAAe,EACnDC,EAAsB2F,EAAwB/+D,CAAK,EAEzD,GAAI,CAACo5D,EACH,SAGF,KAAM,CACJ,UAAAh/C,EACA,MAAAm/C,CACR,EAAUL,GAA2BC,EAAiBC,EAAqBrnD,EAAMsnD,EAAcG,CAAS,EAElG,UAAWa,IAAQ,CAAC,IAAK,GAAG,EACrB2E,EAAa3E,CAAI,EAAEjgD,EAAUigD,CAAI,CAAC,IACrCd,EAAMc,CAAI,EAAI,EACdjgD,EAAUigD,CAAI,EAAI,GAItB,GAAId,EAAM,EAAI,GAAKA,EAAM,EAAI,EAAG,CAC9B4F,EAAuB,EACvBG,EAAmB,QAAUnG,EAC7B+F,EAAsBK,EAAYX,CAAQ,EAC1CQ,EAAY,QAAU7F,EACtB8F,EAAgB,QAAUjlD,EAC1B,MACF,CACF,CAEAglD,EAAY,QAAU,CACpB,EAAG,EACH,EAAG,CACT,EACIC,EAAgB,QAAU,CACxB,EAAG,EACH,EAAG,CACT,EACIF,EAAuB,CACzB,EACA,CAAC9F,EAAckG,EAAYd,EAAWU,EAAyBR,EAASC,EACxE,KAAK,UAAU7sD,CAAI,EACnB,KAAK,UAAUitD,CAAY,EAAGE,EAAuBrF,EAAqB6F,EAA2BX,EACrG,KAAK,UAAUvF,CAAS,CAAC,CAAC,CAC5B,CACA,MAAMmG,GAAsB,CAC1B,EAAG,CACD,CAACrH,GAAU,QAAQ,EAAG,GACtB,CAACA,GAAU,OAAO,EAAG,EACzB,EACE,EAAG,CACD,CAACA,GAAU,QAAQ,EAAG,GACtB,CAACA,GAAU,OAAO,EAAG,EACzB,CACA,EAEA,SAAS2G,GAAgBjL,EAAO,CAC9B,GAAI,CACF,MAAAgH,EACA,SAAA4E,CACJ,EAAM5L,EACJ,MAAM6L,EAAgBpO,GAAYuJ,CAAK,EACvC,OAAO7J,GAAY2O,GAAkB,CACnC,GAAIF,GAAY,CAACC,GAAiB,CAACC,EAEjC,OAAOH,GAGT,MAAMvlD,EAAY,CAChB,EAAG,KAAK,KAAK4gD,EAAM,EAAI6E,EAAc,CAAC,EACtC,EAAG,KAAK,KAAK7E,EAAM,EAAI6E,EAAc,CAAC,CAC5C,EAEI,MAAO,CACL,EAAG,CACD,CAACvH,GAAU,QAAQ,EAAGwH,EAAe,EAAExH,GAAU,QAAQ,GAAKl+C,EAAU,IAAM,GAC9E,CAACk+C,GAAU,OAAO,EAAGwH,EAAe,EAAExH,GAAU,OAAO,GAAKl+C,EAAU,IAAM,CACpF,EACM,EAAG,CACD,CAACk+C,GAAU,QAAQ,EAAGwH,EAAe,EAAExH,GAAU,QAAQ,GAAKl+C,EAAU,IAAM,GAC9E,CAACk+C,GAAU,OAAO,EAAGwH,EAAe,EAAExH,GAAU,OAAO,GAAKl+C,EAAU,IAAM,CACpF,CACA,CACE,EAAG,CAACwlD,EAAU5E,EAAO6E,CAAa,CAAC,CACrC,CAEA,SAASE,GAAcC,EAAgB7pD,EAAI,CACzC,MAAM8pD,EAAgB9pD,GAAM,KAAO6pD,EAAe,IAAI7pD,CAAE,EAAI,OACtDrc,EAAOmmE,EAAgBA,EAAc,KAAK,QAAU,KAC1D,OAAO9O,GAAY+O,GAAc,CAC/B,IAAIvN,EAEJ,OAAIx8C,GAAM,KACD,MAMDw8C,EAAO74D,GAAsBomE,IAAe,KAAOvN,EAAO,IACpE,EAAG,CAAC74D,EAAMqc,CAAE,CAAC,CACf,CAEA,SAASgqD,GAAqBhL,EAASiL,EAAqB,CAC1D,OAAO1xD,EAAAA,QAAQ,IAAMymD,EAAQ,OAAO,CAACtD,EAAaoD,IAAW,CAC3D,KAAM,CACJ,OAAQoL,CACd,EAAQpL,EACEqL,EAAmBD,EAAO,WAAW,IAAItD,IAAc,CAC3D,UAAWA,EAAU,UACrB,QAASqD,EAAoBrD,EAAU,QAAS9H,CAAM,CAC5D,EAAM,EACF,MAAO,CAAC,GAAGpD,EAAa,GAAGyO,CAAgB,CAC7C,EAAG,CAAA,CAAE,EAAG,CAACnL,EAASiL,CAAmB,CAAC,CACxC,CAEA,IAAIG,IAEH,SAAUA,EAAmB,CAC5BA,EAAkBA,EAAkB,OAAY,CAAC,EAAI,SACrDA,EAAkBA,EAAkB,eAAoB,CAAC,EAAI,iBAC7DA,EAAkBA,EAAkB,cAAmB,CAAC,EAAI,eAC9D,GAAGA,KAAsBA,GAAoB,CAAA,EAAG,EAEhD,IAAIC,IAEH,SAAUA,EAAoB,CAC7BA,EAAmB,UAAe,WACpC,GAAGA,KAAuBA,GAAqB,CAAA,EAAG,EAElD,MAAMvjB,GAA4B,IAAI,IACtC,SAASwjB,GAAsBC,EAAY/N,EAAM,CAC/C,GAAI,CACF,SAAAgO,EACA,aAAA1P,EACA,OAAA16D,CACJ,EAAMo8D,EACJ,KAAM,CAACiO,EAAOC,CAAQ,EAAI3zD,EAAAA,SAAS,IAAI,EACjC,CACJ,UAAA4zD,EACA,QAAA7G,EACA,SAAA8G,CACJ,EAAMxqE,EACEyqE,EAAgBj0D,EAAAA,OAAO2zD,CAAU,EACjCd,EAAWqB,EAAU,EACrBC,EAAclQ,GAAe4O,CAAQ,EACrCuB,EAA6BlS,cAAY,SAAUxwB,EAAK,CACxDA,IAAQ,SACVA,EAAM,CAAA,GAGJ,CAAAyiC,EAAY,SAIhBL,EAASlpE,GACHA,IAAU,KACL8mC,EAGF9mC,EAAM,OAAO8mC,EAAI,OAAOtoB,GAAM,CAACxe,EAAM,SAASwe,CAAE,CAAC,CAAC,CAC1D,CACH,EAAG,CAAC+qD,CAAW,CAAC,EACVE,EAAYr0D,EAAAA,OAAO,IAAI,EACvBqpD,EAAiBjF,GAAYkQ,GAAiB,CAClD,GAAIzB,GAAY,CAACe,EACf,OAAO1jB,GAGT,GAAI,CAACokB,GAAiBA,IAAkBpkB,IAAgB+jB,EAAc,UAAYN,GAAcE,GAAS,KAAM,CAC7G,MAAM38C,EAAM,IAAI,IAEhB,QAASxH,KAAaikD,EAAY,CAChC,GAAI,CAACjkD,EACH,SAGF,GAAImkD,GAASA,EAAM,OAAS,GAAK,CAACA,EAAM,SAASnkD,EAAU,EAAE,GAAKA,EAAU,KAAK,QAAS,CAExFwH,EAAI,IAAIxH,EAAU,GAAIA,EAAU,KAAK,OAAO,EAC5C,QACF,CAEA,MAAM3iB,EAAO2iB,EAAU,KAAK,QACtB1K,EAAOjY,EAAO,IAAIqgE,GAAKF,EAAQngE,CAAI,EAAGA,CAAI,EAAI,KACpD2iB,EAAU,KAAK,QAAU1K,EAErBA,GACFkS,EAAI,IAAIxH,EAAU,GAAI1K,CAAI,CAE9B,CAEA,OAAOkS,CACT,CAEA,OAAOo9C,CACT,EAAG,CAACX,EAAYE,EAAOD,EAAUf,EAAU3F,CAAO,CAAC,EACnD9sD,OAAAA,EAAAA,UAAU,IAAM,CACd6zD,EAAc,QAAUN,CAC1B,EAAG,CAACA,CAAU,CAAC,EACfvzD,EAAAA,UAAU,IAAM,CACVyyD,GAIJuB,EAA0B,CAC5B,EACA,CAACR,EAAUf,CAAQ,CAAC,EACpBzyD,EAAAA,UAAU,IAAM,CACVyzD,GAASA,EAAM,OAAS,GAC1BC,EAAS,IAAI,CAEjB,EACA,CAAC,KAAK,UAAUD,CAAK,CAAC,CAAC,EACvBzzD,EAAAA,UAAU,IAAM,CACVyyD,GAAY,OAAOkB,GAAc,UAAYM,EAAU,UAAY,OAIvEA,EAAU,QAAU,WAAW,IAAM,CACnCD,EAA0B,EAC1BC,EAAU,QAAU,IACtB,EAAGN,CAAS,EACd,EACA,CAACA,EAAWlB,EAAUuB,EAA4B,GAAGlQ,CAAY,CAAC,EAC3D,CACL,eAAAmF,EACA,2BAAA+K,EACA,mBAAoBP,GAAS,IACjC,EAEE,SAASK,GAAa,CACpB,OAAQF,EAAQ,CACd,KAAKR,GAAkB,OACrB,MAAO,GAET,KAAKA,GAAkB,eACrB,OAAOI,EAET,QACE,MAAO,CAACA,CAChB,CACE,CACF,CAEA,SAASW,GAAgB3pE,EAAO4pE,EAAW,CACzC,OAAOpQ,GAAYkQ,GACZ1pE,EAID0pE,IAIG,OAAOE,GAAc,WAAaA,EAAU5pE,CAAK,EAAIA,GAPnD,KAQR,CAAC4pE,EAAW5pE,CAAK,CAAC,CACvB,CAEA,SAAS6pE,GAAe1nE,EAAMmgE,EAAS,CACrC,OAAOqH,GAAgBxnE,EAAMmgE,CAAO,CACtC,CAOA,SAASwH,GAAoB9O,EAAM,CACjC,GAAI,CACF,SAAAvB,EACA,SAAAwO,CACJ,EAAMjN,EACJ,MAAM+O,EAAkBhR,GAASU,CAAQ,EACnCuQ,EAAmBjzD,EAAAA,QAAQ,IAAM,CACrC,GAAIkxD,GAAY,OAAO,OAAW,KAAe,OAAO,OAAO,iBAAqB,IAClF,OAGF,KAAM,CACJ,iBAAAgC,CACN,EAAQ,OACJ,OAAO,IAAIA,EAAiBF,CAAe,CAC7C,EAAG,CAACA,EAAiB9B,CAAQ,CAAC,EAC9BzyD,OAAAA,EAAAA,UAAU,IACD,IAAMw0D,GAAoB,KAAO,OAASA,EAAiB,WAAU,EAC3E,CAACA,CAAgB,CAAC,EACdA,CACT,CAOA,SAASE,GAAkBlP,EAAM,CAC/B,GAAI,CACF,SAAAvB,EACA,SAAAwO,CACJ,EAAMjN,EACJ,MAAMmP,EAAepR,GAASU,CAAQ,EAChC2Q,EAAiBrzD,EAAAA,QAAQ,IAAM,CACnC,GAAIkxD,GAAY,OAAO,OAAW,KAAe,OAAO,OAAO,eAAmB,IAChF,OAGF,KAAM,CACJ,eAAAoC,CACN,EAAQ,OACJ,OAAO,IAAIA,EAAeF,CAAY,CACxC,EACA,CAAClC,CAAQ,CAAC,EACVzyD,OAAAA,EAAAA,UAAU,IACD,IAAM40D,GAAkB,KAAO,OAASA,EAAe,WAAU,EACvE,CAACA,CAAc,CAAC,EACZA,CACT,CAEA,SAASE,GAAe70D,EAAS,CAC/B,OAAO,IAAI+sD,GAAK9C,GAAcjqD,CAAO,EAAGA,CAAO,CACjD,CAEA,SAAS80D,GAAQ90D,EAAS6sD,EAASkI,EAAc,CAC3ClI,IAAY,SACdA,EAAUgI,IAGZ,KAAM,CAAClwD,EAAMqwD,CAAO,EAAIl1D,EAAAA,SAAS,IAAI,EAErC,SAASm1D,GAAc,CACrBD,EAAQE,GAAe,CACrB,GAAI,CAACl1D,EACH,OAAO,KAGT,GAAIA,EAAQ,cAAgB,GAAO,CACjC,IAAIulD,EAIJ,OAAQA,EAAO2P,GAAoCH,IAAiB,KAAOxP,EAAO,IACpF,CAEA,MAAM4P,EAAUtI,EAAQ7sD,CAAO,EAE/B,OAAI,KAAK,UAAUk1D,CAAW,IAAM,KAAK,UAAUC,CAAO,EACjDD,EAGFC,CACT,CAAC,CACH,CAEA,MAAMZ,EAAmBF,GAAoB,CAC3C,SAAS5W,EAAS,CAChB,GAAKz9C,EAIL,UAAW0uC,KAAU+O,EAAS,CAC5B,KAAM,CACJ,KAAAv0D,EACA,OAAAyoB,CACV,EAAY+8B,EAEJ,GAAIxlD,IAAS,aAAeyoB,aAAkB,aAAeA,EAAO,SAAS3R,CAAO,EAAG,CACrFi1D,EAAW,EACX,KACF,CACF,CACF,CAEJ,CAAG,EACKN,EAAiBF,GAAkB,CACvC,SAAUQ,CACd,CAAG,EACD,OAAA7R,GAA0B,IAAM,CAC9B6R,EAAW,EAEPj1D,GACF20D,GAAkB,MAAgBA,EAAe,QAAQ30D,CAAO,EAChEu0D,GAAoB,MAAgBA,EAAiB,QAAQ,SAAS,KAAM,CAC1E,UAAW,GACX,QAAS,EACjB,CAAO,IAEDI,GAAkB,MAAgBA,EAAe,WAAU,EAC3DJ,GAAoB,MAAgBA,EAAiB,WAAU,EAEnE,EAAG,CAACv0D,CAAO,CAAC,EACL2E,CACT,CAEA,SAASywD,GAAazwD,EAAM,CAC1B,MAAM0wD,EAAcnB,GAAgBvvD,CAAI,EACxC,OAAO2kD,GAAa3kD,EAAM0wD,CAAW,CACvC,CAEA,MAAMC,GAAiB,CAAA,EACvB,SAASC,GAAuB7oE,EAAM,CACpC,MAAM8oE,EAAe71D,EAAAA,OAAOjT,CAAI,EAC1B+oE,EAAY1R,GAAYkQ,GACvBvnE,EAIDunE,GAAiBA,IAAkBqB,IAAkB5oE,GAAQ8oE,EAAa,SAAW9oE,EAAK,aAAe8oE,EAAa,QAAQ,WACzHvB,EAGFzJ,GAAuB99D,CAAI,EAPzB4oE,GAQR,CAAC5oE,CAAI,CAAC,EACTqT,OAAAA,EAAAA,UAAU,IAAM,CACdy1D,EAAa,QAAU9oE,CACzB,EAAG,CAACA,CAAI,CAAC,EACF+oE,CACT,CAEA,SAASC,GAAiBC,EAAU,CAClC,KAAM,CAACC,EAAmBC,CAAoB,EAAI/1D,EAAAA,SAAS,IAAI,EACzDg2D,EAAen2D,SAAOg2D,CAAQ,EAE9BI,EAAelU,EAAAA,YAAYx3C,GAAS,CACxC,MAAM2rD,EAAmBlL,GAAqBzgD,EAAM,MAAM,EAErD2rD,GAILH,EAAqBD,GACdA,GAILA,EAAkB,IAAII,EAAkB/K,GAAqB+K,CAAgB,CAAC,EACvE,IAAI,IAAIJ,CAAiB,GAJvB,IAKV,CACH,EAAG,CAAA,CAAE,EACL71D,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMk2D,EAAmBH,EAAa,QAEtC,GAAIH,IAAaM,EAAkB,CACjCC,EAAQD,CAAgB,EACxB,MAAMnlE,EAAU6kE,EAAS,IAAI31D,GAAW,CACtC,MAAMm2D,EAAoBrL,GAAqB9qD,CAAO,EAEtD,OAAIm2D,GACFA,EAAkB,iBAAiB,SAAUJ,EAAc,CACzD,QAAS,EACrB,CAAW,EACM,CAACI,EAAmBlL,GAAqBkL,CAAiB,CAAC,GAG7D,IACT,CAAC,EAAE,OAAOj2D,GAASA,GAAS,IAAI,EAChC21D,EAAqB/kE,EAAQ,OAAS,IAAI,IAAIA,CAAO,EAAI,IAAI,EAC7DglE,EAAa,QAAUH,CACzB,CAEA,MAAO,IAAM,CACXO,EAAQP,CAAQ,EAChBO,EAAQD,CAAgB,CAC1B,EAEA,SAASC,EAAQP,EAAU,CACzBA,EAAS,QAAQ31D,GAAW,CAC1B,MAAMm2D,EAAoBrL,GAAqB9qD,CAAO,EACtDm2D,GAAqB,MAAgBA,EAAkB,oBAAoB,SAAUJ,CAAY,CACnG,CAAC,CACH,CACF,EAAG,CAACA,EAAcJ,CAAQ,CAAC,EACpBr0D,EAAAA,QAAQ,IACTq0D,EAAS,OACJC,EAAoB,MAAM,KAAKA,EAAkB,OAAM,CAAE,EAAE,OAAO,CAACzjD,EAAKm9C,IAAgB1K,GAAIzyC,EAAKm9C,CAAW,EAAGtH,EAAkB,EAAIwE,GAAiBmJ,CAAQ,EAGhK3N,GACN,CAAC2N,EAAUC,CAAiB,CAAC,CAClC,CAEA,SAASQ,GAAsBpJ,EAAenJ,EAAc,CACtDA,IAAiB,SACnBA,EAAe,CAAA,GAGjB,MAAMwS,EAAuB12D,EAAAA,OAAO,IAAI,EACxCI,OAAAA,EAAAA,UAAU,IAAM,CACds2D,EAAqB,QAAU,IACjC,EACAxS,CAAY,EACZ9jD,EAAAA,UAAU,IAAM,CACd,MAAMu2D,EAAmBtJ,IAAkBhF,GAEvCsO,GAAoB,CAACD,EAAqB,UAC5CA,EAAqB,QAAUrJ,GAG7B,CAACsJ,GAAoBD,EAAqB,UAC5CA,EAAqB,QAAU,KAEnC,EAAG,CAACrJ,CAAa,CAAC,EACXqJ,EAAqB,QAAUxR,GAASmI,EAAeqJ,EAAqB,OAAO,EAAIrO,EAChG,CAEA,SAASuO,GAAexO,EAAS,CAC/BhoD,EAAAA,UAAU,IAAM,CACd,GAAI,CAACyiD,GACH,OAGF,MAAMgU,EAAczO,EAAQ,IAAIxC,GAAQ,CACtC,GAAI,CACF,OAAAsC,CACR,EAAUtC,EACJ,OAAOsC,EAAO,OAAS,KAAO,OAASA,EAAO,MAAK,CACrD,CAAC,EACD,MAAO,IAAM,CACX,UAAW4O,KAAYD,EACrBC,GAAY,MAAgBA,EAAQ,CAExC,CACF,EAEA1O,EAAQ,IAAInB,GAAS,CACnB,GAAI,CACF,OAAAiB,CACN,EAAQjB,EACJ,OAAOiB,CACT,CAAC,CAAC,CACJ,CAEA,SAAS6O,GAAsBl+C,EAAWzP,EAAI,CAC5C,OAAOzH,EAAAA,QAAQ,IACNkX,EAAU,OAAO,CAACrG,EAAKozC,IAAS,CACrC,GAAI,CACF,UAAAgI,EACA,QAAAhK,CACR,EAAUgC,EAEJ,OAAApzC,EAAIo7C,CAAS,EAAIljD,GAAS,CACxBk5C,EAAQl5C,EAAOtB,CAAE,CACnB,EAEOoJ,CACT,EAAG,CAAA,CAAE,EACJ,CAACqG,EAAWzP,CAAE,CAAC,CACpB,CAEA,SAAS4tD,GAAc32D,EAAS,CAC9B,OAAOsB,EAAAA,QAAQ,IAAMtB,EAAUmqD,GAAoBnqD,CAAO,EAAI,KAAM,CAACA,CAAO,CAAC,CAC/E,CAEA,MAAM42D,GAAiB,CAAA,EACvB,SAASC,GAASlB,EAAU9I,EAAS,CAC/BA,IAAY,SACdA,EAAU5C,IAGZ,KAAM,CAAC6M,CAAY,EAAInB,EACjBoB,EAAaJ,GAAcG,EAAelU,GAAUkU,CAAY,EAAI,IAAI,EACxE,CAAC1yD,EAAO4yD,CAAQ,EAAIl3D,EAAAA,SAAS82D,EAAc,EAEjD,SAASK,GAAe,CACtBD,EAAS,IACFrB,EAAS,OAIPA,EAAS,IAAI31D,GAAWmrD,GAA2BnrD,CAAO,EAAI+2D,EAAa,IAAIhK,GAAKF,EAAQ7sD,CAAO,EAAGA,CAAO,CAAC,EAH5G42D,EAIV,CACH,CAEA,MAAMjC,EAAiBF,GAAkB,CACvC,SAAUwC,CACd,CAAG,EACD,OAAA7T,GAA0B,IAAM,CAC9BuR,GAAkB,MAAgBA,EAAe,WAAU,EAC3DsC,EAAY,EACZtB,EAAS,QAAQ31D,GAAW20D,GAAkB,KAAO,OAASA,EAAe,QAAQ30D,CAAO,CAAC,CAC/F,EAAG,CAAC21D,CAAQ,CAAC,EACNvxD,CACT,CAEA,SAAS8yD,GAAkBxqE,EAAM,CAC/B,GAAI,CAACA,EACH,OAAO,KAGT,GAAIA,EAAK,SAAS,OAAS,EACzB,OAAOA,EAGT,MAAMyqE,EAAazqE,EAAK,SAAS,CAAC,EAClC,OAAOu2D,GAAckU,CAAU,EAAIA,EAAazqE,CAClD,CAEA,SAAS0qE,GAAwB7R,EAAM,CACrC,GAAI,CACF,QAAAsH,CACJ,EAAMtH,EACJ,KAAM,CAAC5gD,EAAMqwD,CAAO,EAAIl1D,EAAAA,SAAS,IAAI,EAC/B40D,EAAe7S,EAAAA,YAAY/wD,GAAW,CAC1C,SAAW,CACT,OAAA6gB,CACN,IAAS7gB,EACH,GAAImyD,GAActxC,CAAM,EAAG,CACzBqjD,EAAQrwD,GAAQ,CACd,MAAMwwD,EAAUtI,EAAQl7C,CAAM,EAC9B,OAAOhN,EAAO,CAAE,GAAGA,EACjB,MAAOwwD,EAAQ,MACf,OAAQA,EAAQ,MAC5B,EAAcA,CACN,CAAC,EACD,KACF,CAEJ,EAAG,CAACtI,CAAO,CAAC,EACN8H,EAAiBF,GAAkB,CACvC,SAAUC,CACd,CAAG,EACK2C,EAAmBxV,EAAAA,YAAY7hD,GAAW,CAC9C,MAAMtT,EAAOwqE,GAAkBl3D,CAAO,EACtC20D,GAAkB,MAAgBA,EAAe,WAAU,EAEvDjoE,IACFioE,GAAkB,MAAgBA,EAAe,QAAQjoE,CAAI,GAG/DsoE,EAAQtoE,EAAOmgE,EAAQngE,CAAI,EAAI,IAAI,CACrC,EAAG,CAACmgE,EAAS8H,CAAc,CAAC,EACtB,CAAC2C,EAASC,CAAM,EAAIrT,GAAWmT,CAAgB,EACrD,OAAO/1D,EAAAA,QAAQ,KAAO,CACpB,QAAAg2D,EACA,KAAA3yD,EACA,OAAA4yD,CACJ,GAAM,CAAC5yD,EAAM2yD,EAASC,CAAM,CAAC,CAC7B,CAEA,MAAMC,GAAiB,CAAC,CACtB,OAAQ7G,GACR,QAAS,CAAA,CACX,EAAG,CACD,OAAQpC,GACR,QAAS,CAAA,CACX,CAAC,EACKkJ,GAAc,CAClB,QAAS,CAAA,CACX,EACMC,GAAgC,CACpC,UAAW,CACT,QAASxN,EACb,EACE,UAAW,CACT,QAASA,GACT,SAAUiJ,GAAkB,cAC5B,UAAWC,GAAmB,SAClC,EACE,YAAa,CACX,QAASnJ,EACb,CACA,EAEA,MAAM0N,WAA+B,GAAI,CACvC,IAAI5uD,EAAI,CACN,IAAI6uD,EAEJ,OAAO7uD,GAAM,OAAQ6uD,EAAa,MAAM,IAAI7uD,CAAE,IAAM,KAAO6uD,EAAyB,MACtF,CAEA,SAAU,CACR,OAAO,MAAM,KAAK,KAAK,OAAM,CAAE,CACjC,CAEA,YAAa,CACX,OAAO,KAAK,UAAU,OAAOrS,GAAQ,CACnC,GAAI,CACF,SAAAiN,CACR,EAAUjN,EACJ,MAAO,CAACiN,CACV,CAAC,CACH,CAEA,WAAWzpD,EAAI,CACb,IAAI8uD,EAAuBC,EAE3B,OAAQD,GAAyBC,EAAY,KAAK,IAAI/uD,CAAE,IAAM,KAAO,OAAS+uD,EAAU,KAAK,UAAY,KAAOD,EAAwB,MAC1I,CAEF,CAEA,MAAME,GAAuB,CAC3B,eAAgB,KAChB,OAAQ,KACR,WAAY,KACZ,eAAgB,KAChB,WAAY,KACZ,kBAAmB,KACnB,eAA6B,IAAI,IACjC,eAA6B,IAAI,IACjC,oBAAkC,IAAIJ,GACtC,KAAM,KACN,YAAa,CACX,QAAS,CACP,QAAS,IACf,EACI,KAAM,KACN,OAAQhQ,EACZ,EACE,oBAAqB,CAAA,EACrB,wBAAyB,CAAA,EACzB,uBAAwB+P,GACxB,2BAA4B/P,GAC5B,WAAY,KACZ,mBAAoB,EACtB,EACMqQ,GAAyB,CAC7B,eAAgB,KAChB,WAAY,CAAA,EACZ,OAAQ,KACR,eAAgB,KAChB,kBAAmB,CACjB,UAAW,EACf,EACE,SAAUrQ,GACV,eAA6B,IAAI,IACjC,KAAM,KACN,2BAA4BA,EAC9B,EACMsQ,GAA+B7R,EAAAA,cAAc4R,EAAsB,EACnEE,GAA6B9R,EAAAA,cAAc2R,EAAoB,EAErE,SAASI,IAAkB,CACzB,MAAO,CACL,UAAW,CACT,OAAQ,KACR,mBAAoB,CAClB,EAAG,EACH,EAAG,CACX,EACM,MAAO,IAAI,IACX,UAAW,CACT,EAAG,EACH,EAAG,CACX,CACA,EACI,UAAW,CACT,WAAY,IAAIR,EACtB,CACA,CACA,CACA,SAASS,GAAQlgD,EAAO9L,EAAQ,CAC9B,OAAQA,EAAO,KAAI,CACjB,KAAKs7C,GAAO,UACV,MAAO,CAAE,GAAGxvC,EACV,UAAW,CAAE,GAAGA,EAAM,UACpB,mBAAoB9L,EAAO,mBAC3B,OAAQA,EAAO,MACzB,CACA,EAEI,KAAKs7C,GAAO,SACV,OAAIxvC,EAAM,UAAU,QAAU,KACrBA,EAGF,CAAE,GAAGA,EACV,UAAW,CAAE,GAAGA,EAAM,UACpB,UAAW,CACT,EAAG9L,EAAO,YAAY,EAAI8L,EAAM,UAAU,mBAAmB,EAC7D,EAAG9L,EAAO,YAAY,EAAI8L,EAAM,UAAU,mBAAmB,CACzE,CACA,CACA,EAEI,KAAKwvC,GAAO,QACZ,KAAKA,GAAO,WACV,MAAO,CAAE,GAAGxvC,EACV,UAAW,CAAE,GAAGA,EAAM,UACpB,OAAQ,KACR,mBAAoB,CAClB,EAAG,EACH,EAAG,CACf,EACU,UAAW,CACT,EAAG,EACH,EAAG,CACf,CACA,CACA,EAEI,KAAKwvC,GAAO,kBACV,CACE,KAAM,CACJ,QAAA1nD,CACV,EAAYoM,EACE,CACJ,GAAArD,CACV,EAAY/I,EACEszD,EAAa,IAAIqE,GAAuBz/C,EAAM,UAAU,UAAU,EACxE,OAAAo7C,EAAW,IAAIvqD,EAAI/I,CAAO,EACnB,CAAE,GAAGkY,EACV,UAAW,CAAE,GAAGA,EAAM,UACpB,WAAAo7C,CACZ,CACA,CACM,CAEF,KAAK5L,GAAO,qBACV,CACE,KAAM,CACJ,GAAA3+C,EACA,IAAA1f,EACA,SAAAmpE,CACV,EAAYpmD,EACEpM,EAAUkY,EAAM,UAAU,WAAW,IAAInP,CAAE,EAEjD,GAAI,CAAC/I,GAAW3W,IAAQ2W,EAAQ,IAC9B,OAAOkY,EAGT,MAAMo7C,EAAa,IAAIqE,GAAuBz/C,EAAM,UAAU,UAAU,EACxE,OAAAo7C,EAAW,IAAIvqD,EAAI,CAAE,GAAG/I,EACtB,SAAAwyD,CACV,CAAS,EACM,CAAE,GAAGt6C,EACV,UAAW,CAAE,GAAGA,EAAM,UACpB,WAAAo7C,CACZ,CACA,CACM,CAEF,KAAK5L,GAAO,oBACV,CACE,KAAM,CACJ,GAAA3+C,EACA,IAAA1f,CACV,EAAY+iB,EACEpM,EAAUkY,EAAM,UAAU,WAAW,IAAInP,CAAE,EAEjD,GAAI,CAAC/I,GAAW3W,IAAQ2W,EAAQ,IAC9B,OAAOkY,EAGT,MAAMo7C,EAAa,IAAIqE,GAAuBz/C,EAAM,UAAU,UAAU,EACxE,OAAAo7C,EAAW,OAAOvqD,CAAE,EACb,CAAE,GAAGmP,EACV,UAAW,CAAE,GAAGA,EAAM,UACpB,WAAAo7C,CACZ,CACA,CACM,CAEF,QAEI,OAAOp7C,CAEf,CACA,CAEA,SAASmgD,GAAa9S,EAAM,CAC1B,GAAI,CACF,SAAAiN,CACJ,EAAMjN,EACJ,KAAM,CACJ,OAAA31C,EACA,eAAA0oD,EACA,eAAA1F,CACJ,EAAMrM,EAAAA,WAAW0R,EAAe,EACxBM,EAAyBlU,GAAYiU,CAAc,EACnDE,EAAmBnU,GAAYz0C,GAAU,KAAO,OAASA,EAAO,EAAE,EAExE7P,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAAAyyD,GAIA,CAAC8F,GAAkBC,GAA0BC,GAAoB,KAAM,CAKzE,GAJI,CAACzT,GAAgBwT,CAAsB,GAIvC,SAAS,gBAAkBA,EAAuB,OAEpD,OAGF,MAAM1F,EAAgBD,EAAe,IAAI4F,CAAgB,EAEzD,GAAI,CAAC3F,EACH,OAGF,KAAM,CACJ,cAAA4F,EACA,KAAA/rE,CACR,EAAUmmE,EAEJ,GAAI,CAAC4F,EAAc,SAAW,CAAC/rE,EAAK,QAClC,OAGF,sBAAsB,IAAM,CAC1B,UAAWsT,IAAW,CAACy4D,EAAc,QAAS/rE,EAAK,OAAO,EAAG,CAC3D,GAAI,CAACsT,EACH,SAGF,MAAM04D,EAAgBhT,GAAuB1lD,CAAO,EAEpD,GAAI04D,EAAe,CACjBA,EAAc,MAAK,EACnB,KACF,CACF,CACF,CAAC,CACH,CACF,EAAG,CAACJ,EAAgB9F,EAAUI,EAAgB4F,EAAkBD,CAAsB,CAAC,EAChF,IACT,CAEA,SAASI,GAAe5mE,EAAWwzD,EAAM,CACvC,GAAI,CACF,UAAAhgB,EACA,GAAGxvC,CACP,EAAMwvD,EACJ,OAAOxzD,GAAa,MAAQA,EAAU,OAASA,EAAU,OAAO,CAAC0yD,EAAapxD,IACrEA,EAAS,CACd,UAAWoxD,EACX,GAAG1uD,CACT,CAAK,EACAwvC,CAAS,EAAIA,CAClB,CAEA,SAASqzB,GAA0BzvE,EAAQ,CACzC,OAAOmY,EAAAA,QAAQ,KAAO,CACpB,UAAW,CAAE,GAAGo2D,GAA8B,UAC5C,GAAIvuE,GAAU,KAAO,OAASA,EAAO,SAC3C,EACI,UAAW,CAAE,GAAGuuE,GAA8B,UAC5C,GAAIvuE,GAAU,KAAO,OAASA,EAAO,SAC3C,EACI,YAAa,CAAE,GAAGuuE,GAA8B,YAC9C,GAAIvuE,GAAU,KAAO,OAASA,EAAO,WAC3C,CACA,GACE,CAACA,GAAU,KAAO,OAASA,EAAO,UAAWA,GAAU,KAAO,OAASA,EAAO,UAAWA,GAAU,KAAO,OAASA,EAAO,WAAW,CAAC,CACxI,CAEA,SAAS0vE,GAAiCtT,EAAM,CAC9C,GAAI,CACF,WAAAiJ,EACA,QAAA3B,EACA,YAAAwI,EACA,OAAAlsE,EAAS,EACb,EAAMo8D,EACJ,MAAMuT,EAAcn5D,EAAAA,OAAO,EAAK,EAC1B,CACJ,EAAA2C,EACA,EAAAQ,CACJ,EAAM,OAAO3Z,GAAW,UAAY,CAChC,EAAGA,EACH,EAAGA,CACP,EAAMA,EACJi6D,GAA0B,IAAM,CAG9B,GAFiB,CAAC9gD,GAAK,CAACQ,GAER,CAAC0rD,EAAY,CAC3BsK,EAAY,QAAU,GACtB,MACF,CAEA,GAAIA,EAAY,SAAW,CAACzD,EAG1B,OAIF,MAAM3oE,EAAO8hE,GAAc,KAAO,OAASA,EAAW,KAAK,QAE3D,GAAI,CAAC9hE,GAAQA,EAAK,cAAgB,GAGhC,OAGF,MAAMiY,EAAOkoD,EAAQngE,CAAI,EACnBqsE,EAAYzP,GAAa3kD,EAAM0wD,CAAW,EAahD,GAXK/yD,IACHy2D,EAAU,EAAI,GAGXj2D,IACHi2D,EAAU,EAAI,GAIhBD,EAAY,QAAU,GAElB,KAAK,IAAIC,EAAU,CAAC,EAAI,GAAK,KAAK,IAAIA,EAAU,CAAC,EAAI,EAAG,CAC1D,MAAMlO,EAA0BD,GAA2Bl+D,CAAI,EAE3Dm+D,GACFA,EAAwB,SAAS,CAC/B,IAAKkO,EAAU,EACf,KAAMA,EAAU,CAC1B,CAAS,CAEL,CACF,EAAG,CAACvK,EAAYlsD,EAAGQ,EAAGuyD,EAAaxI,CAAO,CAAC,CAC7C,CAEA,MAAMmM,GAAsC5S,EAAAA,cAAc,CAAE,GAAG4B,GAC7D,OAAQ,EACR,OAAQ,CACV,CAAC,EACD,IAAIiR,IAEH,SAAUA,EAAQ,CACjBA,EAAOA,EAAO,cAAmB,CAAC,EAAI,gBACtCA,EAAOA,EAAO,aAAkB,CAAC,EAAI,eACrCA,EAAOA,EAAO,YAAiB,CAAC,EAAI,aACtC,GAAGA,KAAWA,GAAS,CAAA,EAAG,EAE1B,MAAMC,GAA0BC,EAAAA,KAAK,SAAoB5T,EAAM,CAC7D,IAAI6T,EAAuBC,EAAuBC,EAAmBC,EAErE,GAAI,CACF,GAAAxwD,EACA,cAAAywD,EACA,WAAArH,EAAa,GACb,SAAA/lE,EACA,QAAA27D,EAAUyP,GACV,mBAAAiC,EAAqB3Q,GACrB,UAAA4Q,EACA,UAAA3nE,EACA,GAAGzG,CACP,EAAMi6D,EACJ,MAAMoU,EAAQC,EAAAA,WAAWxB,GAAS,OAAWD,EAAe,EACtD,CAACjgD,EAAO2hD,CAAQ,EAAIF,EACpB,CAACG,EAAsBC,CAAuB,EAAIvT,GAAqB,EACvE,CAACtoD,EAAQ87D,CAAS,EAAIl6D,EAAAA,SAASm5D,GAAO,aAAa,EACnDgB,EAAgB/7D,IAAW+6D,GAAO,YAClC,CACJ,UAAW,CACT,OAAQiB,EACR,MAAOtH,EACP,UAAAvhD,CACN,EACI,UAAW,CACT,WAAY43C,CAClB,CACA,EAAM/wC,EACExrB,EAAOwtE,GAAY,KAAOtH,EAAe,IAAIsH,CAAQ,EAAI,KACzDC,EAAcx6D,EAAAA,OAAO,CACzB,QAAS,KACT,WAAY,IAChB,CAAG,EACKiQ,EAAStO,EAAAA,QAAQ,IAAM,CAC3B,IAAI84D,GAEJ,OAAOF,GAAY,KAAO,CACxB,GAAIA,EAEJ,MAAOE,GAAa1tE,GAAQ,KAAO,OAASA,EAAK,OAAS,KAAO0tE,GAAa3C,GAC9E,KAAM0C,CACZ,EAAQ,IACN,EAAG,CAACD,EAAUxtE,CAAI,CAAC,EACb2tE,EAAY16D,EAAAA,OAAO,IAAI,EACvB,CAAC26D,EAAcC,CAAe,EAAIz6D,EAAAA,SAAS,IAAI,EAC/C,CAACw4D,EAAgBkC,CAAiB,EAAI16D,EAAAA,SAAS,IAAI,EACnD26D,EAAc7W,GAAet4D,EAAO,OAAO,OAAOA,CAAK,CAAC,EACxDovE,EAAyBpW,GAAY,iBAAkBv7C,CAAE,EACzD4xD,EAA6Br5D,EAAAA,QAAQ,IAAM2nD,EAAoB,WAAU,EAAI,CAACA,CAAmB,CAAC,EAClG2R,EAAyBhC,GAA0Bc,CAAS,EAC5D,CACJ,eAAA1Q,EACA,2BAAA+K,GACA,mBAAA8G,EACJ,EAAMxH,GAAsBsH,EAA4B,CACpD,SAAUV,EACV,aAAc,CAAC5oD,EAAU,EAAGA,EAAU,CAAC,EACvC,OAAQupD,EAAuB,SACnC,CAAG,EACKpM,GAAamE,GAAcC,EAAgBsH,CAAQ,EACnDY,GAAwBx5D,UAAQ,IAAMg3D,EAAiBnT,GAAoBmT,CAAc,EAAI,KAAM,CAACA,CAAc,CAAC,EACnHyC,GAAoBC,GAAsB,EAC1CC,GAAwB7G,GAAe5F,GAAYoM,EAAuB,UAAU,OAAO,EACjG/B,GAAiC,CAC/B,WAAYqB,GAAY,KAAOtH,EAAe,IAAIsH,CAAQ,EAAI,KAC9D,OAAQa,GAAkB,wBAC1B,YAAaE,GACb,QAASL,EAAuB,UAAU,OAC9C,CAAG,EACD,MAAMM,EAAiBpG,GAAQtG,GAAYoM,EAAuB,UAAU,QAASK,EAAqB,EACpGE,GAAoBrG,GAAQtG,GAAaA,GAAW,cAAgB,IAAI,EACxE4M,GAAgBz7D,EAAAA,OAAO,CAC3B,eAAgB,KAChB,OAAQ,KACR,WAAA6uD,GACA,cAAe,KACf,WAAY,KACZ,eAAAxF,EACA,eAAA4J,EACA,aAAc,KACd,iBAAkB,KAClB,oBAAA3J,EACA,KAAM,KACN,oBAAqB,CAAA,EACrB,wBAAyB,IAC7B,CAAG,EACKoS,GAAWpS,EAAoB,YAAYmQ,EAAwBgC,GAAc,QAAQ,OAAS,KAAO,OAAShC,EAAsB,EAAE,EAC1IkC,GAAclE,GAAwB,CAC1C,QAASwD,EAAuB,YAAY,OAChD,CAAG,EAEKW,IAAgBlC,EAAwBiC,GAAY,QAAQ,UAAY,KAAOjC,EAAwB7K,GACvGgN,GAAmBvB,GAAiBX,EAAoBgC,GAAY,OAAS,KAAOhC,EAAoB4B,EAAiB,KACzHO,GAAkB,GAAQH,GAAY,QAAQ,SAAWA,GAAY,MAGrEI,GAAgBtG,GAAaqG,GAAkB,KAAOP,CAAc,EAEpEnE,GAAaJ,GAAc4E,GAAe3Y,GAAU2Y,EAAY,EAAI,IAAI,EAExE9O,GAAsB8I,GAAuB0E,EAAgBoB,IAA8B7M,GAAa,IAAI,EAC5GmD,GAA0BkF,GAASpK,EAAmB,EAEtDkP,GAAoBhD,GAAe5mE,EAAW,CAClD,UAAW,CACT,EAAGsf,EAAU,EAAIqqD,GAAc,EAC/B,EAAGrqD,EAAU,EAAIqqD,GAAc,EAC/B,OAAQ,EACR,OAAQ,CACd,EACI,eAAApD,EACA,OAAA1oD,EACA,eAAAsrD,EACA,kBAAAC,GACA,iBAAAK,GACA,KAAMJ,GAAc,QAAQ,KAC5B,gBAAiBE,GAAY,KAC7B,oBAAA7O,GACA,wBAAAkF,GACA,WAAAoF,EACJ,CAAG,EACKrF,GAAqBoJ,GAAwBlW,GAAIkW,GAAuBzpD,CAAS,EAAI,KACrF27C,GAAgB0I,GAAiBjJ,EAAmB,EAEpDmP,GAAmBxF,GAAsBpJ,EAAa,EAEtD6O,GAAwBzF,GAAsBpJ,GAAe,CAACkO,CAAc,CAAC,EAC7EY,GAA0BlX,GAAI+W,GAAmBC,EAAgB,EACjE7S,GAAgByS,GAAmBhS,GAAgBgS,GAAkBG,EAAiB,EAAI,KAC1FrT,GAAa14C,GAAUm5C,GAAgB0Q,EAAmB,CAC9D,OAAA7pD,EACA,cAAAm5C,GACA,eAAAC,EACA,oBAAqB2R,EACrB,mBAAAjJ,EACJ,CAAG,EAAI,KACCqK,GAAS1T,GAAkBC,GAAY,IAAI,EAC3C,CAACzB,GAAMmV,EAAO,EAAIl8D,EAAAA,SAAS,IAAI,EAG/Bm8D,GAAmBR,GAAkBE,GAAoB/W,GAAI+W,GAAmBE,EAAqB,EACrGt2B,GAAY4jB,GAAY8S,IAAmB1C,EAAa1S,IAAQ,KAAO,OAASA,GAAK,OAAS,KAAO0S,EAAa,KAAM2B,CAAc,EACtIgB,GAAkBv8D,EAAAA,OAAO,IAAI,EAC7Bw8D,GAAoBta,EAAAA,YAAY,CAACx3C,GAAOu8C,KAAU,CACtD,GAAI,CACF,OAAQqM,GACR,QAAA30D,EACN,EAAQsoD,GAEJ,GAAIyT,EAAU,SAAW,KACvB,OAGF,MAAM7L,GAAaoE,EAAe,IAAIyH,EAAU,OAAO,EAEvD,GAAI,CAAC7L,GACH,OAGF,MAAM8J,GAAiBjuD,GAAM,YACvB+xD,GAAiB,IAAInJ,GAAO,CAChC,OAAQoH,EAAU,QAClB,WAAA7L,GACA,MAAO8J,GACP,QAAAh6D,GAGA,QAAS88D,GAET,QAAQryD,GAAI,CAGV,GAAI,CAFkB6pD,EAAe,IAAI7pD,EAAE,EAGzC,OAGF,KAAM,CACJ,YAAAszD,EACV,EAAY5B,EAAY,QACVpwD,GAAQ,CACZ,GAAAtB,EACV,EACQszD,IAAe,MAAgBA,GAAYhyD,EAAK,EAChDyvD,EAAqB,CACnB,KAAM,cACN,MAAAzvD,EACV,CAAS,CACH,EAEA,UAAUtB,GAAI8mD,GAAYS,GAAoBF,GAAQ,CAGpD,GAAI,CAFkBwC,EAAe,IAAI7pD,EAAE,EAGzC,OAGF,KAAM,CACJ,cAAAuzD,EACV,EAAY7B,EAAY,QACVpwD,GAAQ,CACZ,GAAAtB,GACA,WAAA8mD,GACA,mBAAAS,GACA,OAAAF,EACV,EACQkM,IAAiB,MAAgBA,GAAcjyD,EAAK,EACpDyvD,EAAqB,CACnB,KAAM,gBACN,MAAAzvD,EACV,CAAS,CACH,EAEA,QAAQimD,GAAoB,CAC1B,MAAMvnD,GAAKsxD,EAAU,QAErB,GAAItxD,IAAM,KACR,OAGF,MAAM8pD,GAAgBD,EAAe,IAAI7pD,EAAE,EAE3C,GAAI,CAAC8pD,GACH,OAGF,KAAM,CACJ,YAAA0J,EACV,EAAY9B,EAAY,QACVpwD,GAAQ,CACZ,eAAAiuD,GACA,OAAQ,CACN,GAAAvvD,GACA,KAAM8pD,GAAc,KACpB,KAAMsH,CAClB,CACA,EACQqC,GAAAA,wBAAwB,IAAM,CAC5BD,IAAe,MAAgBA,GAAYlyD,EAAK,EAChD2vD,EAAUf,GAAO,YAAY,EAC7BY,EAAS,CACP,KAAMnS,GAAO,UACb,mBAAA4I,GACA,OAAQvnD,EACpB,CAAW,EACD+wD,EAAqB,CACnB,KAAM,cACN,MAAAzvD,EACZ,CAAW,EACDkwD,EAAgB2B,GAAgB,OAAO,EACvC1B,EAAkBlC,EAAc,CAClC,CAAC,CACH,EAEA,OAAOhJ,GAAa,CAClBuK,EAAS,CACP,KAAMnS,GAAO,SACb,YAAA4H,EACV,CAAS,CACH,EAEA,MAAOxxC,GAAc4pC,GAAO,OAAO,EACnC,SAAU5pC,GAAc4pC,GAAO,UAAU,CAC/C,CAAK,EACDwU,GAAgB,QAAUE,GAE1B,SAASt+C,GAAc50B,GAAM,CAC3B,OAAO,gBAAyB,CAC9B,KAAM,CACJ,OAAA0mB,GACA,WAAA04C,GACA,KAAAzB,GACA,wBAAAiV,EACV,EAAYV,GAAc,QAClB,IAAI/wD,GAAQ,KAEZ,GAAIuF,IAAUksD,GAAyB,CACrC,KAAM,CACJ,WAAAW,EACZ,EAAchC,EAAY,QAChBpwD,GAAQ,CACN,eAAAiuD,GACA,OAAQ1oD,GACR,WAAA04C,GACA,MAAOwT,GACP,KAAAjV,EACZ,EAEc39D,KAASw+D,GAAO,SAAW,OAAO+U,IAAe,YAC9B,MAAM,QAAQ,QAAQA,GAAWpyD,EAAK,CAAC,IAG1DnhB,GAAOw+D,GAAO,WAGpB,CAEA2S,EAAU,QAAU,KACpBmC,GAAAA,wBAAwB,IAAM,CAC5B3C,EAAS,CACP,KAAA3wE,EACZ,CAAW,EACD8wE,EAAUf,GAAO,aAAa,EAC9B+C,GAAQ,IAAI,EACZzB,EAAgB,IAAI,EACpBC,EAAkB,IAAI,EACtB0B,GAAgB,QAAU,KAC1B,MAAM3O,GAAYrkE,KAASw+D,GAAO,QAAU,YAAc,eAE1D,GAAIr9C,GAAO,CACT,MAAMk5C,GAAUkX,EAAY,QAAQlN,EAAS,EAC7ChK,IAAW,MAAgBA,GAAQl5C,EAAK,EACxCyvD,EAAqB,CACnB,KAAMvM,GACN,MAAAljD,EACd,CAAa,CACH,CACF,CAAC,CACH,CACF,CACF,EACA,CAACuoD,CAAc,CAAC,EACV8J,GAAoC7a,EAAAA,YAAY,CAAC0B,GAASsE,KACvD,CAACx9C,GAAOuF,KAAW,CACxB,MAAM+sD,GAActyD,GAAM,YACpBuyD,GAAsBhK,EAAe,IAAIhjD,EAAM,EAErD,GACAyqD,EAAU,UAAY,MACtB,CAACuC,IACDD,GAAY,QAAUA,GAAY,iBAChC,OAGF,MAAME,GAAoB,CACxB,OAAQD,EAChB,EAC6BrZ,GAAQl5C,GAAOw9C,GAAO,QAASgV,EAAiB,IAEhD,KACrBF,GAAY,OAAS,CACnB,WAAY9U,GAAO,MAC7B,EACQwS,EAAU,QAAUzqD,GACpBusD,GAAkB9xD,GAAOw9C,EAAM,EAEnC,EACC,CAAC+K,EAAgBuJ,EAAiB,CAAC,EAChCW,GAAa/J,GAAqBhL,EAAS2U,EAAiC,EAClFnG,GAAexO,CAAO,EACtB3E,GAA0B,IAAM,CAC1B8X,GAAkBh9D,IAAW+6D,GAAO,cACtCe,EAAUf,GAAO,WAAW,CAEhC,EAAG,CAACiC,EAAgBh9D,CAAM,CAAC,EAC3B6B,EAAAA,UAAU,IAAM,CACd,KAAM,CACJ,WAAAg9D,EACN,EAAQtC,EAAY,QACV,CACJ,OAAA7qD,GACA,eAAA0oD,GACA,WAAAhQ,GACA,KAAAzB,EACN,EAAQuU,GAAc,QAElB,GAAI,CAACxrD,IAAU,CAAC0oD,GACd,OAGF,MAAMjuD,GAAQ,CACZ,OAAAuF,GACA,eAAA0oD,GACA,WAAAhQ,GACA,MAAO,CACL,EAAGwT,GAAwB,EAC3B,EAAGA,GAAwB,CACnC,EACM,KAAAjV,EACN,EACI2V,GAAAA,wBAAwB,IAAM,CAC5BO,IAAc,MAAgBA,GAAW1yD,EAAK,EAC9CyvD,EAAqB,CACnB,KAAM,aACN,MAAAzvD,EACR,CAAO,CACH,CAAC,CACH,EACA,CAACyxD,GAAwB,EAAGA,GAAwB,CAAC,CAAC,EACtD/7D,EAAAA,UAAU,IAAM,CACd,KAAM,CACJ,OAAA6P,GACA,eAAA0oD,GACA,WAAAhQ,GACA,oBAAAW,GACA,wBAAA6S,EACN,EAAQV,GAAc,QAElB,GAAI,CAACxrD,IAAUyqD,EAAU,SAAW,MAAQ,CAAC/B,IAAkB,CAACwD,GAC9D,OAGF,KAAM,CACJ,WAAAkB,EACN,EAAQvC,EAAY,QACVwC,GAAgBhU,GAAoB,IAAI8S,EAAM,EAC9ClV,GAAOoW,IAAiBA,GAAc,KAAK,QAAU,CACzD,GAAIA,GAAc,GAClB,KAAMA,GAAc,KAAK,QACzB,KAAMA,GAAc,KACpB,SAAUA,GAAc,QAC9B,EAAQ,KACE5yD,GAAQ,CACZ,OAAAuF,GACA,eAAA0oD,GACA,WAAAhQ,GACA,MAAO,CACL,EAAGwT,GAAwB,EAC3B,EAAGA,GAAwB,CACnC,EACM,KAAAjV,EACN,EACI2V,GAAAA,wBAAwB,IAAM,CAC5BR,GAAQnV,EAAI,EACZmW,IAAc,MAAgBA,GAAW3yD,EAAK,EAC9CyvD,EAAqB,CACnB,KAAM,aACN,MAAAzvD,EACR,CAAO,CACH,CAAC,CACH,EACA,CAAC0xD,EAAM,CAAC,EACR3Y,GAA0B,IAAM,CAC9BgY,GAAc,QAAU,CACtB,eAAA9C,EACA,OAAA1oD,EACA,WAAA4+C,GACA,cAAAzF,GACA,WAAAT,GACA,eAAAU,EACA,eAAA4J,EACA,aAAA2I,GACA,iBAAAC,GACA,oBAAAvS,EACA,KAAApC,GACA,oBAAA4F,GACA,wBAAAqP,EACN,EACI3B,EAAY,QAAU,CACpB,QAASqB,GACT,WAAYzS,EAClB,CACE,EAAG,CAACn5C,EAAQ4+C,GAAYlG,GAAYS,GAAe6J,EAAgB2I,GAAcC,GAAkBxS,EAAgBC,EAAqBpC,GAAM4F,GAAqBqP,EAAuB,CAAC,EAC3L1K,GAAgB,CAAE,GAAG2J,GACnB,MAAO1pD,EACP,aAAc03C,GACd,mBAAA2I,GACA,oBAAAjF,GACA,wBAAAkF,EACJ,CAAG,EACD,MAAMuL,GAAgB57D,EAAAA,QAAQ,KACZ,CACd,OAAAsO,EACA,WAAA4+C,GACA,eAAA0M,EACA,eAAA5C,EACA,WAAAhQ,GACA,kBAAA6S,GACA,YAAAG,GACA,eAAA1I,EACA,oBAAA3J,EACA,eAAAD,EACA,KAAAnC,GACA,2BAAAkN,GACA,oBAAAtH,GACA,wBAAAkF,GACA,uBAAAiJ,EACA,mBAAAC,GACA,WAAA9D,EACN,GAEK,CAACnnD,EAAQ4+C,GAAY0M,EAAgB5C,EAAgBhQ,GAAY6S,GAAmBG,GAAa1I,EAAgB3J,EAAqBD,EAAgBnC,GAAMkN,GAA4BtH,GAAqBkF,GAAyBiJ,EAAwBC,GAAoB9D,EAAU,CAAC,EAC1RoG,GAAkB77D,EAAAA,QAAQ,KACd,CACd,eAAAg3D,EACA,WAAAwE,GACA,OAAAltD,EACA,eAAAsrD,EACA,kBAAmB,CACjB,UAAWR,CACnB,EACM,SAAAb,EACA,eAAAjH,EACA,KAAA/L,GACA,2BAAAkN,EACN,GAEK,CAACuE,EAAgBwE,GAAYltD,EAAQsrD,EAAgBrB,EAAUa,EAAwB9H,EAAgB/L,GAAMkN,EAA0B,CAAC,EAC3I,OAAOlnE,EAAM,cAAcs5D,GAAkB,SAAU,CACrD,MAAO4T,CACX,EAAKltE,EAAM,cAAcorE,GAAgB,SAAU,CAC/C,MAAOkF,EACX,EAAKtwE,EAAM,cAAcqrE,GAAc,SAAU,CAC7C,MAAOgF,EACX,EAAKrwE,EAAM,cAAcmsE,GAAuB,SAAU,CACtD,MAAOzzB,EACX,EAAKn5C,CAAQ,CAAC,EAAGS,EAAM,cAAcwrE,GAAc,CAC/C,UAAWmB,GAAiB,KAAO,OAASA,EAAc,gBAAkB,EAChF,CAAG,CAAC,EAAG3sE,EAAM,cAAcm6D,GAAe,CAAE,GAAGwS,EAC3C,wBAAyBkB,CAC7B,CAAG,CAAC,EAEF,SAASM,IAAyB,CAChC,MAAMoC,IAAkC9C,GAAgB,KAAO,OAASA,EAAa,qBAAuB,GACtG+C,GAA6B,OAAOlL,GAAe,SAAWA,EAAW,UAAY,GAAQA,IAAe,GAC5GZ,GAAU0I,GAAiB,CAACmD,IAAkC,CAACC,GAErE,OAAI,OAAOlL,GAAe,SACjB,CAAE,GAAGA,EACV,QAAAZ,EACR,EAGW,CACL,QAAAA,EACN,CACE,CACF,CAAC,EAEK+L,GAA2BlX,EAAAA,cAAc,IAAI,EAC7CmX,GAAc,SACdC,GAAY,YAClB,SAASC,GAAalY,EAAM,CAC1B,GAAI,CACF,GAAAx8C,EACA,KAAA0X,EACA,SAAA+xC,EAAW,GACX,WAAAkL,CACJ,EAAMnY,EACJ,MAAMl8D,EAAMi7D,GAAYkZ,EAAS,EAC3B,CACJ,WAAAV,EACA,eAAAxE,EACA,OAAA1oD,EACA,eAAAsrD,EACA,kBAAAyC,EACA,eAAA/K,EACA,KAAA/L,CACJ,EAAMN,EAAAA,WAAW0R,EAAe,EACxB,CACJ,KAAA2F,EAAOL,GACP,gBAAAM,EAAkB,YAClB,SAAAC,EAAW,CACf,EAAMJ,GAAkC,CAAA,EAChCK,GAAcnuD,GAAU,KAAO,OAASA,EAAO,MAAQ7G,EACvDw8B,EAAYghB,EAAAA,WAAWwX,EAAa/E,GAAyBsE,EAAW,EACxE,CAAC5wE,EAAM03D,CAAU,EAAIF,GAAU,EAC/B,CAACuU,EAAeuF,CAAmB,EAAI9Z,GAAU,EACjD1rC,EAAYk+C,GAAsBoG,EAAY/zD,CAAE,EAChDk1D,EAAUra,GAAenjC,CAAI,EACnC2iC,GAA0B,KACxBwP,EAAe,IAAI7pD,EAAI,CACrB,GAAAA,EACA,IAAA1f,EACA,KAAAqD,EACA,cAAA+rE,EACA,KAAMwF,CACZ,CAAK,EACM,IAAM,CACX,MAAMvxE,EAAOkmE,EAAe,IAAI7pD,CAAE,EAE9Brc,GAAQA,EAAK,MAAQrD,GACvBupE,EAAe,OAAO7pD,CAAE,CAE5B,GAEF,CAAC6pD,EAAgB7pD,CAAE,CAAC,EACpB,MAAMm1D,EAAqB58D,EAAAA,QAAQ,KAAO,CACxC,KAAAs8D,EACA,SAAAE,EACA,gBAAiBtL,EACjB,eAAgBuL,GAAcH,IAASL,GAAc,GAAO,OAC5D,uBAAwBM,EACxB,mBAAoBF,EAAkB,SAC1C,GAAM,CAACnL,EAAUoL,EAAME,EAAUC,EAAYF,EAAiBF,EAAkB,SAAS,CAAC,EACxF,MAAO,CACL,OAAA/tD,EACA,eAAA0oD,EACA,eAAA4C,EACA,WAAYgD,EACZ,WAAAH,EACA,UAAWvL,EAAW,OAAYh6C,EAClC,KAAA9rB,EACA,KAAAm6D,EACA,WAAAzC,EACA,oBAAA4Z,EACA,UAAAz4B,CACJ,CACA,CAEA,SAAS44B,IAAgB,CACvB,OAAO5X,EAAAA,WAAW2R,EAAa,CACjC,CAEA,MAAMkG,GAAc,YACdC,GAA8B,CAClC,QAAS,EACX,EACA,SAASC,GAAa/Y,EAAM,CAC1B,GAAI,CACF,KAAA9kC,EACA,SAAA+xC,EAAW,GACX,GAAAzpD,EACA,qBAAAw1D,CACJ,EAAMhZ,EACJ,MAAMl8D,EAAMi7D,GAAY8Z,EAAW,EAC7B,CACJ,OAAAxuD,EACA,SAAAiqD,EACA,KAAAhT,EACA,2BAAAkN,CACJ,EAAMxN,EAAAA,WAAW0R,EAAe,EACxB/W,EAAWvhD,EAAAA,OAAO,CACtB,SAAA6yD,CACJ,CAAG,EACKgM,EAA0B7+D,EAAAA,OAAO,EAAK,EACtCgF,EAAOhF,EAAAA,OAAO,IAAI,EAClB8+D,EAAa9+D,EAAAA,OAAO,IAAI,EACxB,CACJ,SAAU++D,EACV,sBAAAC,EACA,QAASC,CACb,EAAM,CAAE,GAAGP,GACP,GAAGE,CACP,EACQltC,EAAMuyB,GAAe+a,GAAwD51D,CAAE,EAC/E2rD,EAAe7S,EAAAA,YAAY,IAAM,CACrC,GAAI,CAAC2c,EAAwB,QAAS,CAGpCA,EAAwB,QAAU,GAClC,MACF,CAEIC,EAAW,SAAW,MACxB,aAAaA,EAAW,OAAO,EAGjCA,EAAW,QAAU,WAAW,IAAM,CACpC1K,EAA2B,MAAM,QAAQ1iC,EAAI,OAAO,EAAIA,EAAI,QAAU,CAACA,EAAI,OAAO,CAAC,EACnFotC,EAAW,QAAU,IACvB,EAAGG,CAAqB,CAC1B,EACA,CAACA,CAAqB,CAAC,EACjBjK,EAAiBF,GAAkB,CACvC,SAAUC,EACV,SAAUgK,GAA0B,CAAC9uD,CACzC,CAAG,EACKynD,EAAmBxV,EAAAA,YAAY,CAACgd,EAAYC,IAAoB,CAC/DnK,IAIDmK,IACFnK,EAAe,UAAUmK,CAAe,EACxCN,EAAwB,QAAU,IAGhCK,GACFlK,EAAe,QAAQkK,CAAU,EAErC,EAAG,CAAClK,CAAc,CAAC,EACb,CAAC2C,EAASlT,CAAU,EAAIF,GAAWmT,CAAgB,EACnD4G,EAAUra,GAAenjC,CAAI,EACnC1gB,OAAAA,EAAAA,UAAU,IAAM,CACV,CAAC40D,GAAkB,CAAC2C,EAAQ,UAIhC3C,EAAe,WAAU,EACzB6J,EAAwB,QAAU,GAClC7J,EAAe,QAAQ2C,EAAQ,OAAO,EACxC,EAAG,CAACA,EAAS3C,CAAc,CAAC,EAC5B50D,EAAAA,UAAU,KACR85D,EAAS,CACP,KAAMnS,GAAO,kBACb,QAAS,CACP,GAAA3+C,EACA,IAAA1f,EACA,SAAAmpE,EACA,KAAM8E,EACN,KAAA3yD,EACA,KAAMs5D,CACd,CACA,CAAK,EACM,IAAMpE,EAAS,CACpB,KAAMnS,GAAO,oBACb,IAAAr+D,EACA,GAAA0f,CACN,CAAK,GAEH,CAACA,CAAE,CAAC,EACJhJ,EAAAA,UAAU,IAAM,CACVyyD,IAAatR,EAAS,QAAQ,WAChC2Y,EAAS,CACP,KAAMnS,GAAO,qBACb,GAAA3+C,EACA,IAAA1f,EACA,SAAAmpE,CACR,CAAO,EACDtR,EAAS,QAAQ,SAAWsR,EAEhC,EAAG,CAACzpD,EAAI1f,EAAKmpE,EAAUqH,CAAQ,CAAC,EACzB,CACL,OAAAjqD,EACA,KAAAjL,EACA,QAASkiD,GAAQ,KAAO,OAASA,EAAK,MAAQ99C,EAC9C,KAAMuuD,EACN,KAAAzQ,EACA,WAAAzC,CACJ,CACA,CAEA,SAAS2a,GAAiBxZ,EAAM,CAC9B,GAAI,CACF,UAAAyZ,EACA,SAAA5yE,CACJ,EAAMm5D,EACJ,KAAM,CAAC0Z,EAAgBC,CAAiB,EAAIp/D,EAAAA,SAAS,IAAI,EACnD,CAACE,EAASm/D,CAAU,EAAIr/D,EAAAA,SAAS,IAAI,EACrCs/D,EAAmB/a,GAAYj4D,CAAQ,EAE7C,MAAI,CAACA,GAAY,CAAC6yE,GAAkBG,GAClCF,EAAkBE,CAAgB,EAGpChc,GAA0B,IAAM,CAC9B,GAAI,CAACpjD,EACH,OAGF,MAAM3W,EAAM41E,GAAkB,KAAO,OAASA,EAAe,IACvDl2D,EAAKk2D,GAAkB,KAAO,OAASA,EAAe,MAAM,GAElE,GAAI51E,GAAO,MAAQ0f,GAAM,KAAM,CAC7Bm2D,EAAkB,IAAI,EACtB,MACF,CAEA,QAAQ,QAAQF,EAAUj2D,EAAI/I,CAAO,CAAC,EAAE,KAAK,IAAM,CACjDk/D,EAAkB,IAAI,CACxB,CAAC,CACH,EAAG,CAACF,EAAWC,EAAgBj/D,CAAO,CAAC,EAChCnT,EAAM,cAAcA,EAAM,SAAU,KAAMT,EAAU6yE,EAAiBI,EAAAA,aAAaJ,EAAgB,CACvG,IAAKE,CACT,CAAG,EAAI,IAAI,CACX,CAEA,MAAMG,GAAmB,CACvB,EAAG,EACH,EAAG,EACH,OAAQ,EACR,OAAQ,CACV,EACA,SAASC,GAAyBha,EAAM,CACtC,GAAI,CACF,SAAAn5D,CACJ,EAAMm5D,EACJ,OAAO14D,EAAM,cAAcorE,GAAgB,SAAU,CACnD,MAAOD,EACX,EAAKnrE,EAAM,cAAcmsE,GAAuB,SAAU,CACtD,MAAOsG,EACX,EAAKlzE,CAAQ,CAAC,CACd,CAEA,MAAMozE,GAAa,CACjB,SAAU,QACV,YAAa,MACf,EAEMC,GAAoBnH,GACIvT,GAAgBuT,CAAc,EAC7B,uBAAyB,OAGlDoH,GAAiCC,EAAAA,WAAW,CAACpa,EAAM7lD,IAAQ,CAC/D,GAAI,CACF,GAAAkgE,EACA,eAAAtH,EACA,YAAAnP,EACA,SAAA/8D,EACA,UAAAyC,EACA,KAAA8V,EACA,MAAA3F,EACA,UAAAumC,EACA,WAAAiR,EAAaipB,EACjB,EAAMla,EAEJ,GAAI,CAAC5gD,EACH,OAAO,KAGT,MAAMk7D,EAAyB1W,EAAc5jB,EAAY,CAAE,GAAGA,EAC5D,OAAQ,EACR,OAAQ,CACZ,EACQu6B,EAAS,CAAE,GAAGN,GAClB,MAAO76D,EAAK,MACZ,OAAQA,EAAK,OACb,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,UAAWygD,GAAI,UAAU,SAASya,CAAsB,EACxD,gBAAiB1W,GAAemP,EAAiBrQ,GAA2BqQ,EAAgB3zD,CAAI,EAAI,OACpG,WAAY,OAAO6xC,GAAe,WAAaA,EAAW8hB,CAAc,EAAI9hB,EAC5E,GAAGx3C,CACP,EACE,OAAOnS,EAAM,cAAc+yE,EAAI,CAC7B,UAAA/wE,EACA,MAAOixE,EACP,IAAApgE,CACJ,EAAKtT,CAAQ,CACb,CAAC,EAEK2zE,GAAkCzhE,GAAWinD,GAAQ,CACzD,GAAI,CACF,OAAA31C,EACA,YAAA0rD,CACJ,EAAM/V,EACJ,MAAMya,EAAiB,CAAA,EACjB,CACJ,OAAAF,EACA,UAAAjxE,CACJ,EAAMyP,EAEJ,GAAIwhE,GAAU,MAAQA,EAAO,OAC3B,SAAW,CAACz2E,EAAKkB,CAAK,IAAK,OAAO,QAAQu1E,EAAO,MAAM,EACjDv1E,IAAU,SAIdy1E,EAAe32E,CAAG,EAAIumB,EAAO,KAAK,MAAM,iBAAiBvmB,CAAG,EAC5DumB,EAAO,KAAK,MAAM,YAAYvmB,EAAKkB,CAAK,GAI5C,GAAIu1E,GAAU,MAAQA,EAAO,YAC3B,SAAW,CAACz2E,EAAKkB,CAAK,IAAK,OAAO,QAAQu1E,EAAO,WAAW,EACtDv1E,IAAU,QAId+wE,EAAY,KAAK,MAAM,YAAYjyE,EAAKkB,CAAK,EAIjD,OAAIsE,GAAa,MAAQA,EAAU,QACjC+gB,EAAO,KAAK,UAAU,IAAI/gB,EAAU,MAAM,EAGxCA,GAAa,MAAQA,EAAU,aACjCysE,EAAY,KAAK,UAAU,IAAIzsE,EAAU,WAAW,EAG/C,UAAmB,CACxB,SAAW,CAACxF,EAAKkB,CAAK,IAAK,OAAO,QAAQy1E,CAAc,EACtDpwD,EAAO,KAAK,MAAM,YAAYvmB,EAAKkB,CAAK,EAGtCsE,GAAa,MAAQA,EAAU,QACjC+gB,EAAO,KAAK,UAAU,OAAO/gB,EAAU,MAAM,CAEjD,CACF,EAEMoxE,GAA0BrZ,GAAS,CACvC,GAAI,CACF,UAAW,CACT,QAAAsZ,EACA,MAAA5wC,CACN,CACA,EAAMs3B,EACJ,MAAO,CAAC,CACN,UAAWxB,GAAI,UAAU,SAAS8a,CAAO,CAC7C,EAAK,CACD,UAAW9a,GAAI,UAAU,SAAS91B,CAAK,CAC3C,CAAG,CACH,EAEM6wC,GAAoC,CACxC,SAAU,IACV,OAAQ,OACR,UAAWF,GACX,YAA0BF,GAAgC,CACxD,OAAQ,CACN,OAAQ,CACN,QAAS,GACjB,CACA,CACA,CAAG,CACH,EACA,SAASK,GAAiBtZ,EAAO,CAC/B,GAAI,CACF,OAAA39D,EACA,eAAAypE,EACA,oBAAA3J,EACA,uBAAA2R,CACJ,EAAM9T,EACJ,OAAOxD,GAAS,CAACv6C,EAAIrc,IAAS,CAC5B,GAAIvD,IAAW,KACb,OAGF,MAAMk3E,EAAkBzN,EAAe,IAAI7pD,CAAE,EAE7C,GAAI,CAACs3D,EACH,OAGF,MAAM7R,EAAa6R,EAAgB,KAAK,QAExC,GAAI,CAAC7R,EACH,OAGF,MAAM8R,EAAiBpJ,GAAkBxqE,CAAI,EAE7C,GAAI,CAAC4zE,EACH,OAGF,KAAM,CACJ,UAAA/6B,CACN,EAAQqd,GAAUl2D,CAAI,EAAE,iBAAiBA,CAAI,EACnCk9D,EAAkBH,GAAelkB,CAAS,EAEhD,GAAI,CAACqkB,EACH,OAGF,MAAMoV,EAAY,OAAO71E,GAAW,WAAaA,EAASo3E,GAA2Bp3E,CAAM,EAC3F,OAAAyjE,GAAuB4B,EAAYoM,EAAuB,UAAU,OAAO,EACpEoE,EAAU,CACf,OAAQ,CACN,GAAAj2D,EACA,KAAMs3D,EAAgB,KACtB,KAAM7R,EACN,KAAMoM,EAAuB,UAAU,QAAQpM,CAAU,CACjE,EACM,eAAAoE,EACA,YAAa,CACX,KAAAlmE,EACA,KAAMkuE,EAAuB,YAAY,QAAQ0F,CAAc,CACvE,EACM,oBAAArX,EACA,uBAAA2R,EACA,UAAWhR,CACjB,CAAK,CACH,CAAC,CACH,CAEA,SAAS2W,GAA2BjiE,EAAS,CAC3C,KAAM,CACJ,SAAA4R,EACA,OAAAs1C,EACA,YAAAgb,EACA,UAAAC,CACJ,EAAM,CAAE,GAAGN,GACP,GAAG7hE,CACP,EACE,OAAOyoD,GAAS,CACd,GAAI,CACF,OAAAn3C,EACA,YAAA0rD,EACA,UAAA/1B,EACA,GAAG5vB,CACT,EAAQoxC,EAEJ,GAAI,CAAC72C,EAEH,OAGF,MAAM09C,EAAQ,CACZ,EAAG0N,EAAY,KAAK,KAAO1rD,EAAO,KAAK,KACvC,EAAG0rD,EAAY,KAAK,IAAM1rD,EAAO,KAAK,GAC5C,EACU1L,EAAQ,CACZ,OAAQqhC,EAAU,SAAW,EAAI31B,EAAO,KAAK,MAAQ21B,EAAU,OAAS+1B,EAAY,KAAK,MAAQ,EACjG,OAAQ/1B,EAAU,SAAW,EAAI31B,EAAO,KAAK,OAAS21B,EAAU,OAAS+1B,EAAY,KAAK,OAAS,CACzG,EACUoF,EAAiB,CACrB,EAAGn7B,EAAU,EAAIqoB,EAAM,EACvB,EAAGroB,EAAU,EAAIqoB,EAAM,EACvB,GAAG1pD,CACT,EACUy8D,EAAqBF,EAAU,CAAE,GAAG9qD,EACxC,OAAA/F,EACA,YAAA0rD,EACA,UAAW,CACT,QAAS/1B,EACT,MAAOm7B,CACf,CACA,CAAK,EACK,CAACE,CAAa,EAAID,EAClBE,EAAeF,EAAmBA,EAAmB,OAAS,CAAC,EAErE,GAAI,KAAK,UAAUC,CAAa,IAAM,KAAK,UAAUC,CAAY,EAE/D,OAGF,MAAM3K,EAAUsK,GAAe,KAAO,OAASA,EAAY,CACzD,OAAA5wD,EACA,YAAA0rD,EACA,GAAG3lD,CACT,CAAK,EACKqpD,EAAY1D,EAAY,KAAK,QAAQqF,EAAoB,CAC7D,SAAAzwD,EACA,OAAAs1C,EACA,KAAM,UACZ,CAAK,EACD,OAAO,IAAI,QAAQ7H,GAAW,CAC5BqhB,EAAU,SAAW,IAAM,CACzB9I,GAAW,MAAgBA,EAAO,EAClCvY,EAAO,CACT,CACF,CAAC,CACH,CACF,CAEA,IAAIt0D,GAAM,EACV,SAASy3E,GAAO/3D,EAAI,CAClB,OAAOzH,EAAAA,QAAQ,IAAM,CACnB,GAAIyH,GAAM,KAIV,OAAA1f,KACOA,EACT,EAAG,CAAC0f,CAAE,CAAC,CACT,CAEA,MAAMg4D,GAA2Bl0E,EAAM,KAAK04D,GAAQ,CAClD,GAAI,CACF,YAAA4D,EAAc,GACd,SAAA/8D,EACA,cAAe40E,EACf,MAAAhiE,EACA,WAAAw3C,EACA,UAAAzkD,EACA,eAAAkvE,EAAiB,MACjB,UAAApyE,EACA,OAAAqyE,EAAS,GACb,EAAM3b,EACJ,KAAM,CACJ,eAAA+S,EACA,OAAA1oD,EACA,eAAAsrD,EACA,kBAAAC,EACA,eAAAvI,EACA,oBAAA3J,EACA,YAAAqS,EACA,KAAAzU,EACA,uBAAA+T,EACA,oBAAAnO,EACA,wBAAAkF,EACA,WAAAoF,CACJ,EAAMoH,GAAa,EACX54B,EAAYghB,EAAAA,WAAWyS,EAAsB,EAC7C3vE,EAAMy3E,GAAOlxD,GAAU,KAAO,OAASA,EAAO,EAAE,EAChDuxD,EAAoBxI,GAAe5mE,EAAW,CAClD,eAAAumE,EACA,OAAA1oD,EACA,eAAAsrD,EACA,kBAAAC,EACA,iBAAkBG,EAAY,KAC9B,KAAAzU,EACA,gBAAiByU,EAAY,KAC7B,oBAAA7O,EACA,wBAAAkF,EACA,UAAApsB,EACA,WAAAwxB,CACJ,CAAG,EACK1B,EAAcnB,GAAgBgH,CAAc,EAC5CkG,EAAgBhB,GAAiB,CACrC,OAAQY,EACR,eAAApO,EACA,oBAAA3J,EACA,uBAAA2R,CACJ,CAAG,EAGKl7D,EAAM21D,EAAciG,EAAY,OAAS,OAC/C,OAAOzuE,EAAM,cAAc0yE,GAA0B,KAAM1yE,EAAM,cAAckyE,GAAkB,CAC/F,UAAWqC,CACf,EAAKxxD,GAAUvmB,EAAMwD,EAAM,cAAc6yE,GAAmB,CACxD,IAAKr2E,EACL,GAAIumB,EAAO,GACX,IAAKlQ,EACL,GAAIuhE,EACJ,eAAgB3I,EAChB,YAAanP,EACb,UAAWt6D,EACX,WAAY2nD,EACZ,KAAM6e,EACN,MAAO,CACL,OAAA6L,EACA,GAAGliE,CACT,EACI,UAAWmiE,CACf,EAAK/0E,CAAQ,EAAI,IAAI,CAAC,CACtB,CAAC,ECt3HD,SAASi1E,GAAUl8B,EAAOm8B,EAAMC,EAAI,CAClC,MAAM3uC,EAAWuS,EAAM,MAAK,EAC5B,OAAAvS,EAAS,OAAO2uC,EAAK,EAAI3uC,EAAS,OAAS2uC,EAAKA,EAAI,EAAG3uC,EAAS,OAAO0uC,EAAM,CAAC,EAAE,CAAC,CAAC,EAC3E1uC,CACT,CAYA,SAAS4uC,GAAe9yD,EAAOtK,EAAO,CACpC,OAAOsK,EAAM,OAAO,CAAC+1C,EAAa17C,EAAInW,IAAU,CAC9C,MAAM+R,EAAOP,EAAM,IAAI2E,CAAE,EAEzB,OAAIpE,IACF8/C,EAAY7xD,CAAK,EAAI+R,GAGhB8/C,CACT,EAAG,MAAM/1C,EAAM,MAAM,CAAC,CACxB,CAEA,SAAS+yD,GAAa7uE,EAAO,CAC3B,OAAOA,IAAU,MAAQA,GAAS,CACpC,CAEA,SAAS8uE,GAAWzuD,EAAGC,EAAG,CACxB,GAAID,IAAMC,EACR,MAAO,GAGT,GAAID,EAAE,SAAWC,EAAE,OACjB,MAAO,GAGT,QAASplB,EAAI,EAAGA,EAAImlB,EAAE,OAAQnlB,IAC5B,GAAImlB,EAAEnlB,CAAC,IAAMolB,EAAEplB,CAAC,EACd,MAAO,GAIX,MAAO,EACT,CAEA,SAAS6zE,GAAkBnP,EAAU,CACnC,OAAI,OAAOA,GAAa,UACf,CACL,UAAWA,EACX,UAAWA,CACjB,EAGSA,CACT,CA8EA,MAAMoP,GAAsBrc,GAAQ,CAClC,GAAI,CACF,MAAAnhD,EACA,YAAAy9D,EACA,UAAAC,EACA,MAAAlvE,CACJ,EAAM2yD,EACJ,MAAMwc,EAAWV,GAAUj9D,EAAO09D,EAAWD,CAAW,EAClDG,EAAU59D,EAAMxR,CAAK,EACrBuiE,EAAU4M,EAASnvE,CAAK,EAE9B,MAAI,CAACuiE,GAAW,CAAC6M,EACR,KAGF,CACL,EAAG7M,EAAQ,KAAO6M,EAAQ,KAC1B,EAAG7M,EAAQ,IAAM6M,EAAQ,IACzB,OAAQ7M,EAAQ,MAAQ6M,EAAQ,MAChC,OAAQ7M,EAAQ,OAAS6M,EAAQ,MACrC,CACA,EAmCMC,GAAiB,CACrB,OAAQ,EACR,OAAQ,CACV,EACMC,GAA8B3c,GAAQ,CAC1C,IAAI4c,EAEJ,GAAI,CACF,YAAAN,EACA,eAAgBO,EAChB,MAAAxvE,EACA,MAAAwR,EACA,UAAA09D,CACJ,EAAMvc,EACJ,MAAM2V,GAAkBiH,EAAqB/9D,EAAMy9D,CAAW,IAAM,KAAOM,EAAqBC,EAEhG,GAAI,CAAClH,EACH,OAAO,KAGT,GAAItoE,IAAUivE,EAAa,CACzB,MAAMQ,EAAgBj+D,EAAM09D,CAAS,EAErC,OAAKO,EAIE,CACL,EAAG,EACH,EAAGR,EAAcC,EAAYO,EAAc,IAAMA,EAAc,QAAUnH,EAAe,IAAMA,EAAe,QAAUmH,EAAc,IAAMnH,EAAe,IAC1J,GAAG+G,EACT,EAPa,IAQX,CAEA,MAAMK,EAAUC,GAAan+D,EAAOxR,EAAOivE,CAAW,EAEtD,OAAIjvE,EAAQivE,GAAejvE,GAASkvE,EAC3B,CACL,EAAG,EACH,EAAG,CAAC5G,EAAe,OAASoH,EAC5B,GAAGL,EACT,EAGMrvE,EAAQivE,GAAejvE,GAASkvE,EAC3B,CACL,EAAG,EACH,EAAG5G,EAAe,OAASoH,EAC3B,GAAGL,EACT,EAGS,CACL,EAAG,EACH,EAAG,EACH,GAAGA,EACP,CACA,EAEA,SAASM,GAAaC,EAAa5vE,EAAOivE,EAAa,CACrD,MAAM3M,EAAcsN,EAAY5vE,CAAK,EAC/B6vE,EAAeD,EAAY5vE,EAAQ,CAAC,EACpC8vE,EAAWF,EAAY5vE,EAAQ,CAAC,EAEtC,OAAKsiE,EAID2M,EAAcjvE,EACT6vE,EAAevN,EAAY,KAAOuN,EAAa,IAAMA,EAAa,QAAUC,EAAWA,EAAS,KAAOxN,EAAY,IAAMA,EAAY,QAAU,EAGjJwN,EAAWA,EAAS,KAAOxN,EAAY,IAAMA,EAAY,QAAUuN,EAAevN,EAAY,KAAOuN,EAAa,IAAMA,EAAa,QAAU,EAP7I,CAQX,CAEA,MAAMjF,GAAY,WACZmF,GAAuB91E,EAAM,cAAc,CAC/C,YAAa,GACb,YAAa2wE,GACb,kBAAmB,GACnB,MAAO,CAAA,EACP,UAAW,GACX,eAAgB,GAChB,YAAa,CAAA,EACb,SAAUoE,GACV,SAAU,CACR,UAAW,GACX,UAAW,EACf,CACA,CAAC,EACD,SAASgB,GAAgBrd,EAAM,CAC7B,GAAI,CACF,SAAAn5D,EACA,GAAA2c,EACA,MAAO85D,EACP,SAAAlP,EAAWiO,GACX,SAAUkB,EAAe,EAC7B,EAAMvd,EACJ,KAAM,CACJ,OAAA31C,EACA,YAAA0rD,EACA,eAAAtS,EACA,KAAAnC,EACA,2BAAAkN,CACJ,EAAMoK,GAAa,EACX4E,EAAcze,GAAYkZ,GAAWz0D,CAAE,EACvCi6D,EAAyB1H,EAAY,OAAS,KAC9C5sD,EAAQpN,EAAAA,QAAQ,IAAMuhE,EAAiB,IAAIl1D,GAAQ,OAAOA,GAAS,UAAY,OAAQA,EAAOA,EAAK,GAAKA,CAAI,EAAG,CAACk1D,CAAgB,CAAC,EACjI9E,EAAanuD,GAAU,KACvBiyD,EAAcjyD,EAASlB,EAAM,QAAQkB,EAAO,EAAE,EAAI,GAClDkyD,EAAYjb,EAAOn4C,EAAM,QAAQm4C,EAAK,EAAE,EAAI,GAC5Coc,EAAmBtjE,EAAAA,OAAO+O,CAAK,EAC/Bw0D,EAAmB,CAACxB,GAAWhzD,EAAOu0D,EAAiB,OAAO,EAC9DE,EAAoBrB,IAAc,IAAMD,IAAgB,IAAMqB,EAC9D1Q,EAAWmP,GAAkBmB,CAAY,EAC/C1f,GAA0B,IAAM,CAC1B8f,GAAoBnF,GACtBhK,EAA2BrlD,CAAK,CAEpC,EAAG,CAACw0D,EAAkBx0D,EAAOqvD,EAAYhK,CAA0B,CAAC,EACpEh0D,EAAAA,UAAU,IAAM,CACdkjE,EAAiB,QAAUv0D,CAC7B,EAAG,CAACA,CAAK,CAAC,EACV,MAAM00D,EAAe9hE,EAAAA,QAAQ,KAAO,CAClC,YAAAugE,EACA,YAAAkB,EACA,SAAAvQ,EACA,kBAAA2Q,EACA,MAAAz0D,EACA,UAAAozD,EACA,eAAAkB,EACA,YAAaxB,GAAe9yD,EAAOs6C,CAAc,EACjD,SAAA2K,CACJ,GACE,CAACkO,EAAakB,EAAavQ,EAAS,UAAWA,EAAS,UAAW2Q,EAAmBz0D,EAAOozD,EAAW9Y,EAAgBga,EAAgBrP,CAAQ,CAAC,EACjJ,OAAO9mE,EAAM,cAAc81E,GAAQ,SAAU,CAC3C,MAAOS,CACX,EAAKh3E,CAAQ,CACb,CAEA,MAAMi3E,GAAwB9d,GAAQ,CACpC,GAAI,CACF,GAAAx8C,EACA,MAAA2F,EACA,YAAAmzD,EACA,UAAAC,CACJ,EAAMvc,EACJ,OAAO8b,GAAU3yD,EAAOmzD,EAAaC,CAAS,EAAE,QAAQ/4D,CAAE,CAC5D,EACMu6D,GAA8B1c,GAAS,CAC3C,GAAI,CACF,YAAAmc,EACA,UAAAQ,EACA,YAAAC,EACA,MAAA5wE,EACA,MAAA8b,EACA,SAAA+0D,EACA,cAAAC,EACA,oBAAAC,EACA,WAAAntB,CACJ,EAAMoQ,EAMJ,MAJI,CAACpQ,GAAc,CAACgtB,GAIhBE,IAAkBh1D,GAAS9b,IAAU6wE,EAChC,GAGLF,EACK,GAGFE,IAAa7wE,GAASmwE,IAAgBY,CAC/C,EACMlE,GAAoB,CACxB,SAAU,IACV,OAAQ,MACV,EACMmE,GAAqB,YACrBC,GAAkCze,GAAI,WAAW,SAAS,CAC9D,SAAUwe,GACV,SAAU,EACV,OAAQ,QACV,CAAC,EACKE,GAAoB,CACxB,gBAAiB,UACnB,EAOA,SAASC,GAAoBxe,EAAM,CACjC,GAAI,CACF,SAAAiN,EACA,MAAA5/D,EACA,KAAAlG,EACA,KAAAiY,CACJ,EAAM4gD,EACJ,KAAM,CAACye,EAAkBC,CAAmB,EAAInkE,EAAAA,SAAS,IAAI,EACvDokE,EAAgBvkE,EAAAA,OAAO/M,CAAK,EAClC,OAAAwwD,GAA0B,IAAM,CAC9B,GAAI,CAACoP,GAAY5/D,IAAUsxE,EAAc,SAAWx3E,EAAK,QAAS,CAChE,MAAMwzE,EAAUv7D,EAAK,QAErB,GAAIu7D,EAAS,CACX,MAAMlvE,EAAUi5D,GAAcv9D,EAAK,QAAS,CAC1C,gBAAiB,EAC3B,CAAS,EACKkhE,EAAQ,CACZ,EAAGsS,EAAQ,KAAOlvE,EAAQ,KAC1B,EAAGkvE,EAAQ,IAAMlvE,EAAQ,IACzB,OAAQkvE,EAAQ,MAAQlvE,EAAQ,MAChC,OAAQkvE,EAAQ,OAASlvE,EAAQ,MAC3C,GAEY48D,EAAM,GAAKA,EAAM,IACnBqW,EAAoBrW,CAAK,CAE7B,CACF,CAEIh7D,IAAUsxE,EAAc,UAC1BA,EAAc,QAAUtxE,EAE5B,EAAG,CAAC4/D,EAAU5/D,EAAOlG,EAAMiY,CAAI,CAAC,EAChC5E,EAAAA,UAAU,IAAM,CACVikE,GACFC,EAAoB,IAAI,CAE5B,EAAG,CAACD,CAAgB,CAAC,EACdA,CACT,CAEA,SAASG,GAAY5e,EAAM,CACzB,GAAI,CACF,qBAAA6e,EAAuBd,GACvB,WAAYe,EACZ,SAAUC,EACV,KAAMC,EACN,YAAAC,EAAcnB,GACd,GAAAt6D,EACA,SAAU07D,EACV,qBAAAlG,EACA,WAAA/nB,EAAaipB,EACjB,EAAMla,EACJ,KAAM,CACJ,MAAA72C,EACA,YAAAq0D,EACA,YAAAlB,EACA,SAAU6C,EACV,kBAAAvB,EACA,YAAAwB,EACA,UAAA7C,EACA,eAAAkB,EACA,SAAU4B,CACd,EAAMre,EAAAA,WAAWoc,EAAO,EAChBnQ,EAAWqS,GAAuBP,EAAeI,CAAc,EAC/D9xE,EAAQ8b,EAAM,QAAQ3F,CAAE,EACxB0X,EAAOnf,EAAAA,QAAQ,KAAO,CAC1B,SAAU,CACR,YAAAyhE,EACA,MAAAnwE,EACA,MAAA8b,CACN,EACI,GAAG61D,CACP,GAAM,CAACxB,EAAawB,EAAY3xE,EAAO8b,CAAK,CAAC,EACrCo2D,EAA4BxjE,EAAAA,QAAQ,IAAMoN,EAAM,MAAMA,EAAM,QAAQ3F,CAAE,CAAC,EAAG,CAAC2F,EAAO3F,CAAE,CAAC,EACrF,CACJ,KAAApE,EACA,KAAAjY,EACA,OAAAq4E,EACA,WAAYC,CAChB,EAAM1G,GAAa,CACf,GAAAv1D,EACA,KAAA0X,EACA,SAAU+xC,EAAS,UACnB,qBAAsB,CACpB,sBAAuBsS,EACvB,GAAGvG,CACT,CACA,CAAG,EACK,CACJ,OAAA3uD,EACA,eAAA0oD,EACA,eAAA4C,EACA,WAAAwC,EACA,WAAYuH,EACZ,UAAAzsD,EACA,WAAAulD,EACA,KAAAlX,EACA,oBAAAmX,EACA,UAAAz4B,CACJ,EAAMk4B,GAAa,CACf,GAAA10D,EACA,KAAA0X,EACA,WAAY,CAAE,GAAGqjD,GACf,GAAGO,CACT,EACI,SAAU7R,EAAS,SACvB,CAAG,EACKpO,EAAahC,GAAgB4iB,EAAqBC,CAAmB,EACrE1B,EAAY,EAAQ3zD,EACpBs1D,EAAe3B,GAAa,CAACJ,GAAqB1B,GAAaI,CAAW,GAAKJ,GAAaK,CAAS,EACrGqD,GAA2B,CAACnC,GAAkBjF,EAC9CqH,GAAyBD,IAA4BD,EAAe3/B,EAAY,KAEhFm7B,GAAiBwE,EAAeE,KADrBX,GAAwCG,GACgD,CACvG,MAAOD,EACP,eAAAzJ,EACA,YAAA2G,EACA,UAAAC,EACA,MAAAlvE,CACJ,CAAG,EAAI,KACC6wE,GAAWhC,GAAaI,CAAW,GAAKJ,GAAaK,CAAS,EAAI0C,EAAY,CAClF,GAAAz7D,EACA,MAAA2F,EACA,YAAAmzD,EACA,UAAAC,CACJ,CAAG,EAAIlvE,EACCsnE,GAAWtqD,GAAU,KAAO,OAASA,EAAO,GAC5CsxC,EAAWvhD,EAAAA,OAAO,CACtB,SAAAu6D,GACA,MAAAxrD,EACA,SAAA+0D,GACA,YAAAV,CACJ,CAAG,EACKG,GAAmBx0D,IAAUwyC,EAAS,QAAQ,MAC9CmkB,GAA6BjB,EAAqB,CACtD,OAAAx0D,EACA,YAAAmzD,EACA,WAAAhF,EACA,UAAAwF,EACA,GAAAx6D,EACA,MAAAnW,EACA,MAAA8b,EACA,SAAUwyC,EAAS,QAAQ,SAC3B,cAAeA,EAAS,QAAQ,MAChC,oBAAqBA,EAAS,QAAQ,YACtC,WAAA1K,EACA,YAAa0K,EAAS,QAAQ,UAAY,IAC9C,CAAG,EACK8iB,GAAmBD,GAAoB,CAC3C,SAAU,CAACsB,GACX,MAAAzyE,EACA,KAAAlG,EACA,KAAAiY,CACJ,CAAG,EACD5E,OAAAA,EAAAA,UAAU,IAAM,CACVwjE,GAAariB,EAAS,QAAQ,WAAauiB,KAC7CviB,EAAS,QAAQ,SAAWuiB,IAG1BV,IAAgB7hB,EAAS,QAAQ,cACnCA,EAAS,QAAQ,YAAc6hB,GAG7Br0D,IAAUwyC,EAAS,QAAQ,QAC7BA,EAAS,QAAQ,MAAQxyC,EAE7B,EAAG,CAAC60D,EAAWE,GAAUV,EAAar0D,CAAK,CAAC,EAC5C3O,EAAAA,UAAU,IAAM,CACd,GAAIm6D,KAAahZ,EAAS,QAAQ,SAChC,OAGF,GAAIgZ,IAAY,MAAQhZ,EAAS,QAAQ,UAAY,KAAM,CACzDA,EAAS,QAAQ,SAAWgZ,GAC5B,MACF,CAEA,MAAMlG,GAAY,WAAW,IAAM,CACjC9S,EAAS,QAAQ,SAAWgZ,EAC9B,EAAG,EAAE,EACL,MAAO,IAAM,aAAalG,EAAS,CACrC,EAAG,CAACkG,EAAQ,CAAC,EACN,CACL,OAAAtqD,EACA,YAAAiyD,EACA,WAAAnE,EACA,KAAAj9C,EACA,KAAA9b,EACA,MAAA/R,EACA,SAAA6wE,GACA,MAAA/0D,EACA,OAAAq2D,EACA,UAAAxB,EACA,WAAAxF,EACA,UAAAvlD,EACA,KAAA9rB,EACA,UAAAo1E,EACA,KAAAjb,EACA,WAAAzC,EACA,oBAAA4Z,EACA,oBAAAgH,EACA,oBAAAC,EACA,UAAWjB,IAA8CtD,GACzD,WAAY4E,GAAa,CAC7B,EAEE,SAASA,IAAgB,CACvB,GACAtB,IACAd,IAAoBhiB,EAAS,QAAQ,WAAatuD,EAChD,OAAOixE,GAGT,GAAI,EAAAsB,IAA4B,CAACpgB,GAAgBuT,CAAc,GAAK,CAAC9hB,KAIjE+sB,GAAa8B,IACf,OAAOjgB,GAAI,WAAW,SAAS,CAAE,GAAG5O,EAClC,SAAUotB,EAClB,CAAO,CAIL,CACF,CAEA,SAASiB,GAAuBP,EAAeI,EAAgB,CAC7D,IAAIa,EAAuBC,EAE3B,OAAI,OAAOlB,GAAkB,UACpB,CACL,UAAWA,EAEX,UAAW,EACjB,EAGS,CACL,WAAYiB,EAAwBjB,GAAiB,KAAO,OAASA,EAAc,YAAc,KAAOiB,EAAwBb,EAAe,UAC/I,WAAYc,EAAwBlB,GAAiB,KAAO,OAASA,EAAc,YAAc,KAAOkB,EAAwBd,EAAe,SACnJ,CACA,CAgBoBvW,GAAa,KAAMA,GAAa,MAAOA,GAAa,GAAIA,GAAa,KChoBlF,SAASsX,GAAU,CACxB,KAAA9qC,EACA,eAAA0lB,EACA,cAAAqlB,EACA,aAAAjkB,EACA,YAAAC,EACA,WAAAikB,EACA,UAAA92E,CACF,EAAmB,OACjB,KAAM,CAACqrE,EAAU0L,CAAW,EAAI/4E,EAAM,SAAwB,IAAI,EAE5Dk7D,EAAUD,GACdF,GAAU+I,GAAe,CAAE,qBAAsB,CAAE,SAAU,CAAA,EAAK,EAClE/I,GAAU2G,EAAc,CAAA,EAGpBsX,EAAiBvkE,EAAAA,QAAQ,IAAM,CACnC,MAAMwkE,EAA8D,CAAA,EACpE,SAAS/mB,EAASryD,EAAgByhB,EAAe,CAC/C23D,EAAM,KAAK,CAAE,GAAIp5E,EAAK,GAAI,KAAAA,EAAM,MAAAyhB,EAAO,EACvC,UAAWK,KAAS9hB,EAAK,UAAY,CAAA,EACnCqyD,EAASvwC,EAAOL,EAAQ,CAAC,CAE7B,CACA,OAAA4wC,EAASpkB,EAAM,CAAC,EACTmrC,CACT,EAAG,CAACnrC,CAAI,CAAC,EAEHorC,EAAkBlkB,cAAax3C,GAA0B,CAC7Du7D,EAAYv7D,EAAM,OAAO,EAAY,CACvC,EAAG,CAAA,CAAE,EAEC27D,EAAgBnkB,EAAAA,YACnBx3C,GAAwB,SACvB,KAAM,CAAE,OAAAuF,EAAQ,KAAAi3C,CAAA,EAASx8C,EAMzB,GALAu7D,EAAY,IAAI,EAEZ,CAAC/e,GAAQj3C,EAAO,KAAOi3C,EAAK,IAG5B,CADegf,EAAe,KAAM74B,GAAMA,EAAE,KAAOp9B,EAAO,EAAE,EAC/C,OAEjB,MAAMq2D,EAAWJ,EAAe,KAAM74B,GAAMA,EAAE,KAAO6Z,EAAK,EAAE,EAI5D,GAHI,CAACof,KAEe/gE,EAAA+gE,EAAS,KAAK,WAAd,YAAA/gE,EAAwB,KAAMsJ,GAAUA,EAAM,KAAOoB,EAAO,KAC/D,OAEjB,MAAM0wC,EAAiB2lB,EAAS,KAAK,GAC/BC,IAAc/gE,EAAA8gE,EAAS,KAAK,WAAd,YAAA9gE,EAAwB,SAAU,EAEtDwgE,GAAA,MAAAA,EAAa/1D,EAAO,GAAc0wC,EAAgB4lB,EACpD,EACA,CAACL,EAAgBF,CAAU,CAAA,EAG7B,cACG,MAAA,CAAI,UAAW,+CAA+C92E,GAAa,EAAE,GAC5E,SAAA,CAAAuQ,EAAAA,IAAC,MAAA,CAAI,UAAU,mCACb,SAAAA,EAAAA,IAAC,MAAG,UAAU,0CAA0C,kBAAM,CAAA,CAChE,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,6BACb,SAAAsF,EAAAA,KAACw0D,IAAW,QAAAnR,EAAkB,YAAage,EAAiB,UAAWC,EACrE,SAAA,CAAA5mE,MAACwjE,IAAgB,MAAOiD,EAAe,IAAK74B,GAAMA,EAAE,EAAE,EAAG,SAAUk1B,GAChE,WAAe,IAAI,CAAC,CAAE,GAAAn5D,EAAI,KAAArc,EAAM,MAAAyhB,KAC/B/O,EAAAA,IAAC+mE,GAAA,CAEC,GAAAp9D,EACA,KAAArc,EACA,MAAAyhB,EACA,eAAAkyC,EACA,cAAAqlB,EACA,aAAAjkB,EACA,YAAAC,CAAA,EAPK34C,CAAA,CASR,EACH,QACCg4D,GAAA,CACE,SAAA7G,QACE,MAAA,CAAI,UAAU,0DACZ,UAAAh1D,EAAA2gE,EAAe,KAAM74B,GAAMA,EAAE,KAAOktB,CAAQ,IAA5C,YAAAh1D,EAA+C,KAAK,KACvD,EACE,IAAA,CACN,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF,CAEJ,CAYA,SAASihE,GAAiB,CACxB,GAAAp9D,EACA,KAAArc,EACA,MAAAyhB,EACA,eAAAkyC,EACA,cAAAqlB,EACA,aAAAjkB,EACA,YAAAC,CACF,EAA0B,CACxB,KAAM,CAAE,WAAAgc,EAAY,UAAAllD,EAAW,WAAA4rC,EAAY,UAAA7e,EAAW,WAAAiR,EAAY,WAAAunB,GAAeoG,GAAY,CAAE,GAAAp7D,EAAI,EAC7Fq9D,EAAa/lB,IAAmB3zD,EAAK,GACrC25E,EAAYX,IAAkBh5E,EAAK,GAEnCsS,EAA6B,CACjC,YAAa,GAAGmP,EAAQ,GAAK,CAAC,KAC9B,UAAWo3B,EAAY,eAAeA,EAAU,CAAC,OAAOA,EAAU,CAAC,SAAW,OAC9E,WAAAiR,EACA,QAASunB,EAAa,GAAM,CAAA,EAGxBuI,EAAczkB,EAAAA,YACjBryC,GAAwB,CACvBA,EAAE,gBAAA,EACFiyC,EAAa/0D,EAAK,EAAE,CACtB,EACA,CAACA,EAAK,GAAI+0D,CAAY,CAAA,EAGlB8kB,EAAmB1kB,EAAAA,YACvB,IAAMH,EAAYh1D,EAAK,EAAE,EACzB,CAACA,EAAK,GAAIg1D,CAAW,CAAA,EAGjB8kB,EAAmB3kB,EAAAA,YACvB,IAAMH,EAAY,IAAI,EACtB,CAACA,CAAW,CAAA,EAGd,OACEtiD,EAAAA,IAAC,MAAA,CAAI,IAAKglD,EAAY,MAAAplD,EACpB,SAAA0F,EAAAA,KAAC,MAAA,CACC,QAAS4hE,EACT,aAAcC,EACd,aAAcC,EACd,UAAW;AAAA;AAAA;AAAA,YAGPJ,EAAa,2BAA6B,0CAA0C;AAAA,YACpFC,GAAa,CAACD,EAAa,mBAAqB,EAAE;AAAA,UAErD,GAAG1I,EACH,GAAGllD,EAEJ,SAAA,CAAApZ,EAAAA,IAAC,OAAA,CAAK,UAAU,0BAA2B,SAAA1S,EAAK,KAAK,EACpDA,EAAK,MACJ0S,EAAAA,IAAC,QAAK,UAAU,uCAAwC,WAAK,KAAK,EAEnE,CAAC1S,EAAK,MACL0S,EAAAA,IAAC,QAAK,UAAU,mCAAoC,WAAK,EAAA,CAAG,CAAA,CAAA,CAAA,EAGlE,CAEJ,CCzKO,SAASqnE,GAAc,CAAE,KAAA/5E,EAAM,aAAAg6E,EAAc,UAAA73E,GAAiC,CACnF,MAAM83E,EAAe9kB,EAAAA,YACnB,CAAC7rC,EAAuBzrB,IAAmB,CACpCmC,GACLg6E,EAAah6E,EAAK,GAAI,CAAE,CAACspB,CAAK,EAAGzrB,EAAO,CAC1C,EACA,CAACmC,EAAMg6E,CAAY,CAAA,EAGrB,OAAKh6E,SAcF,MAAA,CAAI,UAAW,+CAA+CmC,GAAa,EAAE,GAC5E,SAAA,CAAA6V,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,0CAA0C,SAAA,aAAU,EAClEA,EAAAA,IAAC,IAAA,CAAE,UAAU,mCAAoC,WAAK,IAAA,CAAK,CAAA,EAC7D,EACAsF,EAAAA,KAAC,MAAA,CAAI,UAAU,uCACb,SAAA,CAAAA,OAAC,MAAA,CACC,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CAAM,UAAU,qDAAqD,SAAA,KAAE,EACxEA,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAO1S,EAAK,GACZ,SAAQ,GACR,UAAU,uFAAA,CAAA,CACZ,EACF,SAEC,MAAA,CACC,SAAA,CAAA0S,EAAAA,IAAC,QAAA,CAAM,UAAU,qDAAqD,SAAA,OAAI,EAC1EA,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAO1S,EAAK,KACZ,SAAQ,GACR,UAAU,uFAAA,CAAA,CACZ,EACF,SAEC,MAAA,CACC,SAAA,CAAA0S,EAAAA,IAAC,QAAA,CAAM,UAAU,qDAAqD,SAAA,OAAI,EAC1EA,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAO1S,EAAK,MAAQ,GACpB,SAAW8iB,GAAMm3D,EAAa,OAAQn3D,EAAE,OAAO,OAAS,MAAS,EACjE,UAAU,0FACV,YAAY,WAAA,CAAA,CACd,EACF,SAEC,MAAA,CACC,SAAA,CAAApQ,EAAAA,IAAC,QAAA,CAAM,UAAU,qDAAqD,SAAA,YAAS,EAC/EA,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAO1S,EAAK,UAAY,GACxB,SAAW8iB,GAAMm3D,EAAa,WAAYn3D,EAAE,OAAO,OAAS,MAAS,EACrE,UAAU,0FACV,YAAY,cAAA,CAAA,CACd,EACF,SAEC,MAAA,CACC,SAAA,CAAApQ,EAAAA,IAAC,QAAA,CAAM,UAAU,qDAAqD,SAAA,UAAO,EAC7EA,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAO1S,EAAK,QAAU,GACtB,SAAW8iB,GAAMm3D,EAAa,SAAUn3D,EAAE,OAAO,OAAS,MAAS,EACnE,UAAU,0FACV,YAAY,aAAA,CAAA,CACd,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EACF,SAvEG,MAAA,CAAI,UAAW,+CAA+C3gB,GAAa,EAAE,GAC5E,SAAA,CAAAuQ,EAAAA,IAAC,MAAA,CAAI,UAAU,mCACb,SAAAA,EAAAA,IAAC,MAAG,UAAU,0CAA0C,sBAAU,CAAA,CACpE,EACAA,EAAAA,IAAC,OAAI,UAAU,6BACb,eAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,uCAAA,CAAqC,CAAA,CAClF,CAAA,EACF,CAkEN,CCpFA,MAAMwnE,GAAe,CACnB,CAAE,IAAK,UAAW,MAAO,UAAW,KAAM,MAAA,EAC1C,CAAE,IAAK,gBAAiB,MAAO,iBAAkB,KAAM,SAAmB,QAAS,CAAC,MAAO,SAAU,cAAe,gBAAgB,CAAA,EACpI,CAAE,IAAK,iBAAkB,MAAO,kBAAmB,KAAM,SAAmB,QAAS,CAAC,QAAS,SAAU,MAAO,gBAAiB,eAAgB,cAAc,CAAA,EAC/J,CAAE,IAAK,aAAc,MAAO,cAAe,KAAM,SAAmB,QAAS,CAAC,QAAS,SAAU,MAAO,UAAW,UAAU,CAAA,EAC7H,CAAE,IAAK,MAAO,MAAO,MAAO,KAAM,MAAA,EAClC,CAAE,IAAK,UAAW,MAAO,UAAW,KAAM,MAAA,EAC1C,CAAE,IAAK,SAAU,MAAO,SAAU,KAAM,MAAA,EACxC,CAAE,IAAK,QAAS,MAAO,QAAS,KAAM,MAAA,EACtC,CAAE,IAAK,SAAU,MAAO,SAAU,KAAM,MAAA,EACxC,CAAE,IAAK,aAAc,MAAO,aAAc,KAAM,MAAA,EAChD,CAAE,IAAK,QAAS,MAAO,QAAS,KAAM,MAAA,EACtC,CAAE,IAAK,WAAY,MAAO,YAAa,KAAM,MAAA,EAC7C,CAAE,IAAK,aAAc,MAAO,cAAe,KAAM,MAAA,EACjD,CAAE,IAAK,eAAgB,MAAO,gBAAiB,KAAM,MAAA,EACrD,CAAE,IAAK,cAAe,MAAO,eAAgB,KAAM,MAAA,EACnD,CAAE,IAAK,cAAe,MAAO,eAAgB,KAAM,MAAA,EACnD,CAAE,IAAK,SAAU,MAAO,SAAU,KAAM,MAAA,EACxC,CAAE,IAAK,UAAW,MAAO,UAAW,KAAM,MAAA,CAC5C,EAEO,SAASC,GAAW,CAAE,KAAAn6E,EAAM,aAAAg6E,EAAc,UAAA73E,GAA8B,CAC7E,MAAMmQ,EAAQsC,EAAAA,QAAQ,KAAM5U,GAAA,YAAAA,EAAM,QAAS,GAAI,CAACA,GAAA,YAAAA,EAAM,KAAK,CAAC,EAEtDi6E,EAAe9kB,EAAAA,YACnB,CAAC7rC,EAAezrB,IAAmB,CACjC,GAAI,CAACmC,EAAM,OACX,MAAMo6E,EAAW,CAAE,GAAG9nE,EAAO,CAACgX,CAAK,EAAGzrB,CAAA,EACtCm8E,EAAah6E,EAAK,GAAI,CAAE,MAAOo6E,EAAU,CAC3C,EACA,CAACp6E,EAAMsS,EAAO0nE,CAAY,CAAA,EAGtBK,EAAyBllB,EAAAA,YAC7B,CAAC7rC,EAAeW,EAAoBpsB,IAAkB,CACpD,GAAI,CAACmC,EAAM,OACX,MAAMs6E,EAAehoE,EAAMgX,CAAK,EAChC,IAAIiuC,EAEA15D,IAAU,IAAMosB,IAAe,OACjCstC,EAAW,OACF15D,IAAU,IACnB05D,EAAW,CACT,GAAI,OAAO+iB,GAAiB,UAAYA,IAAiB,KAAOA,EAAe,CAAA,EAC/E,CAACrwD,CAAU,EAAG,MAAA,EAEhB,OAAO,KAAKstC,CAAmC,EAAE,QAAS56D,GAAQ,CAC3D46D,EAAqC56D,CAAG,IAAM,QACjD,OAAQ46D,EAAqC56D,CAAG,CAEpD,CAAC,EACG,OAAO,KAAK46D,CAAmC,EAAE,SAAW,IAC9DA,EAAW,SAEJ,OAAO+iB,GAAiB,UAAYA,IAAiB,KAC9D/iB,EAAW,CAAE,GAAI+iB,EAAyC,CAACrwD,CAAU,EAAGpsB,CAAA,EAExE05D,EAAW,CAAE,KAAM+iB,EAAoC,CAACrwD,CAAU,EAAGpsB,CAAA,EAGvE,MAAMu8E,EAAW,CAAE,GAAG9nE,EAAO,CAACgX,CAAK,EAAGiuC,CAAA,EACtCyiB,EAAah6E,EAAK,GAAI,CAAE,MAAOo6E,EAAU,CAC3C,EACA,CAACp6E,EAAMsS,EAAO0nE,CAAY,CAAA,EAG5B,GAAI,CAACh6E,EACH,cACG,MAAA,CAAI,UAAW,+CAA+CmC,GAAa,EAAE,GAC5E,SAAA,CAAAuQ,EAAAA,IAAC,MAAA,CAAI,UAAU,mCACb,SAAAA,EAAAA,IAAC,MAAG,UAAU,0CAA0C,iBAAK,CAAA,CAC/D,EACAA,EAAAA,IAAC,OAAI,UAAU,6BACb,eAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,kCAAA,CAAgC,CAAA,CAC7E,CAAA,EACF,EAIJ,MAAM6nE,EAAmB,CAACjxD,EAAezrB,IAAmB,CAC1D,GAAI,OAAOA,GAAU,UAAYA,IAAU,KAAM,CAC/C,MAAMmsB,EAAansB,EACnB,aACG,MAAA,CAAI,UAAU,YACZ,SAAA,CAAC,OAAQ,KAAM,KAAM,KAAM,IAAI,EAAE,IAAK0tB,GACrCvT,EAAAA,KAAC,MAAA,CAAa,UAAU,0BACtB,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CAAM,UAAU,+BAAgC,SAAA6Y,EAAG,EACpD7Y,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAOsX,EAAWuB,CAAE,GAAK,GACzB,SAAWzI,GAAMu3D,EAAuB/wD,EAAOiC,EAAIzI,EAAE,OAAO,KAAK,EACjE,UAAU,wFACV,YAAayI,IAAO,OAAS,aAAe,GAAGA,CAAE,QAAA,CAAA,CACnD,GARQA,CASV,CACD,EACH,CAEJ,CAEA,OAAI,OAAO1tB,GAAU,SAEjB6U,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAA7U,EACA,SAAWilB,GAAMm3D,EAAa3wD,EAAOxG,EAAE,OAAO,OAAS,MAAS,EAChE,UAAU,yFAAA,CAAA,EAMdpQ,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,MAAM,GACN,SAAWoQ,GAAMm3D,EAAa3wD,EAAOxG,EAAE,OAAO,OAAS,MAAS,EAChE,UAAU,0FACV,YAAY,aAAA,CAAA,CAGlB,EAEA,cACG,MAAA,CAAI,UAAW,+CAA+C3gB,GAAa,EAAE,GAC5E,SAAA,CAAA6V,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,0CAA0C,SAAA,QAAK,EAC7DA,EAAAA,IAAC,IAAA,CAAE,UAAU,mCAAoC,WAAK,IAAA,CAAK,CAAA,EAC7D,QACC,MAAA,CAAI,UAAU,uCACZ,SAAAwnE,GAAa,IAAK5wD,GAAU,CAC3B,MAAMzrB,EAAQyU,EAAMgX,EAAM,GAAG,EAC7B,OAA2BzrB,GAAU,MAAQA,IAAU,GAAW,YAG/D,MAAA,CACC,SAAA,CAAA6U,EAAAA,IAAC,QAAA,CAAM,UAAU,qDACd,SAAA4W,EAAM,MACT,EACCixD,EAAiBjxD,EAAM,IAAKzrB,CAAK,CAAA,CAAA,EAJ1ByrB,EAAM,GAKhB,CAEJ,CAAC,CAAA,CACH,CAAA,EACF,CAEJ,CCnJO,SAASkxD,GAAiB,CAAE,OAAApqB,EAAQ,UAAAjuD,GAAoC,CAC7E,MAAMs4E,EAAarqB,EAAO,OAAQttC,GAAMA,EAAE,WAAa,OAAO,EAAE,OAC1D43D,EAAetqB,EAAO,OAAQttC,GAAMA,EAAE,WAAa,SAAS,EAAE,OAEpE,OAAIstC,EAAO,SAAW,SAEjB,MAAA,CAAI,UAAW,uDAAuDjuD,GAAa,EAAE,GACpF,SAAA,CAAAuQ,EAAAA,IAAC,OAAA,CAAK,UAAU,+CAAA,CAAgD,EAAE,sBAAA,EAEpE,SAKD,MAAA,CAAI,UAAW,mCAAmCvQ,GAAa,EAAE,GAC/D,SAAA,CAAAs4E,EAAa,GACZziE,OAAC,OAAA,CAAK,UAAU,yCACd,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CAAK,UAAU,6CAAA,CAA8C,EAC7D+nE,EAAW,SAAOA,IAAe,EAAI,IAAM,EAAA,EAC9C,EAEDC,EAAe,GACd1iE,OAAC,OAAA,CAAK,UAAU,4CACd,SAAA,CAAAtF,EAAAA,IAAC,OAAA,CAAK,UAAU,gDAAA,CAAiD,EAChEgoE,EAAa,WAASA,IAAiB,EAAI,IAAM,EAAA,CAAA,CACpD,CAAA,EAEJ,CAEJ,CCNO,SAASC,GAAO,CACrB,gBAAAhoB,EACA,gBAAArH,EACA,eAAAC,EACA,aAAAE,EACA,oBAAAC,EACA,sBAAAC,EACA,UAAAxpD,CACF,EAAgB,CACd,MAAMwqB,EAAW/X,EAAAA,QAAQ,IAAM89C,GAAkBC,CAAe,EAAG,CAACA,CAAe,CAAC,EAC9EnnC,EAAQmB,EAAA,EACR,CAACiuD,EAAWC,CAAY,EAAIznE,EAAAA,SAAiC,YAAY,EACzE0nE,EAAe7nE,EAAAA,OAAyB,IAAI,EAE5Cq3C,EAAW9+B,EAAM,SACjBuvD,EAAenmE,EAAAA,QAAQ,IACtB4W,EAAM,eACJA,EAAM,YAAY,IAAIA,EAAM,cAAc,GAAK,KADpB,KAEjC,CAACA,EAAM,YAAaA,EAAM,cAAc,CAAC,EAMtCwvD,EAJmBpmE,EAAAA,QACvB,IAAMqY,GAAoBq9B,EAAS,KAAK,EACxC,CAACA,EAAS,KAAK,CAAA,EAEK,EAEhB2wB,EAAmB9lB,EAAAA,YAAY,IAAM,CACzC,KAAM,CAAE,SAAU+lB,EAAiB,oBAAAC,CAAA,EAAwBxuD,EAAS,SAAA,EAC9D7pB,EAASwqD,GAAe,UAAU4tB,CAAe,EACvD,GAAKp4E,EAAO,QAQVq4E,EAAoB,CAAA,CAAE,MARH,CACnB,MAAM/qB,EAAUttD,EAAO,MAA4E,OAAO,IAAKs4E,IAAS,CACtH,KAAMA,EAAI,KAAK,KAAK,GAAG,EACvB,QAASA,EAAI,QACb,SAAU,OAAA,EACV,EACFD,EAAoB/qB,CAAM,CAC5B,CAGF,EAAG,CAACzjC,CAAQ,CAAC,EAEbtZ,EAAAA,UAAU,IAAM,CACd,MAAM64C,EAAcv/B,EAAS,UAAU,CAACroB,EAASkwD,IAAa,CACxDlwD,EAAQ,WAAakwD,EAAS,UAChCymB,EAAA,CAEJ,CAAC,EACD,OAAAA,EAAA,EACO/uB,CACT,EAAG,CAACv/B,EAAUsuD,CAAgB,CAAC,EAE/B,MAAMI,EAAqBlmB,EAAAA,YACxBmmB,GAAuB,CACtB,GAAI,CAAC9vD,EAAM,eAAgB,OAC3B,MAAMuvD,EAAevvD,EAAM,YAAY,IAAIA,EAAM,cAAc,EAC/D,GAAI,CAACuvD,EAAc,OAEnB,MAAMtzD,EAASE,GAAgB,IAAIozD,EAAa,IAAI,IAC5BtzD,GAAA,YAAAA,EAAQ,kBAAmB,KAGjD+D,EAAM,SAASA,EAAM,eAAgB8vD,CAAU,CAEnD,EACA,CAAC9vD,CAAK,CAAA,EAGF+vD,EAAapmB,EAAAA,YAAY,IAAM,CACnC,MAAMvlB,EAAO,KAAK,UAAUpkB,EAAM,SAAU,KAAM,CAAC,EAC7CgwD,EAAO,IAAI,KAAK,CAAC5rC,CAAI,EAAG,CAAE,KAAM,mBAAoB,EACpD1Q,EAAM,IAAI,gBAAgBs8C,CAAI,EAC9Bj1D,EAAI,OAAO,SAAS,cAAc,GAAG,EAC3CA,EAAE,KAAO2Y,EACT3Y,EAAE,SAAW,GAAGiF,EAAM,SAAS,MAAQ,UAAU,QACjDjF,EAAE,MAAA,EACF,IAAI,gBAAgB2Y,CAAG,CACzB,EAAG,CAAC1T,EAAM,QAAQ,CAAC,EAEbiwD,EAAatmB,EAAAA,YAChBryC,GAA2C,OAC1C,MAAMwuB,GAAO94B,EAAAsK,EAAE,OAAO,QAAT,YAAAtK,EAAiB,GAC9B,GAAI,CAAC84B,EAAM,OAEX,MAAMoqC,EAAS,IAAI,WACnBA,EAAO,OAAU/9D,GAAU,OACzB,GAAI,CACF,MAAMsoC,EAAS,KAAK,OAAMztC,EAAAmF,EAAM,SAAN,YAAAnF,EAAc,MAAgB,EACtD1V,EAASwqD,GAAe,UAAUrH,CAAM,EAC9C,GAAI,CAACnjD,EAAO,QAAS,CACnB,MAAMmzB,EAAUnzB,EAAO,MAA4E,OACnG6pB,EAAS,WAAW,oBAClBsJ,EAAO,IAAKmlD,IAAS,CACnB,KAAMA,EAAI,KAAK,KAAK,GAAG,EACvB,QAASA,EAAI,QACb,SAAU,OAAA,EACV,CAAA,EAEJ,MACF,CACIzuD,EAAS,SAAA,EAAW,YAAY7pB,EAAO,IAAI,CAC7C,MAAQ,CACN6pB,EAAS,SAAA,EAAW,oBAAoB,CACtC,CAAE,KAAM,OAAQ,QAAS,oBAAqB,SAAU,OAAA,CAAQ,CACjE,CACH,CACF,EACA+uD,EAAO,WAAWpqC,CAAI,EACtBxuB,EAAE,OAAO,MAAQ,EACnB,EACA,CAAC6J,CAAQ,CAAA,EAGLgvD,EAAiBxmB,EAAAA,YACrB,CAAC3C,EAAgBoB,EAAwB1tD,IAAmB,CAC1DslB,EAAM,SAASgnC,EAAQoB,EAAgB1tD,CAAK,CAC9C,EACA,CAACslB,CAAK,CAAA,EAGR,OACExT,EAAAA,KAAC,MAAA,CACC,UAAW,iEACTwT,EAAM,YAAc,OAAS,OAAS,EACxC,IAAIrpB,GAAa,EAAE,GAEnB,SAAA,CAAA6V,EAAAA,KAAC,SAAA,CAAO,UAAU,qEAChB,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,KAAA,CAAG,UAAU,wBAAwB,SAAA,eAAY,EAClDA,EAAAA,IAAC,OAAA,CAAK,UAAU,8BAA8B,SAAA,QAAA,CAAM,CAAA,EACtD,EACAsF,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC8nE,GAAA,CAAiB,OAAQhvD,EAAM,gBAAA,CAAkB,EAClDxT,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,SAAA,CACC,QAAS8Y,EAAM,KACf,SAAU,CAACA,EAAM,QACjB,UAAU,wEACX,SAAA,MAAA,CAAA,EAGD9Y,EAAAA,IAAC,SAAA,CACC,QAAS8Y,EAAM,KACf,SAAU,CAACA,EAAM,QACjB,UAAU,wEACX,SAAA,MAAA,CAAA,CAED,EACF,EACAxT,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,SAAA,CACC,QAAS6oE,EACT,UAAU,oDACX,SAAA,MAAA,CAAA,EAGD7oE,EAAAA,IAAC,SAAA,CACC,QAAS,IAAA,OAAM,OAAA8F,EAAAsiE,EAAa,UAAb,YAAAtiE,EAAsB,SACrC,UAAU,oDACX,SAAA,MAAA,CAAA,EAGD9F,EAAAA,IAAC,QAAA,CACC,IAAKooE,EACL,KAAK,OACL,OAAO,mBACP,UAAU,SACV,SAAUW,CAAA,CAAA,CACZ,EACF,EACAzjE,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CAAM,UAAU,8BAA8B,SAAA,cAAW,EAC1DsF,EAAAA,KAAC,SAAA,CACC,MAAOwT,EAAM,iBACb,SAAW1I,GAAM0I,EAAM,cAAc1I,EAAE,OAAO,KAAK,EACnD,UAAU,iFAEV,SAAA,CAAApQ,EAAAA,IAAC,SAAA,CAAO,MAAM,OAAO,SAAA,OAAI,EACzBA,EAAAA,IAAC,SAAA,CAAO,MAAM,KAAK,SAAA,KAAE,EACrBA,EAAAA,IAAC,SAAA,CAAO,MAAM,KAAK,SAAA,KAAE,EACrBA,EAAAA,IAAC,SAAA,CAAO,MAAM,KAAK,SAAA,KAAE,EACrBA,EAAAA,IAAC,SAAA,CAAO,MAAM,KAAK,SAAA,KAAE,EACrBA,EAAAA,IAAC,SAAA,CAAO,MAAM,MAAM,SAAA,KAAA,CAAG,CAAA,CAAA,CAAA,CACzB,EACF,EACAsF,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CAAM,UAAU,8BAA8B,SAAA,SAAM,EACrDsF,EAAAA,KAAC,SAAA,CACC,MAAOwT,EAAM,UACb,SAAW1I,GAAM0I,EAAM,aAAa1I,EAAE,OAAO,KAAyB,EACtE,UAAU,iFAEV,SAAA,CAAApQ,EAAAA,IAAC,SAAA,CAAO,MAAM,QAAQ,SAAA,QAAK,EAC3BA,EAAAA,IAAC,SAAA,CAAO,MAAM,OAAO,SAAA,MAAA,CAAI,CAAA,CAAA,CAAA,CAC3B,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EACF,EACAsF,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACb,SAAA,CAAAtF,EAAAA,IAAC,QAAA,CAAM,UAAU,qBACf,SAAAA,EAAAA,IAAC4iD,GAAA,CACC,eAAgB+lB,EAChB,eAAgB7vD,EAAM,cAAA,CAAA,EAE1B,EACA9Y,EAAAA,IAAC,QAAA,CAAM,UAAU,qBACf,SAAAA,EAAAA,IAACqmE,GAAA,CACC,KAAMzuB,EAAS,KACf,eAAgB9+B,EAAM,eACtB,cAAeA,EAAM,cACrB,aAAcA,EAAM,WACpB,YAAaA,EAAM,UACnB,WAAYmwD,CAAA,CAAA,EAEhB,EACAjpE,EAAAA,IAAC,OAAA,CAAK,UAAU,yBACd,SAAAA,EAAAA,IAACoiD,GAAA,CACC,SAAAxK,EACA,eAAgB9+B,EAAM,eACtB,cAAeA,EAAM,cACrB,aAAcA,EAAM,WACpB,YAAaA,EAAM,UACnB,UAAWA,EAAM,UACjB,WAAYwvD,EACZ,YAAa1wB,EAAS,YACtB,gBAAAgB,EACA,eAAAC,EACA,aAAAE,EACA,oBAAAC,EACA,sBAAAC,CAAA,CAAA,EAEJ,QACC,QAAA,CAAM,UAAU,qBACf,SAAA3zC,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACb,SAAA,CAAAtF,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMmoE,EAAa,YAAY,EACxC,UAAW,0DACTD,IAAc,aACV,uCACA,6CACN,GACD,SAAA,YAAA,CAAA,EAGDloE,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMmoE,EAAa,OAAO,EACnC,UAAW,0DACTD,IAAc,QACV,uCACA,6CACN,GACD,SAAA,OAAA,CAAA,CAED,EACF,EACAloE,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACZ,aAAc,aACbA,EAAAA,IAACqnE,GAAA,CACC,KAAMgB,EACN,aAAcvvD,EAAM,UAAA,CAAA,EAGtB9Y,EAAAA,IAACynE,GAAA,CACC,KAAMY,EACN,aAAcvvD,EAAM,UAAA,CAAA,CACtB,CAEJ,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CAGN,CC7SO,MAAMowD,GAAa,CACxB,GAAI,CAEF,UAAW,YACX,WAAY,cACZ,UAAW,mBACX,WAAY,iBACZ,QAAS,oBACT,SAAU,kBACV,SAAU,aACV,WAAY,kBACZ,OAAQ,UACR,YAAa,cACb,cAAe,qBAGf,OAAQ,YACR,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,OAAQ,cACR,OAAQ,aACR,OAAQ,cACR,KAAM,QACN,OAAQ,QACR,KAAM,OACN,OAAQ,gBACR,OAAQ,SACR,YAAa,eAGb,iBAAkB,sBAClB,cAAe,qBACf,UAAW,cACX,YAAa,mBACb,MAAO,QACP,OAAQ,SACR,QAAS,QACT,WAAY,uBACZ,aAAc,mBACd,cAAe,0BACf,gBAAiB,4BACjB,UAAW,sBACX,oBAAqB,8BACrB,aAAc,qBACd,mBAAoB,4BACpB,cAAe,wBAGf,SAAU,oBACV,SAAU,mBACV,OAAQ,SACR,KAAM,UACN,QAAS,cACT,OAAQ,UACR,IAAK,YACL,MAAO,eACP,SAAU,WACV,IAAK,YACL,WAAY,oBACZ,UAAW,WAAA,EAEb,GAAI,CAEF,UAAW,YACX,WAAY,aACZ,UAAW,oBACX,WAAY,kBACZ,QAAS,oBACT,SAAU,mBACV,SAAU,WACV,WAAY,kBACZ,OAAQ,YACR,YAAa,eACb,cAAe,kBAGf,OAAQ,aACR,KAAM,OACN,OAAQ,SACR,MAAO,iBACP,OAAQ,cACR,OAAQ,cACR,OAAQ,cACR,KAAM,OACN,OAAQ,SACR,KAAM,OACN,OAAQ,gBACR,OAAQ,SACR,YAAa,eAGb,iBAAkB,oBAClB,cAAe,iBACf,UAAW,aACX,YAAa,sBACb,MAAO,QACP,OAAQ,SACR,QAAS,UACT,WAAY,sBACZ,aAAc,gBACd,cAAe,iBACf,gBAAiB,0BACjB,UAAW,kBACX,oBAAqB,8BACrB,aAAc,uBACd,mBAAoB,+BACpB,cAAe,0BAGf,SAAU,oBACV,SAAU,oBACV,OAAQ,SACR,KAAM,OACN,QAAS,WACT,OAAQ,SACR,IAAK,WACL,MAAO,aACP,SAAU,WACV,IAAK,YACL,WAAY,cACZ,UAAW,UAAA,CAEf,EAEO,SAASj4C,GAAEhnC,EAA6Ck/E,EAAiB,KAAc,CAC5F,MAAMC,EAAOF,GAAWC,CAAI,EACtBE,EAASH,GAAW,GAC1B,OAAOE,GAAA,YAAAA,EAAOn/E,KAAQo/E,EAAOp/E,CAAG,GAAKA,CACvC,CAcO,SAASq/E,GAAaC,EAAyBC,EAAgB,GAAc,CAClF,MAAMjqE,EAAU,OAAOgqE,GAAW,SAAW,WAAWA,EAAO,QAAQ,YAAa,EAAE,CAAC,GAAK,EAAIA,EAC1FE,EAAY,IAAI,KAAK,aAAa,QAAS,CAC/C,sBAAuB,EACvB,sBAAuB,CAAA,CACxB,EAAE,OAAOlqE,CAAO,EAEjB,OAAOiqE,EAAgB,MAAMC,CAAS,GAAKA,CAC7C,CAEA,MAAMC,GAAiB,CACrB,UAAW,WAAY,QAAS,QAAS,MAAO,OAChD,OAAQ,UAAW,YAAa,UAAW,WAAY,UACzD,EAEMC,GAAiB,CACrB,UAAW,WAAY,QAAS,QAAS,MAAO,OAChD,OAAQ,SAAU,YAAa,UAAW,WAAY,UACxD,EAKO,SAASC,GAAqBC,EAA0BV,EAAiB,KAAc,CAC5F,MAAM7pE,EAAO,OAAOuqE,GAAc,SAAW,IAAI,KAAKA,CAAS,EAAIA,EACnE,GAAI,MAAMvqE,EAAK,QAAA,CAAS,EAAG,OAAO,OAAOuqE,CAAS,EAElD,MAAMC,EAAMxqE,EAAK,QAAA,EACXyqE,EAAQZ,IAAS,KAAOO,GAAepqE,EAAK,SAAA,CAAU,EAAIqqE,GAAerqE,EAAK,SAAA,CAAU,EACxF0qE,EAAO1qE,EAAK,YAAA,EAElB,MAAO,GAAGwqE,CAAG,IAAIC,CAAK,IAAIC,CAAI,EAChC,CAMO,SAASC,GAAgBC,EAAsC,CACpE,MAAM3qE,EAAU,KAAK,MACnB,OAAO2qE,GAAgB,SAAW,WAAWA,EAAY,QAAQ,YAAa,EAAE,CAAC,GAAK,EAAIA,CAAA,EAG5F,GAAI3qE,IAAY,EAAG,MAAO,aAC1B,GAAIA,EAAU,EAAG,MAAO,SAAS0qE,GAAgB,KAAK,IAAI1qE,CAAO,CAAC,CAAC,GAEnE,MAAM4qE,EAAS,CAAC,GAAI,OAAQ,MAAO,OAAQ,QAAS,OAAQ,OAAQ,QAAS,UAAW,WAAY,UAAW,SAAS,EAExH,SAASC,EAAOx8B,EAAmB,CACjC,GAAIA,EAAI,GACN,OAAOu8B,EAAOv8B,CAAC,EACjB,GAAWA,EAAI,GACb,MAAO,GAAGu8B,EAAOv8B,EAAI,EAAE,CAAC,SAC1B,GAAWA,EAAI,IAAK,CAClB,MAAMy8B,EAAOz8B,EAAI,GACjB,MAAO,GAAGu8B,EAAO,KAAK,MAAMv8B,EAAI,EAAE,CAAC,CAAC,UAAUy8B,EAAO,EAAIF,EAAOE,CAAI,EAAI,EAAE,GAAG,KAAA,CAC/E,KAAA,QAAWz8B,EAAI,IACN,WAAWw8B,EAAOx8B,EAAI,GAAG,CAAC,GAAG,KAAA,EAC3BA,EAAI,IACN,GAAGu8B,EAAO,KAAK,MAAMv8B,EAAI,GAAG,CAAC,CAAC,UAAUw8B,EAAOx8B,EAAI,GAAG,CAAC,GAAG,KAAA,EACxDA,EAAI,IACN,UAAUw8B,EAAOx8B,EAAI,GAAI,CAAC,GAAG,KAAA,EAC3BA,EAAI,IACN,GAAGw8B,EAAO,KAAK,MAAMx8B,EAAI,GAAI,CAAC,CAAC,SAASw8B,EAAOx8B,EAAI,GAAI,CAAC,GAAG,KAAA,EACzDA,EAAI,IACN,GAAGw8B,EAAO,KAAK,MAAMx8B,EAAI,GAAO,CAAC,CAAC,SAASw8B,EAAOx8B,EAAI,GAAO,CAAC,GAAG,KAAA,EAC/DA,EAAI,KACN,GAAGw8B,EAAO,KAAK,MAAMx8B,EAAI,GAAU,CAAC,CAAC,WAAWw8B,EAAOx8B,EAAI,GAAU,CAAC,GAAG,KAAA,EAEzE,GAAGw8B,EAAO,KAAK,MAAMx8B,EAAI,IAAa,CAAC,CAAC,YAAYw8B,EAAOx8B,EAAI,IAAa,CAAC,GAAG,KAAA,CAE3F,CAEA,MAAO,GAAGw8B,EAAO7qE,CAAO,CAAC,SAC3B,CC/MO,SAAS+qE,GAAuBC,EAA8B,CACnE,MAAM9rB,EAAI8rB,EAAO,YAAA,EAEjB,GAAI9rB,EAAE,SAAS,QAAQ,GAAKA,EAAE,SAAS,OAAO,GAAKA,EAAE,SAAS,QAAQ,GAAKA,EAAE,SAAS,SAAS,EAC7F,MAAO,CACL,QAAS,QACT,GAAI,0BACJ,KAAM,0CACN,YAAa,CACX,MAAO,CACL,CAAE,OAAQ,aAAc,KAAM,sBAAuB,OAAQ,kBAAmB,SAAU,iBAAkB,UAAW,aAAc,aAAc,aAAA,EACnJ,CAAE,OAAQ,aAAc,KAAM,mBAAoB,OAAQ,mBAAoB,SAAU,IAAK,UAAW,aAAc,aAAc,GAAA,EACpI,CAAE,OAAQ,aAAc,KAAM,oBAAqB,OAAQ,iBAAkB,SAAU,IAAK,UAAW,eAAgB,aAAc,aAAA,CAAc,EAErJ,MAAO,CACL,CAAE,MAAO,QAAS,MAAO,EAAA,EACzB,CAAE,MAAO,SAAU,MAAO,EAAA,EAC1B,CAAE,MAAO,OAAQ,MAAO,EAAA,EACxB,CAAE,MAAO,QAAS,MAAO,EAAA,EACzB,CAAE,MAAO,QAAS,MAAO,GAAA,EACzB,CAAE,MAAO,QAAS,MAAO,EAAA,EACzB,CAAE,MAAO,SAAU,MAAO,EAAA,CAAG,CAC/B,EAEF,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,IAAK,QAAS,QAAS,KAAA,EAChC,SAAU,CACR,CACE,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,YAAa,SAAU,YAAa,4BAA6B,aAAc,yBAA0B,WAAY,4BAAA,EAC9I,SAAU,CACR,CAAE,GAAI,QAAS,KAAM,OAAQ,MAAO,CAAE,MAAO,yCAA0C,QAAS,SAAA,EAAa,MAAO,CAAE,SAAU,UAAW,WAAY,YAAY,EACnK,CAAE,GAAI,OAAQ,KAAM,OAAQ,MAAO,CAAE,MAAO,6EAA8E,QAAS,WAAA,EAAe,MAAO,CAAE,SAAU,UAAW,MAAO,mCAAmC,CAAE,CAC9N,EAEF,CACE,GAAI,cACJ,KAAM,YACN,MAAO,CAAE,MAAO,QAAA,EAChB,MAAO,CACL,MAAO,uCACP,WAAY,QACZ,QAAS,CACP,CAAE,IAAK,SAAU,MAAO,YAAA,EACxB,CAAE,IAAK,OAAQ,MAAO,iBAAA,EACtB,CAAE,IAAK,SAAU,MAAO,aAAA,EACxB,CAAE,IAAK,WAAY,MAAO,SAAA,EAC1B,CAAE,IAAK,YAAa,MAAO,cAAA,EAC3B,CAAE,IAAK,eAAgB,MAAO,gBAAA,CAAiB,EAEjD,WAAY,CAAC,CAAE,MAAO,cAAe,CAAA,CACvC,CACF,CACF,CACF,EAIJ,GAAIA,EAAE,SAAS,SAAS,GAAKA,EAAE,SAAS,MAAM,GAAKA,EAAE,SAAS,UAAU,GAAKA,EAAE,SAAS,MAAM,EAC5F,MAAO,CACL,QAAS,QACT,GAAI,wBACJ,KAAM,8CACN,YAAa,CACX,QAAS,CACP,CAAE,IAAK,UAAW,KAAM,iBAAkB,OAAQ,cAAe,MAAO,gBAAiB,UAAW,eAAgB,KAAM,aAAc,IAAK,gBAAiB,OAAQ,kBAAA,EACtK,CAAE,IAAK,UAAW,KAAM,eAAgB,OAAQ,gBAAiB,MAAO,gBAAiB,UAAW,eAAgB,KAAM,aAAc,IAAK,gBAAiB,OAAQ,kBAAA,EACtK,CAAE,IAAK,UAAW,KAAM,iBAAkB,OAAQ,eAAgB,MAAO,eAAgB,UAAW,eAAgB,KAAM,aAAc,IAAK,gBAAiB,OAAQ,kBAAA,CAAmB,CAC3L,EAEF,KAAM,CACJ,GAAI,eACJ,KAAM,SACN,MAAO,CAAE,IAAK,QAAS,QAAS,KAAA,EAChC,SAAU,CACR,CACE,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,YAAa,SAAU,YAAa,4BAA6B,aAAc,yBAA0B,WAAY,4BAAA,EAC9I,SAAU,CACR,CAAE,GAAI,QAAS,KAAM,OAAQ,MAAO,CAAE,MAAO,8CAA+C,QAAS,SAAA,EAAa,MAAO,CAAE,SAAU,UAAW,WAAY,YAAY,EACxK,CAAE,GAAI,OAAQ,KAAM,OAAQ,MAAO,CAAE,MAAO,uEAAwE,QAAS,WAAA,EAAe,MAAO,CAAE,SAAU,UAAW,MAAO,mCAAmC,CAAE,CACxN,EAEF,CACE,GAAI,gBACJ,KAAM,YACN,MAAO,CAAE,MAAO,QAAA,EAChB,MAAO,CACL,MAAO,wCACP,WAAY,UACZ,QAAS,CACP,CAAE,IAAK,MAAO,MAAO,cAAA,EACrB,CAAE,IAAK,OAAQ,MAAO,cAAA,EACtB,CAAE,IAAK,SAAU,MAAO,QAAA,EACxB,CAAE,IAAK,QAAS,MAAO,YAAA,EACvB,CAAE,IAAK,OAAQ,MAAO,eAAA,EACtB,CAAE,IAAK,MAAO,MAAO,qBAAA,EACrB,CAAE,IAAK,SAAU,MAAO,aAAA,CAAc,EAExC,WAAY,CAAC,CAAE,MAAO,WAAY,CAAA,CACpC,CACF,CACF,CACF,EAIJ,GAAIA,EAAE,SAAS,OAAO,GAAKA,EAAE,SAAS,OAAO,GAAKA,EAAE,SAAS,YAAY,GAAKA,EAAE,SAAS,WAAW,EAClG,MAAO,CACL,QAAS,QACT,GAAI,wBACJ,KAAM,0CACN,YAAa,CACX,MAAO,CACL,CAAE,QAAS,WAAY,KAAM,kBAAmB,OAAQ,sBAAuB,KAAM,uBAAwB,MAAO,eAAgB,SAAU,aAAA,EAC9I,CAAE,QAAS,WAAY,KAAM,kBAAmB,OAAQ,gBAAiB,KAAM,IAAK,MAAO,eAAgB,SAAU,GAAA,EACrH,CAAE,QAAS,WAAY,KAAM,kBAAmB,OAAQ,eAAgB,KAAM,IAAK,MAAO,eAAgB,SAAU,aAAA,CAAc,CACpI,EAEF,KAAM,CACJ,GAAI,aACJ,KAAM,SACN,MAAO,CAAE,IAAK,QAAS,QAAS,KAAA,EAChC,SAAU,CACR,CACE,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,YAAa,SAAU,YAAa,4BAA6B,aAAc,yBAA0B,WAAY,4BAAA,EAC9I,SAAU,CACR,CAAE,GAAI,QAAS,KAAM,OAAQ,MAAO,CAAE,MAAO,yCAA0C,QAAS,SAAA,EAAa,MAAO,CAAE,SAAU,UAAW,WAAY,YAAY,EACnK,CAAE,GAAI,OAAQ,KAAM,OAAQ,MAAO,CAAE,MAAO,oEAAqE,QAAS,WAAA,EAAe,MAAO,CAAE,SAAU,UAAW,MAAO,mCAAmC,CAAE,CACrN,EAEF,CACE,GAAI,aACJ,KAAM,YACN,MAAO,CAAE,MAAO,QAAA,EAChB,MAAO,CACL,MAAO,+BACP,WAAY,QACZ,QAAS,CACP,CAAE,IAAK,UAAW,MAAO,WAAA,EACzB,CAAE,IAAK,OAAQ,MAAO,WAAA,EACtB,CAAE,IAAK,SAAU,MAAO,cAAA,EACxB,CAAE,IAAK,OAAQ,MAAO,WAAA,EACtB,CAAE,IAAK,QAAS,MAAO,eAAA,EACvB,CAAE,IAAK,WAAY,MAAO,kBAAA,CAAmB,EAE/C,WAAY,CAAC,CAAE,MAAO,WAAY,CAAA,CACpC,CACF,CACF,CACF,EAKJ,MAAM+rB,EAAaD,EAAO,OAAS,EAAIA,EAAS,6BAChD,MAAO,CACL,QAAS,QACT,GAAI,aAAa,KAAK,IAAA,CAAK,GAC3B,KAAMC,EACN,YAAa,CACX,MAAO,CACL,CAAE,GAAI,UAAW,KAAM,qBAAsB,SAAU,iBAAkB,MAAO,gBAAiB,OAAQ,mBAAA,EACzG,CAAE,GAAI,UAAW,KAAM,qBAAsB,SAAU,oBAAqB,MAAO,gBAAiB,OAAQ,YAAA,EAC5G,CAAE,GAAI,UAAW,KAAM,qBAAsB,SAAU,qBAAsB,MAAO,eAAgB,OAAQ,gBAAA,CAAiB,CAC/H,EAEF,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,IAAK,QAAS,QAAS,KAAA,EAChC,SAAU,CACR,CACE,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,YAAa,SAAU,YAAa,4BAA6B,aAAc,yBAA0B,WAAY,4BAAA,EAC9I,SAAU,CACR,CAAE,GAAI,QAAS,KAAM,OAAQ,MAAO,CAAE,MAAOA,EAAY,QAAS,SAAA,EAAa,MAAO,CAAE,SAAU,UAAW,WAAY,YAAY,EACrI,CAAE,GAAI,OAAQ,KAAM,OAAQ,MAAO,CAAE,MAAO,4DAA6D,QAAS,WAAA,EAAe,MAAO,CAAE,SAAU,UAAW,MAAO,mCAAmC,CAAE,CAC7M,EAEF,CACE,GAAI,aACJ,KAAM,YACN,MAAO,CAAE,MAAO,QAAA,EAChB,MAAO,CACL,MAAO,2BACP,WAAY,QACZ,QAAS,CACP,CAAE,IAAK,KAAM,MAAO,cAAA,EACpB,CAAE,IAAK,OAAQ,MAAO,gBAAA,EACtB,CAAE,IAAK,WAAY,MAAO,UAAA,EAC1B,CAAE,IAAK,QAAS,MAAO,eAAA,EACvB,CAAE,IAAK,SAAU,MAAO,QAAA,CAAS,EAEnC,WAAY,CAAC,CAAE,MAAO,SAAU,CAAA,CAClC,CACF,CACF,CACF,CAEJ,CChLO,MAAMC,GAAsC,CACjD,OACA,OACA,SACA,YACA,WACA,OACA,QACF,EAEO,SAASC,GAAav/E,EAAqC,CAChE,OAAO,OAAOA,GAAU,UAAas/E,GAAmC,SAASt/E,CAAK,CACxF,CA6VO,SAASw/E,GACd1qD,EACmB,WACnB,MAAMsD,EAA4B,CAAA,EAC5BqnD,EAAO3qD,EAAM,iBAKb4qD,EAAc,IAAI,IAAID,EAAK,WAAW,EACtCE,EAAsB,IAAI,IAAIF,EAAK,qBAAuBA,EAAK,WAAW,EAEhF,GAAI3qD,EAAM,SAAW,QAAUA,EAAM,SAAW,OAAQ,CACtD,MAAMx0B,EAAQw0B,EAAM,KAAqC,KACrD,CAAC4qD,EAAY,IAAIp/E,CAAI,GAAK,CAACq/E,EAAoB,IAAIr/E,CAAI,GACzD83B,EAAO,KAAK,CACV,KAAM,qBACN,KAAM,YACN,QAAS,eAAe93B,CAAI,0CAAA,CAC7B,CAEL,CAEA,GAAIw0B,EAAM,SAAW,SAAU,CAE7B,MAAM8qD,EADa9qD,EAAM,KACH,WACtB,GAAI8qD,GAAM,OAAOA,GAAO,UAAY,WAAaA,EAAgC,CAC/E,MAAMC,EAASD,EAA4C,OAAO,YAAyB,GACvFC,GAAQ,CAACH,EAAY,IAAIG,CAAI,GAC/BznD,EAAO,KAAK,CACV,KAAM,qBACN,KAAM,oCACN,QAAS,sBAAsBynD,CAAI,0CAAA,CACpC,CAEL,CACF,CAEA,KAAIllE,EAAA8kE,EAAK,SAAL,YAAA9kE,EAAa,eAAgB,QAAama,EAAM,SAAW,OAAQ,CACrE,MAAMjU,EAAYiU,EAAM,KAAsB,UAAY,GACtDjU,EAAW4+D,EAAK,OAAO,aACzBrnD,EAAO,KAAK,CACV,KAAM,iBACN,KAAM,gBACN,QAAS,YAAYvX,CAAQ,gDAAgD4+D,EAAK,OAAO,WAAW,EAAA,CACrG,CAEL,CAEA,KAAI7kE,EAAA6kE,EAAK,SAAL,YAAA7kE,EAAa,cAAe,QAAaka,EAAM,SAAW,OAAQ,CACpE,MAAMvd,IAASib,EAAAsC,EAAM,KAAsB,UAA5B,YAAAtC,EAAqC,SAAU,EAC1Djb,EAAQkoE,EAAK,OAAO,YACtBrnD,EAAO,KAAK,CACV,KAAM,iBACN,KAAM,eACN,QAAS,iBAAiB7gB,CAAK,+CAA+CkoE,EAAK,OAAO,UAAU,EAAA,CACrG,CAEL,CAGA,GAAIA,EAAK,SAAW3qD,EAAM,SAAW,OAAQ,CAC3C,MAAMgW,EAAOhW,EAAM,KACbw+B,EAAImsB,EAAK,QAAQ,KAAMK,GAAOA,EAAG,aAAeh1C,EAAK,IAAI,EAC/D,GAAIwoB,EAAG,CACL,UAAWX,KAAU7nB,EAAK,SAAW,CAAA,EAC/BwoB,EAAE,cAAgB,CAACA,EAAE,aAAa,SAASX,EAAO,KAAK,GACzDv6B,EAAO,KAAK,CACV,KAAM,qBACN,KAAM,gBAAgBu6B,EAAO,KAAK,GAClC,QAAS,iBAAiBA,EAAO,KAAK,qCAAqC7nB,EAAK,IAAI,+BAAA,CACrF,EAGDwoB,EAAE,gBAAkB,CAACA,EAAE,eAAe,SAASxoB,EAAK,YAAY,KAAK,GACvE1S,EAAO,KAAK,CACV,KAAM,qBACN,KAAM,yBACN,QAAS,eAAe0S,EAAK,YAAY,KAAK,qCAAqCA,EAAK,IAAI,GAAA,CAC7F,CAEL,CACF,CAEA,GAAI20C,EAAK,SAAW3qD,EAAM,SAAW,SAAU,CAC7C,MAAMirD,EAAajrD,EAAM,KACnB8qD,EAAKG,EAAW,WACtB,GAAIH,GAAM,OAAOA,GAAO,UAAY,WAAaA,EAAgC,CAC/E,MAAMC,EAASD,EAA4C,OAAO,YAAyB,GACrFtsB,EAAImsB,EAAK,QAAQ,KAAMK,GAAOA,EAAG,aAAeD,CAAI,EAC1D,GAAIvsB,GAAKysB,EAAW,QAClB,UAAWptB,KAAUotB,EAAW,QAC1BzsB,EAAE,cAAgB,CAACA,EAAE,aAAa,SAASX,EAAO,KAAK,GACzDv6B,EAAO,KAAK,CACV,KAAM,qBACN,KAAM,gBAAgBu6B,EAAO,KAAK,GAClC,QAAS,wBAAwBA,EAAO,KAAK,qCAAqCktB,CAAI,GAAA,CACvF,CAIT,CACF,CAGA,GAAI/qD,EAAM,SAAW,QAAUA,EAAM,SAAW,YAAcA,EAAM,SAAW,SAAU,CACvF,MAAMq0B,EACJr0B,EAAM,SAAW,OACZA,EAAM,KAAsB,OAC7BA,EAAM,SAAW,WACdA,EAAM,KAA0B,SAAS,QAASkrD,GAAMA,EAAE,MAAM,EAChElrD,EAAM,KAAwB,MAAM,QAASkrD,GAAMA,EAAE,MAAM,EACpE,UAAWv0D,KAAS09B,EAClB,GAAI19B,EAAM,SAAW,OAAQ,CAC3B,MAAMw0D,EACJx0D,EAAM,SAAW,OAAOA,EAAM,SAAY,UAAY,YAAcA,EAAM,QACrEA,EAAM,QAAgC,QACtCA,EAA8C,YACjDw0D,GAAe,CAACP,EAAY,IAAIO,CAAW,GAC7C7nD,EAAO,KAAK,CACV,KAAM,qBACN,KAAM,eAAe3M,EAAM,GAAG,eAC9B,QAAS,2BAA2Bw0D,CAAW,gBAAgBx0D,EAAM,GAAG,uCAAA,CACzE,CAEL,CAEJ,CAEA,OAAO2M,CACT,CAYO,SAAS8nD,GACdC,EACAC,EACAC,EACQ,CACR,MAAO,GAAGF,CAAM,IAAIC,CAAQ,UAAUC,CAAQ,EAChD,CAEO,SAASC,GAAoBF,EAAkB,CACpD,MAAO,CACL,OAAQ,QAAQA,CAAQ,UACxB,MAAO,QAAQA,CAAQ,SACvB,KAAM,QAAQA,CAAQ,OAAA,CAE1B,CC5gBA,MAAMG,GAAe,4BACfC,GAAiB,oCAOvB,SAASC,GACPh1D,EACAi1D,EACAC,EACY,CACZ,GAAIA,GAAel1D,IAAUk1D,EAAa,MAAO,SAEjD,GAAID,GAAA,MAAAA,EAAW,OAAQ,OAAOA,EAAU,OACxC,MAAM92D,EAAS82D,GAAA,YAAAA,EAAW,OAC1B,OAAI92D,IAAW,WAAmB,WAC9BA,IAAW,OAAe,OAC1BA,IAAW,YAAcA,IAAW,SAAiB,QAClD,MACT,CAMA,SAASg3D,GAAcn1D,EAAeqf,EAA4C,CAChF,MAAM41C,EAAY51C,EAAK,OAAO,KAAM1nB,GAASA,EAAK,MAAQqI,CAAK,EAC/D,OAAIi1D,GAAA,MAAAA,EAAW,OAAe,CAAE,OAAQA,EAAU,SAAW,UAAY,UAAYA,EAAU,MAAA,EACxF,CAAE,QAAQA,GAAA,YAAAA,EAAW,UAAW,WAAa,WAAa,QAAA,CACnE,CAEO,SAASG,GACd/1C,EACA/2B,EACc,mBAEd,MAAM+sE,EAAY,CAChB,OAAQ,OACR,KAAAh2C,EACA,iBAAkB/2B,EAAQ,gBAAA,EAEtBqkB,EAASonD,GAAyBsB,CAAS,EACjD,GAAI1oD,EAAO,OAAS,EAClB,MAAM,IAAI,MACR,+CAA+CA,EAAO,IAAK70B,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,EAAA,EAI1F,MAAMy6E,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAC3ComE,EAAQhtE,EAAQ,OAAS,QAAQ+2B,EAAK,KAAK,aAAa,GACxDp2B,EAAQo2B,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,KACjChE,EAAMw5C,GAAoBx1C,EAAK,IAAI,EAEnCk2C,IAAWpmE,EAAA7G,EAAQ,cAAR,YAAA6G,EAAqB,WAAY,YAC5CqmE,IAAWzuD,EAAAze,EAAQ,cAAR,YAAAye,EAAqB,WAAY,YAC5C0uD,GAAWzoD,EAAA1kB,EAAQ,cAAR,MAAA0kB,EAAqB,iBAClC1kB,EAAQ,YAAY,iBAAiB+2B,CAAI,EACzC,GAAGk2C,CAAQ,IAAIl2C,EAAK,IAAI,OAAO,QAAQ,KAAM,GAAG,GAG3BpS,EAAA3kB,EAAQ,cAAR,MAAA2kB,EAAqB,iBAC1C3kB,EAAQ,YAAY,iBAAiB+2B,EAAM,KAAK,EAChD,GAAGm2C,CAAQ,IAAIn2C,EAAK,IAAI,OAAO,QAAQ,KAAM,GAAG,EAIpD,MAAMq2C,EAAkBr2C,EAAK,UAAY,GACnCs2C,EAAmBt2C,EAAK,YAAY,MACpCu2C,EAAiBv2C,EAAK,YAAY,IAElCnd,EAAiC,CACrC,KAAM,EACN,SAAUwzD,EACV,UAAWC,EACX,QAASC,EACT,OAAQ,GACR,WAAY,EAAA,EAGd,UAAW1uB,KAAU7nB,EAAK,SAAW,CAAA,EACnCnd,EAAM,UAAUglC,EAAO,KAAK,EAAE,EAAI,GAGhC5+C,EAAQ,cACV,OAAO,OAAO4Z,EAAO5Z,EAAQ,YAAY,EAG3C,MAAMutE,GAAgBx2C,EAAK,SAAW,CAAA,GAAI,IAAK7nC,IAAO,CACpD,MAAOA,EAAE,MACT,GAAIA,EAAE,SAAW,YAAc,UAAY,KAC3C,MAAO,CAAE,MAAO,gBAAgBA,EAAE,KAAK,EAAA,CAAG,EAC1C,EAEI4mD,EAAuC,CAC3C,KAAM,CACJ,OAAQ,CACN,WAAY/e,EAAK,KACjB,QAASw2C,EAAa,OAAS,EAAIA,EAAe,OAClD,KAAM,CAAC,CAAE,MAAO,CAAE,MAAO,mBAAqB,IAAK,CAAE,MAAO,eAAA,EAAmB,EAC/E,KAAM,CAAE,OAAQ,CAAE,MAAO,YAAA,EAAgB,KAAM,CAAE,MAAO,iBAAiB,EACzE,OAAQ,CAAE,MAAO,cAAA,CAAe,CAClC,CACF,EAGIC,EAA6B,CAAA,EAGnCA,EAAe,KAAK,CAClB,GAAIz6C,EAAI,OACR,KAAM,YACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CAIL,MAAOk3C,IAAS,KAAO,OAAS,SAChC,YAAaA,IAAS,KAAO,QAAQtpE,CAAK,IAAM,UAAUA,CAAK,IAC/D,MAAO,CAAE,MAAO,cAAA,CAAe,EAEjC,OAAQ,CACN,SAAU,CACR,CAAE,SAAU,CAAE,KAAM,SAAU,MAAO,KAAK,EAC1C,CAAE,SAAU,CAAE,KAAM,OAAQ,MAAO,EAAE,CAAE,CACzC,CACF,CACD,EAGD,UAAWi+C,KAAU7nB,EAAK,SAAW,CAAA,EAAI,CACvC,MAAM41C,EAAY51C,EAAK,OAAO,KAAM7nC,GAAMA,EAAE,MAAQ0vD,EAAO,KAAK,EAC1D6uB,GAAcd,GAAA,YAAAA,EAAW,MAAM1C,OAASrlD,EAAAg6B,EAAO,QAAP,YAAAh6B,EAAeqlD,KAASrrB,EAAO,MAE7E,GAAIA,EAAO,SAAW,SAAU,CAC9B,IAAI8uB,EAEA9uB,EAAO,SAAW,MAAM,QAAQA,EAAO,OAAO,EAChD8uB,EAAc,CACZ,CAAE,MAAO,GAAI,MAAOzD,IAAS,KAAO,SAASwD,CAAW,GAAK,OAAOA,CAAW,EAAA,EAC/E,GAAG7uB,EAAO,OAAA,EAEH+tB,GAAA,MAAAA,EAAW,SAAW,MAAM,QAAQA,EAAU,OAAO,EAC9De,EAAc,CACZ,CAAE,MAAO,GAAI,MAAOzD,IAAS,KAAO,SAASwD,CAAW,GAAK,OAAOA,CAAW,EAAA,EAC/E,GAAGd,EAAU,OAAA,EAGfe,EAAc,CAAC,CAAE,MAAO,GAAI,MAAOzD,IAAS,KAAO,SAASwD,CAAW,GAAK,OAAOA,CAAW,GAAI,EAGpGD,EAAe,KAAK,CAClB,GAAI,UAAU5uB,EAAO,KAAK,GAC1B,KAAM,SACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CACL,MAAO6uB,EACP,MAAO,CAAE,MAAO,gBAAgB7uB,EAAO,KAAK,EAAA,EAC5C,QAAS8uB,CAAA,EAEX,OAAQ,CACN,SAAU,CACR,CAAE,SAAU,CAAE,KAAM,UAAU9uB,EAAO,KAAK,GAAI,MAAO,KAAK,EAC1D,CAAE,SAAU,CAAE,KAAM,OAAQ,MAAO,EAAE,CAAE,CACzC,CACF,CACD,CACH,MAAWA,EAAO,SAAW,YAC3B4uB,EAAe,KAAK,CAClB,GAAI,UAAU5uB,EAAO,KAAK,GAC1B,KAAM,YACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CACL,MAAO6uB,EACP,YAAaxD,IAAS,KAAO,QAAQwD,CAAW,IAAM,UAAUA,CAAW,IAC3E,MAAO,CAAE,MAAO,gBAAgB7uB,EAAO,KAAK,EAAA,CAAG,EAEjD,OAAQ,CACN,SAAU,CACR,CAAE,SAAU,CAAE,KAAM,UAAUA,EAAO,KAAK,GAAI,MAAO,KAAK,EAC1D,CAAE,SAAU,CAAE,KAAM,OAAQ,MAAO,EAAE,CAAE,CACzC,CACF,CACD,EACQA,EAAO,SAAW,aAC3B4uB,EAAe,KAAK,CAClB,GAAI,UAAU5uB,EAAO,KAAK,GAC1B,KAAM,YACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CACL,MAAO6uB,EACP,YAAaxD,IAAS,KAAO,kBAAoB,aACjD,MAAO,CAAE,MAAO,gBAAgBrrB,EAAO,KAAK,EAAA,CAAG,EAEjD,OAAQ,CACN,SAAU,CACR,CAAE,SAAU,CAAE,KAAM,UAAUA,EAAO,KAAK,GAAI,MAAO,KAAK,EAC1D,CAAE,SAAU,CAAE,KAAM,OAAQ,MAAO,EAAE,CAAE,CACzC,CACF,CACD,CAEL,CAGA,MAAM+uB,EAAe,CACnB,CAAE,SAAU,CAAE,KAAM,SAAU,MAAO,GAAG,EACxC,CAAE,SAAU,CAAE,KAAM,OAAQ,MAAO,EAAE,EACrC,IAAI52C,EAAK,SAAW,CAAA,GAAI,IAAK7nC,IAAO,CAAE,SAAU,CAAE,KAAM,UAAUA,EAAE,KAAK,GAAI,MAAO,EAAA,GAAO,CAAA,EAG7Fs+E,EAAe,KAAK,CAClB,GAAI,oBACJ,KAAM,SACN,MAAO,CACL,MAAuB,QACvB,QAAS,WAAA,EAEX,OAAQ,CAAE,QAASG,CAAA,CAAa,CACjC,EAEG3tE,EAAQ,oBACVwtE,EAAe,KAAK,GAAGxtE,EAAQ,kBAAkB,EAGnD,MAAM4tE,EAAe72C,EAAK,QAAQ,IAAKtnB,GAAQ,CAC7C,MAAMk9D,EAAY51C,EAAK,OAAO,KAAM7nC,GAAMA,EAAE,MAAQugB,EAAI,KAAK,EACvDo+D,GAAWlB,GAAA,YAAAA,EAAW,MAAM1C,KAASx6D,EAAI,MACzC3P,EAAS4sE,GAAcj9D,EAAI,MAAOk9D,EAAW51C,EAAK,WAAW,EACnE,MAAO,CACL,IAAKtnB,EAAI,MACT,MAAOo+D,EACP,MAAOp+D,EAAI,MACX,OAAA3P,EAGA,GAAI2P,EAAI,MAAQ,CAAE,MAAOA,EAAI,KAAA,EAAU,CAAA,CAAC,CAE5C,CAAC,EAEKq+D,EAAmB9tE,EAAQ,kBAAoB,CAAC,CAAE,SAAU,CAAE,MAAOmtE,CAAA,EAAY,EAYjFY,EAA0B,CAC9B,GAAI,wBACJ,KAAM,YAEN,MAAO,CAAE,SAAU,WAAY,QAAS,OAAQ,WAAY,QAAA,EAC5D,SAAU,CACR,CACE,GAAI,oBACJ,KAAM,SACN,MAAO,CAAE,MAAuB,SAAqB,QAAS,YAAa,SAAU,QAAA,EACrF,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,KAAM,aAAc,MAAO,EAAA,EAAQ,CAAA,CAAE,EAEzE,CACE,GAAI,iBACJ,KAAM,UACN,MAAO,CAAE,KAAM,CAAE,MAAO,kBAAA,EAAsB,MAAO,KAAA,EACrD,MAAO,CAAE,MAAO,MAAA,EAChB,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,KAAM,aAAc,MAAO,EAAA,CAAM,CAAG,CAAA,EACtE,SAAU,CACR,CACE,GAAI,aACJ,KAAM,SACN,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,QAAS,QAAS,KAAA,EAC1E,SAAUP,CAAA,CACZ,CACF,CACF,CACF,EAGIQ,EAA4B,CAChC,GAAIhuE,EAAQ,oBAAsB,CAAA,EAClC+tE,EACA,CACE,GAAI,iBACJ,KAAM,SACN,MAAO,CACL,MAAO9D,IAAS,KAAO,KAAKlzC,EAAK,MAAM,EAAE,GAAK,SAASA,EAAK,MAAM,EAAE,GACpE,QAAS,SAAA,EAEX,OAAQ,CAAE,QAAS+2C,CAAA,CAAiB,CACtC,EAGIG,EAA2B,CAAA,EACjC,GAAIl3C,EAAK,WAAaA,EAAK,UAAU,OAAS,EAAG,CAC/C,MAAMm3C,EAAYn3C,EAAK,UACvBk3C,EAAa,KAAK,CAChB,GAAI,iBACJ,KAAM,WACN,MAAO,CACL,MAAO,CACL,QAAS,OACT,oBAAqB,UAAUC,EAAU,MAAM,mBAAA,CACjD,EAEF,MAAO,CAAE,YAAa,WAAY,YAAa1B,EAAA,EAC/C,SAAU0B,EAAU,IAAI,CAACC,EAASC,IAAA,OAAS,OACzC,GAAI,WAAWA,CAAG,GAClB,KAAM,SACN,MAAO,CACL,QAAS,MACT,IAAK,QACL,GAAIA,EAAMF,EAAU,OAAS,EAAI,CAAE,YAAa,WAAY,YAAa1B,IAAiB,CAAA,CAAC,EAE7F,SAAU,CACR,CACE,GAAI,WAAW4B,CAAG,SAClB,KAAM,OACN,MAAO,CAAE,MAAOD,EAAQ,MAAMlE,CAAI,GAAKkE,EAAQ,KAAA,EAC/C,MAAO,CAAE,SAAU,UAAW,MAAO1B,EAAA,CAAe,EAEtD,CACE,GAAI,WAAW2B,CAAG,OAClB,KAAM,OAIN,MAAO,CACL,MAAO,CACL,MAAO,CACL,IAAKD,EAAQ,IACb,KAAM,YACN,GAAIA,EAAQ,MAAQ,QAAU,CAAA,EAAK,CAAE,MAAOA,EAAQ,KAAA,CAAM,CAC5D,EAGF,GAAIA,EAAQ,MAAQ,QAChB,CAAE,OAAQ,SAAA,EACVtB,GAAcsB,EAAQ,MAAOp3C,CAAI,EACrC,OAAQkzC,IAAS,KAAO,QAAU,QAClC,IAAIrjE,EAAA5G,EAAQ,WAAR,MAAA4G,EAAkB,SAAW,CAAE,SAAU5G,EAAQ,SAAS,UAAa,CAAA,CAAC,EAE9E,MAAO,CAAE,SAAU,UAAW,WAAY,GAAA,CAAI,CAChD,CACF,EACA,CAAA,CACH,CACH,CAIA,MAAMqM,EAAarM,EAAQ,YAAc,CAAA,EACnCquE,EAAiBruE,EAAQ,gBAAkB,CAAC,CAAE,SAAU,CAAE,MAAO,CAAE,MAAO,aAAA,CAAc,EAAK,EAmGnG,MAjG+B,CAC7B,QAAS,QACT,GAAIgtE,EACJ,KAAMrsE,EACN,MAAAiZ,EACA,YAAAk8B,EACA,KAAM,CACJ,GAAI,OACJ,KAAM,SACN,MAAO,CAAE,SAAU,YAAa,MAAO,QAAA,EACvC,SAAU,CACR,CACE,GAAI,cACJ,KAAM,SACN,MAAO,CACL,eAAgB,gBAChB,WAAY,SACZ,QAAS,OACT,OAAQ,cACR,YAAa,WACb,YAAa02B,EAAA,EAEf,SAAU,CACR,CACE,GAAI,oBACJ,KAAM,OACN,MAAO,CAAE,MAAO7rE,EAAO,QAAS,CAAA,EAChC,MAAO,CAAE,SAAU,UAAW,WAAY,GAAA,CAAI,EAEhD,CACE,GAAI,sBACJ,KAAM,UACN,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,OAAA,EACrD,SAAUqtE,CAAA,CACZ,CACF,EAEF,GAAGC,EAEH,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CAAE,MAAOhE,IAAS,KAAO,eAAiB,eAAA,EACjD,MAAO,CAAE,QAAS,MAAO,MAAOwC,EAAA,EAChC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,2BAA6B,CAAE,QAAS,SAAA,CAAW,EAAE,CAAE,EAEnG,CACE,GAAI,aACJ,KAAM,OACN,MAAO,CACL,MAAOxC,IAAS,KAAO,8CAAgD,sCAAA,EAEzE,MAAO,CAAE,QAAS,MAAO,MAAO,0BAAA,EAChC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,2BAA6B,CAAE,QAAS,OAAA,CAAS,EAAE,CAAE,EAEjG,CACE,GAAIl3C,EAAI,MACR,KAAM,YACN,MAAO,CAAE,MAAO,QAAA,EAChB,MAAO,CAIL,WAAY,OACZ,QAAS66C,EACT,WAAAvhE,EACA,UAAW,GACX,SAAU,GACV,OAAQ49D,IAAS,KAAO,QAAU,QAClC,IAAIhyB,EAAAj4C,EAAQ,WAAR,MAAAi4C,EAAkB,SAAW,CAAE,SAAUj4C,EAAQ,SAAS,UAAa,CAAA,CAAC,EAE9E,OAAQ,CACN,OAAQquE,CAAA,CACV,EAMF,CACE,GAAIt7C,EAAI,KACR,KAAM,UACN,MAAO,CAAE,YAAa,WAAY,YAAay5C,EAAA,EAC/C,MAAO,CACL,MAAO,CAAE,MAAO,wBAAA,EAChB,KAAM,CAAE,MAAO,YAAA,EACf,SAAU,CAAE,MAAO,gBAAA,CAAiB,EAEtC,OAAQ,CACN,aAAc,CAAC,CAAE,SAAU,CAAE,KAAM,OAAQ,MAAO,IAAA,EAAQ,EAC1D,iBAAkB,CAAC,CAAE,SAAU,CAAE,KAAM,WAAY,MAAO,KAAK,CAAG,CAAA,CACpE,CACF,CACF,CACF,CAIJ,CAIO,SAAS8B,GACdC,EACAx3C,EACyB,CACzB,MAAMlX,EAAS,OAAO0uD,GAAiB,SAAW,IAAI,gBAAgBA,CAAY,EAAIA,EAChF30D,EAAiC,CAAA,EAEjCrL,EAAOsR,EAAO,IAAI,MAAM,EAC1BtR,GAAQ,CAAC,MAAM,OAAOA,CAAI,CAAC,IAAGqL,EAAM,KAAO,OAAOrL,CAAI,GAE1D,MAAMzB,EAAW+S,EAAO,IAAI,UAAU,GAAKA,EAAO,IAAI,OAAO,EACzD/S,GAAY,CAAC,MAAM,OAAOA,CAAQ,CAAC,IAAG8M,EAAM,SAAW,OAAO9M,CAAQ,GAE1E,MAAM0yC,EAAO3/B,EAAO,IAAI,MAAM,EAC1B2/B,IACEA,EAAK,WAAW,GAAG,GACrB5lC,EAAM,UAAY4lC,EAAK,MAAM,CAAC,EAC9B5lC,EAAM,QAAU,SAEhBA,EAAM,UAAY4lC,EAClB5lC,EAAM,QAAU,QAIpB,MAAM2lC,EAAI1/B,EAAO,IAAI,GAAG,GAAKA,EAAO,IAAI,QAAQ,EAC5C0/B,MAAS,OAASA,GAEtB,UAAWX,KAAU7nB,EAAK,SAAW,CAAA,EAAI,CACvC,MAAMze,EAAMuH,EAAO,IAAI++B,EAAO,KAAK,GAAK/+B,EAAO,IAAI,UAAU++B,EAAO,KAAK,EAAE,EACvEtmC,GAAQ,SAAiC,UAAUsmC,EAAO,KAAK,EAAE,EAAItmC,EAC3E,CAEA,OAAOsB,CACT,CAEO,SAAS40D,GACd50D,EACAmd,EACiB,CACjB,MAAMlX,EAAS,IAAI,gBAkBnB,GAhBIjG,EAAM,QAAU,OAAOA,EAAM,QAAW,UAAYA,EAAM,OAAO,QACnEiG,EAAO,IAAI,IAAKjG,EAAM,OAAO,MAAM,EAGjCA,EAAM,MAAQ,OAAOA,EAAM,MAAS,UAAYA,EAAM,KAAO,GAC/DiG,EAAO,IAAI,OAAQ,OAAOjG,EAAM,IAAI,CAAC,EAIrCA,EAAM,UACN,OAAOA,EAAM,UAAa,UAC1BA,EAAM,YAAcmd,EAAK,UAAY,KAErClX,EAAO,IAAI,WAAY,OAAOjG,EAAM,QAAQ,CAAC,EAG3CA,EAAM,WAAa,OAAOA,EAAM,WAAc,SAAU,CAC1D,MAAM60D,EAAS70D,EAAM,UAAY,OAC3B80D,EAAgB33C,EAAK,YAAY,MAAQ,QAC3Cnd,EAAM,YAAcmd,EAAK,YAAY,OAAS03C,IAAWC,IAC3D7uD,EAAO,IAAI,OAAQ,GAAG4uD,EAAS,IAAM,EAAE,GAAG70D,EAAM,SAAS,EAAE,CAE/D,CAEA,UAAWglC,KAAU7nB,EAAK,SAAW,CAAA,EAAI,CACvC,MAAMze,EAAMsB,EAAM,UAAUglC,EAAO,KAAK,EAAE,EACjBtmC,GAAQ,MAAQA,IAAQ,IAAIuH,EAAO,IAAI++B,EAAO,MAAO,OAAOtmC,CAAG,CAAC,CAC3F,CAEA,OAAOuH,CACT,CCniBA,MAAM8uD,GAAS,4BACTlC,GAAiB,oCAGVmC,GAA2B,CACtC,QAAS,OACT,cAAe,SACf,WAAY,SACZ,MAAO,SACP,UAAW,aACX,WAAY,6BACZ,WAAY,OACZ,SAAU,WACZ,EAGaC,GAAgC,CAC3C,QAAS,OACT,cAAe,SACf,MAAO,SACP,UAAW,aACX,WAAY,6BACZ,SAAU,WACZ,EAGaC,GAA4B,CACvC,QAAS,OACT,cAAe,SACf,MAAO,SACP,SAAU,aACV,OAAQ,YACR,WAAY,sCACZ,YAAa,SACb,YAAaH,GACb,aAAc,aACd,OAAQ,wBACV,EAGaI,GAA6B,CACxC,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,QAAS,OACT,OAAQ,cACR,YAAa,WACb,YAAaJ,EACf,EAGaK,GAA0B,CACrC,YAAa,WACb,YAAaL,GACb,UAAW,eACb,EAEaM,GAAyB,CACpC,QAAS,OACT,oBAAqB,gCACrB,WAAY,QACd,EAGaC,GAA4B,CACvC,QAAS,OACT,MAAOzC,GACP,SAAU,WACZ,EAGa0C,GAA8B,CACzC,QAAS,WACX,EAMaC,GAA8B,CAAE,OAAQ,GAAO,KAAM,OAAA,EAGrDC,GAAgC,CAC3C,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,QAAS,cACT,WAAY,6BACZ,YAAa,WACb,YAAaV,GACb,SAAU,UACV,WAAY,IACZ,MAAOlC,EACT,EAGa6C,GAA6B,CACxC,QAAS,OACT,eAAgB,MAChB,WAAY,SACZ,IAAK,QACL,QAAS,KACX,EC5EM9C,GAAe,4BAErB,SAAS+C,GAAiBx4C,EAA6C,CACrE,MAAM3hB,EAAmC,CAAA,EACzC,UAAWsC,KAASqf,EAAK,OACnBrf,EAAM,MAAQ,MACdA,EAAM,SAAW,UACrBtC,EAAQsC,EAAM,GAAG,EAAI,CAAE,MAAO,CAAE,KAAM,SAASA,EAAM,GAAG,EAAA,CAAG,GAE7D,OAAOtC,CACT,CAEA,SAASo6D,GACP/kE,EACA1P,EACAg+C,EACAjvC,EAAmC,YACzB,CACV,MAAO,CACL,GAAAW,EACA,KAAM,SACN,MAAO,CAAE,MAAA1P,EAAO,QAAA+O,CAAA,EAChB,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,MAAAivC,CAAA,EAAS,CAAA,CAAE,CAEjD,CAEA,SAAS02B,GACP14C,EACA24C,EACAC,EACA1F,EACU,CACV,MAAM2F,EAAMJ,GAAW,WAAYvF,IAAS,KAAO,SAAW,OAAQ0F,EAAW,SAAS,EAC1F,OAAAC,EAAI,OAAS,CACX,QAAS,CACP,CACE,OAAQ,CACN,UAAWF,EAAQ,SAAW,SAC9B,WAAY34C,EAAK,KACjB,GAAI24C,EAAQ,CAAA,EAAK,CAAE,GAAI,CAAE,MAAO,CAAE,KAAM,UAAA,EAAa,EACrD,QAASH,GAAiBx4C,CAAI,EAC9B,QAAS,CAAE,MAAO,CAAE,KAAM,sBAAsB,EAChD,WAAY,aACZ,WAAY,cACZ,UAAW,YACX,gBAAiB,aACjB,UAAW,CAAE,SAAU,CAAE,MAAO44C,EAAU,CAAE,CAC9C,CACF,CACF,EAEKC,CACT,CAEA,SAASC,GACP94C,EACAmhB,EACA+xB,EACU,CACV,MAAM6F,EAAS/4C,EAAK,OACdh8B,EAAQm9C,EAAW,MAAM+xB,CAAI,GAAK/xB,EAAW,KAC7C/tC,EAAY+tC,EAAW,OAAS,SACtC,MAAO,CACL,GAAI,cAAcA,EAAW,IAAI,GACjC,KAAM,SACN,MAAO,CAAE,MAAAn9C,EAAO,QAASoP,EAAY,UAAY,WAAA,EACjD,OAAQ,CACN,QAAS,CACP,CACE,OAAQ,CACN,UAAW,aACX,WAAY4sB,EAAK,KACjB,GAAI,CAAE,MAAO,CAAE,KAAM,WAAW,EAChC,WAAYmhB,EAAW,KACvB,QAAS,CAAE,MAAO,CAAE,KAAM,sBAAsB,EAChD,WAAY,aACZ,WAAY,cACZ,UAAW,YACX,gBAAiB,aACjB,UAAW,CACT,SAAU,CACR,CAAE,SAAU,CAAE,KAAM43B,EAAO,MAAO,MAAO,CAAE,MAAO,gBAAgBA,EAAO,KAAK,EAAA,EAAK,EACnF,CAAE,SAAU,CAAE,KAAM,gBAAiB,MAAO,CAAE,MAAO,qBAAqB,CAAE,CAAE,CAChF,CACF,CACF,CACF,CACF,EAEF,WAAY,CACV,UACE53B,EAAW,KAAK,SAAW,EACvB,CAAE,KAAM,CAAC,CAAE,KAAM,SAAS43B,EAAO,KAAK,EAAA,EAAM,CAAE,QAAS53B,EAAW,KAAK,CAAC,CAAA,CAAG,GAC3E,CACE,GAAIA,EAAW,KAAK,IAAK8qB,IAAU,CACjC,KAAM,CAAC,CAAE,KAAM,SAAS8M,EAAO,KAAK,EAAA,EAAM,CAAE,QAAS9M,CAAA,CAAM,CAAA,EAC3D,CAAA,CACJ,CACR,CAEJ,CAEA,SAAS+M,GACPr4D,EACAuyD,EACAlzC,EACU,SACV,MAAMi5C,EAAat4D,EAAM,SAAW,YAAcA,EAAM,SAAW,SAC7Du4D,EAAav4D,EAAM,WAAa,GAEhCw4D,EAAqC,CAKzC,GAAIF,EAAa,CAAA,EAAK,CAAE,KAAM,QAAS,MAAO,CAAE,MAAO,oBAAoBt4D,EAAM,GAAG,GAAG,EACvF,GAAIu4D,EAAa,CAAE,SAAU,IAAS,CAAA,CAAC,EAGzC,GAAID,EACF,MAAO,CACL,GAAI7D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAMA,EAAM,OACZ,MAAO,CAAE,GAAGw4D,EAAW,QAAS,CAAE,MAAO,SAASx4D,EAAM,GAAG,GAAG,EAC9D,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAIzE,GAAIA,EAAM,SAAW,UAAYA,EAAM,SAAW,aAAc,CAC9D,IAAIg2D,EACJ,OAAIh2D,EAAM,SAAW,MAAM,QAAQA,EAAM,OAAO,EAC9Cg2D,EAAch2D,EAAM,QACXqf,EAAK,QAAUrf,EAAM,MAAQqf,EAAK,OAAO,MAClD22C,EAAc32C,EAAK,OAAO,OAAO,IAAKpW,IAAO,CAAE,MAAOA,EAAG,MAAOA,CAAA,EAAI,EAC3DjJ,EAAM,SAAW,OAAOA,EAAM,SAAY,UAAY,YAAaA,EAAM,UAClFg2D,EAAc,CAAA,GAET,CACL,GAAIvB,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAMA,EAAM,OACZ,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAAM,QAASg2D,GAAe,CAAA,CAAC,EACxF,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMh2D,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,CAEzE,CAEA,GAAIA,EAAM,SAAW,OAAQ,CAS3B,IAHGA,EAAM,SAAW,OAAOA,EAAM,SAAY,UAAY,YAAaA,EAAM,QACrEA,EAAM,QAAgC,QACvC,SAAeA,EAA8C,YAClD,CACf,MAAMy4D,EAAQ,QAAQz4D,EAAM,GAAG,GACzB04D,EAAc14D,EAAM,SAAW,OAAOA,EAAM,SAAY,UAAY,YAAaA,EAAM,QACxFA,EAAM,QACP,CAAA,EACE24D,EAAeD,EAAW,UAAY,KACtCE,EAAeF,EAAW,UAAY,OAG5C,MAAO,CACL,GAAIjE,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,SACN,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,OAAA,EACxD,SAAU,CACR,CACE,GAAI,GAAGy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,CAAC,UACnD,KAAM,SACN,MAAO,CACL,GAAGw4D,EACH,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAElC,QAAS,CAAE,MAAO,eAAey4D,CAAK,OAAA,EAGtC,eAAgBE,EAChB,eAAgBC,EAChB,YAAa,OAAO54D,EAAM,aAAgB,SAAWA,EAAM,cAAc9Q,EAAA8Q,EAAM,cAAN,YAAA9Q,EAAoBqjE,KAAS,UAAUvyD,EAAM,MAAMuyD,CAAI,GAAKvyD,EAAM,GAAG,EAAA,EAEhJ,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAEvE,CACE,GAAI,GAAGy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,CAAC,WACnD,KAAM,OACN,MAAO,CAAE,MAAO,UAAA,EAChB,MAAO,CAAE,SAAU,UAAW,MAAO,mCAAA,EACrC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,eAAey4D,CAAK,WAAa,CAAE,QAAS,SAAA,CAAW,EAAE,CAAE,EAEvG,CACE,GAAI,GAAGhE,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,CAAC,SACnD,KAAM,OACN,MAAO,CAAE,MAAO,wBAAA,EAChB,MAAO,CAAE,SAAU,UAAW,MAAO,0BAAA,EACrC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,eAAey4D,CAAK,WAAa,CAAE,QAAS,OAAA,CAAS,EAAE,CAAE,EAErG,CACE,GAAI,GAAGhE,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,CAAC,SACnD,KAAM,OACN,MAAO,CAAE,MAAO,YAAA,EAChB,MAAO,CAAE,SAAU,UAAW,MAAO,mCAAA,EACrC,WAAY,CACV,UAAW,CACT,IAAK,CACH,CAAE,KAAM,CAAC,CAAE,KAAM,eAAey4D,CAAK,WAAa,CAAE,QAAS,SAAA,CAAW,CAAA,EACxE,CAAE,KAAM,CAAC,CAAE,KAAM,eAAeA,CAAK,cAAA,EAAkB,CAAE,QAAS,CAAA,CAAG,CAAA,CAAE,CACzE,CACF,CACF,CACF,CACF,CAEJ,CACA,IAAIzC,EAAuD,CAAA,EAC3D,OAAIh2D,EAAM,SAAW,MAAM,QAAQA,EAAM,OAAO,MAAiBA,EAAM,SAChE,CACL,GAAIy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,SACN,MAAO,CACL,GAAGw4D,EACH,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAClC,QAASg2D,EACT,YAAa,OAAOh2D,EAAM,aAAgB,SAAWA,EAAM,cAAc7Q,EAAA6Q,EAAM,cAAN,YAAA7Q,EAAoBojE,KAAS,UAAUvyD,EAAM,MAAMuyD,CAAI,GAAKvyD,EAAM,GAAG,EAAA,EAEhJ,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,CAEzE,CAEA,MAAM64D,EACJ,OAAO74D,EAAM,aAAgB,SACzBA,EAAM,YAAYuyD,CAAI,GAAK,GAC3B,OAAOvyD,EAAM,aAAgB,SAC3BA,EAAM,YACN,GAER,OAAIA,EAAM,SAAW,WACZ,CACL,GAAIy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,WACN,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,IAAM,YAAa64D,CAAA,EAC5E,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM74D,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAIrEA,EAAM,SAAW,WACZ,CACL,GAAIy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,YACN,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAAM,YAAa64D,GAAqB,GAAA,EACjG,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM74D,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAIrEA,EAAM,SAAW,OACZ,CACL,GAAIy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,YACN,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAAM,YAAa64D,GAAqB,YAAA,EACjG,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM74D,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAIrEA,EAAM,SAAW,SACZ,CACL,GAAIy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,SACN,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,GAAG,EAC5D,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAIlE,CACL,GAAIy0D,GAAe,OAAQp1C,EAAK,KAAMrf,EAAM,GAAG,EAC/C,KAAM,YACN,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,IAAM,YAAa64D,CAAA,EAC5E,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM74D,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,CAEzE,CAEA,SAAS84D,GAAQ/lE,EAAY1P,EAAe01E,EAA6B,CACvE,MAAO,CACL,GAAAhmE,EACA,KAAM,MACN,MAAO,CAAE,MAAO,CAAE,GAAGwkE,GAAuB,EAC5C,MAAO,CAAE,GAAGD,EAAA,EACZ,SAAU,CACR,CAAE,GAAI,GAAGvkE,CAAE,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAO1P,GAAS,MAAO,CAAE,GAAGm0E,GAA0B,EAClG,CACE,GAAI,GAAGzkE,CAAE,WACT,KAAM,SACN,MAAO,CAAE,GAAG0kE,EAAA,EACZ,SAAU,CAACuB,GAAYC,GAAaF,CAAO,EAAG11E,CAAK,CAAC,CAAA,CACtD,CACF,CAEJ,CAQA,SAAS41E,GAAaF,EAA6B,OACjD,OAAIG,GAAe,IAAIH,EAAQ,IAAI,EAC1B,CAAE,GAAGA,EAAS,MAAO,CAAE,GAAGrB,GAA6B,GAAIqB,EAAQ,OAAS,CAAA,EAAI,GAEpF7pE,EAAA6pE,EAAQ,WAAR,MAAA7pE,EAAkB,OAChB,CAAE,GAAG6pE,EAAS,SAAUA,EAAQ,SAAS,IAAIE,EAAY,CAAA,EAD1BF,CAExC,CAEA,MAAMG,GAAiB,IAAI,IAAI,CAAC,YAAa,WAAY,QAAQ,CAAC,EAQ3D,SAASF,GAAYD,EAAmB11E,EAAyB,OACtE,GAAI81E,GAAkB,IAAIJ,EAAQ,IAAI,EAAG,CACvC,MAAMzjF,EAASyjF,EAAQ,OAAS,CAAA,EAChC,OAAIzjF,EAAM,YAAY,GAAKA,EAAM,MAAcyjF,EACxC,CAAE,GAAGA,EAAS,MAAO,CAAE,GAAGzjF,EAAO,aAAc+N,EAAM,CAC9D,CAGA,GAAI,GAAC6L,EAAA6pE,EAAQ,WAAR,MAAA7pE,EAAkB,QAAQ,OAAO6pE,EACtC,IAAIK,EAAQ,GACZ,MAAMhjF,EAAW2iF,EAAQ,SAAS,IAAKvgE,GAAU,CAC/C,GAAI4gE,EAAO,OAAO5gE,EAClB,MAAMhf,EAASw/E,GAAYxgE,EAAOnV,CAAK,EACvC,OAAI7J,IAAWgf,IAAO4gE,EAAQ,IACvB5/E,CACT,CAAC,EACD,OAAO4/E,EAAQ,CAAE,GAAGL,EAAS,SAAA3iF,GAAa2iF,CAC5C,CAEA,MAAMI,GAAoB,IAAI,IAAI,CAAC,YAAa,WAAY,SAAU,aAAc,WAAY,SAAU,QAAQ,CAAC,EAEnH,SAASE,GAActmE,EAAY9J,EAAyB,CAC1D,MAAO,CACL,GAAA8J,EACA,KAAM,OACN,MAAO,CAAE,MAAO9J,EAAO,QAAS,CAAA,EAChC,MAAO,CAAE,GAAG0uE,EAAA,CAA8B,CAE9C,CAEA,SAAS2B,GAAWrwE,EAAeswE,EAA+B,CAChE,MAAO,CACL,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,GAAGlC,EAAA,EACZ,SAAU,CACR,CAAE,GAAI,oBAAqB,KAAM,OAAQ,MAAO,CAAE,MAAOpuE,EAAO,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EAC5H,CAAE,GAAI,sBAAuB,KAAM,UAAW,MAAO,CAAE,QAAS,OAAQ,IAAK,OAAA,EAAW,SAAUswE,CAAA,CAAQ,CAC5G,CAEJ,CAEA,SAASC,GAAgBpjF,EAAsBqjF,EAAY,GAAiB,CAC1E,MAAO,CACL,GAAI,OACJ,KAAM,SACN,MAAOA,EAAY,CAAE,GAAGtC,IAAkC,CAAE,GAAGD,EAAA,EAC/D,SAAA9gF,CAAA,CAEJ,CAEA,SAASsjF,GAAUtjF,EAAgC,CACjD,MAAO,CACL,GAAI,aACJ,KAAM,OACN,MAAO,CAAE,GAAGghF,EAAA,EACZ,SAAAhhF,CAAA,CAEJ,CAEO,SAASujF,GACdt6C,EACAu6C,EACAtxE,EACc,WACd,MAAM0vE,EAAQ4B,IAAa,MACrBrH,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAG3CmmE,EAAY,CAAE,OAAQ,OAAiB,KAAAh2C,EAAM,iBAAkB/2B,EAAQ,gBAAA,EACvEqkB,EAASonD,GAAyBsB,CAAS,EACjD,GAAI1oD,EAAO,OAAS,EAClB,MAAM,IAAI,MAAM,+CAA+CA,EAAO,IAAK70B,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,EAG1G,MAAMw9E,EAAQhtE,EAAQ,OAAS,QAAQ+2B,EAAK,KAAK,YAAA,CAAa,IAAIu6C,EAAS,YAAA,CAAa,GAClFrE,IAAWpmE,EAAA7G,EAAQ,cAAR,YAAA6G,EAAqB,WAAY,YAC5C8oE,EAAY3vE,EAAQ,WAAa,GAAGitE,CAAQ,IAAIl2C,EAAK,IAAI,GAAG,QAAQ,KAAM,GAAG,EAE7Ep2B,EAAQ+uE,EACVzF,IAAS,KACP,QAAQlzC,EAAK,MAAM,EAAE,GACrB,OAAOA,EAAK,MAAM,EAAE,GACtB,GAAGA,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,IAAI,KAAKu6C,CAAQ,IAE3C13D,EAAiC,CACrC,GAAI81D,EAAQ,GAAK4B,EACjB,WAAY,CAAA,EACZ,UAAW,GACX,WAAY,OACZ,YAAa,KACb,MAAOtxE,EAAQ,iBAAmB,OAAY,CAAE,QAASA,EAAQ,gBAAmB,CAAA,CAAC,EAGvF,UAAW0X,KAASqf,EAAK,OACnBrf,EAAM,MAAQ,MACdA,EAAM,SAAW,UACjB1X,EAAQ,aAAe0X,EAAM,OAAO1X,EAAQ,YAC9C4Z,EAAMlC,EAAM,GAAG,EAAI1X,EAAQ,YAAY0X,EAAM,GAAG,EACvCA,EAAM,UAAY,OAC3BkC,EAAMlC,EAAM,GAAG,EAAIA,EAAM,QAChBA,EAAM,SAAW,YAAcA,EAAM,SAAW,SACzDkC,EAAMlC,EAAM,GAAG,EAAI,GACVA,EAAM,SAAW,WAC1BkC,EAAMlC,EAAM,GAAG,EAAI,EAEnBkC,EAAMlC,EAAM,GAAG,EAAI,IAInBqf,EAAK,SACPnd,EAAMmd,EAAK,OAAO,KAAK,IAAItY,EAAAze,EAAQ,cAAR,YAAAye,EAAsBsY,EAAK,OAAO,SAAUA,EAAK,OAAO,SAIrF,MAAM+e,EAAuC,CAAA,EAC7C,UAAWp+B,KAASqf,EAAK,OACvB,GAAIrf,EAAM,SAAW,OAAQ,CAC3B,MAAMw0D,GACHx0D,EAAM,SAAW,OAAOA,EAAM,SAAY,UAAY,YAAaA,EAAM,QACrEA,EAAM,QAAgC,QACvC,SAAeA,EAA8C,YACnE,GAAIw0D,EAAa,CACf,MAAMiE,EAAQ,QAAQz4D,EAAM,GAAG,GAC/Bo+B,EAAYq6B,CAAK,EAAI,CAAE,OAAQ,CAAE,WAAYjE,EAAa,KAAM,CAAE,KAAM,EAAA,CAAG,CAAE,CAC/E,CACF,CAIF,MAAMqF,MAAkB,IACxB,UAAW75D,KAASqf,EAAK,OAAQ,CAC/B,GAAIrf,EAAM,SAAW,QAAS,SAC9B,MAAM85D,EAAM95D,EAAM,SAAW,GACxB65D,EAAY,IAAIC,CAAG,GAAGD,EAAY,IAAIC,EAAK,EAAE,EAClDD,EAAY,IAAIC,CAAG,EAAG,KAAK95D,CAAK,CAClC,CAEA,MAAM+5D,EAA+B,CAAA,EACrC,SAAW,CAACC,EAAaC,CAAa,IAAKJ,EAAY,UAAW,CAC5DG,EAAY,QACdD,EAAiB,KAAKV,GAAc,WAAWW,EAAY,cAAc,QAAQ,OAAQ,GAAG,CAAC,GAAIA,CAAW,CAAC,EAE/G,UAAWh6D,KAASi6D,EAAe,CACjC,MAAMC,EAAa,GAAGl6D,EAAM,MAAMuyD,CAAI,GAAKvyD,EAAM,GAAG,GAAGA,EAAM,SAAW,KAAO,EAAE,GAC3E+4D,EAAUV,GAAqBr4D,EAAOuyD,EAAMlzC,CAAI,EACtD06C,EAAiB,KAAKjB,GAAQ,OAAO94D,EAAM,GAAG,GAAIk6D,EAAYnB,CAAO,CAAC,CACxE,CACF,CAEA,MAAMoB,EAA8B,CAAA,EAC9BC,EAAiB,GAAQ/6C,EAAK,aAAeA,EAAK,YAAY,OAAS,GAC7E,GAAI+6C,EACF,UAAWC,KAAch7C,EAAK,aAAe,CAAA,EAAI,CAC/C,MAAMi7C,EAAaj7C,EAAK,OAAO,KAAM7nC,GAAMA,EAAE,MAAQ6iF,EAAW,KAAK,EAC/DE,GAAaD,GAAA,YAAAA,EAAY,MAAM/H,KAAS8H,EAAW,MACzDF,EAAgB,KAAK,CACnB,GAAI,eAAeE,EAAW,KAAK,GACnC,KAAM,YACN,MAAO,CAAE,MAAOE,EAAY,WAAYF,EAAW,MAAO,SAAU,EAAA,EACpE,MAAO,CAAE,MAAO,SAAU,YAAa,WAAY,YAAavF,EAAA,CAAa,CAC9E,CACH,CAGF,MAAM0F,EAAgC,CAAA,EACtC,GAAI,CAACxC,GAAS34C,EAAK,OACjB,UAAWo7C,KAAMp7C,EAAK,OAAO,YAC3Bm7C,EAAkB,KAAKrC,GAAsB94C,EAAMo7C,EAAIlI,CAAI,CAAC,EAIhE,MAAM+D,EAA4B,CAChC,GAAIhuE,EAAQ,oBAAsB,CAAA,EAClC,GAAGkyE,CAAA,EAGCE,EAA4B,CAChC5C,GAAW,aAAcvF,IAAS,KAAO,QAAU,SAAU0F,CAAS,EACtE,GAAI3vE,EAAQ,kBAAoB,CAAA,EAChCyvE,GAAgB14C,EAAM24C,EAAOC,EAAW1F,CAAI,CAAA,EAGxCoI,EAAeryE,EAAQ,cAAgB8xE,EAEvCQ,EAAatB,GAAWrwE,EAAOqtE,CAAa,EAE5CuE,EAA2B,CAC/B,GAAI,eACJ,KAAM,UACN,MAAO,CAAE,GAAGjD,EAAA,EACZ,SAAU8C,CAAA,EAGNI,EAAsB,CAC1B,GAAI,aACJ,KAAM,OACN,MAAO,CAAE,MAAO,CAAE,MAAO,kBAAkB,EAC3C,MAAO,CAAE,QAAS,OAAQ,MAAO,0BAAA,EACjC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,mBAAqB,CAAE,QAAS,EAAA,CAAI,EAAE,CAAE,EAGpF,IAAIC,EACJ,GAAIJ,EAAc,CAEhB,MAAMK,EAAqB,CAAE,GAAI,OAAQ,KAAM,OAAQ,MAAO,CAAE,QAAS,OAAQ,cAAe,UAAY,SAAU,CAAC,GAAGjB,EAAkB,GAAGI,CAAe,CAAA,EAC9JY,EAAWvB,GAAgB,CAACoB,EAAYI,EAAUF,EAAWD,CAAc,EAAG,EAAI,CACpF,MACEE,EAAWvB,GAAgB,CAACE,GAAU,CAACkB,EAAY,GAAGb,EAAkB,GAAGI,EAAiBW,EAAWD,CAAc,CAAC,CAAC,CAAC,EAG1H,MAAO,CACL,QAAS,QACT,GAAIvF,EACJ,KAAMrsE,EACN,MAAAiZ,EACA,YAAa,OAAO,KAAKk8B,CAAW,EAAE,OAAS,EAAIA,EAAc,OACjE,KAAM28B,CAAA,CAEV,CCvjBA,MAAMjG,GAAe,4BACfC,GAAiB,oCAEvB,SAASuE,GAAWrwE,EAAeswE,EAA+B,CAChE,MAAO,CACL,GAAI,gBACJ,KAAM,SACN,MAAO,CAAE,eAAgB,gBAAiB,WAAY,SAAU,QAAS,OAAQ,OAAQ,cAAe,YAAa,WAAY,YAAazE,EAAA,EAC9I,SAAU,CACR,CAAE,GAAI,sBAAuB,KAAM,OAAQ,MAAO,CAAE,MAAO7rE,EAAO,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EAC9H,CAAE,GAAI,wBAAyB,KAAM,UAAW,MAAO,CAAE,QAAS,OAAQ,IAAK,OAAA,EAAW,SAAUswE,CAAA,CAAQ,CAC9G,CAEJ,CAEA,SAASzB,GAAW/kE,EAAY1P,EAAyB,CACvD,MAAO,CAAE,GAAA0P,EAAI,KAAM,SAAU,MAAO,CAAE,MAAA1P,EAAO,QAAS,YAAY,CACpE,CAEO,SAAS43E,GAAkB57C,EAAsB/2B,EAA6C,SACnG,MAAM4yE,EAAOnH,GAAyB,CAAE,OAAQ,SAAU,KAAA10C,EAAM,iBAAkB/2B,EAAQ,iBAAkB,EAC5G,GAAI4yE,EAAK,OAAS,EAAG,MAAM,IAAI,MAAM,iDAAiDA,EAAK,IAAKpjF,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,EAE7H,MAAMy6E,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAC3ComE,EAAQhtE,EAAQ,OAAS,UAAU+2B,EAAK,KAAK,aAAa,GAC1Dp2B,EAAQo2B,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,KAEjCnd,EAAiC,CAAA,EACvC,UAAWglC,KAAU7nB,EAAK,SAAW,CAAA,EAAInd,EAAM,UAAUglC,EAAO,KAAK,EAAE,EAAIA,EAAO,SAAW,GAE7F,MAAM9I,EAAuC,CAAA,EAC7C,GAAI,OAAO/e,EAAK,YAAe,SAE/B,GAAW,MAAM,QAAQA,EAAK,UAAU,EACtC+e,EAAY,KAAU/e,EAAK,mBAClBA,EAAK,YAAc,OAAOA,EAAK,YAAe,UAAY,WAAYA,EAAK,WAAY,CAChG,MAAM87C,EAAY97C,EAAK,WAAmD,OACpE+7C,GAAe/7C,EAAK,SAAW,CAAA,GAAI,IAAK7nC,IAAO,CACnD,MAAOA,EAAE,MACT,GAAIA,EAAE,SAAW,YAAc,UAAY,KAC3C,MAAO,CAAE,MAAO,gBAAgBA,EAAE,KAAK,EAAA,CAAG,EAC1C,EACF4mD,EAAY,KAAU,CAAE,OAAQ,CAAE,GAAG+8B,EAAU,QAASC,EAAY,OAAS,EAAIA,EAAcD,EAAS,QAAQ,CAClH,MAAW97C,EAAK,YAAc,OAAOA,EAAK,YAAe,WACvD+e,EAAY,KAAU/e,EAAK,YAG7B,MAAMjpC,EAAuB,CAAA,EAEvBkgF,EAA4B,CAChC,GAAIhuE,EAAQ,oBAAsB,CAAA,EAClCwvE,GAAW,oBAAqBvF,IAAS,KAAO,SAAW,QAAQ,CAAA,EAIrE,GAFAn8E,EAAS,KAAKkjF,GAAWrwE,EAAOqtE,CAAa,CAAC,EAE1Cj3C,EAAK,SAAWA,EAAK,QAAQ,OAAS,EAAG,CAC3C,MAAMg8C,EAA0Bh8C,EAAK,QAAQ,IAAK6nB,GAAW,CAC3D,MAAM7jD,EAAQ6jD,EAAO,MAAMqrB,CAAI,GAAKrrB,EAAO,MAC3C,OAAIA,EAAO,SAAW,SACb,CACL,GAAI,UAAUA,EAAO,KAAK,GAC1B,KAAM,SACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CACL,MAAA7jD,EACA,MAAO,CAAE,MAAO,gBAAgB6jD,EAAO,KAAK,EAAA,EAC5C,QAAS,CAAC,CAAE,MAAO,GAAI,MAAOqrB,IAAS,KAAO,SAASlvE,CAAK,GAAK,OAAOA,CAAK,EAAA,EAAM,GAAI6jD,EAAO,SAAW,CAAA,CAAG,CAAA,EAE9G,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM,UAAUA,EAAO,KAAK,GAAI,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,EAGjF,CACL,GAAI,UAAUA,EAAO,KAAK,GAC1B,KAAM,YACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CAAE,MAAA7jD,EAAO,YAAaA,EAAO,MAAO,CAAE,MAAO,gBAAgB6jD,EAAO,KAAK,EAAA,CAAG,EACnF,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM,UAAUA,EAAO,KAAK,GAAI,MAAO,IAAA,CAAK,CAAG,CAAA,CAAE,CAExF,CAAC,EACD9wD,EAAS,KAAK,CACZ,GAAI,sBACJ,KAAM,UACN,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,QAAS,QAAS,MAAO,YAAa,WAAY,YAAa0+E,EAAA,EACpH,SAAUuG,CAAA,CACX,CACH,CAEA,GAAIh8C,EAAK,WAAaA,EAAK,UAAU,OAAS,EAAG,CAC/C,MAAMm3C,EAAYn3C,EAAK,UACvBjpC,EAAS,KAAK,CACZ,GAAI,uBACJ,KAAM,WACN,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,oBAAqB,UAAUogF,EAAU,MAAM,mBAAA,CAAoB,EACtG,MAAO,CAAE,YAAa,WAAY,YAAa1B,EAAA,EAC/C,SAAU0B,EAAU,IAAI,CAACC,EAASC,IAAA,OAAS,OACzC,GAAI,WAAWA,CAAG,GAClB,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,IAAK,QAAS,GAAIA,EAAMF,EAAU,OAAS,EAAI,CAAE,YAAa,WAAY,YAAa1B,EAAA,EAAiB,EAAC,EAClI,SAAU,CACR,CAAE,GAAI,WAAW4B,CAAG,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAOD,EAAQ,MAAMlE,CAAI,GAAK,IAAM,MAAO,CAAE,SAAU,UAAW,MAAOwC,GAAe,EAC7I,CACE,GAAI,WAAW2B,CAAG,SAClB,KAAM,OACN,MAAOD,EAAQ,IACX,CACE,MAAO,CACL,MAAO,CACL,IAAKA,EAAQ,IACb,KAAM,YACN,GAAIA,EAAQ,MAAQ,QAAU,CAAA,EAAK,CAAE,MAAOA,EAAQ,KAAA,CAAM,CAC5D,EAEF,GAAIA,EAAQ,MAAQ,QAAU,CAAE,OAAQ,SAAA,EAAc,CAAE,OAAQA,EAAQ,QAAU,QAAA,EAClF,OAAQlE,IAAS,KAAO,QAAU,QAClC,IAAIrjE,EAAA5G,EAAQ,WAAR,MAAA4G,EAAkB,SAAW,CAAE,SAAU5G,EAAQ,SAAS,UAAa,CAAA,CAAC,EAE9E,CAAE,MAAO,OAAOmuE,EAAQ,OAAS,EAAE,CAAA,EACvC,MAAO,CAAE,SAAU,UAAW,WAAY,GAAA,CAAI,CAChD,CACF,EACA,CAAA,CACH,CACH,CAEA,MAAMP,EAAe72C,EAAK,QAAQ,IAAKtnB,IAAS,CAC9C,IAAKA,EAAI,IACT,MAAO,OAAOA,EAAI,OAAU,SAAWA,EAAI,MAAQA,EAAI,MAAMw6D,CAAI,GAAKx6D,EAAI,IAC1E,GAAIA,EAAI,MAAQ,CAAE,MAAOA,EAAI,KAAA,EAAU,CAAA,EACvC,GAAIA,EAAI,MAAQ,CAAE,MAAOA,EAAI,KAAA,EAAU,CAAA,EACvC,GAAIA,EAAI,OAAS,CAAE,OAAQA,EAAI,MAAA,EAAW,CAAA,CAAC,EAC3C,EAEF,OAAA3hB,EAAS,KAAK,CACZ,GAAI,eACJ,KAAM,YACN,MAAO,CAIL,WAAY,OAAOipC,EAAK,YAAe,SAAWA,EAAK,WAAa,OACpE,QAAS62C,EACT,SAAU,GACV,OAAQ3D,IAAS,KAAO,QAAU,QAClC,IAAIpjE,EAAA7G,EAAQ,WAAR,MAAA6G,EAAkB,SAAW,CAAE,SAAU7G,EAAQ,SAAS,UAAa,CAAA,CAAC,EAE9E,MAAO,CAAE,MAAO,QAAA,CAAS,CAC1B,EAEM,CACL,QAAS,QACT,GAAIgtE,EACJ,KAAMrsE,EACN,MAAO,OAAO,KAAKiZ,CAAK,EAAE,OAAS,EAAIA,EAAQ,OAC/C,YAAa,OAAO,KAAKk8B,CAAW,EAAE,OAAS,EAAIA,EAAc,OACjE,KAAM,CAAE,GAAI,OAAQ,KAAM,SAAU,MAAO,CAAE,SAAU,YAAa,MAAO,QAAA,EAAY,SAAAhoD,CAAA,CAAS,CAEpG,CC5JA,MAAM2+E,GAAiB,oCACjBD,GAAe,4BAErB,SAASwE,GAAWrwE,EAAeswE,EAA+B,CAChE,MAAO,CACL,GAAI,mBACJ,KAAM,SACN,MAAO,CAAE,eAAgB,gBAAiB,WAAY,SAAU,QAAS,OAAQ,OAAQ,cAAe,YAAa,WAAY,YAAazE,EAAA,EAC9I,SAAU,CACR,CAAE,GAAI,yBAA0B,KAAM,OAAQ,MAAO,CAAE,MAAO7rE,EAAO,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EACjI,CAAE,GAAI,2BAA4B,KAAM,UAAW,MAAO,CAAE,QAAS,OAAQ,IAAK,OAAA,EAAW,SAAUswE,CAAA,CAAQ,CACjH,CAEJ,CAEA,SAAS+B,GAAOvoE,EAAYwoE,EAA0C,CACpE,MAAO,CACL,GAAAxoE,EACA,KAAM,WACN,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,oBAAqB,UAAUwoE,EAAM,MAAM,mBAAA,CAAoB,EAClG,MAAO,CAAE,YAAa,WAAY,YAAazG,EAAA,EAC/C,SAAUyG,EAAM,IAAI,CAAC,CAACl4E,EAAO9O,CAAK,EAAGmiF,KAAS,CAC5C,GAAI,GAAG3jE,CAAE,QAAQ2jE,CAAG,GACpB,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,IAAK,QAAS,GAAIA,EAAM6E,EAAM,OAAS,EAAI,CAAE,YAAa,WAAY,YAAazG,EAAA,EAAiB,EAAC,EAC9H,SAAU,CACR,CAAE,GAAI,GAAG/hE,CAAE,QAAQ2jE,CAAG,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAOrzE,CAAA,EAAS,MAAO,CAAE,SAAU,UAAW,MAAO0xE,GAAe,EAC3H,CAAE,GAAI,GAAGhiE,CAAE,QAAQ2jE,CAAG,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAAniF,CAAA,EAAS,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,CAAE,CAClH,EACA,CAAA,CAEN,CAEA,SAASinF,GAAiBzoE,EAAYnZ,EAAqBw3B,EAA6C,CAAA,EAAc,CACpH,MAAO,CACL,GAAAre,EACA,KAAMqe,EAAK,KAAO,WAAa,SAC/B,MAAOA,EAAK,KAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,oBAAqB,sCAAA,CAAuC,EAAM,OACjH,MAAO,CAAE,QAAS,MAAO,IAAK,QAAS,GAAIA,EAAK,OAAS,CAAE,YAAa,WAAY,YAAa0jD,EAAA,EAAiB,CAAA,CAAC,EACnH,SAAUl7E,CAAA,CAEd,CAEA,SAAS6hF,GAAS1oE,EAAYxe,EAAeyU,EAAiC,CAAA,EAAc,CAC1F,MAAO,CAAE,GAAA+J,EAAI,KAAM,OAAQ,MAAO,CAAE,MAAAxe,CAAA,EAAS,MAAAyU,CAAA,CAC/C,CAEO,SAAS0yE,GAAqBr8C,EAAyB/2B,EAAgD,OAC5G,MAAMiqE,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAC3ComE,EAAQhtE,EAAQ,OAAS,aAAa+2B,EAAK,KAAK,aAAa,GAC7Dp2B,EAAQo2B,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,KAEjCjpC,EAAuB,CAAA,EAK7B,GAJIkS,EAAQ,oBAAsBA,EAAQ,mBAAmB,OAAS,GACpElS,EAAS,KAAKkjF,GAAWrwE,EAAOX,EAAQ,kBAAkB,CAAC,EAGzD+2B,EAAK,MAAQA,EAAK,KAAK,OAAS,EAAG,CACrC,MAAMk8C,EAAiCl8C,EAAK,KAAK,IAAKs8C,GAAQ,CAACA,EAAI,MAAMpJ,CAAI,GAAK,GAAI,OAAOoJ,EAAI,KAAK,CAAC,CAAC,EACxGvlF,EAAS,KAAKklF,GAAO,iBAAkBC,CAAK,CAAC,CAC/C,CAEA,GAAIl8C,EAAK,WAAaA,EAAK,UAAU,OAAS,EAAG,CAC/C,MAAMu8C,EAA4Bv8C,EAAK,UAAU,IAAI,CAACw8C,EAAInF,IAAQ,OAChE,MAAMoF,EAAcD,EAAG,OAAS,KAAG3sE,EAAA5G,EAAQ,cAAR,YAAA4G,EAAqB,WAAY,WAAW,IAAI2sE,EAAG,OAAO,GAAG,QAAQ,KAAM,GAAG,EAC3Gx4E,EAAQw4E,EAAG,MAAMtJ,CAAI,GAAKsJ,EAAG,QACnC,MAAO,CACL,GAAI,YAAYnF,CAAG,GACnB,KAAM,YACN,MAAO,CAAE,UAAW,uLAAA,EACpB,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,MAAOoF,CAAA,CAAY,CAAG,CAAA,EACxD,SAAU,CACR,CAAE,GAAI,YAAYpF,CAAG,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAOrzE,CAAA,EAAS,MAAO,CAAE,SAAU,YAAa,WAAY,IAAI,EACtH,GAAIw4E,EAAG,YACH,CAAC,CAAE,GAAI,YAAYnF,CAAG,QAAS,KAAM,OAAQ,MAAO,CAAE,MAAOmF,EAAG,YAAYtJ,CAAI,GAAK,EAAA,EAAM,MAAO,CAAE,SAAU,UAAW,MAAOwC,GAAgB,UAAW,MAAA,CAAO,CAAe,EACjL,CAAA,CAAC,CACP,CAEJ,CAAC,EAED3+E,EAAS,KACPolF,GACE,oBACA,CACEC,GAAS,kBAAmBlJ,IAAS,KAAO,oBAAsB,mBAAoB,CAAE,SAAU,YAAa,WAAY,GAAA,CAAK,EAChI,CACE,GAAI,iBACJ,KAAM,WACN,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,oBAAqB,wCAAwC,EAChG,MAAO,CAAE,IAAK,OAAA,EACd,SAAUqJ,CAAA,CACZ,EAEF,CAAE,OAAQ,EAAA,CAAK,CACjB,CAEJ,CAEA,GAAIv8C,EAAK,QAAUA,EAAK,OAAO,OAAS,EAAG,CACzC,MAAM08C,EAAyB18C,EAAK,OAAO,IAAK28C,IAAW,CACzD,GAAI,SAASA,EAAM,EAAE,GACrB,KAAM,QACN,MAAO,CACL,MAAOA,EAAM,MAAMzJ,CAAI,GAAKyJ,EAAM,GAClC,UAAWA,EAAM,KACjB,KAAMA,EAAM,KACZ,KAAMA,EAAM,KACZ,WAAY,OAAOA,EAAM,YAAe,SAAWA,EAAM,WAAa,OACtE,KAAM,MAAM,QAAQA,EAAM,UAAU,EAAIA,EAAM,WAAa,MAAA,EAE7D,MAAOA,EAAM,OAAS,CAAE,MAAO,QAAA,CAAS,EACxC,EAEI,CAACC,EAAc,GAAGC,CAAe,EAAIH,EAEvCE,GACF7lF,EAAS,KAAKolF,GAAiB,mBAAoB,CAACS,CAAY,EAAG,CAAE,OAAQ,EAAA,CAAM,CAAC,EAGlFC,EAAgB,OAAS,GAC3B9lF,EAAS,KAAKolF,GAAiB,uBAAwBU,EAAiB,CAAE,OAAQ,GAAM,KAAM,EAAA,CAAM,CAAC,CAEzG,CAEA,MAAM99B,EAAuC,CAAE,GAAI/e,EAAK,aAAe,CAAA,CAAC,EACxE,UAAW28C,KAAS38C,EAAK,QAAU,CAAA,EAC7B,MAAM,QAAQ28C,EAAM,UAAU,IAAG59B,EAAY,SAAS49B,EAAM,EAAE,EAAE,EAAIA,EAAM,YAGhF,MAAO,CACL,QAAS,QACT,GAAI1G,EACJ,KAAMrsE,EACN,YAAa,OAAO,KAAKm1C,CAAW,EAAE,OAAS,EAAIA,EAAc,OACjE,KAAM,CAAE,GAAI,OAAQ,KAAM,SAAU,MAAO,CAAE,IAAK,QAAS,SAAU,YAAa,MAAO,QAAA,EAAY,SAAAhoD,CAAA,CAAS,CAElH,CCjIA,MAAM0+E,GAAe,4BACfC,GAAiB,oCAEvB,SAASuE,GAAWrwE,EAAeswE,EAA+B,CAChE,MAAO,CACL,GAAI,kBACJ,KAAM,SACN,MAAO,CAAE,eAAgB,gBAAiB,WAAY,SAAU,QAAS,OAAQ,OAAQ,cAAe,YAAa,WAAY,YAAazE,EAAA,EAC9I,SAAU,CACR,CAAE,GAAI,wBAAyB,KAAM,OAAQ,MAAO,CAAE,MAAO7rE,EAAO,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EAChI,CAAE,GAAI,0BAA2B,KAAM,UAAW,MAAO,CAAE,QAAS,OAAQ,IAAK,OAAA,EAAW,SAAUswE,CAAA,CAAQ,CAChH,CAEJ,CAEA,SAASF,GAActmE,EAAY9J,EAAyB,CAC1D,MAAO,CAAE,GAAA8J,EAAI,KAAM,OAAQ,MAAO,CAAE,MAAO9J,EAAO,QAAS,GAAK,MAAO,CAAE,GAAG0uE,GAA8B,CAC5G,CAEO,SAASwE,GAAoB98C,EAAwB/2B,EAA+C,OACzG,MAAM4yE,EAAOnH,GAAyB,CAAE,OAAQ,WAAY,KAAA10C,EAAgC,iBAAkB/2B,EAAQ,iBAA2B,EAEjJ,GAAI4yE,EAAK,OAAS,EAAG,MAAM,IAAI,MAAM,mDAAmDA,EAAK,IAAKpjF,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,EAE/H,MAAMy6E,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAC3ComE,EAAQhtE,EAAQ,OAAS,YAAY+2B,EAAK,KAAK,aAAa,GAC5Dp2B,EAAQo2B,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,KAEjCnd,EAAiC,CAAE,WAAY,CAAA,EAAI,UAAW,GAAI,WAAY,MAAA,EACpF,UAAWk6D,KAAW/8C,EAAK,mBAAqBrf,KAASo8D,EAAQ,OAAQl6D,EAAMlC,EAAM,GAAG,EAAIA,EAAM,UAAYA,EAAM,SAAW,YAAcA,EAAM,SAAW,SAAW,GAAQ,IAEjL,MAAMq8D,EAAuB,CAC3B,GAAI,oBACJ,KAAM,SACN,MAAO,CAAE,MAAO9J,IAAS,KAAO,oBAAsB,gBAAiB,QAAS,SAAA,EAChF,OAAQ,CACN,QAAS,CACP,CACE,QAAS,CACP,KAAM,0BACN,QAAS,CAAE,SAAUlzC,EAAK,KAAM,OAAQ,CAAE,MAAO,CAAE,KAAM,OAAA,EAAU,EACnE,WAAY,aACZ,UAAW,WAAA,CACb,CACF,CACF,CACF,EAGIi3C,EAA4B,CAAC,GAAIhuE,EAAQ,oBAAsB,CAAA,EAAK+zE,CAAU,EAE9EC,EAA2B,CAAA,EACjC,UAAWF,KAAW/8C,EAAK,SAAU,CACnCi9C,EAAa,KAAKjD,GAAc,WAAW+C,EAAQ,EAAE,GAAIA,EAAQ,MAAM7J,CAAI,GAAK6J,EAAQ,EAAE,CAAC,EAC3F,UAAWp8D,KAASo8D,EAAQ,OAAQ,CAClC,MAAMrD,EAAUwD,GAAkBv8D,EAAOqf,EAAK,IAAU,EAClDh8B,EAAQ,GAAG2c,EAAM,MAAMuyD,CAAI,GAAKvyD,EAAM,GAAG,GAAGA,EAAM,SAAW,KAAO,EAAE,GAC5Es8D,EAAa,KAAK,CAChB,GAAI,OAAOt8D,EAAM,GAAG,GACpB,KAAM,MACN,MAAO,CAAE,MAAO,CAAE,GAAGu3D,GAAuB,EAC5C,MAAO,CAAE,GAAGD,EAAA,EACZ,SAAU,CACR,CAAE,GAAI,OAAOt3D,EAAM,GAAG,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAO3c,CAAA,EAAS,MAAO,CAAE,GAAGm0E,GAA0B,EAC7G,CAAE,GAAI,OAAOx3D,EAAM,GAAG,WAAY,KAAM,SAAU,MAAO,CAAE,GAAGy3D,IAA+B,SAAU,CAACuB,GAAYD,EAAS11E,CAAK,CAAC,CAAA,CAAE,CACvI,CACD,CACH,CACF,CAEIi5E,EAAa,SAAW,GAC1BA,EAAa,KAAK,CAAE,GAAI,iBAAkB,KAAM,OAAQ,MAAO,CAAE,MAAO/J,IAAS,KAAO,uBAAyB,aAAA,EAAiB,MAAO,CAAE,QAAS,MAAO,MAAOwC,EAAA,EAAkB,EAItL,MAAMiG,EAAqB,CACzB,GAAI,gBACJ,KAAM,OACN,MAAO,CAAE,QAAS,OAAQ,cAAe,QAAA,EACzC,SAAUsB,CAAA,EAGNxB,EAAsB,CAC1B,GAAI,iBACJ,KAAM,OACN,MAAO,CAAE,MAAO,CAAE,MAAO,kBAAkB,EAC3C,MAAO,CAAE,QAAS,OAAQ,MAAO,0BAAA,EACjC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,mBAAqB,CAAE,QAAS,EAAA,CAAI,EAAE,CAAE,EAGpF,MAAO,CACL,QAAS,QACT,GAAIxF,EACJ,KAAMrsE,EACN,MAAAiZ,EACA,KAAM,CACJ,GAAI,OACJ,KAAM,SACN,MAAO,CAAE,SAAU,YAAa,MAAO,QAAA,EACvC,SAAU,CAACo3D,GAAWrwE,EAAOqtE,CAAa,EAAG0E,EAAUF,CAAS,CAAA,CAClE,CAEJ,CAEA,SAASyB,GAAkBv8D,EAA+D20D,EAAkB6H,EAA2B,CACrI,MAAMzpE,EAAK0hE,GAAe,WAAYE,EAAU30D,EAAM,GAAG,EACnDw4D,EAAqC,CAAE,MAAO,CAAE,MAAO,oBAAoBx4D,EAAM,GAAG,GAAG,EAC7F,OAAIA,EAAM,SAAW,YAAcA,EAAM,SAAW,SAC3C,CAAE,GAAAjN,EAAI,KAAMiN,EAAM,OAAQ,MAAO,CAAE,GAAGw4D,EAAW,QAAS,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,CAAG,EAAK,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,EAAE,EAEvKA,EAAM,SAAW,UAAYA,EAAM,SAAW,aACzC,CAAE,GAAAjN,EAAI,KAAMiN,EAAM,OAAQ,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAAM,QAAUA,EAAM,SAAmE,CAAA,GAAM,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,KAAK,CAAG,EAAE,EAE5PA,EAAM,SAAW,WACZ,CAAE,GAAAjN,EAAI,KAAM,WAAY,MAAO,CAAE,GAAGylE,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,CAAG,EAAK,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,EAAE,EAEhK,CAAE,GAAAjN,EAAI,KAAM,YAAa,MAAO,CAAE,GAAGylE,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,CAAG,EAAK,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,EAAE,CACxK,CC5HA,MAAM80D,GAAe,4BAErB,SAASwE,GAAWrwE,EAAeswE,EAA+B,CAChE,MAAO,CACL,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,eAAgB,gBAAiB,WAAY,SAAU,QAAS,OAAQ,OAAQ,cAAe,YAAa,WAAY,YAAazE,EAAA,EAC9I,SAAU,CACR,CAAE,GAAI,oBAAqB,KAAM,OAAQ,MAAO,CAAE,MAAO7rE,EAAO,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EAC5H,CAAE,GAAI,sBAAuB,KAAM,UAAW,MAAO,CAAE,QAAS,OAAQ,IAAK,OAAA,EAAW,SAAUswE,CAAA,CAAQ,CAC5G,CAEJ,CAIO,SAASkD,GAAgBp9C,EAAoB/2B,EAA2C,SAC7F,MAAM4yE,EAAOnH,GAAyB,CAAE,OAAQ,OAAQ,KAAA10C,EAAgC,iBAAkB/2B,EAAQ,iBAA2B,EAC7I,GAAI4yE,EAAK,OAAS,EAAG,MAAM,IAAI,MAAM,+CAA+CA,EAAK,IAAKpjF,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,EAE3H,MAAMy6E,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAC3ComE,EAAQhtE,EAAQ,OAAS,QAAQ+2B,EAAK,KAAK,aAAa,GACxDp2B,EAAQo2B,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,KAGjCnd,EAAiC,CAAE,YAAa,GAAI,OAAQ,EAAA,EAE5Dw6D,EAAyB,CAC7B,GAAI,kBACJ,KAAM,SACN,MAAO,CAAE,MAAOnK,IAAS,KAAO,KAAKlzC,EAAK,MAAM,EAAE,GAAK,SAASA,EAAK,MAAM,EAAE,GAAI,QAAS,SAAA,EAC1F,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,MAAO,KAAGlwB,EAAA7G,EAAQ,cAAR,YAAA6G,EAAqB,WAAY,WAAW,IAAIkwB,EAAK,IAAI,OAAO,QAAQ,KAAM,GAAG,CAAA,EAAK,CAAA,CAAE,EAGhIs9C,EAAuB,CAC3B,GAAI,cACJ,KAAM,YACN,MAAO,CAAE,MAAO,MAAA,EAChB,MAAO,CAAE,YAAapK,IAAS,KAAO,QAAU,UAAW,MAAO,CAAE,MAAO,eAAe,EAC1F,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAM,SAAU,MAAO,IAAA,EAAQ,CAAA,CAAE,EAMhEqK,EAAclmF,GAAA,OAAkE,OACpF,GAAIA,EAAK,IACT,MAAOA,EAAK,MAAM67E,CAAI,GAAK77E,EAAK,IAChC,UAAUwY,EAAAxY,EAAK,WAAL,YAAAwY,EAAe,IAAI0tE,EAAU,GAEnCjkE,EAAY0mB,EAAK,MAAM,IAAIu9C,CAAU,EAErCC,EAAyB,CAC7B,GAAI,YACJ,KAAM,WACN,MAAO,CACL,MAAA5zE,EACA,MAAO0P,CAAA,EAET,OAAQ,CACN,YAAa,CAAC,CAAE,SAAU,CAAE,KAAM,cAAe,MAAO,CAAE,MAAO,UAAA,GAAgB,CAAA,EAEnF,MAAO,CAAE,MAAO,SAAU,QAAS,KAAA,CAAM,EAGrCmkE,EAAwB,CAC5B,GAAI,cACJ,KAAM,SACN,MAAO,CAAE,QAAS,MAAO,IAAK,QAAS,YAAa,SAAU,YAAahI,GAAc,aAAc,wBAAA,EACvG,SAAU,CACR,CAAE,GAAI,oBAAqB,KAAM,OAAQ,MAAO,CAAE,MAAO,CAAE,MAAO,mBAAA,CAAoB,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EACzI,CAAE,GAAI,0BAA2B,KAAM,OAAQ,MAAO,CAAE,MAAOvC,IAAS,KAAO,kCAAoC,+BAAA,EAAmC,MAAO,CAAE,MAAO,oCAAqC,SAAU,UAAU,CAAE,CACnO,EAGF,MAAO,CACL,QAAS,QACT,GAAI+C,EACJ,KAAMrsE,EACN,MAAAiZ,EACA,YAAa,CAAE,MAAOvJ,CAAA,EACtB,KAAM,CACJ,GAAI,OACJ,KAAM,SACN,MAAO,CAAE,SAAU,YAAa,MAAO,QAAA,EACvC,SAAU,CACR2gE,GAAWrwE,EAAO,CAACyzE,EAAc,GAAIp0E,EAAQ,oBAAsB,CAAA,CAAG,CAAC,EACvE,CACE,GAAI,eACJ,KAAM,UACN,MAAO,CAAE,QAAS,OAAQ,IAAK,QAAS,QAAS,MAAO,YAAa,WAAY,YAAawsE,EAAA,EAC9F,SAAU,CAAC6H,CAAU,CAAA,EAEvB,CACE,GAAI,cACJ,KAAM,MACN,MAAO,CAAE,QAAS,OAAQ,IAAK,QAAS,QAAS,KAAA,EACjD,SAAU,CACR,CAAE,GAAI,YAAa,KAAM,YAAa,MAAO,CAAE,MAAO,QAAS,YAAa,SAAU,YAAa7H,GAAc,aAAc,wBAAA,EAA4B,SAAU,CAAC+H,CAAY,CAAA,EAClL,CAAE,GAAI,cAAe,KAAM,YAAa,MAAO,CAAE,MAAO,OAAA,EAAW,SAAU,CAACC,CAAW,CAAA,CAAE,CAC7F,CACF,CACF,CACF,CAEJ,CCzGA,MAAMhI,GAAe,4BAErB,SAASwE,GAAWrwE,EAAeswE,EAA+B,CAChE,MAAO,CACL,GAAI,gBACJ,KAAM,SACN,MAAO,CAAE,eAAgB,gBAAiB,WAAY,SAAU,QAAS,OAAQ,OAAQ,cAAe,YAAa,WAAY,YAAazE,EAAA,EAC9I,SAAU,CACR,CAAE,GAAI,sBAAuB,KAAM,OAAQ,MAAO,CAAE,MAAO7rE,EAAO,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,IAAI,EAC9H,CAAE,GAAI,wBAAyB,KAAM,UAAW,MAAO,CAAE,QAAS,OAAQ,IAAK,OAAA,EAAW,SAAUswE,CAAA,CAAQ,CAC9G,CAEJ,CAEA,SAASwD,GAAe/8D,EAA0D20D,EAAkB6H,EAA2B,CAC7H,MAAMzpE,EAAK0hE,GAAe,SAAUE,EAAU30D,EAAM,GAAG,EACjDw4D,EAAqC,CAAA,EAC3C,OAAIx4D,EAAM,SAAW,YAAcA,EAAM,SAAW,SAC3C,CAAE,GAAAjN,EAAI,KAAMiN,EAAM,OAAQ,MAAO,CAAE,GAAGw4D,EAAW,QAAS,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,CAAG,EAAK,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,EAAE,EAEvKA,EAAM,SAAW,UAAYA,EAAM,SAAW,aACzC,CAAE,GAAAjN,EAAI,KAAMiN,EAAM,OAAQ,MAAO,CAAE,GAAGw4D,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,EAAM,QAAUA,EAAM,SAAmE,CAAA,GAAM,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,KAAK,CAAG,EAAE,EAE5PA,EAAM,SAAW,WACZ,CAAE,GAAAjN,EAAI,KAAM,WAAY,MAAO,CAAE,GAAGylE,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,CAAG,EAAK,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,EAAE,EAEhK,CAAE,GAAAjN,EAAI,KAAM,YAAa,MAAO,CAAE,GAAGylE,EAAW,MAAO,CAAE,MAAO,SAASx4D,EAAM,GAAG,EAAA,CAAG,EAAK,OAAQ,CAAE,SAAU,CAAC,CAAE,SAAU,CAAE,KAAMA,EAAM,IAAK,MAAO,IAAA,CAAK,CAAG,EAAE,CACxK,CAEO,SAASg9D,GAAkB39C,EAAsB/2B,EAA6C,OACnG,MAAM4yE,EAAOnH,GAAyB,CAAE,OAAQ,SAAU,KAAA10C,EAAgC,iBAAkB/2B,EAAQ,iBAA2B,EAC/I,GAAI4yE,EAAK,OAAS,EAAG,MAAM,IAAI,MAAM,iDAAiDA,EAAK,IAAKpjF,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,EAE7H,MAAMy6E,IAAiBrjE,EAAA5G,EAAQ,WAAR,YAAA4G,EAAkB,OAAQ,KAC3ComE,EAAQhtE,EAAQ,OAAS,UAAU+2B,EAAK,KAAK,aAAa,GAC1Dp2B,EAAQo2B,EAAK,MAAMkzC,CAAI,GAAKlzC,EAAK,KAEjCnd,EAAiC,CAAE,YAAa,EAAG,WAAY,CAAA,EAAI,UAAW,EAAA,EACpF,UAAWsH,KAAQ6V,EAAK,MAAO,UAAWrf,KAASwJ,EAAK,OAAQtH,EAAMlC,EAAM,GAAG,EAAIA,EAAM,SAAW,GAEpG,MAAMi9D,EAAwB,CAC5B,GAAI,iBACJ,KAAM,UACN,MAAO,CAAE,QAAS,OAAQ,IAAK,QAAS,QAAS,MAAO,YAAa,WAAY,YAAanI,EAAA,EAC9F,SAAUz1C,EAAK,MAAM,IAAI,CAAC7V,EAAMktD,KAAS,CACvC,GAAI,eAAeltD,EAAK,EAAE,GAC1B,KAAM,QACN,MAAO,CAAE,MAAOA,EAAK,MAAM+oD,CAAI,GAAK/oD,EAAK,GAAI,MAAOktD,IAAQ,EAAI,OAAS,OAAQ,QAAS,MAAA,CAAO,EACjG,CAAA,EAGEwG,EAAyB79C,EAAK,MAAM,IAAI,CAAC7V,EAAMktD,KAAS,CAC5D,GAAI,gBAAgBltD,EAAK,EAAE,GAC3B,KAAM,SACN,MAAO,CAAE,IAAK,QAAS,QAAS,KAAA,EAChC,SAAU,CACR,CAAE,GAAI,gBAAgBA,EAAK,EAAE,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAOA,EAAK,MAAM+oD,CAAI,GAAK/oD,EAAK,GAAI,QAAS,CAAA,EAAK,MAAO,CAAE,SAAU,UAAW,WAAY,GAAA,CAAI,EAC9J,GAAGA,EAAK,OAAO,IAAKxJ,GAAU,CAC5B,MAAM+4D,EAAUgE,GAAe/8D,EAAOqf,EAAK,IAAU,EACrD,MAAO,CACL,GAAI,cAAcrf,EAAM,GAAG,GAC3B,KAAM,MACN,MAAO,CAAE,QAAS,OAAQ,IAAK,QAAS,WAAY,QAAA,EACpD,SAAU,CACR,CAAE,GAAI,cAAcA,EAAM,GAAG,SAAU,KAAM,OAAQ,MAAO,CAAE,MAAOA,EAAM,MAAMuyD,CAAI,GAAKvyD,EAAM,GAAA,EAAO,MAAO,CAAE,MAAO,QAAS,SAAU,SAAA,CAAU,EACpJ,CAAE,GAAI,cAAcA,EAAM,GAAG,WAAY,KAAM,YAAa,MAAO,CAAE,MAAO,OAAA,EAAW,SAAU,CAAC+4D,CAAO,CAAA,CAAE,CAC7G,CAEJ,CAAC,CAAA,EAEH,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,qBAAuB,CAAE,QAASrC,CAAA,CAAK,EAAE,CAAE,EACrF,EAEIyG,EAAoB,CACxB,GAAI,aACJ,KAAM,UACN,MAAO,CAAE,QAAS,OAAQ,eAAgB,gBAAiB,QAAS,MAAO,YAAa,WAAY,YAAarI,EAAA,EACjH,SAAU,CACR,CACE,GAAI,kBACJ,KAAM,SACN,MAAO,CAAE,MAAOvC,IAAS,KAAO,UAAY,OAAQ,QAAS,WAAA,EAC7D,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,KAAM,cAAe,MAAO,CAAE,MAAO,CAAE,KAAM,uBAAA,EAA0B,CAAE,CAAG,CAAA,CAAE,EAElH,CACE,GAAI,kBACJ,KAAM,SACN,MAAO,CAAE,MAAOA,IAAS,KAAO,SAAW,OAAQ,QAAS,WAAA,EAC5D,OAAQ,CAAE,QAAS,CAAC,CAAE,SAAU,CAAE,KAAM,cAAe,MAAO,CAAE,MAAO,CAAE,KAAM,uBAAA,EAA0B,CAAE,CAAG,CAAA,EAC9G,WAAY,CAAE,UAAW,CAAE,IAAK,CAAC,CAAE,KAAM,mBAAA,EAAuB,CAAE,QAASlzC,EAAK,MAAM,OAAS,CAAA,CAAG,EAAE,CAAE,EAExG,CACE,GAAI,oBACJ,KAAM,SACN,MAAO,CAAE,MAAOkzC,IAAS,KAAO,UAAY,SAAU,QAAS,SAAA,EAC/D,OAAQ,CACN,QAAS,CACP,CACE,OAAQ,CACN,UAAW,SACX,WAAYlzC,EAAK,KACjB,QAAS,OAAO,YACdA,EAAK,MAAM,QAASk1C,GAAMA,EAAE,OAAO,IAAK/8E,GAAM,CAACA,EAAE,IAAK,CAAE,MAAO,CAAE,KAAM,SAASA,EAAE,GAAG,EAAA,CAAG,CAAG,CAAC,CAAC,CAAA,EAE/F,WAAY,aACZ,UAAW,YACX,gBAAiB,YAAA,CACnB,CACF,CACF,EAEF,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,mBAAA,EAAuB,CAAE,QAAS6nC,EAAK,MAAM,OAAS,CAAA,CAAG,EAAE,CAAE,CACzG,CACF,EAGF,MAAO,CACL,QAAS,QACT,GAAIi2C,EACJ,KAAMrsE,EACN,MAAAiZ,EACA,KAAM,CACJ,GAAI,OACJ,KAAM,SACN,MAAO,CAAE,SAAU,YAAa,MAAO,QAAA,EACvC,SAAU,CACRo3D,GAAWrwE,EAAOX,EAAQ,oBAAsB,CAAA,CAAE,EAClD20E,EACA,GAAGC,EACH,CACE,GAAI,eACJ,KAAM,OACN,MAAO,CAAE,MAAO,CAAE,MAAO,kBAAkB,EAC3C,MAAO,CAAE,QAAS,OAAQ,MAAO,0BAAA,EACjC,WAAY,CAAE,UAAW,CAAE,KAAM,CAAC,CAAE,KAAM,mBAAqB,CAAE,QAAS,EAAA,CAAI,EAAE,CAAE,EAEpFC,CAAA,CACF,CACF,CAEJ","x_google_ignoreList":[0,1,2,3,4,19,20,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,65,66,67,68]}
|