@duro-app/ui 0.21.0 → 0.23.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.
Files changed (96) hide show
  1. package/dist/components/ActionBar/ActionBar.stories.d.ts.map +1 -1
  2. package/dist/components/Alert/Alert.meta.d.ts.map +1 -1
  3. package/dist/components/Callout/Callout.meta.d.ts.map +1 -1
  4. package/dist/components/Card/Card.meta.d.ts.map +1 -1
  5. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +22 -0
  6. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  7. package/dist/components/CheckboxGroup/CheckboxGroup.meta.d.ts +3 -0
  8. package/dist/components/CheckboxGroup/CheckboxGroup.meta.d.ts.map +1 -0
  9. package/dist/components/CheckboxGroup/CheckboxGroup.stories.d.ts +9 -0
  10. package/dist/components/CheckboxGroup/CheckboxGroup.stories.d.ts.map +1 -0
  11. package/dist/components/CheckboxGroup/styles.css.d.ts +12 -0
  12. package/dist/components/CheckboxGroup/styles.css.d.ts.map +1 -0
  13. package/dist/components/DetailPanel/DetailPanel.d.ts.map +1 -1
  14. package/dist/components/DetailPanel/DetailPanel.meta.d.ts.map +1 -1
  15. package/dist/components/DetailPanel/DetailPanel.stories.d.ts.map +1 -1
  16. package/dist/components/DetailPanel/styles.css.d.ts +4 -0
  17. package/dist/components/DetailPanel/styles.css.d.ts.map +1 -1
  18. package/dist/components/Dialog/Dialog.meta.d.ts.map +1 -1
  19. package/dist/components/Drawer/Drawer.meta.d.ts.map +1 -1
  20. package/dist/components/EmptyState/EmptyState.meta.d.ts.map +1 -1
  21. package/dist/components/Field/Field.stories.d.ts.map +1 -1
  22. package/dist/components/InputGroup/InputGroup.meta.d.ts.map +1 -1
  23. package/dist/components/List/List.d.ts +46 -0
  24. package/dist/components/List/List.d.ts.map +1 -0
  25. package/dist/components/List/List.meta.d.ts +3 -0
  26. package/dist/components/List/List.meta.d.ts.map +1 -0
  27. package/dist/components/List/List.stories.d.ts +9 -0
  28. package/dist/components/List/List.stories.d.ts.map +1 -0
  29. package/dist/components/List/styles.css.d.ts +77 -0
  30. package/dist/components/List/styles.css.d.ts.map +1 -0
  31. package/dist/components/Panel/Panel.d.ts.map +1 -1
  32. package/dist/components/Panel/Panel.meta.d.ts.map +1 -1
  33. package/dist/components/Panel/Panel.stories.d.ts.map +1 -1
  34. package/dist/components/Panel/styles.css.d.ts +4 -0
  35. package/dist/components/Panel/styles.css.d.ts.map +1 -1
  36. package/dist/components/RadioGroup/RadioGroup.d.ts +22 -0
  37. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
  38. package/dist/components/RadioGroup/RadioGroup.meta.d.ts +3 -0
  39. package/dist/components/RadioGroup/RadioGroup.meta.d.ts.map +1 -0
  40. package/dist/components/RadioGroup/RadioGroup.stories.d.ts +9 -0
  41. package/dist/components/RadioGroup/RadioGroup.stories.d.ts.map +1 -0
  42. package/dist/components/RadioGroup/styles.css.d.ts +60 -0
  43. package/dist/components/RadioGroup/styles.css.d.ts.map +1 -0
  44. package/dist/components/StatusIcon/StatusIcon.meta.d.ts.map +1 -1
  45. package/dist/components/Table/Table.d.ts +4 -3
  46. package/dist/components/Table/Table.d.ts.map +1 -1
  47. package/dist/components/Table/Table.stories.d.ts.map +1 -1
  48. package/dist/components/Table/styles.css.d.ts +1 -1
  49. package/dist/components/Tabs/Tabs.stories.d.ts.map +1 -1
  50. package/dist/components/ThemeProvider/ThemeProvider.meta.d.ts.map +1 -1
  51. package/dist/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  52. package/dist/index.css +1 -1
  53. package/dist/index.d.ts +3 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +1771 -1386
  56. package/dist/index.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/components/ActionBar/ActionBar.stories.tsx +10 -0
  59. package/src/components/Alert/Alert.meta.ts +4 -1
  60. package/src/components/Callout/Callout.meta.ts +4 -1
  61. package/src/components/Card/Card.meta.ts +4 -1
  62. package/src/components/Checkbox/styles.css.ts +1 -1
  63. package/src/components/CheckboxGroup/CheckboxGroup.meta.ts +25 -0
  64. package/src/components/CheckboxGroup/CheckboxGroup.stories.tsx +88 -0
  65. package/src/components/CheckboxGroup/CheckboxGroup.tsx +105 -0
  66. package/src/components/CheckboxGroup/styles.css.ts +13 -0
  67. package/src/components/DetailPanel/DetailPanel.meta.ts +4 -1
  68. package/src/components/DetailPanel/DetailPanel.stories.tsx +54 -27
  69. package/src/components/DetailPanel/DetailPanel.tsx +3 -16
  70. package/src/components/DetailPanel/styles.css.ts +5 -0
  71. package/src/components/Dialog/Dialog.meta.ts +8 -2
  72. package/src/components/Drawer/Drawer.meta.ts +4 -1
  73. package/src/components/EmptyState/EmptyState.meta.ts +1 -4
  74. package/src/components/Field/Field.stories.tsx +6 -0
  75. package/src/components/Icon/Icon.meta.ts +5 -5
  76. package/src/components/InputGroup/InputGroup.meta.ts +4 -1
  77. package/src/components/List/List.meta.ts +39 -0
  78. package/src/components/List/List.stories.tsx +200 -0
  79. package/src/components/List/List.tsx +118 -0
  80. package/src/components/List/styles.css.ts +99 -0
  81. package/src/components/Panel/Panel.meta.ts +12 -3
  82. package/src/components/Panel/Panel.stories.tsx +17 -10
  83. package/src/components/Panel/Panel.tsx +2 -10
  84. package/src/components/Panel/styles.css.ts +5 -0
  85. package/src/components/RadioGroup/RadioGroup.meta.ts +25 -0
  86. package/src/components/RadioGroup/RadioGroup.stories.tsx +83 -0
  87. package/src/components/RadioGroup/RadioGroup.tsx +113 -0
  88. package/src/components/RadioGroup/styles.css.ts +66 -0
  89. package/src/components/StatusIcon/StatusIcon.meta.ts +1 -4
  90. package/src/components/Table/Table.stories.tsx +25 -9
  91. package/src/components/Table/Table.tsx +31 -15
  92. package/src/components/Table/styles.css.ts +2 -2
  93. package/src/components/Tabs/Tabs.stories.tsx +7 -0
  94. package/src/components/ThemeProvider/ThemeProvider.meta.ts +1 -3
  95. package/src/components/Tooltip/Tooltip.stories.tsx +15 -0
  96. package/src/index.ts +3 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/compiler-runtime.js","../src/components/ActionBar/ActionBarProvider.tsx","../src/components/ActionBar/styles.css.ts","../src/components/ActionBar/ActionBar.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/Dialog/styles.css.ts","../src/components/Dialog/Dialog.tsx","../src/components/DetailPanel/styles.css.ts","../src/components/DetailPanel/DetailPanel.tsx","../src/components/Drawer/styles.css.ts","../src/components/Drawer/useSwipeDismiss.ts","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/Field/FieldContext.ts","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.tsx","../src/components/Panel/styles.css.ts","../src/components/Panel/Panel.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/hooks/useControllableValue.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/index.js","../src/components/Table/styles.css.ts","../src/components/Table/Table.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/Toggle/styles.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/styles.css.ts","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Switch/styles.css.ts","../src/components/Switch/Switch.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/components/PageShell/styles.css.ts","../src/components/PageShell/PageShell.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["/**\n * @license react-strict-dom\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';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","/**\n * @license React\n * react-compiler-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 ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-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 var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\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\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\n\ninterface ActionBarEntry {\n id: string\n render: () => ReactNode\n}\n\ninterface ActionBarStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ActionBarEntry[]\n push: (id: string, render: () => ReactNode) => void\n update: (id: string, render: () => ReactNode) => void\n remove: (id: string) => void\n}\n\nfunction createActionBarStore(): ActionBarStore {\n let entries: ActionBarEntry[] = []\n const listeners = new Set<() => void>()\n\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n push: (id, render) => {\n entries = [...entries, {id, render}]\n notify()\n },\n update: (id, render) => {\n entries = entries.map((e) => (e.id === id ? {id, render} : e))\n notify()\n },\n remove: (id) => {\n entries = entries.filter((e) => e.id !== id)\n notify()\n },\n }\n}\n\nconst ActionBarContext = createContext<ActionBarStore | null>(null)\n\nexport function ActionBarProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ActionBarStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createActionBarStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const topEntry = entries.length > 0 ? entries[entries.length - 1] : null\n\n return (\n <ActionBarContext.Provider value={store}>\n {children}\n {topEntry?.render()}\n </ActionBarContext.Provider>\n )\n}\n\nexport function useActionBarStack() {\n const store = useContext(ActionBarContext)\n const id = useId()\n\n const register = useCallback(\n (render: () => ReactNode) => {\n if (!store) return\n const entries = store.getSnapshot()\n if (entries.some((e) => e.id === id)) {\n store.update(id, render)\n } else {\n store.push(id, render)\n }\n },\n [store, id],\n )\n\n const unregister = useCallback(() => {\n store?.remove(id)\n }, [store, id])\n\n const isTop = useMemo(() => {\n if (!store) return false\n const entries = store.getSnapshot()\n return entries.length > 0 && entries[entries.length - 1].id === id\n }, [store, id])\n\n return {id, register, unregister, managed: store !== null, isTop}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n overlay: {\n position: 'fixed',\n bottom: spacing.lg,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.md,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n boxShadow: shadows.lg,\n zIndex: 50,\n maxWidth: 'calc(100vw - 48px)',\n },\n overlayEmphasized: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n selectedCount: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n fontFamily: typography.fontFamily,\n color: colors.text,\n whiteSpace: 'nowrap',\n },\n selectedCountEmphasized: {\n color: colors.accentContrast,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n closeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n padding: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderRadius: radii.sm,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n closeButtonEmphasized: {\n color: {\n default: colors.accentContrast,\n ':hover': colors.accentContrast,\n },\n opacity: {\n default: 0.7,\n ':hover': 1,\n },\n },\n separator: {\n width: 1,\n alignSelf: 'stretch',\n backgroundColor: colors.border,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n },\n separatorEmphasized: {\n backgroundColor: colors.accentContrast,\n opacity: 0.3,\n },\n})\n","import {useEffect, useCallback, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useActionBarStack} from './ActionBarProvider'\nimport {styles} from './styles.css'\n\nexport interface ActionBarProps {\n /** Number of selected items, or 'all'. Hidden when 0. */\n selectedItemCount: number | 'all'\n /** Label for the selection count. Receives the count string. */\n selectedLabel?: (count: string) => string\n /** Whether to use emphasized (accent) styling. */\n isEmphasized?: boolean\n /** Called when the clear/close button is pressed. */\n onClearSelection: () => void\n /** Whether the bar can be dismissed. When false, the close button is hidden. @default true */\n dismissible?: boolean\n /** Action buttons to display. */\n children: ReactNode\n}\n\nfunction ActionBarContent({\n selectedItemCount,\n selectedLabel,\n isEmphasized = false,\n onClearSelection,\n dismissible = true,\n children,\n}: ActionBarProps) {\n const countStr = selectedItemCount === 'all' ? 'All' : `${selectedItemCount}`\n const label = selectedLabel ? selectedLabel(countStr) : `${countStr} selected`\n\n return (\n <html.div\n role=\"toolbar\"\n aria-label={label}\n style={[styles.overlay, isEmphasized && styles.overlayEmphasized]}\n >\n <html.span style={[styles.selectedCount, isEmphasized && styles.selectedCountEmphasized]}>\n {label}\n </html.span>\n <html.div style={[styles.separator, isEmphasized && styles.separatorEmphasized]} />\n <html.div style={styles.actions}>{children}</html.div>\n {dismissible && (\n <html.button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClearSelection}\n style={[styles.closeButton, isEmphasized && styles.closeButtonEmphasized]}\n >\n <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )}\n </html.div>\n )\n}\n\nfunction ActionBarInner(props: ActionBarProps) {\n const {selectedItemCount} = props\n const stack = useActionBarStack()\n const isActive = selectedItemCount !== 0\n\n const renderBar = useCallback(() => <ActionBarContent {...props} />, [props])\n\n useEffect(() => {\n if (!stack.managed) return\n if (isActive) {\n stack.register(renderBar)\n } else {\n stack.unregister()\n }\n return () => stack.unregister()\n }, [stack, isActive, renderBar])\n\n // If no provider, fall back to standalone rendering\n if (!stack.managed) {\n if (!isActive) return null\n return <ActionBarContent {...props} />\n }\n\n // Managed by provider — rendering happens there\n return null\n}\n\nexport const ActionBar = ActionBarInner\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\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 width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return <html.span style={[styles.base, sizeMap[size], styles[variant]]}>{children}</html.span>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n inverseSecondary: {\n backgroundColor: {\n default: 'rgba(0, 0, 0, 0.10)',\n ':hover': 'rgba(0, 0, 0, 0.18)',\n },\n borderColor: {\n default: 'rgba(0, 0, 0, 0.55)',\n ':hover': 'rgba(0, 0, 0, 0.70)',\n },\n color: colors.accentContrast,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'inverseSecondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n style={[\n styles.base,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n overflow: 'hidden', // contain the float\n },\n icon: {\n float: 'left',\n marginRight: spacing.sm,\n marginBottom: spacing.xs,\n marginTop: 2,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"note\" style={[styles.base, styles[variant]]}>\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n transform: {\n default: 'translateY(0)',\n ':hover': 'translateY(-2px)',\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n check: {\n width: 12,\n height: 12,\n color: colors.accentContrast,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n /** Accessible label when no visible label (children) is provided. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n 'aria-label': ariaLabel,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n aria-label={!children ? ariaLabel : undefined}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n opacity: {\n default: 1,\n },\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '180ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n backdropClosing: {\n opacity: {\n default: 0,\n },\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '140ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Viewport (centering container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.lg,\n // Allow clicking backdrop through viewport when clicking outside popup\n pointerEvents: 'none',\n },\n\n // --- Popup ---\n popup: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n borderRadius: radii.lg,\n boxShadow: shadows.lg,\n width: '100%',\n maxHeight: '85vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n popupOpen: {\n opacity: {\n default: 1,\n },\n animationName: css.keyframes({\n from: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n to: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n }),\n animationDuration: '180ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n popupClosing: {\n opacity: {\n default: 0,\n },\n animationName: css.keyframes({\n from: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n to: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n }),\n animationDuration: '140ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Sizes ---\n sm: {maxWidth: 400},\n md: {maxWidth: 520},\n lg: {maxWidth: 680},\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n\n // --- Inline wrapper (for Trigger / Close children) ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n\n // --- Reduced motion ---\n reducedMotion: {\n animationDuration: '1ms',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DialogSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DialogContextValue {\n open: boolean\n closing: boolean\n dismissable: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n descriptionId: string\n popupRef: RefObject<HTMLDivElement | null>\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialog() {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error('Dialog compound components must be used within Dialog.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when dialog open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether clicking backdrop closes the dialog. Default: true */\n dismissable?: boolean\n /** Duration of the close animation in ms. Default: 140 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n dismissable = true,\n closeAnimationDuration = 140,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n // If controlled open goes false externally, trigger close animation\n useEffect(() => {\n if (isControlled && !controlledOpen && !closing) {\n // Already closed, nothing to animate\n }\n }, [isControlled, controlledOpen, closing])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n dismissable,\n requestOpen,\n requestClose,\n titleId,\n descriptionId,\n popupRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {requestOpen} = useDialog()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal (renders backdrop + viewport + popup) ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DialogSize\n}\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {open, closing, dismissable, requestClose, titleId, descriptionId, popupRef} = useDialog()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n if (!open) return null\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport (centering container, pointer-events: none) */}\n <html.div style={styles.viewport}>\n <html.div\n ref={popupRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.popup,\n styles[size],\n closing && styles.popupClosing,\n !closing && styles.popupOpen,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDialog()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDialog()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDialog()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Dialog = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\n/** Apple-standard ease: aggressive deceleration, feels like \"arriving\" */\nconst APPLE_EASE_OUT = 'cubic-bezier(0.32, 0.72, 0, 1)'\nconst APPLE_EASE_IN = 'cubic-bezier(0.72, 0, 0.68, 0.28)'\n\nconst OPEN_DURATION = '280ms'\nconst CLOSE_DURATION = '220ms'\n\nexport const styles = css.create({\n // --- Outer wrapper: animates width from 0 → target ---\n wrapper: {\n overflow: 'hidden',\n flexShrink: 0,\n position: 'relative',\n },\n\n // --- Wrapper open/close: SM (360px) ---\n wrapperOpenSm: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 360},\n }),\n animationDuration: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\n animationFillMode: 'both',\n },\n wrapperCloseSm: {\n animationName: css.keyframes({\n from: {width: 360},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: APPLE_EASE_IN,\n animationFillMode: 'both',\n },\n\n // --- Wrapper open/close: MD (480px) ---\n wrapperOpenMd: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 480},\n }),\n animationDuration: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\n animationFillMode: 'both',\n },\n wrapperCloseMd: {\n animationName: css.keyframes({\n from: {width: 480},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: APPLE_EASE_IN,\n animationFillMode: 'both',\n },\n\n // --- Content panel ---\n content: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n boxShadow: shadows.sm,\n position: 'relative',\n },\n\n // Content must maintain its target width even while wrapper is narrower\n contentSm: {width: 360},\n contentMd: {width: 480},\n\n // --- Content slide + fade animations ---\n slideIn: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n }),\n animationDuration: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\n animationFillMode: 'both',\n },\n slideOut: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n to: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: APPLE_EASE_IN,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n // --- Title ---\n title: {\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 1.4,\n color: colors.text,\n margin: 0,\n flex: 1,\n minWidth: 0,\n },\n\n // --- Body ---\n body: {\n flex: 1,\n overflowY: 'auto',\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: 8,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DetailPanelSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface DetailPanelContextValue {\n present: boolean\n closing: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n labelId: string | undefined\n registerTitle: (id: string) => void\n unregisterTitle: () => void\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DetailPanelContext = createContext<DetailPanelContextValue | null>(null)\n\nfunction useDetailPanel() {\n const ctx = useContext(DetailPanelContext)\n if (!ctx) throw new Error('DetailPanel compound components must be used within DetailPanel.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Duration of the close animation in ms. Default: 220 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n closeAnimationDuration = 220,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [present, setPresent] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n const previousFocusRef = useRef<Element | null>(null)\n\n const titleId = useId()\n const [labelId, setLabelId] = useState<string | undefined>(undefined)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Sync presence with open state\n useEffect(() => {\n if (isOpen && !present) {\n setPresent(true)\n setClosing(false)\n } else if (!isOpen && present && !closing) {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n setPresent(false)\n closingTimerRef.current = null\n }, closeAnimationDuration)\n }\n }, [isOpen, present, closing, closeAnimationDuration])\n\n // Focus management: move focus on open, restore on close\n useEffect(() => {\n if (present && !closing) {\n previousFocusRef.current = document.activeElement\n panelRef.current?.focus()\n }\n }, [present]) // eslint-disable-line react-hooks/exhaustive-deps -- only on present change\n\n useEffect(() => {\n if (!present && previousFocusRef.current) {\n const el = previousFocusRef.current as HTMLElement\n if (typeof el.focus === 'function') {\n el.focus()\n }\n previousFocusRef.current = null\n }\n }, [present])\n\n // ESC handler\n useEffect(() => {\n if (!present || closing) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [present, closing]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n setClosing(false)\n }\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n const registerTitle = useCallback((id: string) => {\n setLabelId(id)\n }, [])\n\n const unregisterTitle = useCallback(() => {\n setLabelId(undefined)\n }, [])\n\n return (\n <DetailPanelContext.Provider\n value={{\n present,\n closing,\n requestOpen,\n requestClose,\n titleId,\n labelId,\n registerTitle,\n unregisterTitle,\n panelRef,\n }}\n >\n {children}\n </DetailPanelContext.Provider>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n /** Width of the panel. Default: 'sm' (360px) */\n size?: DetailPanelSize\n /** Accessible name for the complementary landmark */\n label: string\n}\n\nconst wrapperOpenMap = {\n sm: styles.wrapperOpenSm,\n md: styles.wrapperOpenMd,\n} as const\n\nconst wrapperCloseMap = {\n sm: styles.wrapperCloseSm,\n md: styles.wrapperCloseMd,\n} as const\n\nfunction Content({children, size = 'sm', label}: ContentProps) {\n const {present, closing, labelId, panelRef} = useDetailPanel()\n\n if (!present) return null\n\n return (\n <html.div\n style={[\n styles.wrapper,\n closing ? wrapperCloseMap[size] : wrapperOpenMap[size],\n ]}\n >\n <html.div\n ref={panelRef}\n role=\"complementary\"\n aria-label={!labelId ? label : undefined}\n aria-labelledby={labelId || undefined}\n tabIndex={-1}\n style={[\n styles.content,\n size === 'sm' ? styles.contentSm : styles.contentMd,\n closing ? styles.slideOut : styles.slideIn,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId, registerTitle, unregisterTitle} = useDetailPanel()\n\n useEffect(() => {\n registerTitle(titleId)\n return () => unregisterTitle()\n }, [titleId, registerTitle, unregisterTitle])\n\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return (\n <html.div style={[styles.body, padded && styles.bodyPadded]}>\n {children}\n </html.div>\n )\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDetailPanel()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button\n onClick={requestClose}\n aria-label={ariaLabel}\n style={styles.closeButton}\n >\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const DetailPanel = {\n Root,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Viewport (positioning container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n pointerEvents: 'none',\n },\n\n // Right anchor (desktop default)\n viewportRight: {\n justifyContent: 'flex-end',\n alignItems: 'stretch',\n },\n // Left anchor\n viewportLeft: {\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n },\n // Bottom anchor (mobile default)\n viewportBottom: {\n justifyContent: 'stretch',\n alignItems: 'flex-end',\n },\n\n // --- Panel ---\n panel: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 0,\n touchAction: 'none',\n },\n\n // Panel sizing per anchor\n panelHorizontal: {\n width: '100%',\n height: '100%',\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n panelVertical: {\n width: '100%',\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n borderTopLeftRadius: radii.lg,\n borderTopRightRadius: radii.lg,\n maxHeight: '85vh',\n },\n panelLeftBorder: {\n borderLeftWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n\n // --- Panel widths (horizontal anchors) ---\n sm: {maxWidth: 360},\n md: {maxWidth: 480},\n lg: {maxWidth: 640},\n\n // --- Slide animations: Right ---\n slideInRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n slideOutRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Left ---\n slideInLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(-100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n slideOutLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(-100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Bottom ---\n slideInBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(100%)'},\n to: {transform: 'translateY(0)'},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n slideOutBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(0)'},\n to: {transform: 'translateY(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n\n // --- Inline wrapper ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {useRef, useCallback, useEffect} from 'react'\nimport type {DrawerAnchor} from './Drawer'\n\n/** Threshold: fraction of panel size the user must drag to dismiss */\nconst DISMISS_THRESHOLD = 0.3\n\n/** Minimum velocity (px/ms) to dismiss even below threshold */\nconst VELOCITY_THRESHOLD = 0.5\n\n/** Duration for the dismiss slide-out animation (ms) */\nconst DISMISS_DURATION = 160\n\n/**\n * Max pixels the panel visually \"grows\" when dragged in the opposite direction.\n * iOS-style: panel stays anchored to its edge, doesn't translate.\n * Instead we show a subtle shadow/scale hint capped at this value.\n */\nconst OPPOSITE_MAX_OVERSCROLL = 12\n\ninterface UseSwipeDismissOptions {\n anchor: DrawerAnchor\n enabled: boolean\n onDismiss: () => void\n panelRef: React.RefObject<HTMLDivElement | null>\n}\n\ninterface SwipeState {\n startX: number\n startY: number\n currentX: number\n currentY: number\n startTime: number\n swiping: boolean\n panelSize: number\n}\n\n/**\n * Hook that adds swipe-to-dismiss gesture to a drawer panel.\n *\n * Dismiss direction: panel follows finger 1:1, backdrop fades.\n * Opposite direction: iOS-style — panel stays anchored, shows subtle\n * overscroll feedback (box-shadow intensifies), then snaps back.\n */\nexport function useSwipeDismiss({anchor, enabled, onDismiss, panelRef}: UseSwipeDismissOptions) {\n const stateRef = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n startTime: 0,\n swiping: false,\n panelSize: 0,\n })\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n /** Returns positive = dismiss direction, negative = opposite */\n const getMovement = useCallback(\n (state: SwipeState) => {\n if (isHorizontal) {\n const dx = state.currentX - state.startX\n return anchor === 'right' ? dx : -dx\n }\n return state.currentY - state.startY\n },\n [anchor, isHorizontal],\n )\n\n const applyTransform = useCallback(\n (movement: number, panelEl: HTMLDivElement) => {\n const size = Number(panelEl.dataset.panelSize) || 1\n\n if (movement >= 0) {\n // Dismiss direction — 1:1 tracking\n const progress = movement / size\n\n if (isHorizontal) {\n const sign = anchor === 'right' ? 1 : -1\n panelEl.style.transform = `translateX(${sign * movement}px)`\n } else {\n panelEl.style.transform = `translateY(${movement}px)`\n }\n\n // Fade backdrop proportionally\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = String(Math.max(0, 1 - progress))\n }\n } else {\n // Opposite direction — iOS behavior:\n // Panel stays anchored (no translate). Show subtle overscroll via box-shadow.\n // Diminishing resistance: asymptotically approaches OPPOSITE_MAX_OVERSCROLL.\n const absMovement = Math.abs(movement)\n const overscroll = (absMovement / (absMovement + size * 0.5)) * OPPOSITE_MAX_OVERSCROLL\n const shadowSpread = Math.round(overscroll)\n\n panelEl.style.transform = ''\n panelEl.style.boxShadow =\n shadowSpread > 0 ? `0 0 ${shadowSpread * 2}px ${shadowSpread}px rgba(0, 0, 0, 0.15)` : ''\n }\n },\n [anchor, isHorizontal],\n )\n\n /** Reset all inline styles (snap back) */\n const resetStyles = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transform = ''\n panelEl.style.boxShadow = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = ''\n }\n }, [])\n\n /** Animate to fully dismissed position, then call onDismiss */\n const animateDismiss = useCallback(\n (panelEl: HTMLDivElement) => {\n const dismissTransform = isHorizontal\n ? `translateX(${anchor === 'right' ? '100%' : '-100%'})`\n : 'translateY(100%)'\n\n panelEl.style.transition = `transform ${DISMISS_DURATION}ms ease-in`\n panelEl.style.transform = dismissTransform\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = `opacity ${DISMISS_DURATION}ms ease-in`\n backdrop.style.opacity = '0'\n }\n\n // When the slide-out transition finishes, just call onDismiss.\n // Do NOT reset inline styles before unmount — that causes a 1-frame flash\n // where the panel appears at its original position. React will unmount the\n // DOM node entirely, so the inline styles don't need cleanup.\n let dismissed = false\n const done = () => {\n if (dismissed) return\n dismissed = true\n onDismiss()\n }\n panelEl.addEventListener('transitionend', done, {once: true})\n setTimeout(done, DISMISS_DURATION + 50)\n },\n [anchor, isHorizontal, onDismiss],\n )\n\n /** Animate snap-back for dismiss-direction undershoot */\n const animateSnapBack = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transition = 'transform 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n panelEl.style.transform = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = 'opacity 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n backdrop.style.opacity = ''\n }\n\n const cleanup = () => {\n panelEl.style.transition = ''\n if (backdrop) backdrop.style.transition = ''\n }\n panelEl.addEventListener('transitionend', cleanup, {once: true})\n setTimeout(cleanup, 250)\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const panel = panelRef.current\n if (!panel) return\n\n function handlePointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n const target = e.target as HTMLElement\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return\n }\n\n const rect = panel!.getBoundingClientRect()\n const state = stateRef.current\n state.startX = e.clientX\n state.startY = e.clientY\n state.currentX = e.clientX\n state.currentY = e.clientY\n state.startTime = Date.now()\n state.swiping = false\n state.panelSize = isHorizontal ? rect.width : rect.height\n\n panel!.dataset.panelSize = String(state.panelSize)\n panel!.setPointerCapture(e.pointerId)\n\n // Freeze CSS animation — we take over positioning.\n // Never restore it; the panel is already at its final resting position.\n panel!.style.animation = 'none'\n }\n\n function handlePointerMove(e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n state.currentX = e.clientX\n state.currentY = e.clientY\n\n const dx = Math.abs(state.currentX - state.startX)\n const dy = Math.abs(state.currentY - state.startY)\n\n if (!state.swiping) {\n const totalMovement = Math.sqrt(dx * dx + dy * dy)\n if (totalMovement < 8) return\n\n if (isHorizontal && dx > dy) {\n state.swiping = true\n } else if (!isHorizontal && dy > dx) {\n state.swiping = true\n } else {\n // Wrong axis — abort gesture\n state.startTime = 0\n return\n }\n }\n\n if (state.swiping) {\n e.preventDefault()\n const movement = getMovement(state)\n applyTransform(movement, panel!)\n }\n }\n\n function handlePointerUp(_e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n const movement = getMovement(state)\n const elapsed = Date.now() - state.startTime\n const velocity = movement / elapsed\n\n state.startTime = 0\n\n if (!state.swiping) {\n return\n }\n\n state.swiping = false\n\n if (movement <= 0) {\n // Was dragging in opposite direction — just reset (no translate was applied)\n resetStyles(panel!)\n return\n }\n\n const fraction = movement / state.panelSize\n const shouldDismiss = fraction > DISMISS_THRESHOLD || velocity > VELOCITY_THRESHOLD\n\n if (shouldDismiss) {\n animateDismiss(panel!)\n } else {\n animateSnapBack(panel!)\n }\n }\n\n function handlePointerCancel() {\n const state = stateRef.current\n state.startTime = 0\n state.swiping = false\n resetStyles(panel!)\n }\n\n panel.addEventListener('pointerdown', handlePointerDown)\n panel.addEventListener('pointermove', handlePointerMove)\n panel.addEventListener('pointerup', handlePointerUp)\n panel.addEventListener('pointercancel', handlePointerCancel)\n\n function handleTouchMove(e: TouchEvent) {\n if (stateRef.current.swiping) {\n e.preventDefault()\n }\n }\n panel.addEventListener('touchmove', handleTouchMove, {passive: false})\n\n return () => {\n panel.removeEventListener('pointerdown', handlePointerDown)\n panel.removeEventListener('pointermove', handlePointerMove)\n panel.removeEventListener('pointerup', handlePointerUp)\n panel.removeEventListener('pointercancel', handlePointerCancel)\n panel.removeEventListener('touchmove', handleTouchMove)\n }\n }, [\n enabled,\n panelRef,\n anchor,\n isHorizontal,\n getMovement,\n applyTransform,\n resetStyles,\n animateSnapBack,\n animateDismiss,\n ])\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useSwipeDismiss} from './useSwipeDismiss'\n\n// --- Types ---\n\nexport type DrawerAnchor = 'right' | 'left' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DrawerContextValue {\n open: boolean\n closing: boolean\n anchor: DrawerAnchor\n dismissable: boolean\n swipeDismiss: boolean\n requestOpen: () => void\n requestClose: () => void\n /** Close immediately without CSS animation (used by swipe dismiss which handles its own exit animation) */\n requestCloseImmediate: () => void\n titleId: string\n descriptionId: string\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nfunction useDrawer() {\n const ctx = useContext(DrawerContext)\n if (!ctx) throw new Error('Drawer compound components must be used within Drawer.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when drawer open state changes */\n onOpenChange?: (open: boolean) => void\n /** Which edge the drawer slides from. Default: 'right' */\n anchor?: DrawerAnchor\n /** Whether clicking backdrop or pressing Escape closes the drawer. Default: true */\n dismissable?: boolean\n /** Whether swipe gesture dismisses the drawer. Default: true */\n swipeDismiss?: boolean\n /** Duration of the close animation in ms. Default: 160 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n anchor = 'right',\n dismissable = true,\n swipeDismiss = true,\n closeAnimationDuration = 160,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n const requestCloseImmediate = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DrawerContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n anchor,\n dismissable,\n swipeDismiss,\n requestOpen,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n }}\n >\n {children}\n </DrawerContext.Provider>\n )\n}\n\n// --- Trigger ---\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {requestOpen} = useDrawer()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DrawerSize\n}\n\n// Slide animation maps\nconst slideInMap = {\n right: styles.slideInRight,\n left: styles.slideInLeft,\n bottom: styles.slideInBottom,\n} as const\n\nconst slideOutMap = {\n right: styles.slideOutRight,\n left: styles.slideOutLeft,\n bottom: styles.slideOutBottom,\n} as const\n\nconst viewportAnchorMap = {\n right: styles.viewportRight,\n left: styles.viewportLeft,\n bottom: styles.viewportBottom,\n} as const\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {\n open,\n closing,\n anchor,\n dismissable,\n swipeDismiss: swipeEnabled,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n } = useDrawer()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n // Swipe-to-dismiss — uses immediate close since the hook handles its own exit animation\n useSwipeDismiss({\n anchor,\n enabled: swipeEnabled && open && !closing,\n onDismiss: requestCloseImmediate,\n panelRef,\n })\n\n if (!open) return null\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport */}\n <html.div style={[styles.viewport, viewportAnchorMap[anchor]]} data-drawer-viewport=\"\">\n <html.div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.panel,\n isHorizontal && styles.panelHorizontal,\n isHorizontal && styles[size],\n !isHorizontal && styles.panelVertical,\n anchor === 'left' && styles.panelLeftBorder,\n closing && slideOutMap[anchor],\n !closing && slideInMap[anchor],\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDrawer()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDrawer()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDrawer()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Drawer = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {createContext, useContext} from 'react'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n field?: {\n value: unknown\n onChange: (...event: unknown[]) => void\n onBlur: () => void\n ref: React.RefCallback<unknown>\n name: string\n }\n errorMessage?: string\n}\n\nexport type {FieldContextValue}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {createContext, useContext} from 'react'\n\nexport const FormContext = createContext(false)\n\nexport function useFormContext() {\n return useContext(FormContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.error,\n },\n})\n","import {type ReactNode, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useFormContext as useRHFFormContext, useController} from 'react-hook-form'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {useFormContext} from '../Form/FormContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n invalid?: boolean\n children: ReactNode\n}\n\nfunction Root({name, ...props}: RootProps) {\n const insideForm = useFormContext()\n if (name && insideForm) {\n return <ControlledRoot name={name} {...props} />\n }\n return <StaticRoot {...props} />\n}\n\n// Always calls useController — no conditional hooks\nfunction ControlledRoot({\n name,\n invalid: invalidProp = false,\n children,\n}: {\n name: string\n invalid?: boolean\n children: ReactNode\n}) {\n const id = useId()\n const {control} = useRHFFormContext()\n const {field, fieldState} = useController({control, name})\n const invalid = invalidProp || !!fieldState.error\n\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n field: {\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n name: field.name,\n },\n errorMessage: fieldState.error?.message,\n }),\n [\n id,\n invalid,\n field.value,\n field.onChange,\n field.onBlur,\n field.ref,\n field.name,\n fieldState.error,\n ],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </FieldContext.Provider>\n )\n}\n\n// Current behavior, no RHF dependency\nfunction StaticRoot({invalid = false, children}: {invalid?: boolean; children: ReactNode}) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n }),\n [id, invalid],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </FieldContext.Provider>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n return (\n <html.label for={ctx?.controlId} style={styles.label}>\n {children}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n const content = children ?? ctx?.errorMessage\n if (!ctx?.invalid && !content) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {content}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {type ReactNode, useCallback, useEffect, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {\n useForm,\n FormProvider,\n type UseFormReturn,\n type DefaultValues,\n type FieldValues,\n} from 'react-hook-form'\nimport {effectTsResolver} from '@hookform/resolvers/effect-ts'\nimport type {Schema} from 'effect'\nimport {FormContext} from './FormContext'\n\nexport interface FormProps<T extends FieldValues> {\n schema: Schema.Schema<T>\n defaultValues: DefaultValues<T>\n onSubmit: (data: T) => void | Promise<void>\n children: ReactNode | ((methods: UseFormReturn<T>) => ReactNode)\n}\n\nexport function Form<T extends FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n children,\n}: FormProps<T>) {\n const methods = useForm<T>({\n resolver: effectTsResolver(schema),\n defaultValues,\n mode: 'onTouched',\n reValidateMode: 'onChange',\n })\n\n const formRef = useRef<HTMLFormElement>(null)\n const handleSubmit = useCallback(\n (e: Event) => {\n e.preventDefault()\n void methods.handleSubmit(onSubmit)()\n },\n [methods, onSubmit],\n )\n\n useEffect(() => {\n const el = formRef.current\n if (!el) return\n el.addEventListener('submit', handleSubmit)\n return () => el.removeEventListener('submit', handleSubmit)\n }, [handleSubmit])\n\n return (\n <FormProvider {...methods}>\n <FormContext.Provider value={true}>\n <html.form ref={formRef}>\n {typeof children === 'function' ? children(methods) : children}\n </html.form>\n </FormContext.Provider>\n </FormProvider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n // Reset native fieldset chrome\n borderWidth: 0,\n margin: 0,\n padding: 0,\n minWidth: 0,\n },\n legend: {\n // Reset native legend quirks\n padding: 0,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type FieldsetGap = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl'\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n} as const\n\n// --- Root ---\ninterface RootProps {\n /** Disables all form controls within the fieldset */\n disabled?: boolean\n /** Gap between child elements */\n gap?: FieldsetGap\n children: ReactNode\n}\n\nfunction Root({disabled = false, gap = 'md', children}: RootProps) {\n return (\n <html.div\n role=\"group\"\n aria-disabled={disabled || undefined}\n style={[styles.root, gapMap[gap], disabled && styles.disabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Legend ---\ninterface LegendProps {\n children: ReactNode\n}\n\nfunction Legend({children}: LegendProps) {\n return <html.span style={styles.legend}>{children}</html.span>\n}\n\nexport const Fieldset = {\n Root,\n Legend,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n type?: InputType\n name?: string\n placeholder?: string\n required?: boolean\n minLength?: number\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n type = 'text',\n name,\n placeholder,\n required,\n minLength,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n onChange,\n onBlur,\n ref,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n // react-strict-dom omits web-only `pattern` from its types, but the\n // underlying DOM element supports it. Type-assert to pass it through.\n const extraProps = pattern !== undefined ? {pattern} : undefined\n\n return (\n <html.input\n id={ctx?.controlId}\n type={type}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictInputProps['onChange']}\n onBlur={effectiveOnBlur as StrictInputProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[styles.base, styles[effectiveVariant], groupCtx?.inGroup && styles.inGroup]}\n {...(extraProps as Record<string, unknown>)}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\nconst dynamicStyles = css.create({\n minWidth: (value: number | string) => ({minWidth: value}),\n})\n\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n /** Optional minimum width to prevent layout shift (e.g. Copy → Copied!) */\n minWidth?: number | string\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, minWidth, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n minWidth != null && dynamicStyles.minWidth(minWidth),\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n },\n bordered: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n body: {\n flex: 1,\n overflowY: 'auto',\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Adds an outer border. Default: false */\n bordered?: boolean\n}\n\nfunction Root({children, bordered = false}: RootProps) {\n return (\n <html.div style={[styles.root, bordered && styles.bordered]}>\n {children}\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return (\n <html.div style={[styles.body, padded && styles.bodyPadded]}>\n {children}\n </html.div>\n )\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Export ---\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: '200ms',\n transitionTimingFunction: 'ease',\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {scrolling, scrollHeight, scrollWidth, clientHeight, clientWidth} = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n return (\n <html.div\n style={[\n styles.scrollbar,\n orientation === 'vertical' ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n zIndex: 50,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: ReactNode\n 'aria-label'?: string\n}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId} = useSelect()\n\n return (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[styles.popup, !open && styles.hidden]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.lg,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n // Auto-expand group containing active value\n useEffect(() => {\n if (activeValue) {\n setExpandedGroups((prev) => {\n // We don't know which group it belongs to here — Group handles this\n return prev\n })\n }\n }, [activeValue])\n\n return (\n <SideNavContext.Provider\n value={{activeValue, onSelect, expandedGroups, toggleGroup, registerItem, orderRef}}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n toggleGroup(key)\n }\n }, [activeValue, key, expandedGroups, toggleGroup])\n\n // Expand on first render if defaultExpanded\n useEffect(() => {\n if (defaultExpanded && !expandedGroups.has(key)) {\n toggleGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value, children}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n {children}\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","/**\n * @license react-strict-dom\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';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Root\n root: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Header group\n header: {\n backgroundColor: colors.bgCard,\n },\n\n // Row\n row: {\n display: 'grid',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowLastChild: {\n borderBottomWidth: 0,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n\n // Header cell\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n },\n\n // Body cell\n cell: {\n color: colors.text,\n display: 'flex',\n alignItems: 'center',\n },\n\n // Size: sm\n cellSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows)\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders)\n borderedCell: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // Dynamic styles — simple identifier params only (StyleX constraint)\n gridColumns: (columns: number) => ({\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }),\n})\n","import {type ReactNode, createContext, useContext, Children} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n columns: number\n isHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext (to distinguish header vs body rowgroup) ---\n\nconst HeaderContext = createContext(false)\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n columns: number\n}\n\nfunction Root({children, variant = 'default', size = 'md', columns}: RootProps) {\n return (\n <TableContext.Provider value={{variant, size, columns, isHeader: false}}>\n <html.div role=\"table\" style={styles.root}>\n {children}\n </html.div>\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children)\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\">\n {childArray.map((child, index) => {\n if (variant === 'striped') {\n return (\n <RowIndexContext.Provider key={index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n }\n return child\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// Row index context for striped variant\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n\nfunction Row({children}: {children: ReactNode}) {\n const {variant, columns} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children)\n\n return (\n <html.div\n role=\"row\"\n style={[\n styles.row,\n styles.gridColumns(columns),\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n ]}\n >\n {variant === 'bordered'\n ? childArray.map((child, index) => (\n <CellIndexContext.Provider key={index} value={{index, total: childArray.length}}>\n {child}\n </CellIndexContext.Provider>\n ))\n : children}\n </html.div>\n )\n}\n\n// Cell index context for bordered variant\nconst CellIndexContext = createContext<{index: number; total: number}>({\n index: 0,\n total: 0,\n})\n\n// --- HeaderCell ---\n\nfunction HeaderCell({\n children,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n 'aria-label'?: string\n}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n aria-label={ariaLabel}\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Cell ---\n\nfunction Cell({children}: {children: ReactNode}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const Table = {\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {activeValue, onSelect, orientation, registerTab, tabsRef, orderRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ntype StrictTextareaProps = React.ComponentProps<typeof html.textarea>\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLTextAreaElement>\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n onChange,\n onBlur,\n ref,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictTextareaProps['onChange']}\n onBlur={effectiveOnBlur as StrictTextareaProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLTextAreaElement>}\n style={[styles.base, styles[effectiveVariant]]}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n","import {type ReactNode} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n color: colors.text,\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n\n return <html.div style={themeStyles}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {createContext, useContext} from 'react'\nimport type {ToggleSize} from '../Toggle/Toggle'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface ToggleGroupContextValue {\n value: string[]\n toggle: (itemValue: string) => void\n disabled: boolean\n orientation: Orientation\n size: ToggleSize\n}\n\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nexport function useToggleGroup() {\n return useContext(ToggleGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n sizeDefault: {\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: typography.fontSizeSm,\n borderRadius: radii.sm,\n gap: spacing.sm,\n },\n sizeSmall: {\n padding: `${spacing.xs} ${spacing.sm}`,\n fontSize: typography.fontSizeXs,\n borderRadius: radii.sm,\n gap: spacing.xs,\n },\n unpressed: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n color: colors.textMuted,\n },\n pressed: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n borderColor: colors.accent,\n color: colors.accentContrast,\n },\n grouped: {\n borderWidth: 0,\n borderRadius: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n // Override any borderColor set by pressed state — dividers always use border token\n borderColor: colors.border,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useToggleGroup} from '../ToggleGroup/ToggleGroupContext'\nimport {styles} from './styles.css'\n\nexport type ToggleSize = 'default' | 'small'\n\ninterface ToggleProps {\n /** Controlled pressed state (standalone usage). */\n pressed?: boolean\n /** Initial pressed state (uncontrolled, standalone usage). */\n defaultPressed?: boolean\n /** Callback fired when the pressed state changes (standalone usage). */\n onPressedChange?: (pressed: boolean) => void\n /** Unique value when used inside a ToggleGroup. */\n value?: string\n /** Prevents user interaction. */\n disabled?: boolean\n /** Size variant (overridden by ToggleGroup when grouped). */\n size?: ToggleSize\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Toggle({\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n value,\n disabled: disabledProp = false,\n size: sizeProp = 'default',\n 'aria-label': ariaLabel,\n children,\n}: ToggleProps) {\n const group = useToggleGroup()\n\n // When inside a ToggleGroup, derive pressed state from group context\n const groupPressed = group && value !== undefined ? group.value.includes(value) : undefined\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const size = group?.size ?? sizeProp\n\n const [standalonePressed, setStandalonePressed] = useControllableValue(\n controlledPressed,\n defaultPressed,\n onPressedChange,\n )\n\n const pressed = groupPressed ?? standalonePressed\n\n const handleClick = useCallback(() => {\n if (disabled) return\n if (isGrouped && value !== undefined) {\n group.toggle(value)\n } else {\n setStandalonePressed(!pressed)\n }\n }, [disabled, isGrouped, value, group, pressed, setStandalonePressed])\n\n return (\n <html.button\n type=\"button\"\n aria-pressed={pressed}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={handleClick}\n data-pressed={pressed ? '' : undefined}\n style={[\n styles.base,\n sizeMap[size],\n pressed ? styles.pressed : styles.unpressed,\n isGrouped && styles.grouped,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n overflow: 'hidden',\n },\n vertical: {\n flexDirection: 'column',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ToggleSize} from '../Toggle/Toggle'\nimport {ToggleGroupContext, type Orientation} from './ToggleGroupContext'\nimport {styles} from './styles.css'\n\ninterface ToggleGroupProps {\n /** Controlled value — array of pressed item values. */\n value?: string[]\n /** Initial value (uncontrolled). */\n defaultValue?: string[]\n /** Callback fired when the set of pressed values changes. */\n onValueChange?: (value: string[]) => void\n /** When false, at most one item can be pressed at a time. */\n multiple?: boolean\n /** Prevents interaction with all items. */\n disabled?: boolean\n /** Layout direction. */\n orientation?: Orientation\n /** Size applied to all child toggles. */\n size?: ToggleSize\n children: ReactNode\n}\n\nexport function ToggleGroup({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n multiple = false,\n disabled = false,\n orientation = 'horizontal',\n size = 'default',\n children,\n}: ToggleGroupProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const toggle = useCallback(\n (itemValue: string) => {\n const nextPressed = !value.includes(itemValue)\n let next: string[]\n if (multiple) {\n next = nextPressed ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n } else {\n next = nextPressed ? [itemValue] : []\n }\n setValue(next)\n },\n [value, multiple, setValue],\n )\n\n return (\n <ToggleGroupContext.Provider value={{value, toggle, disabled, orientation, size}}>\n <html.div\n role=\"toolbar\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'vertical' && styles.vertical]}\n >\n {children}\n </html.div>\n </ToggleGroupContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n track: {\n position: 'relative',\n width: 36,\n height: 20,\n borderRadius: radii.full,\n borderWidth: 0,\n padding: 0,\n cursor: 'inherit',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n flexShrink: 0,\n },\n trackUnchecked: {\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n trackChecked: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n },\n thumb: {\n position: 'absolute',\n top: 2,\n left: 2,\n width: 16,\n height: 16,\n borderRadius: radii.full,\n backgroundColor: '#fff',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n thumbChecked: {\n transform: 'translateX(16px)',\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\ninterface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean\n /** Callback fired when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void\n /** Prevents user interaction. */\n disabled?: boolean\n /** Form field name for the hidden input. */\n name?: string\n /** Value submitted when checked. */\n value?: string\n /** Label content rendered beside the switch. */\n children?: ReactNode\n}\n\nexport function Switch({\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n name,\n value,\n children,\n}: SwitchProps) {\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n )\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleClick = useCallback(() => {\n if (disabled) return\n setChecked(!checked)\n // Keep hidden input in sync for form submission\n if (inputRef.current) {\n inputRef.current.checked = !checked\n }\n }, [disabled, checked, setChecked])\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n value={value}\n checked={controlledChecked !== undefined ? controlledChecked : undefined}\n defaultChecked={controlledChecked === undefined ? defaultChecked : undefined}\n disabled={disabled}\n aria-checked={checked}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onCheckedChange?.(e.target.checked)\n }}\n style={styles.input}\n />\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n disabled={disabled}\n onClick={handleClick}\n style={[styles.track, checked ? styles.trackChecked : styles.trackUnchecked]}\n >\n <html.span style={[styles.thumb, checked && styles.thumbChecked]} />\n </html.button>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fill, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {layoutSpacing} from '@duro-app/tokens/tokens/layout-spacing.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n width: '100%',\n },\n container: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n // Max-width presets\n maxSm: {maxWidth: 600},\n maxMd: {maxWidth: 800},\n maxLg: {maxWidth: 1200},\n // Horizontal padding\n padSm: {paddingLeft: layoutSpacing.containerSm, paddingRight: layoutSpacing.containerSm},\n padMd: {paddingLeft: layoutSpacing.containerMd, paddingRight: layoutSpacing.containerMd},\n padLg: {paddingLeft: layoutSpacing.containerLg, paddingRight: layoutSpacing.containerLg},\n // Vertical spacing\n headerPadding: {paddingTop: spacing.lg},\n mainPadding: {paddingTop: spacing.xl, paddingBottom: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type PageShellMaxWidth = 'sm' | 'md' | 'lg' | 'full'\nexport type PageShellPadding = 'sm' | 'md' | 'lg'\n\ninterface PageShellProps {\n /** Max-width preset: sm (600), md (800), lg (1200), full (none). Default: 'lg' */\n maxWidth?: PageShellMaxWidth\n /** Horizontal padding preset. Default: 'md' (24px) */\n padding?: PageShellPadding\n /** Header element rendered above the main content with same constraints */\n header?: ReactNode\n children: ReactNode\n}\n\nconst maxWidthMap = {\n sm: styles.maxSm,\n md: styles.maxMd,\n lg: styles.maxLg,\n full: null,\n} as const\n\nconst paddingMap = {\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg,\n} as const\n\nexport function PageShell({maxWidth = 'lg', padding = 'md', header, children}: PageShellProps) {\n const mw = maxWidthMap[maxWidth]\n const pad = paddingMap[padding]\n\n return (\n <html.div style={styles.root}>\n {header != null && (\n <html.header style={[styles.container, styles.maxLg, pad, styles.headerPadding]}>\n {header}\n </html.header>\n )}\n <html.main style={[styles.container, mw, pad, styles.mainPadding]}>{children}</html.main>\n </html.div>\n )\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","form","heading","header","input","label","main","nav","p","span","textarea","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","createActionBarStore","entries","listeners","Set","notify","forEach","l","subscribe","cb","add","delete","getSnapshot","push","id","render","update","map","e","remove","filter","ActionBarContext","createContext","ActionBarProvider","children","storeRef","useRef","current","store","useSyncExternalStore","topEntry","length","jsxs","useActionBarStack","$","_c","useContext","useId","t0","some","register","t1","unregister","t2","bb0","t3","entries_0","isTop","t4","managed","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","t9","t10","t11","t12","t13","ActionBarInner","props","stack","isActive","renderBar","useEffect","ActionBar","strokeIcons","Fragment","clock","forbidden","shield","lock","key","filledIcons","Icon","name","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","sizeMd","sizeSm","default","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","Callout","elevated","outlined","interactive","sizeCompact","sizeFull","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","Checkbox","checked","controlledChecked","defaultChecked","ariaLabel","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","opacity","t14","Symbol","for","t15","t16","t17","t18","backdrop","backdropOpen","backdropClosing","viewport","popup","popupOpen","popupClosing","lg","title","description","body","footer","inlineWrapper","reducedMotion","DialogContext","useDialog","ctx","Error","Root","open","controlledOpen","defaultOpen","onOpenChange","dismissable","closeAnimationDuration","internalOpen","setInternalOpen","closing","setClosing","closingTimerRef","popupRef","isOpen","titleId","descriptionId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","Body","Footer","Close","Dialog","wrapper","wrapperOpenSm","wrapperCloseSm","wrapperOpenMd","wrapperCloseMd","contentSm","contentMd","slideIn","slideOut","bodyPadded","DetailPanelContext","useDetailPanel","present","setPresent","panelRef","previousFocusRef","labelId","setLabelId","activeElement","focus","el","useCallback","registerTitle","unregisterTitle","wrapperOpenMap","wrapperCloseMap","Content","padded","DetailPanel","viewportRight","viewportLeft","viewportBottom","panel","panelHorizontal","panelVertical","panelLeftBorder","slideInRight","slideOutRight","slideInLeft","slideOutLeft","slideInBottom","slideOutBottom","DISMISS_THRESHOLD","VELOCITY_THRESHOLD","DISMISS_DURATION","OPPOSITE_MAX_OVERSCROLL","useSwipeDismiss","anchor","enabled","onDismiss","startX","startY","currentX","currentY","startTime","swiping","panelSize","stateRef","isHorizontal","state","dx","getMovement","movement","panelEl","Number","dataset","progress","sign","closest","previousElementSibling","String","Math","max","absMovement","abs","overscroll","shadowSpread","round","boxShadow","applyTransform","resetStyles","_temp","panelEl_1","dismissTransform","transition","backdrop_1","dismissed","done","once","animateDismiss","animateSnapBack","_temp2","handlePointerDown","rect","getBoundingClientRect","state_0","clientX","clientY","Date","now","width","height","setPointerCapture","pointerId","animation","handlePointerMove","e_0","state_1","dx_0","dy","sqrt","preventDefault","movement_0","handlePointerUp","_e","state_2","movement_1","elapsed","velocity","handlePointerCancel","state_3","handleTouchMove","e_1","passive","panelEl_2","backdrop_2","cleanup","panelEl_0","backdrop_0","DrawerContext","useDrawer","swipeDismiss","requestCloseImmediate","slideInMap","right","left","bottom","slideOutMap","viewportAnchorMap","swipeEnabled","t19","t20","Drawer","message","action","EmptyState","typePresets","bodySm","bodyMd","bodyLg","caption","code","overline","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","alignStart","alignCenter","alignEnd","defaultVariantMap","alignMap","start","center","end","Heading","level","color","align","resolvedVariant","h1","h3","h4","h5","h6","FieldContext","useFieldContext","FormContext","useFormContext","insideForm","ControlledRoot","StaticRoot","invalid","invalidProp","control","useRHFFormContext","field","fieldState","useController","onBlur","ref","controlId","errorId","errorMessage","Label","Field","Form","schema","defaultValues","onSubmit","effectTsResolver","resolver","mode","reValidateMode","methods","useForm","formRef","handleSubmit","FormProvider","legend","gapXs","gapSm","gapMs","gapMd","gapLg","gapXl","gapMap","xs","ms","xl","gap","Legend","Fieldset","InputGroupContext","useInputGroupContext","inGroup","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","groupCtx","fieldCtx","effectiveName","effectiveValue","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveVariant","extraProps","trim","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","popupEnd","item","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","setOpen","highlightedId","setHighlightedId","menuId","rootRef","triggerRef","Map","itemsRef","orderRef","needsInitialHighlightRef","close","toggle","order","element","set","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","registerItem","handleKeyDown","order_0","bb54","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","localRef","Popup","Item","isHighlighted","handleClick","LinkItem","Menu","bordered","Panel","scrollbar","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","vp","handleScroll","vp_0","observer","ResizeObserver","observe","disconnect","vp_1","Viewport","Scrollbar","orientation","Thumb","draggingRef","startPosRef","startScrollRef","isVertical","thumbSizePercent","maxScroll","trackSize","thumbPixelSize","scrollOffset","thumbOffset","thumbStyle","delta","scrollRatio","scrollDelta","ScrollArea","itemSelected","hidden","SelectContext","useSelect","useControllableValue","controlledValue","internal","setInternal","v","setValue","useSelectRoot","onValueChange","initialLabels","labels","setLabels","listboxId","found","registerLabel","id_0","itemValue","items_0","bb86","prev_3","item_0","Value","display","selectedValue","isSelected","text","textContent","el_0","ItemText","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","onSelect","expandedGroups","setExpandedGroups","next","has","toggleGroup","includes","v_0","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","SideNav","spinner","srOnly","Spinner","StatusIcon","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","s","section","select","strong","sub","sup","u","ul","html","row","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","gridColumns","columns","TableContext","useTable","HeaderContext","isHeader","T0","T1","childArray","Children","toArray","Provider","child","index","RowIndexContext","Row","rowIndex","isEvenRow","CellIndexContext","total","HeaderCell","isLast","Cell","Table","rootVertical","list","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","List","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","rows","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","ThemeProvider","theme","overrides","themeStyles","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","Text","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","disabledProp","sizeProp","groupPressed","isGrouped","standalonePressed","setStandalonePressed","vertical","ToggleGroup","multiple","nextPressed","top","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","inputRef","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","minColumnWidth","columnStyle","container","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame","entry","contentBoxSize","inlineSize","contentRect"],"mappings":"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","x_google_ignoreList":[0,1,2,3,68]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/compiler-runtime.js","../src/components/ActionBar/ActionBarProvider.tsx","../src/components/ActionBar/styles.css.ts","../src/components/ActionBar/ActionBar.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableValue.ts","../src/components/CheckboxGroup/styles.css.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Dialog/styles.css.ts","../src/components/Dialog/Dialog.tsx","../src/components/DetailPanel/styles.css.ts","../src/components/DetailPanel/DetailPanel.tsx","../src/components/Drawer/styles.css.ts","../src/components/Drawer/useSwipeDismiss.ts","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/List/styles.css.ts","../src/components/List/List.tsx","../src/components/Field/FieldContext.ts","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.tsx","../src/components/Panel/styles.css.ts","../src/components/Panel/Panel.tsx","../src/components/RadioGroup/styles.css.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/index.js","../src/components/Table/styles.css.ts","../src/components/Table/Table.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/Toggle/styles.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/styles.css.ts","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Switch/styles.css.ts","../src/components/Switch/Switch.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/components/PageShell/styles.css.ts","../src/components/PageShell/PageShell.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["/**\n * @license react-strict-dom\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';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","/**\n * @license React\n * react-compiler-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 ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-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 var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\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\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\n\ninterface ActionBarEntry {\n id: string\n render: () => ReactNode\n}\n\ninterface ActionBarStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ActionBarEntry[]\n push: (id: string, render: () => ReactNode) => void\n update: (id: string, render: () => ReactNode) => void\n remove: (id: string) => void\n}\n\nfunction createActionBarStore(): ActionBarStore {\n let entries: ActionBarEntry[] = []\n const listeners = new Set<() => void>()\n\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n push: (id, render) => {\n entries = [...entries, {id, render}]\n notify()\n },\n update: (id, render) => {\n entries = entries.map((e) => (e.id === id ? {id, render} : e))\n notify()\n },\n remove: (id) => {\n entries = entries.filter((e) => e.id !== id)\n notify()\n },\n }\n}\n\nconst ActionBarContext = createContext<ActionBarStore | null>(null)\n\nexport function ActionBarProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ActionBarStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createActionBarStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const topEntry = entries.length > 0 ? entries[entries.length - 1] : null\n\n return (\n <ActionBarContext.Provider value={store}>\n {children}\n {topEntry?.render()}\n </ActionBarContext.Provider>\n )\n}\n\nexport function useActionBarStack() {\n const store = useContext(ActionBarContext)\n const id = useId()\n\n const register = useCallback(\n (render: () => ReactNode) => {\n if (!store) return\n const entries = store.getSnapshot()\n if (entries.some((e) => e.id === id)) {\n store.update(id, render)\n } else {\n store.push(id, render)\n }\n },\n [store, id],\n )\n\n const unregister = useCallback(() => {\n store?.remove(id)\n }, [store, id])\n\n const isTop = useMemo(() => {\n if (!store) return false\n const entries = store.getSnapshot()\n return entries.length > 0 && entries[entries.length - 1].id === id\n }, [store, id])\n\n return {id, register, unregister, managed: store !== null, isTop}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n overlay: {\n position: 'fixed',\n bottom: spacing.lg,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.md,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n boxShadow: shadows.lg,\n zIndex: 50,\n maxWidth: 'calc(100vw - 48px)',\n },\n overlayEmphasized: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n selectedCount: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n fontFamily: typography.fontFamily,\n color: colors.text,\n whiteSpace: 'nowrap',\n },\n selectedCountEmphasized: {\n color: colors.accentContrast,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n closeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n padding: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderRadius: radii.sm,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n closeButtonEmphasized: {\n color: {\n default: colors.accentContrast,\n ':hover': colors.accentContrast,\n },\n opacity: {\n default: 0.7,\n ':hover': 1,\n },\n },\n separator: {\n width: 1,\n alignSelf: 'stretch',\n backgroundColor: colors.border,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n },\n separatorEmphasized: {\n backgroundColor: colors.accentContrast,\n opacity: 0.3,\n },\n})\n","import {useEffect, useCallback, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useActionBarStack} from './ActionBarProvider'\nimport {styles} from './styles.css'\n\nexport interface ActionBarProps {\n /** Number of selected items, or 'all'. Hidden when 0. */\n selectedItemCount: number | 'all'\n /** Label for the selection count. Receives the count string. */\n selectedLabel?: (count: string) => string\n /** Whether to use emphasized (accent) styling. */\n isEmphasized?: boolean\n /** Called when the clear/close button is pressed. */\n onClearSelection: () => void\n /** Whether the bar can be dismissed. When false, the close button is hidden. @default true */\n dismissible?: boolean\n /** Action buttons to display. */\n children: ReactNode\n}\n\nfunction ActionBarContent({\n selectedItemCount,\n selectedLabel,\n isEmphasized = false,\n onClearSelection,\n dismissible = true,\n children,\n}: ActionBarProps) {\n const countStr = selectedItemCount === 'all' ? 'All' : `${selectedItemCount}`\n const label = selectedLabel ? selectedLabel(countStr) : `${countStr} selected`\n\n return (\n <html.div\n role=\"toolbar\"\n aria-label={label}\n style={[styles.overlay, isEmphasized && styles.overlayEmphasized]}\n >\n <html.span style={[styles.selectedCount, isEmphasized && styles.selectedCountEmphasized]}>\n {label}\n </html.span>\n <html.div style={[styles.separator, isEmphasized && styles.separatorEmphasized]} />\n <html.div style={styles.actions}>{children}</html.div>\n {dismissible && (\n <html.button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClearSelection}\n style={[styles.closeButton, isEmphasized && styles.closeButtonEmphasized]}\n >\n <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )}\n </html.div>\n )\n}\n\nfunction ActionBarInner(props: ActionBarProps) {\n const {selectedItemCount} = props\n const stack = useActionBarStack()\n const isActive = selectedItemCount !== 0\n\n const renderBar = useCallback(() => <ActionBarContent {...props} />, [props])\n\n useEffect(() => {\n if (!stack.managed) return\n if (isActive) {\n stack.register(renderBar)\n } else {\n stack.unregister()\n }\n return () => stack.unregister()\n }, [stack, isActive, renderBar])\n\n // If no provider, fall back to standalone rendering\n if (!stack.managed) {\n if (!isActive) return null\n return <ActionBarContent {...props} />\n }\n\n // Managed by provider — rendering happens there\n return null\n}\n\nexport const ActionBar = ActionBarInner\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\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 width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return <html.span style={[styles.base, sizeMap[size], styles[variant]]}>{children}</html.span>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n inverseSecondary: {\n backgroundColor: {\n default: 'rgba(0, 0, 0, 0.10)',\n ':hover': 'rgba(0, 0, 0, 0.18)',\n },\n borderColor: {\n default: 'rgba(0, 0, 0, 0.55)',\n ':hover': 'rgba(0, 0, 0, 0.70)',\n },\n color: colors.accentContrast,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'inverseSecondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n style={[\n styles.base,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n overflow: 'hidden', // contain the float\n },\n icon: {\n float: 'left',\n marginRight: spacing.sm,\n marginBottom: spacing.xs,\n marginTop: 2,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"note\" style={[styles.base, styles[variant]]}>\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n transform: {\n default: 'translateY(0)',\n ':hover': 'translateY(-2px)',\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.xs,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n check: {\n width: 12,\n height: 12,\n color: colors.accentContrast,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n /** Accessible label when no visible label (children) is provided. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n 'aria-label': ariaLabel,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n aria-label={!children ? ariaLabel : undefined}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {Checkbox} from '../Checkbox/Checkbox'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface CheckboxGroupContextValue {\n value: string[]\n onToggle: (itemValue: string, checked: boolean) => void\n disabled: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction useCheckboxGroup() {\n const ctx = useContext(CheckboxGroupContext)\n if (!ctx) {\n throw new Error('CheckboxGroup.Item must be used within CheckboxGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onToggle = useCallback(\n (itemValue: string, checked: boolean) => {\n if (disabled) return\n const next = checked\n ? [...value, itemValue]\n : value.filter((v) => v !== itemValue)\n setValue(next)\n },\n [disabled, value, setValue],\n )\n\n return (\n <CheckboxGroupContext.Provider value={{value, onToggle, disabled}}>\n <html.div\n role=\"group\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </CheckboxGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onToggle, disabled: groupDisabled} = useCheckboxGroup()\n const isChecked = groupValue.includes(value)\n const isDisabled = groupDisabled || itemDisabled\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onToggle(value, e.target.checked)\n },\n [value, onToggle],\n )\n\n return (\n <Checkbox\n value={value}\n checked={isChecked}\n disabled={isDisabled}\n onChange={handleChange}\n >\n {children}\n </Checkbox>\n )\n}\n\nexport const CheckboxGroup = {\n Root,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n opacity: {\n default: 1,\n },\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '180ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n backdropClosing: {\n opacity: {\n default: 0,\n },\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '140ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Viewport (centering container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.lg,\n // Allow clicking backdrop through viewport when clicking outside popup\n pointerEvents: 'none',\n },\n\n // --- Popup ---\n popup: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n borderRadius: radii.lg,\n boxShadow: shadows.lg,\n width: '100%',\n maxHeight: '85vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n popupOpen: {\n opacity: {\n default: 1,\n },\n animationName: css.keyframes({\n from: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n to: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n }),\n animationDuration: '180ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n popupClosing: {\n opacity: {\n default: 0,\n },\n animationName: css.keyframes({\n from: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n to: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n }),\n animationDuration: '140ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Sizes ---\n sm: {maxWidth: 400},\n md: {maxWidth: 520},\n lg: {maxWidth: 680},\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n\n // --- Inline wrapper (for Trigger / Close children) ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n\n // --- Reduced motion ---\n reducedMotion: {\n animationDuration: '1ms',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DialogSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DialogContextValue {\n open: boolean\n closing: boolean\n dismissable: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n descriptionId: string\n popupRef: RefObject<HTMLDivElement | null>\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialog() {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error('Dialog compound components must be used within Dialog.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when dialog open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether clicking backdrop closes the dialog. Default: true */\n dismissable?: boolean\n /** Duration of the close animation in ms. Default: 140 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n dismissable = true,\n closeAnimationDuration = 140,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n // If controlled open goes false externally, trigger close animation\n useEffect(() => {\n if (isControlled && !controlledOpen && !closing) {\n // Already closed, nothing to animate\n }\n }, [isControlled, controlledOpen, closing])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n dismissable,\n requestOpen,\n requestClose,\n titleId,\n descriptionId,\n popupRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {requestOpen} = useDialog()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal (renders backdrop + viewport + popup) ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DialogSize\n}\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {open, closing, dismissable, requestClose, titleId, descriptionId, popupRef} = useDialog()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n if (!open) return null\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport (centering container, pointer-events: none) */}\n <html.div style={styles.viewport}>\n <html.div\n ref={popupRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.popup,\n styles[size],\n closing && styles.popupClosing,\n !closing && styles.popupOpen,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDialog()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDialog()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDialog()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Dialog = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\n/** Apple-standard ease: aggressive deceleration, feels like \"arriving\" */\nconst APPLE_EASE_OUT = 'cubic-bezier(0.32, 0.72, 0, 1)'\nconst APPLE_EASE_IN = 'cubic-bezier(0.72, 0, 0.68, 0.28)'\n\nconst OPEN_DURATION = '280ms'\nconst CLOSE_DURATION = '220ms'\n\nexport const styles = css.create({\n // --- Outer wrapper: animates width from 0 → target ---\n wrapper: {\n overflow: 'hidden',\n flexShrink: 0,\n position: 'relative',\n },\n\n // --- Wrapper open/close: SM (360px) ---\n wrapperOpenSm: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 360},\n }),\n animationDuration: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\n animationFillMode: 'both',\n },\n wrapperCloseSm: {\n animationName: css.keyframes({\n from: {width: 360},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: APPLE_EASE_IN,\n animationFillMode: 'both',\n },\n\n // --- Wrapper open/close: MD (480px) ---\n wrapperOpenMd: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 480},\n }),\n animationDuration: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\n animationFillMode: 'both',\n },\n wrapperCloseMd: {\n animationName: css.keyframes({\n from: {width: 480},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: APPLE_EASE_IN,\n animationFillMode: 'both',\n },\n\n // --- Content panel ---\n content: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n boxShadow: shadows.sm,\n position: 'relative',\n },\n\n // Content must maintain its target width even while wrapper is narrower\n contentSm: {width: 360},\n contentMd: {width: 480},\n\n // --- Content slide + fade animations ---\n slideIn: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n }),\n animationDuration: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\n animationFillMode: 'both',\n },\n slideOut: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n to: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: APPLE_EASE_IN,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n // --- Title ---\n title: {\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 1.4,\n color: colors.text,\n margin: 0,\n flex: 1,\n minWidth: 0,\n },\n\n // --- Body ---\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: 8,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DetailPanelSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface DetailPanelContextValue {\n present: boolean\n closing: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n labelId: string | undefined\n registerTitle: (id: string) => void\n unregisterTitle: () => void\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DetailPanelContext = createContext<DetailPanelContextValue | null>(null)\n\nfunction useDetailPanel() {\n const ctx = useContext(DetailPanelContext)\n if (!ctx) throw new Error('DetailPanel compound components must be used within DetailPanel.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Duration of the close animation in ms. Default: 220 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n closeAnimationDuration = 220,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [present, setPresent] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n const previousFocusRef = useRef<Element | null>(null)\n\n const titleId = useId()\n const [labelId, setLabelId] = useState<string | undefined>(undefined)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Sync presence with open state\n useEffect(() => {\n if (isOpen && !present) {\n setPresent(true)\n setClosing(false)\n } else if (!isOpen && present && !closing) {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n setPresent(false)\n closingTimerRef.current = null\n }, closeAnimationDuration)\n }\n }, [isOpen, present, closing, closeAnimationDuration])\n\n // Focus management: move focus on open, restore on close\n useEffect(() => {\n if (present && !closing) {\n previousFocusRef.current = document.activeElement\n panelRef.current?.focus()\n }\n }, [present]) // eslint-disable-line react-hooks/exhaustive-deps -- only on present change\n\n useEffect(() => {\n if (!present && previousFocusRef.current) {\n const el = previousFocusRef.current as HTMLElement\n if (typeof el.focus === 'function') {\n el.focus()\n }\n previousFocusRef.current = null\n }\n }, [present])\n\n // ESC handler\n useEffect(() => {\n if (!present || closing) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [present, closing]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n setClosing(false)\n }\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n const registerTitle = useCallback((id: string) => {\n setLabelId(id)\n }, [])\n\n const unregisterTitle = useCallback(() => {\n setLabelId(undefined)\n }, [])\n\n return (\n <DetailPanelContext.Provider\n value={{\n present,\n closing,\n requestOpen,\n requestClose,\n titleId,\n labelId,\n registerTitle,\n unregisterTitle,\n panelRef,\n }}\n >\n {children}\n </DetailPanelContext.Provider>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n /** Width of the panel. Default: 'sm' (360px) */\n size?: DetailPanelSize\n /** Accessible name for the complementary landmark */\n label: string\n}\n\nconst wrapperOpenMap = {\n sm: styles.wrapperOpenSm,\n md: styles.wrapperOpenMd,\n} as const\n\nconst wrapperCloseMap = {\n sm: styles.wrapperCloseSm,\n md: styles.wrapperCloseMd,\n} as const\n\nfunction Content({children, size = 'sm', label}: ContentProps) {\n const {present, closing, labelId, panelRef} = useDetailPanel()\n\n if (!present) return null\n\n return (\n <html.div style={[styles.wrapper, closing ? wrapperCloseMap[size] : wrapperOpenMap[size]]}>\n <html.div\n ref={panelRef}\n role=\"complementary\"\n aria-label={!labelId ? label : undefined}\n aria-labelledby={labelId || undefined}\n tabIndex={-1}\n style={[\n styles.content,\n size === 'sm' ? styles.contentSm : styles.contentMd,\n closing ? styles.slideOut : styles.slideIn,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId, registerTitle, unregisterTitle} = useDetailPanel()\n\n useEffect(() => {\n registerTitle(titleId)\n return () => unregisterTitle()\n }, [titleId, registerTitle, unregisterTitle])\n\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDetailPanel()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const DetailPanel = {\n Root,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Viewport (positioning container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n pointerEvents: 'none',\n },\n\n // Right anchor (desktop default)\n viewportRight: {\n justifyContent: 'flex-end',\n alignItems: 'stretch',\n },\n // Left anchor\n viewportLeft: {\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n },\n // Bottom anchor (mobile default)\n viewportBottom: {\n justifyContent: 'stretch',\n alignItems: 'flex-end',\n },\n\n // --- Panel ---\n panel: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 0,\n touchAction: 'none',\n },\n\n // Panel sizing per anchor\n panelHorizontal: {\n width: '100%',\n height: '100%',\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n panelVertical: {\n width: '100%',\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n borderTopLeftRadius: radii.lg,\n borderTopRightRadius: radii.lg,\n maxHeight: '85vh',\n },\n panelLeftBorder: {\n borderLeftWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n\n // --- Panel widths (horizontal anchors) ---\n sm: {maxWidth: 360},\n md: {maxWidth: 480},\n lg: {maxWidth: 640},\n\n // --- Slide animations: Right ---\n slideInRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n slideOutRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Left ---\n slideInLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(-100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n slideOutLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(-100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Bottom ---\n slideInBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(100%)'},\n to: {transform: 'translateY(0)'},\n }),\n animationDuration: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n slideOutBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(0)'},\n to: {transform: 'translateY(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n\n // --- Inline wrapper ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {useRef, useCallback, useEffect} from 'react'\nimport type {DrawerAnchor} from './Drawer'\n\n/** Threshold: fraction of panel size the user must drag to dismiss */\nconst DISMISS_THRESHOLD = 0.3\n\n/** Minimum velocity (px/ms) to dismiss even below threshold */\nconst VELOCITY_THRESHOLD = 0.5\n\n/** Duration for the dismiss slide-out animation (ms) */\nconst DISMISS_DURATION = 160\n\n/**\n * Max pixels the panel visually \"grows\" when dragged in the opposite direction.\n * iOS-style: panel stays anchored to its edge, doesn't translate.\n * Instead we show a subtle shadow/scale hint capped at this value.\n */\nconst OPPOSITE_MAX_OVERSCROLL = 12\n\ninterface UseSwipeDismissOptions {\n anchor: DrawerAnchor\n enabled: boolean\n onDismiss: () => void\n panelRef: React.RefObject<HTMLDivElement | null>\n}\n\ninterface SwipeState {\n startX: number\n startY: number\n currentX: number\n currentY: number\n startTime: number\n swiping: boolean\n panelSize: number\n}\n\n/**\n * Hook that adds swipe-to-dismiss gesture to a drawer panel.\n *\n * Dismiss direction: panel follows finger 1:1, backdrop fades.\n * Opposite direction: iOS-style — panel stays anchored, shows subtle\n * overscroll feedback (box-shadow intensifies), then snaps back.\n */\nexport function useSwipeDismiss({anchor, enabled, onDismiss, panelRef}: UseSwipeDismissOptions) {\n const stateRef = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n startTime: 0,\n swiping: false,\n panelSize: 0,\n })\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n /** Returns positive = dismiss direction, negative = opposite */\n const getMovement = useCallback(\n (state: SwipeState) => {\n if (isHorizontal) {\n const dx = state.currentX - state.startX\n return anchor === 'right' ? dx : -dx\n }\n return state.currentY - state.startY\n },\n [anchor, isHorizontal],\n )\n\n const applyTransform = useCallback(\n (movement: number, panelEl: HTMLDivElement) => {\n const size = Number(panelEl.dataset.panelSize) || 1\n\n if (movement >= 0) {\n // Dismiss direction — 1:1 tracking\n const progress = movement / size\n\n if (isHorizontal) {\n const sign = anchor === 'right' ? 1 : -1\n panelEl.style.transform = `translateX(${sign * movement}px)`\n } else {\n panelEl.style.transform = `translateY(${movement}px)`\n }\n\n // Fade backdrop proportionally\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = String(Math.max(0, 1 - progress))\n }\n } else {\n // Opposite direction — iOS behavior:\n // Panel stays anchored (no translate). Show subtle overscroll via box-shadow.\n // Diminishing resistance: asymptotically approaches OPPOSITE_MAX_OVERSCROLL.\n const absMovement = Math.abs(movement)\n const overscroll = (absMovement / (absMovement + size * 0.5)) * OPPOSITE_MAX_OVERSCROLL\n const shadowSpread = Math.round(overscroll)\n\n panelEl.style.transform = ''\n panelEl.style.boxShadow =\n shadowSpread > 0 ? `0 0 ${shadowSpread * 2}px ${shadowSpread}px rgba(0, 0, 0, 0.15)` : ''\n }\n },\n [anchor, isHorizontal],\n )\n\n /** Reset all inline styles (snap back) */\n const resetStyles = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transform = ''\n panelEl.style.boxShadow = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = ''\n }\n }, [])\n\n /** Animate to fully dismissed position, then call onDismiss */\n const animateDismiss = useCallback(\n (panelEl: HTMLDivElement) => {\n const dismissTransform = isHorizontal\n ? `translateX(${anchor === 'right' ? '100%' : '-100%'})`\n : 'translateY(100%)'\n\n panelEl.style.transition = `transform ${DISMISS_DURATION}ms ease-in`\n panelEl.style.transform = dismissTransform\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = `opacity ${DISMISS_DURATION}ms ease-in`\n backdrop.style.opacity = '0'\n }\n\n // When the slide-out transition finishes, just call onDismiss.\n // Do NOT reset inline styles before unmount — that causes a 1-frame flash\n // where the panel appears at its original position. React will unmount the\n // DOM node entirely, so the inline styles don't need cleanup.\n let dismissed = false\n const done = () => {\n if (dismissed) return\n dismissed = true\n onDismiss()\n }\n panelEl.addEventListener('transitionend', done, {once: true})\n setTimeout(done, DISMISS_DURATION + 50)\n },\n [anchor, isHorizontal, onDismiss],\n )\n\n /** Animate snap-back for dismiss-direction undershoot */\n const animateSnapBack = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transition = 'transform 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n panelEl.style.transform = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = 'opacity 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n backdrop.style.opacity = ''\n }\n\n const cleanup = () => {\n panelEl.style.transition = ''\n if (backdrop) backdrop.style.transition = ''\n }\n panelEl.addEventListener('transitionend', cleanup, {once: true})\n setTimeout(cleanup, 250)\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const panel = panelRef.current\n if (!panel) return\n\n function handlePointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n const target = e.target as HTMLElement\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return\n }\n\n const rect = panel!.getBoundingClientRect()\n const state = stateRef.current\n state.startX = e.clientX\n state.startY = e.clientY\n state.currentX = e.clientX\n state.currentY = e.clientY\n state.startTime = Date.now()\n state.swiping = false\n state.panelSize = isHorizontal ? rect.width : rect.height\n\n panel!.dataset.panelSize = String(state.panelSize)\n panel!.setPointerCapture(e.pointerId)\n\n // Freeze CSS animation — we take over positioning.\n // Never restore it; the panel is already at its final resting position.\n panel!.style.animation = 'none'\n }\n\n function handlePointerMove(e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n state.currentX = e.clientX\n state.currentY = e.clientY\n\n const dx = Math.abs(state.currentX - state.startX)\n const dy = Math.abs(state.currentY - state.startY)\n\n if (!state.swiping) {\n const totalMovement = Math.sqrt(dx * dx + dy * dy)\n if (totalMovement < 8) return\n\n if (isHorizontal && dx > dy) {\n state.swiping = true\n } else if (!isHorizontal && dy > dx) {\n state.swiping = true\n } else {\n // Wrong axis — abort gesture\n state.startTime = 0\n return\n }\n }\n\n if (state.swiping) {\n e.preventDefault()\n const movement = getMovement(state)\n applyTransform(movement, panel!)\n }\n }\n\n function handlePointerUp(_e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n const movement = getMovement(state)\n const elapsed = Date.now() - state.startTime\n const velocity = movement / elapsed\n\n state.startTime = 0\n\n if (!state.swiping) {\n return\n }\n\n state.swiping = false\n\n if (movement <= 0) {\n // Was dragging in opposite direction — just reset (no translate was applied)\n resetStyles(panel!)\n return\n }\n\n const fraction = movement / state.panelSize\n const shouldDismiss = fraction > DISMISS_THRESHOLD || velocity > VELOCITY_THRESHOLD\n\n if (shouldDismiss) {\n animateDismiss(panel!)\n } else {\n animateSnapBack(panel!)\n }\n }\n\n function handlePointerCancel() {\n const state = stateRef.current\n state.startTime = 0\n state.swiping = false\n resetStyles(panel!)\n }\n\n panel.addEventListener('pointerdown', handlePointerDown)\n panel.addEventListener('pointermove', handlePointerMove)\n panel.addEventListener('pointerup', handlePointerUp)\n panel.addEventListener('pointercancel', handlePointerCancel)\n\n function handleTouchMove(e: TouchEvent) {\n if (stateRef.current.swiping) {\n e.preventDefault()\n }\n }\n panel.addEventListener('touchmove', handleTouchMove, {passive: false})\n\n return () => {\n panel.removeEventListener('pointerdown', handlePointerDown)\n panel.removeEventListener('pointermove', handlePointerMove)\n panel.removeEventListener('pointerup', handlePointerUp)\n panel.removeEventListener('pointercancel', handlePointerCancel)\n panel.removeEventListener('touchmove', handleTouchMove)\n }\n }, [\n enabled,\n panelRef,\n anchor,\n isHorizontal,\n getMovement,\n applyTransform,\n resetStyles,\n animateSnapBack,\n animateDismiss,\n ])\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useSwipeDismiss} from './useSwipeDismiss'\n\n// --- Types ---\n\nexport type DrawerAnchor = 'right' | 'left' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DrawerContextValue {\n open: boolean\n closing: boolean\n anchor: DrawerAnchor\n dismissable: boolean\n swipeDismiss: boolean\n requestOpen: () => void\n requestClose: () => void\n /** Close immediately without CSS animation (used by swipe dismiss which handles its own exit animation) */\n requestCloseImmediate: () => void\n titleId: string\n descriptionId: string\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nfunction useDrawer() {\n const ctx = useContext(DrawerContext)\n if (!ctx) throw new Error('Drawer compound components must be used within Drawer.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when drawer open state changes */\n onOpenChange?: (open: boolean) => void\n /** Which edge the drawer slides from. Default: 'right' */\n anchor?: DrawerAnchor\n /** Whether clicking backdrop or pressing Escape closes the drawer. Default: true */\n dismissable?: boolean\n /** Whether swipe gesture dismisses the drawer. Default: true */\n swipeDismiss?: boolean\n /** Duration of the close animation in ms. Default: 160 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n anchor = 'right',\n dismissable = true,\n swipeDismiss = true,\n closeAnimationDuration = 160,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n const requestCloseImmediate = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DrawerContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n anchor,\n dismissable,\n swipeDismiss,\n requestOpen,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n }}\n >\n {children}\n </DrawerContext.Provider>\n )\n}\n\n// --- Trigger ---\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {requestOpen} = useDrawer()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DrawerSize\n}\n\n// Slide animation maps\nconst slideInMap = {\n right: styles.slideInRight,\n left: styles.slideInLeft,\n bottom: styles.slideInBottom,\n} as const\n\nconst slideOutMap = {\n right: styles.slideOutRight,\n left: styles.slideOutLeft,\n bottom: styles.slideOutBottom,\n} as const\n\nconst viewportAnchorMap = {\n right: styles.viewportRight,\n left: styles.viewportLeft,\n bottom: styles.viewportBottom,\n} as const\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {\n open,\n closing,\n anchor,\n dismissable,\n swipeDismiss: swipeEnabled,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n } = useDrawer()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n // Swipe-to-dismiss — uses immediate close since the hook handles its own exit animation\n useSwipeDismiss({\n anchor,\n enabled: swipeEnabled && open && !closing,\n onDismiss: requestCloseImmediate,\n panelRef,\n })\n\n if (!open) return null\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport */}\n <html.div style={[styles.viewport, viewportAnchorMap[anchor]]} data-drawer-viewport=\"\">\n <html.div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.panel,\n isHorizontal && styles.panelHorizontal,\n isHorizontal && styles[size],\n !isHorizontal && styles.panelVertical,\n anchor === 'left' && styles.panelLeftBorder,\n closing && slideOutMap[anchor],\n !closing && slideInMap[anchor],\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDrawer()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDrawer()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDrawer()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Drawer = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // --- Root ---\n root: {\n display: 'flex',\n flexDirection: 'column',\n margin: 0,\n padding: 0,\n },\n\n // --- Item ---\n item: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '120ms',\n cursor: 'default',\n },\n itemSelected: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n itemDisabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n itemLast: {\n borderBottomWidth: 0,\n },\n\n // --- Item content area (text + description) ---\n content: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n minWidth: 0,\n },\n\n // --- Primary text ---\n text: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Description text ---\n description: {\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Actions slot ---\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n flexShrink: 0,\n },\n\n // --- Empty state ---\n empty: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n color: colors.textMuted,\n fontSize: typography.fontSizeSm,\n },\n})\n","import {type ReactNode, createContext, useContext} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type ListSelectionMode = 'none' | 'single' | 'multiple'\n\n// --- Context ---\n\ninterface ListContextValue {\n selectionMode: ListSelectionMode\n}\n\nconst ListContext = createContext<ListContextValue>({selectionMode: 'none'})\n\nfunction useList() {\n return useContext(ListContext)\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Selection mode: 'none' (default), 'single', or 'multiple' */\n selectionMode?: ListSelectionMode\n /** Accessible label for the list */\n 'aria-label'?: string\n}\n\nfunction Root({children, selectionMode = 'none', 'aria-label': ariaLabel}: RootProps) {\n return (\n <ListContext.Provider value={{selectionMode}}>\n <html.div role=\"list\" aria-label={ariaLabel} style={styles.root}>\n {children}\n </html.div>\n </ListContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n children: ReactNode\n /** Whether this item is selected */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for the item */\n onClick?: () => void\n}\n\nfunction Item({children, selected, disabled, onClick}: ItemProps) {\n const {selectionMode} = useList()\n const isSelectable = selectionMode !== 'none'\n\n return (\n <html.div\n role=\"listitem\"\n aria-selected={isSelectable ? selected : undefined}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : onClick}\n style={[\n styles.item,\n selected && styles.itemSelected,\n disabled && styles.itemDisabled,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content: wraps primary text + description ---\n\nfunction Content({children}: {children: ReactNode}) {\n return <html.div style={styles.content}>{children}</html.div>\n}\n\n// --- Text: primary label ---\n\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.p style={styles.text}>{children}</html.p>\n}\n\n// --- Description: secondary text ---\n\nfunction Description({children}: {children: ReactNode}) {\n return <html.p style={styles.description}>{children}</html.p>\n}\n\n// --- Actions: slot for buttons, badges, etc. ---\n\nfunction Actions({children}: {children: ReactNode}) {\n return <html.div style={styles.actions}>{children}</html.div>\n}\n\n// --- Empty: placeholder when list has no items ---\n\nfunction Empty({children}: {children: ReactNode}) {\n return (\n <html.div role=\"listitem\" style={styles.empty}>\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const List = {\n Root,\n Item,\n Content,\n Text: ItemText,\n Description,\n Actions,\n Empty,\n}\n","import {createContext, useContext} from 'react'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n field?: {\n value: unknown\n onChange: (...event: unknown[]) => void\n onBlur: () => void\n ref: React.RefCallback<unknown>\n name: string\n }\n errorMessage?: string\n}\n\nexport type {FieldContextValue}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {createContext, useContext} from 'react'\n\nexport const FormContext = createContext(false)\n\nexport function useFormContext() {\n return useContext(FormContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.error,\n },\n})\n","import {type ReactNode, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useFormContext as useRHFFormContext, useController} from 'react-hook-form'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {useFormContext} from '../Form/FormContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n invalid?: boolean\n children: ReactNode\n}\n\nfunction Root({name, ...props}: RootProps) {\n const insideForm = useFormContext()\n if (name && insideForm) {\n return <ControlledRoot name={name} {...props} />\n }\n return <StaticRoot {...props} />\n}\n\n// Always calls useController — no conditional hooks\nfunction ControlledRoot({\n name,\n invalid: invalidProp = false,\n children,\n}: {\n name: string\n invalid?: boolean\n children: ReactNode\n}) {\n const id = useId()\n const {control} = useRHFFormContext()\n const {field, fieldState} = useController({control, name})\n const invalid = invalidProp || !!fieldState.error\n\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n field: {\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n name: field.name,\n },\n errorMessage: fieldState.error?.message,\n }),\n [\n id,\n invalid,\n field.value,\n field.onChange,\n field.onBlur,\n field.ref,\n field.name,\n fieldState.error,\n ],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </FieldContext.Provider>\n )\n}\n\n// Current behavior, no RHF dependency\nfunction StaticRoot({invalid = false, children}: {invalid?: boolean; children: ReactNode}) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n }),\n [id, invalid],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </FieldContext.Provider>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n return (\n <html.label for={ctx?.controlId} style={styles.label}>\n {children}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n const content = children ?? ctx?.errorMessage\n if (!ctx?.invalid && !content) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {content}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {type ReactNode, useCallback, useEffect, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {\n useForm,\n FormProvider,\n type UseFormReturn,\n type DefaultValues,\n type FieldValues,\n} from 'react-hook-form'\nimport {effectTsResolver} from '@hookform/resolvers/effect-ts'\nimport type {Schema} from 'effect'\nimport {FormContext} from './FormContext'\n\nexport interface FormProps<T extends FieldValues> {\n schema: Schema.Schema<T>\n defaultValues: DefaultValues<T>\n onSubmit: (data: T) => void | Promise<void>\n children: ReactNode | ((methods: UseFormReturn<T>) => ReactNode)\n}\n\nexport function Form<T extends FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n children,\n}: FormProps<T>) {\n const methods = useForm<T>({\n resolver: effectTsResolver(schema),\n defaultValues,\n mode: 'onTouched',\n reValidateMode: 'onChange',\n })\n\n const formRef = useRef<HTMLFormElement>(null)\n const handleSubmit = useCallback(\n (e: Event) => {\n e.preventDefault()\n void methods.handleSubmit(onSubmit)()\n },\n [methods, onSubmit],\n )\n\n useEffect(() => {\n const el = formRef.current\n if (!el) return\n el.addEventListener('submit', handleSubmit)\n return () => el.removeEventListener('submit', handleSubmit)\n }, [handleSubmit])\n\n return (\n <FormProvider {...methods}>\n <FormContext.Provider value={true}>\n <html.form ref={formRef}>\n {typeof children === 'function' ? children(methods) : children}\n </html.form>\n </FormContext.Provider>\n </FormProvider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n // Reset native fieldset chrome\n borderWidth: 0,\n margin: 0,\n padding: 0,\n minWidth: 0,\n },\n legend: {\n // Reset native legend quirks\n padding: 0,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type FieldsetGap = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl'\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n} as const\n\n// --- Root ---\ninterface RootProps {\n /** Disables all form controls within the fieldset */\n disabled?: boolean\n /** Gap between child elements */\n gap?: FieldsetGap\n children: ReactNode\n}\n\nfunction Root({disabled = false, gap = 'md', children}: RootProps) {\n return (\n <html.div\n role=\"group\"\n aria-disabled={disabled || undefined}\n style={[styles.root, gapMap[gap], disabled && styles.disabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Legend ---\ninterface LegendProps {\n children: ReactNode\n}\n\nfunction Legend({children}: LegendProps) {\n return <html.span style={styles.legend}>{children}</html.span>\n}\n\nexport const Fieldset = {\n Root,\n Legend,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n type?: InputType\n name?: string\n placeholder?: string\n required?: boolean\n minLength?: number\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n type = 'text',\n name,\n placeholder,\n required,\n minLength,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n onChange,\n onBlur,\n ref,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n // react-strict-dom omits web-only `pattern` from its types, but the\n // underlying DOM element supports it. Type-assert to pass it through.\n const extraProps = pattern !== undefined ? {pattern} : undefined\n\n return (\n <html.input\n id={ctx?.controlId}\n type={type}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictInputProps['onChange']}\n onBlur={effectiveOnBlur as StrictInputProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[styles.base, styles[effectiveVariant], groupCtx?.inGroup && styles.inGroup]}\n {...(extraProps as Record<string, unknown>)}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\nconst dynamicStyles = css.create({\n minWidth: (value: number | string) => ({minWidth: value}),\n})\n\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n /** Optional minimum width to prevent layout shift (e.g. Copy → Copied!) */\n minWidth?: number | string\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, minWidth, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n minWidth != null && dynamicStyles.minWidth(minWidth),\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n },\n bordered: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Adds an outer border. Default: false */\n bordered?: boolean\n}\n\nfunction Root({children, bordered = false}: RootProps) {\n return <html.div style={[styles.root, bordered && styles.bordered]}>{children}</html.div>\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Export ---\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n itemDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n circle: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.full,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n circleUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n circleChecked: {\n backgroundColor: colors.bg,\n borderColor: colors.accent,\n },\n dot: {\n width: 8,\n height: 8,\n borderRadius: radii.full,\n backgroundColor: colors.accent,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface RadioGroupContextValue {\n value: string\n onSelect: (value: string) => void\n disabled: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction useRadioGroup() {\n const ctx = useContext(RadioGroupContext)\n if (!ctx) {\n throw new Error('RadioGroup.Item must be used within RadioGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onSelect = useCallback(\n (itemValue: string) => {\n if (!disabled) {\n setValue(itemValue)\n }\n },\n [disabled, setValue],\n )\n\n return (\n <RadioGroupContext.Provider value={{value, onSelect, disabled}}>\n <html.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </RadioGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onSelect, disabled: groupDisabled} = useRadioGroup()\n const isChecked = groupValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.label\n style={[styles.item, isDisabled && styles.itemDisabled]}\n onClick={handleClick}\n >\n <html.input\n type=\"radio\"\n value={value}\n checked={isChecked}\n disabled={isDisabled}\n onChange={() => onSelect(value)}\n style={styles.input}\n />\n <html.span\n style={[styles.circle, isChecked ? styles.circleChecked : styles.circleUnchecked]}\n aria-hidden\n >\n {isChecked && <html.span style={styles.dot} />}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n\nexport const RadioGroup = {\n Root,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: '200ms',\n transitionTimingFunction: 'ease',\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {scrolling, scrollHeight, scrollWidth, clientHeight, clientWidth} = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n return (\n <html.div\n style={[\n styles.scrollbar,\n orientation === 'vertical' ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n zIndex: 50,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: ReactNode\n 'aria-label'?: string\n}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId} = useSelect()\n\n return (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[styles.popup, !open && styles.hidden]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.lg,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n // Auto-expand group containing active value\n useEffect(() => {\n if (activeValue) {\n setExpandedGroups((prev) => {\n // We don't know which group it belongs to here — Group handles this\n return prev\n })\n }\n }, [activeValue])\n\n return (\n <SideNavContext.Provider\n value={{activeValue, onSelect, expandedGroups, toggleGroup, registerItem, orderRef}}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n toggleGroup(key)\n }\n }, [activeValue, key, expandedGroups, toggleGroup])\n\n // Expand on first render if defaultExpanded\n useEffect(() => {\n if (defaultExpanded && !expandedGroups.has(key)) {\n toggleGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value, children}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n {children}\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","/**\n * @license react-strict-dom\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';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Root\n root: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Header group\n header: {\n backgroundColor: colors.bgCard,\n },\n\n // Row\n row: {\n display: 'grid',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowLastChild: {\n borderBottomWidth: 0,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n\n // Header cell\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n },\n\n // Body cell\n cell: {\n color: colors.text,\n display: 'flex',\n alignItems: 'center',\n },\n\n // Size: sm\n cellSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows)\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders)\n borderedCell: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // Dynamic styles — simple identifier params only (StyleX constraint)\n gridColumns: (template: string) => ({\n gridTemplateColumns: template,\n }),\n})\n","import {type ReactNode, type MutableRefObject, createContext, useContext, useRef, Children, isValidElement} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n /** Mutable ref: header Row writes inferred template, body Rows read it */\n inferredTemplateRef: MutableRefObject<string | null>\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext ---\n\nconst HeaderContext = createContext(false)\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n}\n\nfunction Root({children, variant = 'default', size = 'md'}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n\n return (\n <TableContext.Provider value={{variant, size, inferredTemplateRef}}>\n <html.div role=\"table\" style={styles.root}>\n {children}\n </html.div>\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children)\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\">\n {childArray.map((child, index) => {\n if (variant === 'striped') {\n return (\n <RowIndexContext.Provider key={index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n }\n return child\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n\nfunction Row({children}: {children: ReactNode}) {\n const {variant, inferredTemplateRef} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children)\n\n let template: string\n\n if (isHeader) {\n // Build template from HeaderCell width props\n const widths: string[] = []\n Children.forEach(children, (child) => {\n if (isValidElement(child)) {\n const props = child.props as {width?: string}\n widths.push(props.width || '1fr')\n }\n })\n template = widths.join(' ')\n inferredTemplateRef.current = template\n } else {\n template = inferredTemplateRef.current ?? `repeat(${childArray.length}, 1fr)`\n }\n\n return (\n <html.div\n role=\"row\"\n style={[\n styles.row,\n styles.gridColumns(template),\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n ]}\n >\n {variant === 'bordered'\n ? childArray.map((child, index) => (\n <CellIndexContext.Provider key={index} value={{index, total: childArray.length}}>\n {child}\n </CellIndexContext.Provider>\n ))\n : children}\n </html.div>\n )\n}\n\nconst CellIndexContext = createContext<{index: number; total: number}>({index: 0, total: 0})\n\n// --- HeaderCell ---\n\nfunction HeaderCell({\n children,\n width: _width,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n /** Column width: CSS value like '40px', '2fr', 'auto'. Defaults to '1fr'. */\n width?: string\n 'aria-label'?: string\n}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n aria-label={ariaLabel}\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Cell ---\n\nfunction Cell({children}: {children: ReactNode}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const Table = {\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {activeValue, onSelect, orientation, registerTab, tabsRef, orderRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ntype StrictTextareaProps = React.ComponentProps<typeof html.textarea>\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLTextAreaElement>\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n onChange,\n onBlur,\n ref,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictTextareaProps['onChange']}\n onBlur={effectiveOnBlur as StrictTextareaProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLTextAreaElement>}\n style={[styles.base, styles[effectiveVariant]]}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n","import {type ReactNode} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n color: colors.text,\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n\n return <html.div style={themeStyles}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {createContext, useContext} from 'react'\nimport type {ToggleSize} from '../Toggle/Toggle'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface ToggleGroupContextValue {\n value: string[]\n toggle: (itemValue: string) => void\n disabled: boolean\n orientation: Orientation\n size: ToggleSize\n}\n\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nexport function useToggleGroup() {\n return useContext(ToggleGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n sizeDefault: {\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: typography.fontSizeSm,\n borderRadius: radii.sm,\n gap: spacing.sm,\n },\n sizeSmall: {\n padding: `${spacing.xs} ${spacing.sm}`,\n fontSize: typography.fontSizeXs,\n borderRadius: radii.sm,\n gap: spacing.xs,\n },\n unpressed: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n color: colors.textMuted,\n },\n pressed: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n borderColor: colors.accent,\n color: colors.accentContrast,\n },\n grouped: {\n borderWidth: 0,\n borderRadius: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n // Override any borderColor set by pressed state — dividers always use border token\n borderColor: colors.border,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useToggleGroup} from '../ToggleGroup/ToggleGroupContext'\nimport {styles} from './styles.css'\n\nexport type ToggleSize = 'default' | 'small'\n\ninterface ToggleProps {\n /** Controlled pressed state (standalone usage). */\n pressed?: boolean\n /** Initial pressed state (uncontrolled, standalone usage). */\n defaultPressed?: boolean\n /** Callback fired when the pressed state changes (standalone usage). */\n onPressedChange?: (pressed: boolean) => void\n /** Unique value when used inside a ToggleGroup. */\n value?: string\n /** Prevents user interaction. */\n disabled?: boolean\n /** Size variant (overridden by ToggleGroup when grouped). */\n size?: ToggleSize\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Toggle({\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n value,\n disabled: disabledProp = false,\n size: sizeProp = 'default',\n 'aria-label': ariaLabel,\n children,\n}: ToggleProps) {\n const group = useToggleGroup()\n\n // When inside a ToggleGroup, derive pressed state from group context\n const groupPressed = group && value !== undefined ? group.value.includes(value) : undefined\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const size = group?.size ?? sizeProp\n\n const [standalonePressed, setStandalonePressed] = useControllableValue(\n controlledPressed,\n defaultPressed,\n onPressedChange,\n )\n\n const pressed = groupPressed ?? standalonePressed\n\n const handleClick = useCallback(() => {\n if (disabled) return\n if (isGrouped && value !== undefined) {\n group.toggle(value)\n } else {\n setStandalonePressed(!pressed)\n }\n }, [disabled, isGrouped, value, group, pressed, setStandalonePressed])\n\n return (\n <html.button\n type=\"button\"\n aria-pressed={pressed}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={handleClick}\n data-pressed={pressed ? '' : undefined}\n style={[\n styles.base,\n sizeMap[size],\n pressed ? styles.pressed : styles.unpressed,\n isGrouped && styles.grouped,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n overflow: 'hidden',\n },\n vertical: {\n flexDirection: 'column',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ToggleSize} from '../Toggle/Toggle'\nimport {ToggleGroupContext, type Orientation} from './ToggleGroupContext'\nimport {styles} from './styles.css'\n\ninterface ToggleGroupProps {\n /** Controlled value — array of pressed item values. */\n value?: string[]\n /** Initial value (uncontrolled). */\n defaultValue?: string[]\n /** Callback fired when the set of pressed values changes. */\n onValueChange?: (value: string[]) => void\n /** When false, at most one item can be pressed at a time. */\n multiple?: boolean\n /** Prevents interaction with all items. */\n disabled?: boolean\n /** Layout direction. */\n orientation?: Orientation\n /** Size applied to all child toggles. */\n size?: ToggleSize\n children: ReactNode\n}\n\nexport function ToggleGroup({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n multiple = false,\n disabled = false,\n orientation = 'horizontal',\n size = 'default',\n children,\n}: ToggleGroupProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const toggle = useCallback(\n (itemValue: string) => {\n const nextPressed = !value.includes(itemValue)\n let next: string[]\n if (multiple) {\n next = nextPressed ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n } else {\n next = nextPressed ? [itemValue] : []\n }\n setValue(next)\n },\n [value, multiple, setValue],\n )\n\n return (\n <ToggleGroupContext.Provider value={{value, toggle, disabled, orientation, size}}>\n <html.div\n role=\"toolbar\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'vertical' && styles.vertical]}\n >\n {children}\n </html.div>\n </ToggleGroupContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n track: {\n position: 'relative',\n width: 36,\n height: 20,\n borderRadius: radii.full,\n borderWidth: 0,\n padding: 0,\n cursor: 'inherit',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n flexShrink: 0,\n },\n trackUnchecked: {\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n trackChecked: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n },\n thumb: {\n position: 'absolute',\n top: 2,\n left: 2,\n width: 16,\n height: 16,\n borderRadius: radii.full,\n backgroundColor: '#fff',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n thumbChecked: {\n transform: 'translateX(16px)',\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\ninterface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean\n /** Callback fired when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void\n /** Prevents user interaction. */\n disabled?: boolean\n /** Form field name for the hidden input. */\n name?: string\n /** Value submitted when checked. */\n value?: string\n /** Label content rendered beside the switch. */\n children?: ReactNode\n}\n\nexport function Switch({\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n name,\n value,\n children,\n}: SwitchProps) {\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n )\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleClick = useCallback(() => {\n if (disabled) return\n setChecked(!checked)\n // Keep hidden input in sync for form submission\n if (inputRef.current) {\n inputRef.current.checked = !checked\n }\n }, [disabled, checked, setChecked])\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n value={value}\n checked={controlledChecked !== undefined ? controlledChecked : undefined}\n defaultChecked={controlledChecked === undefined ? defaultChecked : undefined}\n disabled={disabled}\n aria-checked={checked}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onCheckedChange?.(e.target.checked)\n }}\n style={styles.input}\n />\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n disabled={disabled}\n onClick={handleClick}\n style={[styles.track, checked ? styles.trackChecked : styles.trackUnchecked]}\n >\n <html.span style={[styles.thumb, checked && styles.thumbChecked]} />\n </html.button>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fill, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {layoutSpacing} from '@duro-app/tokens/tokens/layout-spacing.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n width: '100%',\n },\n container: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n // Max-width presets\n maxSm: {maxWidth: 600},\n maxMd: {maxWidth: 800},\n maxLg: {maxWidth: 1200},\n // Horizontal padding\n padSm: {paddingLeft: layoutSpacing.containerSm, paddingRight: layoutSpacing.containerSm},\n padMd: {paddingLeft: layoutSpacing.containerMd, paddingRight: layoutSpacing.containerMd},\n padLg: {paddingLeft: layoutSpacing.containerLg, paddingRight: layoutSpacing.containerLg},\n // Vertical spacing\n headerPadding: {paddingTop: spacing.lg},\n mainPadding: {paddingTop: spacing.xl, paddingBottom: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type PageShellMaxWidth = 'sm' | 'md' | 'lg' | 'full'\nexport type PageShellPadding = 'sm' | 'md' | 'lg'\n\ninterface PageShellProps {\n /** Max-width preset: sm (600), md (800), lg (1200), full (none). Default: 'lg' */\n maxWidth?: PageShellMaxWidth\n /** Horizontal padding preset. Default: 'md' (24px) */\n padding?: PageShellPadding\n /** Header element rendered above the main content with same constraints */\n header?: ReactNode\n children: ReactNode\n}\n\nconst maxWidthMap = {\n sm: styles.maxSm,\n md: styles.maxMd,\n lg: styles.maxLg,\n full: null,\n} as const\n\nconst paddingMap = {\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg,\n} as const\n\nexport function PageShell({maxWidth = 'lg', padding = 'md', header, children}: PageShellProps) {\n const mw = maxWidthMap[maxWidth]\n const pad = paddingMap[padding]\n\n return (\n <html.div style={styles.root}>\n {header != null && (\n <html.header style={[styles.container, styles.maxLg, pad, styles.headerPadding]}>\n {header}\n </html.header>\n )}\n <html.main style={[styles.container, mw, pad, styles.mainPadding]}>{children}</html.main>\n </html.div>\n )\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","form","heading","header","input","label","main","nav","p","span","textarea","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","createActionBarStore","entries","listeners","Set","notify","forEach","l","subscribe","cb","add","delete","getSnapshot","push","id","render","update","map","e","remove","filter","ActionBarContext","createContext","ActionBarProvider","children","storeRef","useRef","current","store","useSyncExternalStore","topEntry","length","jsxs","useActionBarStack","$","_c","useContext","useId","t0","some","register","t1","unregister","t2","bb0","t3","entries_0","isTop","t4","managed","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","t9","t10","t11","t12","t13","ActionBarInner","props","stack","isActive","renderBar","useEffect","ActionBar","strokeIcons","Fragment","clock","forbidden","shield","lock","key","filledIcons","Icon","name","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","sizeMd","sizeSm","default","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","Callout","elevated","outlined","interactive","sizeCompact","sizeFull","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","Checkbox","checked","controlledChecked","defaultChecked","ariaLabel","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","opacity","t14","Symbol","for","t15","t16","t17","t18","useControllableValue","controlledValue","defaultValue","internal","setInternal","v","setValue","rootHorizontal","CheckboxGroupContext","useCheckboxGroup","ctx","Error","Root","onValueChange","orientation","itemValue","next","onToggle","Item","itemDisabled","groupValue","groupDisabled","includes","isDisabled","CheckboxGroup","backdrop","backdropOpen","backdropClosing","viewport","popup","popupOpen","popupClosing","lg","title","description","body","footer","inlineWrapper","reducedMotion","DialogContext","useDialog","open","controlledOpen","defaultOpen","onOpenChange","dismissable","closeAnimationDuration","internalOpen","setInternalOpen","closing","setClosing","closingTimerRef","popupRef","isOpen","titleId","descriptionId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","Body","Footer","Close","Dialog","wrapper","wrapperOpenSm","wrapperCloseSm","wrapperOpenMd","wrapperCloseMd","contentSm","contentMd","slideIn","slideOut","bodyPadded","DetailPanelContext","useDetailPanel","present","setPresent","panelRef","previousFocusRef","labelId","setLabelId","activeElement","focus","el","useCallback","registerTitle","unregisterTitle","wrapperOpenMap","wrapperCloseMap","Content","padded","DetailPanel","viewportRight","viewportLeft","viewportBottom","panel","panelHorizontal","panelVertical","panelLeftBorder","slideInRight","slideOutRight","slideInLeft","slideOutLeft","slideInBottom","slideOutBottom","DISMISS_THRESHOLD","VELOCITY_THRESHOLD","DISMISS_DURATION","OPPOSITE_MAX_OVERSCROLL","useSwipeDismiss","anchor","enabled","onDismiss","startX","startY","currentX","currentY","startTime","swiping","panelSize","stateRef","isHorizontal","state","dx","getMovement","movement","panelEl","Number","dataset","progress","sign","closest","previousElementSibling","String","Math","max","absMovement","abs","overscroll","shadowSpread","round","boxShadow","applyTransform","resetStyles","_temp","panelEl_1","dismissTransform","transition","backdrop_1","dismissed","done","once","animateDismiss","animateSnapBack","_temp2","handlePointerDown","rect","getBoundingClientRect","state_0","clientX","clientY","Date","now","width","height","setPointerCapture","pointerId","animation","handlePointerMove","e_0","state_1","dx_0","dy","sqrt","preventDefault","movement_0","handlePointerUp","_e","state_2","movement_1","elapsed","velocity","handlePointerCancel","state_3","handleTouchMove","e_1","passive","panelEl_2","backdrop_2","cleanup","panelEl_0","backdrop_0","DrawerContext","useDrawer","swipeDismiss","requestCloseImmediate","slideInMap","right","left","bottom","slideOutMap","viewportAnchorMap","swipeEnabled","t19","t20","Drawer","message","action","EmptyState","typePresets","bodySm","bodyMd","bodyLg","caption","code","overline","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","alignStart","alignCenter","alignEnd","defaultVariantMap","alignMap","start","center","end","Heading","level","color","align","resolvedVariant","h1","h3","h4","h5","h6","item","itemSelected","text","empty","ListContext","selectionMode","useList","selected","ItemText","Actions","Empty","List","Text","FieldContext","useFieldContext","FormContext","useFormContext","insideForm","ControlledRoot","StaticRoot","invalid","invalidProp","control","useRHFFormContext","field","fieldState","useController","onBlur","ref","controlId","errorId","errorMessage","Label","Field","Form","schema","defaultValues","onSubmit","effectTsResolver","resolver","mode","reValidateMode","methods","useForm","formRef","handleSubmit","FormProvider","legend","gapXs","gapSm","gapMs","gapMd","gapLg","gapXl","gapMap","xs","ms","xl","gap","Legend","Fieldset","InputGroupContext","useInputGroupContext","inGroup","Input","placeholder","required","minLength","pattern","autoComplete","groupCtx","fieldCtx","effectiveName","effectiveValue","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveVariant","extraProps","trim","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","popupEnd","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","setOpen","highlightedId","setHighlightedId","menuId","rootRef","triggerRef","Map","itemsRef","orderRef","needsInitialHighlightRef","close","toggle","order","element","set","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","registerItem","handleKeyDown","order_0","bb54","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","localRef","Popup","isHighlighted","handleClick","LinkItem","Menu","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","RadioGroup","scrollbar","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","vp","handleScroll","vp_0","observer","ResizeObserver","observe","disconnect","vp_1","Viewport","Scrollbar","Thumb","draggingRef","startPosRef","startScrollRef","isVertical","thumbSizePercent","maxScroll","trackSize","thumbPixelSize","scrollOffset","thumbOffset","thumbStyle","delta","scrollRatio","scrollDelta","ScrollArea","hidden","SelectContext","useSelect","useSelectRoot","initialLabels","labels","setLabels","listboxId","found","registerLabel","id_0","items_0","bb86","prev_3","item_0","Value","display","selectedValue","isSelected","textContent","el_0","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","v_0","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","SideNav","spinner","srOnly","Spinner","StatusIcon","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","s","section","select","strong","sub","sup","u","ul","html","row","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","gridColumns","template","TableContext","useTable","HeaderContext","inferredTemplateRef","T0","T1","childArray","Children","toArray","Provider","child","index","RowIndexContext","Row","isHeader","rowIndex","isEvenRow","widths","isValidElement","join","CellIndexContext","total","HeaderCell","isLast","Cell","Table","rootVertical","list","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","rows","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","ThemeProvider","theme","overrides","themeStyles","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","disabledProp","sizeProp","groupPressed","isGrouped","standalonePressed","setStandalonePressed","vertical","ToggleGroup","multiple","nextPressed","top","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","inputRef","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","columns","minColumnWidth","columnStyle","container","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame","entry","contentBoxSize","inlineSize","contentRect"],"mappings":";;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,IAAIA,KAAW,CAAA;AACf,OAAO,eAAeA,IAAU,cAAc;AAAA,EAC5C,OAAO;AACT,CAAC;AACD,IAAIC,KAAWD,GAAS,SAAS,QAC7BE,KAAQ,oBAAI,QAAO,GACnBC,KAAc;AAClB,SAASC,GAAaC,GAAS;AAC7B,MAAIC,GACAC,GACAC;AACJ,SAAIH,KAAW,SACbC,IAAeD,EAAQ,iBAAiB,IACxCE,IAAaF,EAAQ,eAAe,IACpCG,IAAYH,EAAQ,YAEf,WAAkB;AAOvB,aANII,IAAoB,CAAA,GACpBC,IAAY,IACZC,IAAc,MACdC,IAAc,IACdC,IAAYP,IAAe,OAAOJ,IAClCY,IAAS,IAAI,MAAM,UAAU,MAAM,GAC9BC,IAAI,GAAGA,IAAI,UAAU,QAAQA;AACpC,MAAAD,EAAOC,CAAC,IAAI,UAAUA,CAAC;AAEzB,WAAOD,EAAO,SAAS,KAAG;AACxB,UAAIE,IAAgBF,EAAO,IAAG;AAC9B,UAAI,EAAAE,KAAiB,QAAQA,MAAkB,KAG/C;AAAA,YAAI,MAAM,QAAQA,CAAa,GAAG;AAChC,mBAASC,IAAK,GAAGA,IAAKD,EAAc,QAAQC;AAC1C,YAAAH,EAAO,KAAKE,EAAcC,CAAE,CAAC;AAE/B;AAAA,QACF;AACA,YAAIC,IAAQV,KAAa,OAAOA,EAAUQ,CAAa,IAAIA;AAC3D,YAAIE,EAAM,SAAS,MAAM;AACvB,cAAIC,IAAiB;AACrB,cAAIN,KAAa,QAAQA,EAAU,IAAIK,CAAK,GAAG;AAC7C,gBAAIE,IAAaP,EAAU,IAAIK,CAAK;AACpC,YAAIE,KAAc,SAChBD,IAAiBC,EAAW,CAAC,GAC7BR,IAAcQ,EAAW,CAAC,GAC1BX,EAAkB,KAAK,MAAMA,GAAmBW,EAAW,CAAC,CAAC,GAC7DP,IAAYO,EAAW,CAAC;AAAA,UAE5B,OAAO;AACL,gBAAIC,IAAyB,CAAA;AAC7B,qBAASC,KAAQJ,GAAO;AACtB,kBAAIK,IAAQL,EAAMI,CAAI;AACtB,kBAAIA,MAASnB,IAAa;AACxB,oBAAIqB,IAAmBN,EAAMI,CAAI;AACjC,gBAAIE,MAAqB,OACvBZ,IAAcA,IAAcY,IAAmB,OAAOZ,IAAcY;AAEtE;AAAA,cACF;AACA,cAAI,OAAOD,KAAU,YAAYA,MAAU,OACpCd,EAAkB,SAASa,CAAI,MAClCb,EAAkB,KAAKa,CAAI,GACvBT,KAAa,QACfQ,EAAuB,KAAKC,CAAI,GAE9B,OAAOC,KAAU,aACnBJ,KAAkBA,IAAiB,MAAMI,IAAQA,MAIrD,QAAQ,MAAM,WAAW,OAAOD,GAAM,UAAU,EAAE,OAAO,OAAOC,CAAK,GAAG,6BAAiC,CAAC;AAAA,YAE9G;AACA,gBAAIV,KAAa,MAAM;AACrB,kBAAIY,IAAU,oBAAI,QAAO;AACzB,cAAAZ,EAAU,IAAIK,GAAO,CAACC,GAAgBE,GAAwBT,GAAaa,CAAO,CAAC,GACnFZ,IAAYY;AAAA,YACd;AAAA,UACF;AACA,UAAIN,MACFT,IAAYA,IAAYS,IAAiB,MAAMT,IAAYS;AAAA,QAE/D,WACMZ;AACF,UAAII,KAAe,SACjBA,IAAc,CAAA,IAEhBA,IAAc,OAAO,OAAO,CAAA,GAAIO,GAAOP,CAAW;AAAA,aAC7C;AACL,cAAIe,IAAW;AACf,mBAASC,KAAST,GAAO;AACvB,gBAAIU,IAASV,EAAMS,CAAK;AACxB,YAAIC,MAAW,WACRnB,EAAkB,SAASkB,CAAK,MAC/BC,KAAU,SACRjB,KAAe,SACjBA,IAAc,CAAA,IAEZe,KAAY,SACdA,IAAW,CAAA,IAEbA,EAASC,CAAK,IAAIC,IAEpBnB,EAAkB,KAAKkB,CAAK,GAC5Bd,IAAY;AAAA,UAGlB;AACA,UAAIa,KAAY,SACdf,IAAc,OAAO,OAAOe,GAAUf,CAAW;AAAA,QAErD;AAAA;AAAA,IAEJ;AACA,QAAIkB,IAAa,CAACnB,GAAWC,GAAaC,CAAW;AACrD,WAAOiB;AAAA,EACT;AACF;AACA,IAAIC,KAAS7B,KAAWD,GAAS,SAASI,GAAY;AACtD0B,GAAO,UAAU1B;AACjB,MAAM2B,KAAkB9B,GAAS,QAAQ;AAAA,EACvC,YAAY;AACd,CAAC;AACD,SAAS+B,KAASlB,GAAQ;AACxB,QAAM,CAACJ,GAAWQ,GAAOe,CAAY,IAAIF,GAAgBjB,CAAM,GACzDoB,IAAS,CAAA;AAOf,MANIxB,KAAa,QAAQA,MAAc,OACrCwB,EAAO,YAAYxB,IAEjBQ,KAAS,SACXgB,EAAO,QAAQhB,IAEbe,KAAgB,QAAQA,MAAiB,IAAI;AAC/C,UAAME,IAASF,EAAa,MAAM,GAAG,GAC/BG,IAAW,CAAA;AACjB,eAAWC,KAASF,GAAQ;AAC1B,YAAMG,IAAUD,EAAM,KAAI,GACpB,CAACE,GAAMC,CAAI,IAAIF,EAAQ,MAAM,GAAG;AACtC,MAAIE,KAAQ,SACVJ,EAASG,CAAI,IAAIH,EAASG,CAAI,KAAK,OAAO,GAAGH,EAASG,CAAI,CAAC,IAAIC,CAAI,KAAKA;AAAA,IAE5E;AACA,IAAAN,EAAO,gBAAgB,IAAI,OAAO,KAAKE,CAAQ,EAAE,IAAI,CAAAG,MAAQ,GAAGA,CAAI,IAAIH,EAASG,CAAI,CAAC,EAAE,EAAE,KAAK,IAAI;AAAA,EACrG;AACA,SAAOL;AACT;AACA,MAAMpB,KAAS;AAAA,EACb,OAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,IACzB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EAOE,SAAS;AAAA,IACP,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EAeE,OAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EASE,UAAU;AAAA,IACR,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX;AACA,GACM2B,KAAI3B,GAAO,QAQX4B,KAAS,CAAC5B,GAAO,aAAaA,GAAO,MAAM,GAG3C6B,KAAM7B,GAAO,OAIb8B,KAAO9B,GAAO,OACd+B,KAAU,CAAC/B,GAAO,OAAOA,GAAO,OAAO,GACvCgC,KAAShC,GAAO,OAIhBiC,KAAQ,CAACjC,GAAO,aAAaA,GAAO,KAAK,GAGzCkC,KAAQlC,GAAO,QAEfmC,KAAOnC,GAAO,OAEdoC,KAAMpC,GAAO,OAIbqC,KAAIrC,GAAO,OAKXsC,KAAOtC,GAAO,QAIduC,KAAW,CAACvC,GAAO,aAAaA,GAAO,QAAQ,GAG/CwC,IAAgB;AAAA,EACpB,GAAGb;AAAAA,EAQH,QAAQC;AAAAA,EAGR,KAAKC;AAAAA,EAIL,MAAMC;AAAAA,EACN,IAAIC;AAAAA,EACJ,IAAIA;AAAAA,EACJ,IAAIA;AAAAA,EACJ,IAAIA;AAAAA,EACJ,IAAIA;AAAAA,EACJ,IAAIA;AAAAA,EACJ,QAAQC;AAAAA,EAIR,OAAOC;AAAAA,EAGP,OAAOC;AAAAA,EAEP,MAAMC;AAAAA,EAEN,KAAKC;AAAAA,EAIL,GAAGC;AAAAA,EAKH,MAAMC;AAAAA,EAIN,UAAUC;AAGZ;;;;;;;;;;;;;;;ACpTA,MAAIE,IAAuBC,GAAiB;AAC5C,SAAAC,GAAA,IAAY,SAAUC,GAAM;AAC1B,WAAOH,EAAqB,EAAE,aAAaG,CAAI;AAAA,EACjD;;;;;;;;;;;;;;wBCHiB,QAAQ,IAAI,aAA7B,iBAAyC,WAAY;AACnD,QAAIH,IAAuBC,GAAiB;AAC5C,IAAAG,GAAA,IAAY,SAAUD,GAAM;AAC1B,UAAIE,IAAaL,EAAqB;AACtC,aAASK,MAAT,QAAuB,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA,+FAA+a,GAC7cA,EAAW,aAAaF,CAAI;AAAA,IACvC;AAAA,EACA,GAAC;;;;wBCVG,QAAQ,IAAI,aAAa,eAC3BG,GAAA,UAAiBL,GAAA,IAEjBK,GAAA,UAAiBC,GAAA;;;ACYnB,SAASC,KAAuC;AAC9C,MAAIC,IAA4B,CAAA;AAChC,QAAMC,wBAAgBC,IAAAA,GAEhBC,IAASA,MAAMF,EAAUG,QAASC,CAAAA,MAAMA,GAAG;AAEjD,SAAO;AAAA,IACLC,WAAYC,CAAAA,OACVN,EAAUO,IAAID,CAAE,GACT,MAAMN,EAAUQ,OAAOF,CAAE;AAAA,IAElCG,aAAaA,MAAMV;AAAAA,IACnBW,MAAMA,CAACC,GAAIC,MAAW;AACpBb,MAAAA,IAAU,CAAC,GAAGA,GAAS;AAAA,QAACY,IAAAA;AAAAA,QAAIC,QAAAA;AAAAA,MAAAA,CAAO,GACnCV,EAAAA;AAAAA,IACF;AAAA,IACAW,QAAQA,CAACF,GAAIC,MAAW;AACtBb,MAAAA,IAAUA,EAAQe,IAAKC,CAAAA,MAAOA,EAAEJ,OAAOA,IAAK;AAAA,QAACA,IAAAA;AAAAA,QAAIC,QAAAA;AAAAA,MAAAA,IAAUG,CAAE,GAC7Db,EAAAA;AAAAA,IACF;AAAA,IACAc,QAASL,CAAAA,MAAO;AACdZ,MAAAA,IAAUA,EAAQkB,OAAQF,CAAAA,MAAMA,EAAEJ,OAAOA,CAAE,GAC3CT,EAAAA;AAAAA,IACF;AAAA,EAAA;AAEJ;AAEA,MAAMgB,KAAmBC,EAAqC,IAAI;AAE3D,SAASC,GAAkB;AAAA,EAACC,UAAAA;AAA+B,GAAG;AACnE,QAAMC,IAAWC,EAAuB,IAAI;AAC5C,EAAID,EAASE,YAAY,SACvBF,EAASE,UAAU1B,GAAAA;AAErB,QAAM2B,IAAQH,EAASE,SAEjBzB,IAAU2B,GAAqBD,EAAMpB,WAAWoB,EAAMhB,aAAagB,EAAMhB,WAAW,GACpFkB,IAAW5B,EAAQ6B,SAAS,IAAI7B,EAAQA,EAAQ6B,SAAS,CAAC,IAAI;AAEpE,SACE,gBAAAC,EAACX,GAAiB,UAAjB,EAA0B,OAAOO,GAC/BJ,UAAAA;AAAAA,IAAAA;AAAAA,IACAM,GAAUf,OAAAA;AAAAA,EAAO,GACpB;AAEJ;AAEO,SAAAkB,KAAA;AAAA,QAAAC,IAAAC,EAAAA,EAAA,EAAA,GACLP,IAAcQ,EAAWf,EAAgB,GACzCP,IAAWuB,GAAAA;AAAO,MAAAC;AAAA,EAAAJ,EAAA,CAAA,MAAApB,KAAAoB,SAAAN,KAGhBU,IAAAvB,CAAAA,MAAA;AACE,QAAI,CAACa;AAAK;AAEV,IADgBA,EAAKhB,YAAAA,EACV2B,KAAMrB,CAAAA,MAAOA,EAACJ,OAAQA,CAAE,IACjCc,EAAKZ,OAAQF,GAAIC,CAAM,IAEvBa,EAAKf,KAAMC,GAAIC,CAAM;AAAA,EACtB,GACFmB,OAAApB,GAAAoB,OAAAN,GAAAM,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AATH,QAAAM,IAAiBF;AAWhB,MAAAG;AAAA,EAAAP,EAAA,CAAA,MAAApB,KAAAoB,SAAAN,KAE8Ba,IAAAA,MAAA;AAC7Bb,IAAAA,GAAKT,OAASL,CAAE;AAAA,EAAC,GAClBoB,OAAApB,GAAAoB,OAAAN,GAAAM,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAFD,QAAAQ,IAAmBD;AAEJ,MAAAE;AAAAC,EAAAA,GAAA;AAGb,QAAI,CAAChB,GAAK;AAAEe,MAAAA,IAAO;AAAP,YAAAC;AAAAA,IAAY;AAAA,QAAAC;AAAA,IAAAX,SAAAN,KACRiB,IAAAjB,EAAKhB,YAAAA,GAAcsB,OAAAN,GAAAM,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAnC,UAAAY,IAAgBD;AAChBF,IAAAA,IAAOzC,EAAO6B,SAAU,KAAK7B,EAAQA,EAAO6B,SAAU,CAAC,EAACjB,OAAQA;AAAAA,EAAE;AAHpE,QAAAiC,IAAcJ,GAM6BE,IAAAjB,MAAU;AAAI,MAAAoB;AAAA,SAAAd,EAAA,CAAA,MAAApB,KAAAoB,EAAA,CAAA,MAAAa,KAAAb,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAW,KAAAX,UAAAQ,KAAlDM,IAAA;AAAA,IAAAlC,IAAAA;AAAAA,IAAA0B,UAAAA;AAAAA,IAAAE,YAAAA;AAAAA,IAAAO,SAAoCJ;AAAAA,IAAcE,OAAAA;AAAAA,EAAAA,GAAQb,OAAApB,GAAAoB,OAAAa,GAAAb,QAAAM,GAAAN,QAAAW,GAAAX,QAAAQ,GAAAR,QAAAc,KAAAA,IAAAd,EAAA,EAAA,GAA1Dc;AAA0D;AC5F5D,MAAMhG,KAAM;AAAA,EAAAkG,SAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAC,mBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAAD,OAAA;AAAA,EAAA;AAAA,EAAAE,eAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAG,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAI,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAL,OAAA;AAAA,EAAA;AAAA,EAAAM,uBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAN,OAAA;AAAA,EAAA;AAAA,EAAAO,WAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAP,OAAA;AAAA,EAAA;AAAA,EAAAQ,qBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,kBAAA;AAAA,IAAAR,OAAA;AAAA,EAAA;AAAA;ACcnB,SAAAS,GAAAtB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAA0B;AAAA,IAAA0B,mBAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAC,cAAAtB;AAAAA,IAAAuB,kBAAAA;AAAAA,IAAAC,aAAAtB;AAAAA,IAAAnB,UAAAA;AAAAA,EAAAA,IAAAc,GAGxByB,IAAAtB,MAAAyB,SAAA,KAAAzB,GAEAwB,IAAAtB,MAAAuB,SAAA,KAAAvB,GAGAwB,IAAiBN,MAAsB,QAAtB,QAAA,GAAyCA,CAAiB;AAAE,MAAAhB;AAAA,EAAAX,EAAA,CAAA,MAAAiC,KAAAjC,SAAA4B,KAC/DjB,IAAAiB,IAAgBA,EAAcK,CAAiC,IAA/D,GAA6CA,CAAQ,aAAWjC,OAAAiC,GAAAjC,OAAA4B,GAAA5B,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAA9E,QAAAhD,IAAc2D,GAMcG,IAAAe,KAAgB/G,GAAMoG;AAAkB,MAAAgB;AAAA,EAAAlC,SAAAc,KAAzDoB,KAACpH,GAAMkG,SAAUF,CAAwC,GAACd,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAExB,QAAAmC,IAAAN,KAAgB/G,GAAMsG;AAAwB,MAAAgB;AAAA,EAAApC,SAAAmC,KAArEC,KAACtH,GAAMqG,eAAgBgB,CAA8C,GAACnC,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAAA,MAAAqC;AAAA,EAAArC,EAAA,CAAA,MAAAhD,KAAAgD,SAAAoC,KAAxFC,IAAA,gBAAAC,EAAA,QAAA,EAAA,oBAAA,8BAAA,GAAAC,EAAAC,EAAApF,MAAkBgF,CAAsE,GACrFpF,UAAAA,EAAAA,CACH,GAAYgD,OAAAhD,GAAAgD,OAAAoC,GAAApC,OAAAqC,KAAAA,IAAArC,EAAA,CAAA;AACwB,QAAAyC,IAAAZ,KAAgB/G,GAAM2G;AAAoB,MAAAiB;AAAA,EAAA1C,UAAAyC,KAA9EC,IAAA,gBAAAJ,EAAA,OAAA,EAAA,oBAAA,8BAAA,GAAAC,EAAAC,EAAA7F,KAAkB7B,GAAM0G,WAAYiB,CAA0C,EAAA,CAAA,GAAKzC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,UAAAV,KACnFqD,IAAA,gBAAAL,EAAA,OAAA,EAAA,oBAAA,8BAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMuG,OAAQ,GAAG/B,UAAAA,EAAAA,CAAS,GAAWU,QAAAV,GAAAU,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA4C;AAAA,EAAA5C,EAAA,EAAA,MAAA+B,KAAA/B,UAAA6B,KAAA7B,EAAA,EAAA,MAAA8B,KACrDc,IAAAb,uBACC,UAAA,EAAA,oBAAA,8BACO,MAAA,UACM,cAAA,mBACFD,SAAAA,GAAgB,GAAAS,EAAAC,EAAA9F,QACjB5B,GAAMwG,aAAcO,KAAgB/G,GAAMyG,qBAAsB,GAExE,UAAA,gBAAAe,WAAY,OAAA,IAAY,QAAA,IAAY,SAAA,aAAiB,MAAA,QAAmB,eAAA,QACtE,UAAA,gBAAAA,YACI,GAAA,qBACK,QAAA,gBACM,aAAA,KACC,eAAA,YAElB,EAAA,CACF,GACDtC,QAAA+B,GAAA/B,QAAA6B,GAAA7B,QAAA8B,GAAA9B,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA;AAAA,MAAA6C;AAAA,SAAA7C,UAAAhD,KAAAgD,EAAA,EAAA,MAAA0C,KAAA1C,EAAA,EAAA,MAAA2C,KAAA3C,EAAA,EAAA,MAAA4C,KAAA5C,UAAAkC,KAAAlC,EAAA,EAAA,MAAAqC,KA1BHQ,IAAA,gBAAA/C,EAAA,OAAA,EAAA,oBAAA,8BACO,MAAA,WACO9C,cAAAA,GAAK,GAAAuF,EAAAC,EAAA7F,KACVuF,CAA0D,GAEjEG,UAAAA;AAAAA,IAAAA;AAAAA,IAGAK;AAAAA,IACAC;AAAAA,IACCC;AAAAA,EAAAA,GAiBH,GAAW5C,QAAAhD,GAAAgD,QAAA0C,GAAA1C,QAAA2C,GAAA3C,QAAA4C,GAAA5C,QAAAkC,GAAAlC,QAAAqC,GAAArC,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA,GA3BX6C;AA2BW;AAIf,SAAAC,GAAAC,GAAA;AAAA,QAAA/C,IAAAC,EAAAA,EAAA,CAAA,GACE;AAAA,IAAA0B,mBAAAA;AAAAA,EAAAA,IAA4BoB,GAC5BC,IAAcjD,GAAAA,GACdkD,IAAiBtB,MAAsB;AAAC,MAAAvB;AAAA,EAAAJ,SAAA+C,KAEV3C,IAAAA,MAAM,gBAAAkC,EAACZ,IAAA,EAAgB,GAAKqB,EAAAA,CAAK,GAAI/C,OAAA+C,GAAA/C,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAnE,QAAAkD,IAAkB9C;AAA2D,MAAAG,GAAAE;AAa7E,MAb6ET,EAAA,CAAA,MAAAiD,KAAAjD,SAAAkD,KAAAlD,EAAA,CAAA,MAAAgD,KAEnEzC,IAAAA,MAAA;AACR,QAAKyC,EAAKjC;AACV,aAAIkC,IACFD,EAAK1C,SAAU4C,CAAS,IAExBF,EAAKxC,WAAAA,GAEA,MAAMwC,EAAKxC,WAAAA;AAAAA,EAAa,GAC9BC,KAACuC,GAAOC,GAAUC,CAAS,GAAClD,OAAAiD,GAAAjD,OAAAkD,GAAAlD,OAAAgD,GAAAhD,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAR/BmD,EAAU5C,GAQPE,CAA4B,GAG3B,CAACuC,EAAKjC,SAAQ;AAChB,QAAI,CAACkC;AAAQ,aAAS;AAAI,QAAAtC;AAAA,WAAAX,SAAA+C,KACnBpC,IAAA,gBAAA2B,EAACZ,IAAA,EAAgB,GAAKqB,EAAAA,CAAK,GAAI/C,OAAA+C,GAAA/C,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAA/BW;AAAAA,EAA+B;AACvC,SAGM;AAAI;AAGN,MAAMyC,KAAYN,ICpEnBO,KAAoD;AAAA,EACxD,YACE,gBAAAvD,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAA,CAAI;AAAA,IACnC,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAI;AAAA,EAAA,GACrC;AAAA,EAEF,gBACE,gBAAAxC,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,YAAA,EAAS,QAAO,mBAAA,CAAkB;AAAA,EAAA,GACrC;AAAA,EAEF,cACE,gBAAAxC,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,QAAA,EAAK,GAAE,qCAAA,CAAoC;AAAA,IAC5C,gBAAAA,EAAC,YAAA,EAAS,QAAO,wBAAA,CAAuB;AAAA,EAAA,GAC1C;AAAA,EAEFiB,OACE,gBAAAzD,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,YAAA,EAAS,QAAO,mBAAA,CAAkB;AAAA,EAAA,GACrC;AAAA,EAEFkB,WACE,gBAAA1D,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,UAAK,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAA,CAAO;AAAA,EAAA,GACjD;AAAA,EAEF,eACE,gBAAAxC,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAI;AAAA,IACrC,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,SAAQ,IAAG,IAAA,CAAG;AAAA,EAAA,GACxC;AAAA,EAEF,kBACE,gBAAAxC,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,QAAA,EAAK,GAAE,2FAAA,CAA0F;AAAA,IAClG,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAI;AAAA,IACpC,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,KAAA,CAAI;AAAA,EAAA,GAC1C;AAAA,EAEFmB,QAAQ,gBAAAnB,EAAC,QAAA,EAAK,GAAE,8CAAA,CAA6C;AAAA,EAC7DoB,MACE,gBAAA5D,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,QAAA,EAAK,GAAE,KAAI,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAG;AAAA,IACvD,gBAAAA,EAAC,QAAA,EAAK,GAAE,2BAAA,CAA0B;AAAA,EAAA,GACpC;AAAA,EAEFqB,KACE,gBAAArB,EAAAgB,IAAA,EACE,UAAA,gBAAAhB,EAAC,QAAA,EAAK,GAAE,uHAAqH,EAAA,CAC/H;AAEJ,GAOMsB,KAAoD;AAAA;AAAA,EAExD,sBACE,gBAAAtB,EAAC,QAAA,EACC,UAAS,WACT,GAAE,iKAA+J;AAAA;AAAA,EAIrK,yBACE,gBAAAA,EAAC,QAAA,EACC,UAAS,WACT,GAAE,iLAA+K;AAAA;AAAA,EAIrL,uBACE,gBAAAA,EAAC,QAAA,EACC,UAAS,WACT,GAAE,qLAAmL;AAAA;AAAA,EAIzL,mBACE,gBAAAA,EAAC,QAAA,EACC,UAAS,WACT,GAAE,yQAAuQ;AAAA;AAAA,EAI7Q,iBACE,gBAAAA,EAAC,QAAA,EACC,UAAS,WACT,GAAE,6KAA2K;AAAA;AAAA,EAIjL,eACE,gBAAAxC,EAAAwD,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAhB,EAAC,QAAA,EACC,GAAE,4BACF,MAAK,QACL,QAAO,gBACP,aAAY,KACZ,eAAc,QAAA,CAAO;AAAA,IAEvB,gBAAAA,EAAC,QAAA,EAAK,GAAE,KAAI,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,IAAA,CAAG;AAAA,EAAA,EAAA,CACzD;AAEJ;AAOO,SAAAuB,GAAAzD,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAA6D,MAAAA;AAAAA,IAAApG,MAAA6C;AAAAA,EAAAA,IAAAH,GAAO1C,IAAA6C,MAAAyB,SAAA,KAAAzB,GAC1BwD,IAAeH,GAAYE,CAAI;AAC/B,MAAIC,GAAM;AAAA,QAAAtD;AAAA,WAAAT,EAAA,CAAA,MAAA+D,KAAA/D,SAAAtC,KAEN+C,IAAA,gBAAA6B,EAAA,OAAA,EAAa,SAAA,aAAiB,MAAA,gBAAsB5E,OAAAA,GAAcA,QAAAA,GAC/DqG,UAAAA,EAAAA,CACH,GAAM/D,OAAA+D,GAAA/D,OAAAtC,GAAAsC,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFNS;AAAAA,EAEM;AAeL,QAAAA,IAAA4C,GAAYS,CAAI;AAAC,MAAAnD;AAAA,SAAAX,EAAA,CAAA,MAAAtC,KAAAsC,SAAAS,KAVpBE,+BACU,SAAA,aACH,MAAA,QACE,QAAA,gBACM,aAAA,GACC,eAAA,SACC,gBAAA,SACRjD,UACCA,WAEP+C,UAAAA,GACH,GAAMT,OAAAtC,GAAAsC,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAXNW;AAWM;AChKH,MAAM7F,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAgD,UAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAhD,OAAA;AAAA,EAAA;AAAA,EAAAiD,SAAA;AAAA,IAAA,eAAA;AAAA,IAAA,mBAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA,EAAAmD,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAAoD,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAApD,OAAA;AAAA,EAAA;AAAA,EAAAqD,MAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAArD,OAAA;AAAA,EAAA;AAAA,GCGbsD,KAA+C;AAAA,EACnDD,MAAM;AAAA,EACND,SAAS;AAAA,EACTD,SAAS;AAAA,EACTD,OAAO;AACT;AASA,SAASK,GAAYC,GAA0BC,GAAyC;AACtF,SAAID,MAAS,KAAc,OACvBA,MAASzC,SAAkB,gBAAAM,EAACuB,IAAA,EAAK,MAAMU,GAAaG,CAAO,GAAG,MAAM,GAAA,CAAG,IACvE,OAAOD,KAAS,6BAAkBZ,IAAA,EAAK,MAAMY,GAAkB,MAAM,IAAG,IACrEA;AACT;AAEO,SAAAE,GAAAvE,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAAyE,SAAAnE;AAAAA,IAAAkE,MAAAA;AAAAA,IAAAnF,UAAAA;AAAAA,EAAAA,IAAAc,GAACsE,IAAAnE,MAAAyB,SAAA,SAAAzB;AAAgB,MAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAyE,KAAAzE,SAAA0E,KAChBjE,IAAA+D,GAAYC,GAAMC,CAAO,GAAC1E,OAAAyE,GAAAzE,OAAA0E,GAAA1E,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAA/C,QAAA4E,IAAqBnE,GAGyBE,IAAA7F,GAAO4J,CAAO;AAAC,MAAA5D;AAAA,EAAAd,SAAAW,KAA7BG,KAAChG,GAAMkJ,MAAOrD,CAAe,GAACX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAA4E,KACzD1C,IAAA0C,IAAA,gBAAA9E,EAAAwD,IAAA,EAEG,UAAA;AAAA,IAAA,gBAAAhB,wDAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMmJ,QAAS,GAAGW,UAAAA,EAAAA,CAAa;AAAA,IAChD,gBAAAtC,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMoJ,OAAQ,GAAG5E,UAAAA,EAAAA,CAAS;AAAA,EAAA,EAAA,CAAW,IAHzDA,GAOAU,OAAAV,GAAAU,OAAA4E,GAAA5E,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KARHC,yEAAe,MAAA,SAAO,GAAAI,EAAAC,EAAA7F,KAAQmE,CAA8B,GACzDoB,UAAAA,GAQH,GAAWlC,OAAAc,GAAAd,OAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GATXmC;AASW;ACrCR,MAAMrH,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAA4D,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA5D,OAAA;AAAA,EAAA;AAAA,EAAA6D,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA7D,OAAA;AAAA,EAAA;AAAA,EAAA8D,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAA9D,OAAA;AAAA,EAAA;AAAA,EAAAmD,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAAoD,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAApD,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA,EAAAqD,MAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAArD,OAAA;AAAA,EAAA;AAAA,GCQb+D,KAAU;AAAA,EACdC,IAAInK,GAAOgK;AAAAA,EACXI,IAAIpK,GAAO+J;AACb;AAEO,SAAAM,GAAA/E,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAyE,SAAAnE;AAAAA,IAAA7C,MAAA+C;AAAAA,IAAAnB,UAAAA;AAAAA,EAAAA,IAAAc,GAACsE,IAAAnE,MAAAyB,SAAA,YAAAzB,GACkBI,IAAAqE,GADGvE,MAAAuB,SAAA,OAAAvB,CACS,GAAGK,IAAAhG,GAAO4J,CAAO;AAAC,MAAAxC;AAAA,EAAAlC,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KAA5CoB,IAAA,CAACpH,GAAMkJ,MAAOrD,GAAeG,CAAe,GAACd,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAV,KAAAU,SAAAkC,KAA/DC,IAAA,gBAAAG,EAAA,QAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAApF,MAAkB8E,CAA6C,GAAG5C,UAAAA,EAAAA,CAAS,GAAYU,OAAAV,GAAAU,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAAvFmC;AAAuF;ACdzF,MAAMrH,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAmE,aAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAnE,OAAA;AAAA,EAAA;AAAA,EAAAoE,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAApE,OAAA;AAAA,EAAA;AAAA,EAAAqE,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAArE,OAAA;AAAA,EAAA;AAAA,EAAAsE,WAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAtE,OAAA;AAAA,EAAA;AAAA,EAAAuE,MAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAvE,OAAA;AAAA,EAAA;AAAA,EAAAwE,kBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAxE,OAAA;AAAA,EAAA;AAAA,EAAAyE,QAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAzE,OAAA;AAAA,EAAA;AAAA,EAAA0E,WAAA;AAAA,IAAA,gBAAA;AAAA,IAAA1E,OAAA;AAAA,EAAA;AAAA,EAAA2E,UAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA3E,OAAA;AAAA,EAAA;AAAA,GCYb+D,KAAU;AAAA,EACdD,SAASjK,GAAOsK;AAAAA,EAChBS,OAAO/K,GAAOuK;AAChB;AAEO,SAAAS,GAAA1F,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAgB;AAAA,IAAAyE,SAAAnE;AAAAA,IAAA7C,MAAA+C;AAAAA,IAAAkF,WAAAhF;AAAAA,IAAAiF,UAAA9E;AAAAA,IAAAiF,MAAA7D;AAAAA,IAAA8D,SAAAA;AAAAA,IAAA1G,UAAAA;AAAAA,EAAAA,IAAAc,GACrBsE,IAAAnE,MAAAyB,SAAA,YAAAzB,GACA7C,IAAA+C,MAAAuB,SAAA,YAAAvB,GACAkF,IAAAhF,MAAAqB,SAAA,KAAArB,GACAiF,IAAA9E,MAAAkB,SAAA,KAAAlB,GACAiF,IAAA7D,MAAAF,SAAA,WAAAE,GAWMC,IAAA6C,GAAQtH,CAAI,GACZ0E,IAAAtH,GAAO4J,CAAO,GACdrC,IAAAsD,KAAa7K,GAAM6K,WACnBlD,IAAAmD,KAAY9K,GAAM8K;AAAS,MAAAlD;AAAA,EAAA1C,EAAA,CAAA,MAAAmC,KAAAnC,EAAA,CAAA,MAAAoC,KAAApC,EAAA,CAAA,MAAAqC,KAAArC,SAAAyC,KALtBC,IAAA,CACL5H,GAAMkJ,MACN7B,GACAC,GACAC,GACAI,CAA2B,GAC5BzC,OAAAmC,GAAAnC,OAAAoC,GAAApC,OAAAqC,GAAArC,OAAAyC,GAAAzC,OAAA0C,KAAAA,IAAA1C,EAAA,CAAA;AAAA,MAAA2C;AAAA,SAAA3C,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,CAAA,MAAAgG,KAAAhG,EAAA,CAAA,MAAA0C,KAAA1C,SAAA+F,KAVHpD,IAAA,gBAAAL,EAAA,UAAA,EAAA,oBAAA,wBACQyD,MAAAA,GACIH,UAAAA,GACDI,SAAAA,GAAO,GAAAzD,EAAAC,EAAA9F,QACTgG,CAMN,GAEApD,UAAAA,GACH,GAAcU,OAAAV,GAAAU,OAAA4F,GAAA5F,OAAAgG,GAAAhG,OAAA0C,GAAA1C,OAAA+F,GAAA/F,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA,GAbd2C;AAac;ACxCX,MAAM7H,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAwD,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAxD,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA,EAAAmD,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAAoD,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAApD,OAAA;AAAA,EAAA;AAAA,EAAAqD,MAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAArD,OAAA;AAAA,EAAA;AAAA,GCGbsD,KAAiD;AAAA,EACrDD,MAAM;AAAA,EACND,SAAS;AAAA,EACTD,SAAS;AAAA,EACTD,OAAO;AACT;AASA,SAASK,GAAYC,GAA4BC,GAA2C;AAC1F,SAAID,MAAS,KAAc,OACvBA,MAASzC,SAAkB,gBAAAM,EAACuB,IAAA,EAAK,MAAMU,GAAaG,CAAO,GAAG,MAAM,GAAA,CAAG,IACvE,OAAOD,KAAS,6BAAkBZ,IAAA,EAAK,MAAMY,GAAkB,MAAM,IAAG,IACrEA;AACT;AAEO,SAAAwB,GAAA7F,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAiB;AAAA,IAAAyE,SAAAnE;AAAAA,IAAAkE,MAAAA;AAAAA,IAAAnF,UAAAA;AAAAA,EAAAA,IAAAc,GAACsE,IAAAnE,MAAAyB,SAAA,SAAAzB;AAAgB,MAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAyE,KAAAzE,SAAA0E,KAClBjE,IAAA+D,GAAYC,GAAMC,CAAO,GAAC1E,OAAAyE,GAAAzE,OAAA0E,GAAA1E,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAA/C,QAAA4E,IAAqBnE,GAGwBE,IAAA7F,GAAO4J,CAAO;AAAC,MAAA5D;AAAA,EAAAd,SAAAW,KAA7BG,KAAChG,GAAMkJ,MAAOrD,CAAe,GAACX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,SAAA4E,KACxD1C,IAAA0C,KAAgB,gBAAAtC,EAAA,QAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAApF,MAAkBtC,GAAM2J,IAAK,GAAGG,UAAAA,GAAa,GAAY5E,OAAA4E,GAAA5E,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAV,KAAAU,SAAAc,KAAAd,EAAA,CAAA,MAAAkC,KAD5EC,6EAAe,MAAA,QAAM,GAAAI,EAAAC,EAAA7F,KAAQmE,CAA8B,GACxDoB,UAAAA;AAAAA,IAAAA;AAAAA,IACA5C;AAAAA,EAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAHXmC;AAGW;AC9BR,MAAMrH,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAiF,UAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,oBAAA;AAAA,IAAAjF,OAAA;AAAA,EAAA;AAAA,EAAAkF,UAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAlF,OAAA;AAAA,EAAA;AAAA,EAAA8C,QAAA;AAAA,IAAA,uBAAA;AAAA,IAAA9C,OAAA;AAAA,EAAA;AAAA,EAAAmF,aAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,oBAAA;AAAA,IAAAnF,OAAA;AAAA,EAAA;AAAA,EAAAmE,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAAnE,OAAA;AAAA,EAAA;AAAA,EAAAoF,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAApF,OAAA;AAAA,EAAA;AAAA,EAAAqF,UAAA;AAAA,IAAA,kBAAA;AAAA,IAAArF,OAAA;AAAA,EAAA;AAAA,EAAAnE,QAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAmE,OAAA;AAAA,EAAA;AAAA,GCSb+D,KAAU;AAAA,EACdD,SAASjK,GAAOsK;AAAAA,EAChBmB,SAASzL,GAAOuL;AAAAA,EAChBG,MAAM1L,GAAOwL;AACf;AAEO,SAAAG,GAAArG,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAyE,SAAAnE;AAAAA,IAAA7C,MAAA+C;AAAAA,IAAA3D,QAAAA;AAAAA,IAAAkJ,SAAAA;AAAAA,IAAA1G,UAAAA;AAAAA,EAAAA,IAAAc,GACnBsE,IAAAnE,MAAAyB,SAAA,aAAAzB,GACA7C,IAAA+C,MAAAuB,SAAA,YAAAvB,GAMmDE,IAAA7F,GAAO4J,CAAO,GAAG5D,IAAAkE,GAAQtH,CAAI;AAAC,MAAAwE;AAAA,EAAAlC,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KAA5CoB,IAAA,CAACpH,GAAMkJ,MAAOrD,GAAiBG,CAAa,GAACd,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,EAAAnC,SAAAlD,KAC7EqF,IAAArF,KAAU,gBAAAwF,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMgC,MAAO,GAAGA,UAAAA,GAAO,GAAWkD,OAAAlD,GAAAkD,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAAgG,KAAAhG,EAAA,CAAA,MAAAkC,KAAAlC,SAAAmC,KADhEC,uEAAmB4D,SAAAA,GAAO,GAAAzD,EAAAC,EAAA7F,KAASuF,CAA6C,GAC7EC,UAAAA;AAAAA,IAAAA;AAAAA,IACA7C;AAAAA,EAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAgG,GAAAhG,OAAAkC,GAAAlC,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA,GAHXoC;AAGW;AC3BR,MAAMtH,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAA0F,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA1F,OAAA;AAAA,EAAA;AAAA,EAAA2F,KAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA3F,OAAA;AAAA,EAAA;AAAA,EAAA4F,cAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA5F,OAAA;AAAA,EAAA;AAAA,EAAA6F,YAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA7F,OAAA;AAAA,EAAA;AAAA,EAAAlE,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAkE,OAAA;AAAA,EAAA;AAAA;ACWZ,SAAA8F,GAAA3G,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAkB;AAAA,IAAA6D,MAAAA;AAAAA,IAAAvI,OAAAA;AAAAA,IAAAyL,SAAAC;AAAAA,IAAAC,gBAAA3G;AAAAA,IAAAqF,UAAAnF;AAAAA,IAAA,cAAA0G;AAAAA,IAAAC,UAAAA;AAAAA,IAAA9H,UAAAA;AAAAA,EAAAA,IAAAc,GAIvB8G,IAAA3G,MAAAyB,SAAA,KAAAzB,GACAqF,IAAAnF,MAAAuB,SAAA,KAAAvB,GAKA4G,IAAqBJ,MAAsBjF,QAC3C,CAAAsF,GAAAC,CAAA,IAA8CC,EAASN,CAAc,GACrEO,IAAkBJ,IAAAJ,IAAAK;AAAkD,MAAA3G;AAAA,EAAAX,EAAA,CAAA,MAAAqH,KAAArH,SAAAoH,KAGlEzG,IAAA3B,CAAAA,MAAA;AACE,IAAKqI,KACHE,EAAmBvI,EAAC0I,OAAOV,OAAQ,GAErCI,IAAWpI,CAAC;AAAA,EAAC,GACdgB,OAAAqH,GAAArH,OAAAoH,GAAApH,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AANH,QAAA2H,IAAqBhH,GAWcG,IAAA8E,KAAY9K,GAAM6L;AAAa,MAAAzE;AAAA,EAAAlC,SAAAc,KAA7CoB,KAACpH,GAAM4L,MAAO5F,CAA+B,GAACd,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAKpD,QAAAmC,IAAAkF,IAAAJ,IAAAjF,QACOI,IAACiF,IAADrF,SAAAkF,GAEJ7E,IAAC/C,IAAD0C,SAAAmF;AAAiC,MAAA1E;AAAA,EAAAzC,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,CAAA,MAAA2H,KAAA3H,EAAA,CAAA,MAAA8D,KAAA9D,SAAAmC,KAAAnC,EAAA,CAAA,MAAAoC,KAAApC,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAAzE,KAP/CkH,IAAA,gBAAAH,EAAA,SAAA,EAAA,oBAAA,4BACO,MAAA,YACCwB,MAAAA,GACCvI,OAAAA,GACE,SAAA4G,GACO,gBAAAC,GACNwD,UAAAA,GACE,cAAAvD,GACFsF,aAAY,GAAApF,EAAAC,EAAAzF,OACfjC,GAAMiC,KAAM,GAAA,KAAA,OAAA,CAAA,GACnBiD,OAAA4F,GAAA5F,OAAA2H,GAAA3H,OAAA8D,GAAA9D,OAAAmC,GAAAnC,OAAAoC,GAAApC,QAAAqC,GAAArC,QAAAzE,GAAAyE,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAEoB,QAAA0C,IAAA+E,IAAY3M,GAAMgM,aAAchM,GAAM+L;AAAa,MAAAlE;AAAA,EAAA3C,UAAA0C,KAAhEC,KAAC7H,GAAM8L,KAAMlE,CAAmD,GAAC1C,QAAA0C,GAAA1C,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAQrD,QAAA4C,IAAA6E,IAAA,IAAA;AAAiB,MAAA5E;AAAA,EAAA7C,UAAA4C,KAA3BC,IAAA;AAAA,IAAA+E,SAAUhF;AAAAA,EAAAA,GAAkB5C,QAAA4C,GAAA5C,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA6H;AAAA,EAAA7H,EAAA,EAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEnCF,IAAA,gBAAAvF,EAAA,YAAA,EACS,QAAA,uBACA,QAAA,gBACM,aAAA,KACC,eAAA,SACC,gBAAA,QAAA,CAAO,GACtBtC,QAAA6H,KAAAA,IAAA7H,EAAA,EAAA;AAAA,MAAAgI;AAAA,EAAAhI,UAAA6C,KAbJmF,IAAA,gBAAA1F,EAAA,OAAA,EACS,OAAA,IACC,QAAA,IACA,SAAA,aACH,MAAA,QACE,OAAAO,GAEPgF,UAAAA,GAOF,GAAM7H,QAAA6C,GAAA7C,QAAAgI,KAAAA,IAAAhI,EAAA,EAAA;AAAA,MAAAiI;AAAA,EAAAjI,EAAA,EAAA,MAAA2C,KAAA3C,UAAAgI,KAlBRC,mFAAA1F,EAAAC,EAAApF,MACSuF,CAAiE,GACxE,eAAA,IAEAqF,UAAAA,GAeF,GAAYhI,QAAA2C,GAAA3C,QAAAgI,GAAAhI,QAAAiI,KAAAA,IAAAjI,EAAA,EAAA;AAAA,MAAAkI;AAAA,EAAAlI,UAAAV,KACX4I,IAAA5I,KAAY,gBAAAgD,EAAA,QAAA,EAAA,oBAAA,4BAAA,GAAAC,EAAAC,EAAApF,IAAA,GAAYkC,UAAAA,EAAAA,CAAS,GAAYU,QAAAV,GAAAU,QAAAkI,KAAAA,IAAAlI,EAAA,EAAA;AAAA,MAAAmI;AAAA,SAAAnI,EAAA,EAAA,MAAAiI,KAAAjI,EAAA,EAAA,MAAAkI,KAAAlI,EAAA,EAAA,MAAAkC,KAAAlC,UAAAyC,KAhChD0F,oFAAA5F,EAAAC,EAAAxF,OAAmBkF,CAA8C,GAC/DO,UAAAA;AAAAA,IAAAA;AAAAA,IAWAwF;AAAAA,IAoBCC;AAAAA,EAAAA,GACH,GAAalI,QAAAiI,GAAAjI,QAAAkI,GAAAlI,QAAAkC,GAAAlC,QAAAyC,GAAAzC,QAAAmI,KAAAA,IAAAnI,EAAA,EAAA,GAjCbmI;AAiCa;ACxEV,SAAAC,GAAAC,GAAAC,GAAAlB,GAAA;AAAA,QAAApH,IAAAC,EAAAA,EAAA,CAAA,GAKL,CAAAsI,GAAAC,CAAA,IAAgChB,EAASc,CAAY,GACrD/M,IAAc8M,MAAoBrG,SAApBqG,IAAAE;AAA0D,MAAAnI;AAAA,EAAAJ,EAAA,CAAA,MAAAqI,KAAArI,SAAAoH,KAEtEhH,IAAAqI,CAAAA,MAAA;AACE,IAAIJ,MAAoBrG,UAAWwG,EAAYC,CAAC,GAChDrB,IAAWqB,CAAC;AAAA,EAAC,GACdzI,OAAAqI,GAAArI,OAAAoH,GAAApH,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAJH,QAAA0I,IAAiBtI;AAMhB,MAAAG;AAAA,SAAAP,EAAA,CAAA,MAAA0I,KAAA1I,SAAAzE,KACMgF,IAAA,CAAChF,GAAOmN,CAAQ,GAAC1I,OAAA0I,GAAA1I,OAAAzE,GAAAyE,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAjBO;AAA0B;ACb5B,MAAMzF,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAA0H,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA1H,OAAA;AAAA,EAAA;AAAA,GCWb2H,KAAuBxJ,EAAgD,IAAI;AAEjF,SAAAyJ,KAAA;AACE,QAAAC,IAAY5I,EAAW0I,EAAoB;AAC3C,MAAI,CAACE;AACH,UAAM,IAAIC,MAAM,2DAA2D;AAC5E,SACMD;AAAG;AAcZ,SAAAE,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA1E,OAAA8M;AAAAA,IAAAC,cAAA/H;AAAAA,IAAA0I,eAAAA;AAAAA,IAAAC,aAAAzI;AAAAA,IAAAmF,UAAAjF;AAAAA,IAAArB,UAAAA;AAAAA,EAAAA,IAAAc;AAOF,MAAAU;AAAA,EAAAd,SAAAO,KALVO,IAAAP,MAAAyB,SAAA,CAAA,IAAAzB,GAAiBP,OAAAO,GAAAP,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAjB,QAAAsI,IAAAxH,GAEAoI,IAAAzI,MAAAuB,SAAA,aAAAvB,GACAmF,IAAAjF,MAAAqB,SAAA,KAAArB,GAGA,CAAApF,GAAAmN,CAAA,IAA0BN,GAAqBC,GAAiBC,GAAcW,CAAa;AAAC,MAAA/G;AAAA,EAAAlC,EAAA,CAAA,MAAA4F,KAAA5F,SAAA0I,KAAA1I,EAAA,CAAA,MAAAzE,KAG1F2G,IAAAA,CAAAiH,GAAAnC,MAAA;AACE,QAAIpB;AAAQ;AACZ,UAAAwD,IAAapC,IAAA,CAAA,GACLzL,GAAO4N,CAAS,IACpB5N,EAAK2D,OAAQuJ,CAAAA,MAAOA,MAAMU,CAAS;AACvCT,IAAAA,EAASU,CAAI;AAAA,EAAC,GACfpJ,OAAA4F,GAAA5F,OAAA0I,GAAA1I,OAAAzE,GAAAyE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAPH,QAAAqJ,IAAiBnH;AAShB,MAAAC;AAAA,EAAAnC,EAAA,CAAA,MAAA4F,KAAA5F,SAAAqJ,KAAArJ,EAAA,CAAA,MAAAzE,KAGuC4G,IAAA;AAAA,IAAA5G,OAAAA;AAAAA,IAAA8N,UAAAA;AAAAA,IAAAzD,UAAAA;AAAAA,EAAAA,GAA2B5F,OAAA4F,GAAA5F,OAAAqJ,GAAArJ,OAAAzE,GAAAyE,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAIxC,QAAAoC,IAAA8G,MAAgB,gBAAgBpO,GAAM6N;AAAe,MAAAtG;AAAA,EAAArC,UAAAoC,KAAnEC,KAACvH,GAAM4L,MAAOtE,CAAqD,GAACpC,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAAA,MAAAyC;AAAA,EAAAzC,EAAA,EAAA,MAAAV,KAAAU,UAAAkJ,KAAAlJ,EAAA,EAAA,MAAAqC,KAH7EI,IAAA,gBAAAH,EAAA,OAAA,EAAA,oBAAA,sCACO,MAAA,SACa4G,uBAAW,GAAA3G,EAAAC,EAAA7F,KACtB0F,CAAoE,GAE1E/C,UAAAA,GACH,GAAWU,QAAAV,GAAAU,QAAAkJ,GAAAlJ,QAAAqC,GAAArC,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,SAAA1C,EAAA,EAAA,MAAAmC,KAAAnC,UAAAyC,KAPbC,sBAAAkG,GAAA,UAAA,EAAsC,OAAAzG,GACpCM,UAAAA,GAOF,GAAgCzC,QAAAmC,GAAAnC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GARhC0C;AAQgC;AAYpC,SAAA4G,GAAAlJ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA1E,OAAAA;AAAAA,IAAAqK,UAAArF;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAAkBmJ,IAAAhJ,MAAAyB,SAAA,KAAAzB,GAC9B;AAAA,IAAAhF,OAAAiO;AAAAA,IAAAH,UAAAA;AAAAA,IAAAzD,UAAA6D;AAAAA,EAAAA,IAA+DZ,GAAAA;AAAkB,MAAApI;AAAA,EAAAT,EAAA,CAAA,MAAAwJ,KAAAxJ,SAAAzE,KAC/DkF,IAAA+I,EAAUE,SAAUnO,CAAK,GAACyE,OAAAwJ,GAAAxJ,OAAAzE,GAAAyE,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAA5C,QAAAyH,IAAkBhH,GAClBkJ,IAAmBF,KAAAF;AAA6B,MAAA5I;AAAA,EAAAX,EAAA,CAAA,MAAAqJ,KAAArJ,SAAAzE,KAG9CoF,IAAA3B,CAAAA,MAAA;AACEqK,IAAAA,EAAS9N,GAAOyD,EAAC0I,OAAOV,OAAQ;AAAA,EAAC,GAClChH,OAAAqJ,GAAArJ,OAAAzE,GAAAyE,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAHH,QAAA2H,IAAqBhH;AAKpB,MAAAG;AAAA,SAAAd,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAA2H,KAAA3H,EAAA,CAAA,MAAAyH,KAAAzH,EAAA,CAAA,MAAA2J,KAAA3J,UAAAzE,KAGCuF,IAAA,gBAAAwB,EAACyE,MACQxL,OAAAA,GACEkM,SAAAA,GACCkC,UAAAA,GACAhC,UAAAA,GAETrI,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAA2H,GAAA3H,OAAAyH,GAAAzH,OAAA2J,GAAA3J,QAAAzE,GAAAyE,QAAAc,KAAAA,IAAAd,EAAA,EAAA,GAPXc;AAOW;AAIR,MAAM8I,KAAgB;AAAA,EAAA,MAC3BZ;AAAAA,EAAAA,MACAM;AACF,GClGaxO,KAAM;AAAA,EAAA+O,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,iBAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAA6I,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAA7I,OAAA;AAAA,EAAA;AAAA,EAAA8I,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAA9I,OAAA;AAAA,EAAA;AAAA,EAAA+I,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/I,OAAA;AAAA,EAAA;AAAA,EAAAgJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAhJ,OAAA;AAAA,EAAA;AAAA,EAAAiJ,WAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAjJ,OAAA;AAAA,EAAA;AAAA,EAAAkJ,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAlJ,OAAA;AAAA,EAAA;AAAA,EAAAgE,IAAA;AAAA,IAAA,mBAAA;AAAA,IAAAhE,OAAA;AAAA,EAAA;AAAA,EAAAiE,IAAA;AAAA,IAAA,mBAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAmJ,IAAA;AAAA,IAAA,mBAAA;AAAA,IAAAnJ,OAAA;AAAA,EAAA;AAAA,EAAAnE,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAmE,OAAA;AAAA,EAAA;AAAA,EAAAoJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAApJ,OAAA;AAAA,EAAA;AAAA,EAAAqJ,aAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAArJ,OAAA;AAAA,EAAA;AAAA,EAAAsJ,MAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,eAAA;AAAA,IAAAtJ,OAAA;AAAA,EAAA;AAAA,EAAAuJ,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAvJ,OAAA;AAAA,EAAA;AAAA,EAAAK,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAAL,OAAA;AAAA,EAAA;AAAA,EAAAwJ,eAAA;AAAA,IAAA,kBAAA;AAAA,IAAAxJ,OAAA;AAAA,EAAA;AAAA,EAAAyJ,eAAA;AAAA,IAAA,4BAAA;AAAA,IAAAzJ,OAAA;AAAA,EAAA;AAAA,GCyBb0J,KAAgBvL,EAAyC,IAAI;AAEnE,SAAAwL,KAAA;AACE,QAAA9B,IAAY5I,EAAWyK,EAAa;AACpC,MAAI,CAAC7B;AAAK,UAAM,IAAIC,MAAM,4DAA4D;AAAC,SAChFD;AAAG;AAmBZ,SAAAE,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAuL,MAAAC;AAAAA,IAAAC,aAAAxK;AAAAA,IAAAyK,cAAAA;AAAAA,IAAAC,aAAAxK;AAAAA,IAAAyK,wBAAAvK;AAAAA,EAAAA,IAAAP,GAGZ2K,IAAAxK,MAAAyB,SAAA,KAAAzB,GAEA0K,IAAAxK,MAAAuB,SAAA,KAAAvB,GACAyK,IAAAvK,MAAAqB,SAAA,MAAArB,GAEA0G,IAAqByD,MAAmB9I,QACxC,CAAAmJ,GAAAC,CAAA,IAAwC5D,EAASuD,CAAW,GAC5D,CAAAM,GAAAC,CAAA,IAA8B9D,EAAS,EAAK,GAC5C+D,IAAwB/L,EAA6C,IAAI,GACzEgM,IAAiBhM,EAAuB,IAAI,GAE5CiM,IAAepE,IAAAyD,IAAAK,GAEfO,IAAgBvL,GAAAA,GAChBwL,IAAsBxL,GAAAA;AAAO,MAAAW;AAAA,EAAAd,EAAA,CAAA,MAAAqH,KAAArH,SAAAgL,KAEGlK,IAAAA,MAAA;AAC9B,IAAIyK,EAAe9L,YACjBmM,aAAaL,EAAe9L,OAAQ,GACpC8L,EAAe9L,UAAW,OAE5B6L,EAAW,EAAK,GACXjE,KAAc+D,EAAgB,EAAI,GACvCJ,IAAe,EAAI;AAAA,EAAC,GACrBhL,OAAAqH,GAAArH,OAAAgL,GAAAhL,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AARD,QAAA6L,IAAoB/K;AAQY,MAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAAkL,KAAAlL,SAAAqH,KAAArH,EAAA,CAAA,MAAAgL,KAEC9I,IAAAA,MAAA;AAC/BoJ,IAAAA,EAAW,EAAI,GACfC,EAAe9L,UAAWqM,WAAW,MAAA;AACnCR,MAAAA,EAAW,EAAK,GAChBC,EAAe9L,UAAW,MACrB4H,KAAc+D,EAAgB,EAAK,GACxCJ,IAAe,EAAK;AAAA,IAAC,GACpBE,CAAsB;AAAA,EALF,GAMxBlL,OAAAkL,GAAAlL,OAAAqH,GAAArH,OAAAgL,GAAAhL,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AARD,QAAA+L,IAAqB7J;AAQmC,MAAAC,GAAAC;AAAA,EAAApC,EAAA,CAAA,MAAAqL,KAAArL,SAAA8K,KAAA9K,EAAA,CAAA,MAAAqH,KAG9ClF,IAAAA,MAAA;AAAA,EAGP,GACAC,KAACiF,GAAcyD,GAAgBO,CAAO,GAACrL,OAAAqL,GAAArL,OAAA8K,GAAA9K,OAAAqH,GAAArH,QAAAmC,GAAAnC,QAAAoC,MAAAD,IAAAnC,EAAA,EAAA,GAAAoC,IAAApC,EAAA,EAAA,IAJ1CmD,EAAUhB,GAIPC,CAAuC;AAAC,MAAAC,GAAAI;AAAA,EAAAzC,EAAA,EAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAGjC1F,IAAAA,MACD,MAAA;AACL,IAAIkJ,EAAe9L,WAAUmM,aAAaL,EAAe9L,OAAQ;AAAA,EAAC,GAEnEgD,IAAA,CAAA,GAAEzC,QAAAqC,GAAArC,QAAAyC,MAAAJ,IAAArC,EAAA,EAAA,GAAAyC,IAAAzC,EAAA,EAAA,IAJLmD,EAAUd,GAIPI,CAAE;AAAC,MAAAC,GAAAC;AAAA,EAAA3C,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAAiL,KAAAjL,EAAA,EAAA,MAAAyL,KAAAzL,UAAA+L,KAGIrJ,IAAAA,MAAA;AAER,QADI,CAAC+I,KAAD,CAAYJ,KACZ,CAACJ;AAAW;AAEhB,UAAAe,IAAA,SAAAhN,GAAA;AACE,MAAIA,EAAC2E,QAAS,aACZ3E,EAACiN,gBAAAA,GACDF,EAAAA;AAAAA,IACD;AAEHG,oBAAQC,iBAAkB,WAAWH,CAAS,GACvC,MAAME,SAAQE,oBAAqB,WAAWJ,CAAS;AAAA,EAAC,GAC9DrJ,IAAA,CAAC8I,GAAQJ,GAASJ,GAAac,CAAY,GAAC/L,QAAAqL,GAAArL,QAAAiL,GAAAjL,QAAAyL,GAAAzL,QAAA+L,GAAA/L,QAAA0C,GAAA1C,QAAA2C,MAAAD,IAAA1C,EAAA,EAAA,GAAA2C,IAAA3C,EAAA,EAAA,IAZ/CmD,EAAUT,GAYPC,CAA4C;AAAC,MAAAC,GAAAC;AAAA,EAAA7C,EAAA,EAAA,MAAAqL,KAAArL,UAAAyL,KAGtC7I,IAAAA,MAAA;AACR,QAAI6I,KAAAJ,GAAiB;AACnB,YAAAgB,IAAaH,SAAQ3B,KAAKrP,MAAMoR;AAChCJ,sBAAQ3B,KAAKrP,MAAMoR,WAAY,UACxB,MAAA;AACLJ,iBAAQ3B,KAAKrP,MAAMoR,WAAYD;AAAAA,MAAH;AAAA,IAC7B;AAAA,EACF,GACAxJ,IAAA,CAAC4I,GAAQJ,CAAO,GAACrL,QAAAqL,GAAArL,QAAAyL,GAAAzL,QAAA4C,GAAA5C,QAAA6C,MAAAD,IAAA5C,EAAA,EAAA,GAAA6C,IAAA7C,EAAA,EAAA,IARpBmD,EAAUP,GAQPC,CAAiB;AAKR,QAAAgF,IAAA4D,KAAAJ;AAAiB,MAAArD;AAAA,EAAAhI,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAA2L,KAAA3L,EAAA,EAAA,MAAAiL,KAAAjL,UAAA+L,KAAA/L,EAAA,EAAA,MAAA6L,KAAA7L,EAAA,EAAA,MAAA6H,KAAA7H,EAAA,EAAA,MAAA0L,KADlB1D,IAAA;AAAA,IAAA6C,MACChD;AAAAA,IAAiBwD,SAAAA;AAAAA,IAAAJ,aAAAA;AAAAA,IAAAY,aAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAL,SAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAH,UAAAA;AAAAA,EAAAA,GAQxBxL,QAAAqL,GAAArL,QAAA2L,GAAA3L,QAAAiL,GAAAjL,QAAA+L,GAAA/L,QAAA6L,GAAA7L,QAAA6H,GAAA7H,QAAA0L,GAAA1L,QAAAgI,KAAAA,IAAAhI,EAAA,EAAA;AAAA,MAAAiI;AAAA,SAAAjI,EAAA,EAAA,MAAAV,KAAAU,UAAAgI,KAVHC,sBAAA0C,GAAA,UAAA,EACS,OAAA3C,GAWN1I,UAAAA,GACH,GAAyBU,QAAAV,GAAAU,QAAAgI,GAAAhI,QAAAiI,KAAAA,IAAAjI,EAAA,EAAA,GAbzBiI;AAayB;AAU7B,SAAAsE,GAAAnM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACf;AAAA,IAAAyL,aAAAA;AAAAA,EAAAA,IAAsBjB,GAAAA;AAAW,MAAArK;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA6L,KAG/BtL,4EAAmBsL,YAAW,GAAAtJ,EAAAC,EAAA7F,KAAS7B,GAAM2P,aAAc,GACxDnL,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA6L,GAAA7L,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFXO;AAEW;AAWf,SAAAiM,GAAApM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,IAAA5B,MAAA6C;AAAAA,EAAAA,IAAAH,GAAW1C,IAAA6C,MAAAyB,SAAA,OAAAzB,GACzB;AAAA,IAAAsK,MAAAA;AAAAA,IAAAQ,SAAAA;AAAAA,IAAAJ,aAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAL,SAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAH,UAAAA;AAAAA,EAAAA,IAAqFZ,GAAAA;AAAW,MAAAnK;AAAA,EAAAT,EAAA,CAAA,MAAAiL,KAAAjL,SAAA+L,KAExDtL,IAAAA,MAAA;AACtC,IAAIwK,KACFc,EAAAA;AAAAA,EACD,GACF/L,OAAAiL,GAAAjL,OAAA+L,GAAA/L,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAJD,QAAAyM,IAA4BhM;AAM5B,MAAI,CAACoK;AAAI,WAAS;AAQV,QAAAlK,IAAA0K,KAAWvQ,GAAMiP,iBACjBjJ,IAAA,CAACuK,KAAWvQ,GAAMgP;AAAa,MAAA5H;AAAA,EAAAlC,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KAH1BoB,IAAA,CACLpH,GAAM+O,UACNlJ,GACAG,CAA+B,GAChCd,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,EAAAnC,EAAA,CAAA,MAAAyM,KAAAzM,SAAAkC,KALHC,+EAAAI,EAAAC,EAAA7F,KACSuF,CAIN,GACD,mBACSuK,SAAAA,GAAmB,GAC5BzM,OAAAyM,GAAAzM,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAYI,QAAAoC,IAAAtH,GAAO4C,CAAI,GACX2E,IAAAgJ,KAAWvQ,GAAMqP,cACjB1H,IAAA,CAAC4I,KAAWvQ,GAAMoP;AAAU,MAAAxH;AAAA,EAAA1C,EAAA,CAAA,MAAAoC,KAAApC,UAAAqC,KAAArC,EAAA,EAAA,MAAAyC,KAJvBC,IAAA,CACL5H,GAAMmP,OACN7H,GACAC,GACAI,CAA4B,GAC7BzC,OAAAoC,GAAApC,QAAAqC,GAAArC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,EAAA,EAAA,MAAAV,KAAAU,EAAA,EAAA,MAAA2L,KAAA3L,EAAA,EAAA,MAAAwL,KAAAxL,EAAA,EAAA,MAAA0C,KAAA1C,UAAA0L,KAZL/I,IAAA,gBAAAL,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMkP,QAAS,GAC9B,UAAA,gBAAA1H,EAAA,OAAA,EAAA,oBAAA,yBACOkJ,KAAAA,GACA,MAAA,UACM,cAAA,QACME,mBAAAA,GACCC,uBAAa,GAAApJ,EAAAC,EAAA7F,KACxB+F,CAKN,GAEApD,UAAAA,GACH,GACF,GAAWU,QAAAV,GAAAU,QAAA2L,GAAA3L,QAAAwL,GAAAxL,QAAA0C,GAAA1C,QAAA0L,GAAA1L,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA4C;AAAA,SAAA5C,EAAA,EAAA,MAAA2C,KAAA3C,UAAAmC,KA7BbS,4BAEET,UAAAA;AAAAA,IAAAA;AAAAA,IAWAQ;AAAAA,EAAAA,GAgBW,GACV3C,QAAA2C,GAAA3C,QAAAmC,GAAAnC,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA,GA9BH4C;AA8BG;AAMP,SAAA8J,GAAAtM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMgC,MAAO,GAAGwC,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAK9D,SAAAoM,GAAAvM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACb;AAAA,IAAAsL,SAAAA;AAAAA,EAAAA,IAAkBd,GAAAA;AAAW,MAAArK;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA0L,KAE3BnL,2EAAamL,OAAO,GAAAnJ,EAAAC,EAAAoK,IAAS9R,GAAMuP,KAAM,GACtC/K,UAAAA,GACH,GAAUU,OAAAV,GAAAU,OAAA0L,GAAA1L,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFVO;AAEU;AAMd,SAAAsM,GAAAzM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAqB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACnB;AAAA,IAAAuL,eAAAA;AAAAA,EAAAA,IAAwBf,GAAAA;AAAW,MAAArK;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA2L,KAEjCpL,0EAAYoL,OAAa,GAAApJ,EAAAC,EAAArF,GAASrC,GAAMwP,WAAY,GACjDhL,UAAAA,GACH,GAASU,OAAAV,GAAAU,OAAA2L,GAAA3L,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFTO;AAES;AAMb,SAAAuM,GAAA1M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACtCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMyP,IAAK,GAAGjL,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAnDO;AAAmD;AAK5D,SAAAwM,GAAA3M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM0P,MAAO,GAAGlL,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAU9D,SAAAyM,GAAA5M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,IAAA,cAAAiB;AAAAA,EAAAA,IAAAH,GAAyB+G,IAAA5G,MAAAyB,SAAA,UAAAzB,GACtC;AAAA,IAAAwL,cAAAA;AAAAA,EAAAA,IAAuBnB,GAAAA;AAEvB,MAAItL,GAAQ;AAAA,QAAAmB;AAAA,WAAAT,EAAA,CAAA,MAAAV,KAAAU,SAAA+L,KAERtL,4EAAmBsL,YAAY,GAAAxJ,EAAAC,EAAA7F,KAAS7B,GAAM2P,aAAc,GACzDnL,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA+L,GAAA/L,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFXS;AAAAA,EAEW;AAEd,MAAAA;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAIGtH,+BAAY,OAAA,IAAY,QAAA,IAAY,SAAA,aAAiB,MAAA,QACnD,4BAAA,QAAA,EACI,GAAA,sBACK,QAAA,gBACM,aAAA,KACC,eAAA,SAAO,EAAA,CAEzB,GAAMT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAX,EAAA,CAAA,MAAAmH,KAAAnH,SAAA+L,KARRpL,sBAAA,UAAA,EAAA,oBAAA,yBAAsBoL,SAAAA,GAA0B5E,cAAAA,GAAS,GAAA5E,EAAAC,EAAA9F,QAAS5B,GAAMwG,WAAY,GAAA,MAAA,UAClFb,UAAAA,GAQF,GAAcT,OAAAmH,GAAAnH,OAAA+L,GAAA/L,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GATdW;AASc;AAMX,MAAMsM,KAAS;AAAA,EAAA,MACpBjE;AAAAA,EAAAA,SACAuD;AAAAA,EAAAA,QACAC;AAAAA,EAAAA,QACAE;AAAAA,EAAAA,OACAC;AAAAA,EAAAA,aACAE;AAAAA,EAAAA,MACAC;AAAAA,EAAAA,QACAC;AAAAA,EAAAA,OACAC;AACF,GCrSalS,KAAM;AAAA,EAAAoS,SAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAjM,OAAA;AAAA,EAAA;AAAA,EAAAkM,eAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAlM,OAAA;AAAA,EAAA;AAAA,EAAAmM,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAnM,OAAA;AAAA,EAAA;AAAA,EAAAoM,eAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAApM,OAAA;AAAA,EAAA;AAAA,EAAAqM,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAArM,OAAA;AAAA,EAAA;AAAA,EAAAiD,SAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,EAAAsM,WAAA;AAAA,IAAA,gBAAA;AAAA,IAAAtM,OAAA;AAAA,EAAA;AAAA,EAAAuM,WAAA;AAAA,IAAA,gBAAA;AAAA,IAAAvM,OAAA;AAAA,EAAA;AAAA,EAAAwM,SAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAxM,OAAA;AAAA,EAAA;AAAA,EAAAyM,UAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAzM,OAAA;AAAA,EAAA;AAAA,EAAAnE,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAAmE,OAAA;AAAA,EAAA;AAAA,EAAAoJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,eAAA;AAAA,IAAA,mBAAA;AAAA,IAAApJ,OAAA;AAAA,EAAA;AAAA,EAAAsJ,MAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAtJ,OAAA;AAAA,EAAA;AAAA,EAAA0M,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA1M,OAAA;AAAA,EAAA;AAAA,EAAAuJ,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAvJ,OAAA;AAAA,EAAA;AAAA,EAAAK,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAAL,OAAA;AAAA,EAAA;AAAA,EAAAwJ,eAAA;AAAA,IAAA,kBAAA;AAAA,IAAAxJ,OAAA;AAAA,EAAA;AAAA,GCoBb2M,KAAqBxO,EAA8C,IAAI;AAE7E,SAAAyO,KAAA;AACE,QAAA/E,IAAY5I,EAAW0N,EAAkB;AACzC,MAAI,CAAC9E;AAAK,UAAM,IAAIC,MAAM,sEAAsE;AAAC,SAC1FD;AAAG;AAiBZ,SAASE,GAAK;AAAA,EACZ1J,UAAAA;AAAAA,EACAuL,MAAMC;AAAAA,EACNC,aAAAA,IAAc;AAAA,EACdC,cAAAA;AAAAA,EACAE,wBAAAA,IAAyB;AAChB,GAAG;AACZ,QAAM7D,IAAeyD,MAAmB9I,QAClC,CAACmJ,GAAcC,CAAe,IAAI5D,EAASuD,CAAW,GACtD,CAAC+C,GAASC,CAAU,IAAIvG,EAASuD,CAAW,GAC5C,CAACM,GAASC,CAAU,IAAI9D,EAAS,EAAK,GACtC+D,IAAkB/L,EAA6C,IAAI,GACnEwO,IAAWxO,EAAuB,IAAI,GACtCyO,IAAmBzO,EAAuB,IAAI,GAE9CkM,IAAUvL,GAAAA,GACV,CAAC+N,GAASC,CAAU,IAAI3G,EAA6BxF,MAAS,GAE9DyJ,IAASpE,IAAeyD,IAAiBK;AAG/ChI,EAAAA,EAAU,MAAM;AACd,IAAIsI,KAAU,CAACqC,KACbC,EAAW,EAAI,GACfzC,EAAW,EAAK,KACP,CAACG,KAAUqC,KAAW,CAACzC,MAChCC,EAAW,EAAI,GACfC,EAAgB9L,UAAUqM,WAAW,MAAM;AACzCR,MAAAA,EAAW,EAAK,GAChByC,EAAW,EAAK,GAChBxC,EAAgB9L,UAAU;AAAA,IAC5B,GAAGyL,CAAsB;AAAA,EAE7B,GAAG,CAACO,GAAQqC,GAASzC,GAASH,CAAsB,CAAC,GAGrD/H,EAAU,MAAM;AACd,IAAI2K,KAAW,CAACzC,MACd4C,EAAiBxO,UAAUyM,SAASkC,eACpCJ,EAASvO,SAAS4O,MAAAA;AAAAA,EAEtB,GAAG,CAACP,CAAO,CAAC,GAEZ3K,EAAU,MAAM;AACd,QAAI,CAAC2K,KAAWG,EAAiBxO,SAAS;AACxC,YAAM6O,IAAKL,EAAiBxO;AAC5B,MAAI,OAAO6O,EAAGD,SAAU,cACtBC,EAAGD,MAAAA,GAELJ,EAAiBxO,UAAU;AAAA,IAC7B;AAAA,EACF,GAAG,CAACqO,CAAO,CAAC,GAGZ3K,EAAU,MAAM;AACd,QAAI,CAAC2K,KAAWzC,EAAS;AAEzB,aAASW,EAAUhN,GAAkB;AACnC,MAAIA,EAAE2E,QAAQ,aACZ3E,EAAEiN,gBAAAA,GACFF,EAAAA;AAAAA,IAEJ;AACAG,oBAASC,iBAAiB,WAAWH,CAAS,GACvC,MAAME,SAASE,oBAAoB,WAAWJ,CAAS;AAAA,EAChE,GAAG,CAAC8B,GAASzC,CAAO,CAAC,GAGrBlI,EAAU,MACD,MAAM;AACX,IAAIoI,EAAgB9L,WAASmM,aAAaL,EAAgB9L,OAAO;AAAA,EACnE,GACC,CAAA,CAAE;AAEL,QAAMoM,IAAc0C,GAAY,MAAM;AACpC,IAAIhD,EAAgB9L,YAClBmM,aAAaL,EAAgB9L,OAAO,GACpC8L,EAAgB9L,UAAU,MAC1B6L,EAAW,EAAK,IAEbjE,KAAc+D,EAAgB,EAAI,GACvCJ,IAAe,EAAI;AAAA,EACrB,GAAG,CAAC3D,GAAc2D,CAAY,CAAC,GAEzBe,IAAewC,GAAY,MAAM;AACrC,IAAKlH,KAAc+D,EAAgB,EAAK,GACxCJ,IAAe,EAAK;AAAA,EACtB,GAAG,CAAC3D,GAAc2D,CAAY,CAAC,GAEzBwD,IAAgBD,GAAY,CAAC3P,MAAe;AAChDuP,IAAAA,EAAWvP,CAAE;AAAA,EACf,GAAG,CAAA,CAAE,GAEC6P,IAAkBF,GAAY,MAAM;AACxCJ,IAAAA,EAAWnM,MAAS;AAAA,EACtB,GAAG,CAAA,CAAE;AAEL,SACE,gBAAAM,EAACsL,GAAmB,UAAnB,EACC,OAAO;AAAA,IACLE,SAAAA;AAAAA,IACAzC,SAAAA;AAAAA,IACAQ,aAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAL,SAAAA;AAAAA,IACAwC,SAAAA;AAAAA,IACAM,eAAAA;AAAAA,IACAC,iBAAAA;AAAAA,IACAT,UAAAA;AAAAA,EAAAA,GAGD1O,UAAAA,EAAAA,CACH;AAEJ;AAYA,MAAMoP,KAAiB;AAAA,EACrBzJ,IAAInK,GAAOqS;AAAAA,EACXjI,IAAIpK,GAAOuS;AACb,GAEMsB,KAAkB;AAAA,EACtB1J,IAAInK,GAAOsS;AAAAA,EACXlI,IAAIpK,GAAOwS;AACb;AAEA,SAAAsB,GAAAxO,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,IAAA5B,MAAA6C;AAAAA,IAAAvD,OAAAA;AAAAA,EAAAA,IAAAoD,GAAW1C,IAAA6C,MAAAyB,SAAA,OAAAzB,GAC1B;AAAA,IAAAuN,SAAAA;AAAAA,IAAAzC,SAAAA;AAAAA,IAAA6C,SAAAA;AAAAA,IAAAF,UAAAA;AAAAA,EAAAA,IAA8CH,GAAAA;AAE9C,MAAI,CAACC;AAAO,WAAS;AAGe,QAAArN,IAAA4K,IAAUsD,GAAgBjR,CAAI,IAAIgR,GAAehR,CAAI;AAAC,MAAAiD;AAAA,EAAAX,SAAAS,KAAvEE,KAAC7F,GAAMoS,SAAUzM,CAAsD,GAACT,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAIzE,QAAAc,IAACoN,IAADlM,SAAAhF,GACKkF,IAAAgM,KAAAlM,QAIfG,IAAAzE,MAAS,OAAO5C,GAAMyS,YAAazS,GAAM0S,WACzCpL,IAAAiJ,IAAUvQ,GAAM4S,WAAY5S,GAAM2S;AAAQ,MAAApL;AAAA,EAAArC,EAAA,CAAA,MAAAmC,KAAAnC,SAAAoC,KAHrCC,IAAA,CACLvH,GAAMoJ,SACN/B,GACAC,CAA0C,GAC3CpC,OAAAmC,GAAAnC,OAAAoC,GAAApC,OAAAqC,KAAAA,IAAArC,EAAA,CAAA;AAAA,MAAAyC;AAAA,EAAAzC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAAgO,KAAAhO,EAAA,CAAA,MAAAc,KAAAd,EAAA,CAAA,MAAAkC,KAAAlC,SAAAqC,KAVHI,sFACOuL,KAAAA,GACA,MAAA,iBACO,cAAAlN,GACK,mBAAAoB,GACP,UAAA,IAAE,GAAAK,EAAAC,EAAA7F,KACL0F,CAIN,GAEA/C,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAgO,GAAAhO,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAqC,GAAArC,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,SAAA1C,EAAA,EAAA,MAAAW,KAAAX,UAAAyC,KAdbC,IAAA,gBAAAJ,EAAA,OAAA,EAAA,oBAAA,mCAAA,GAAAC,EAAAC,EAAA7F,KAAiBgE,CAAwE,GACvF8B,UAAAA,EAAAA,CAcF,GAAWzC,QAAAW,GAAAX,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GAfX0C;AAeW;AAMf,SAAAgK,GAAAtM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,mCAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMgC,MAAO,GAAGwC,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAK9D,SAAAoM,GAAAvM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACb;AAAA,IAAAsL,SAAAA;AAAAA,IAAA8C,eAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAkDZ,GAAAA;AAAgB,MAAAtN,GAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAwO,KAAAxO,SAAA0L,KAAA1L,EAAA,CAAA,MAAAyO,KAExDlO,IAAAA,OACRiO,EAAc9C,CAAO,GACd,MAAM+C,EAAAA,IACZhO,KAACiL,GAAS8C,GAAeC,CAAe,GAACzO,OAAAwO,GAAAxO,OAAA0L,GAAA1L,OAAAyO,GAAAzO,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAH5CmD,EAAU5C,GAGPE,CAAyC;AAAC,MAAAE;AAAA,SAAAX,EAAA,CAAA,MAAAV,KAAAU,SAAA0L,KAG3C/K,qFAAa+K,OAAO,GAAAnJ,EAAAC,EAAAoK,IAAS9R,GAAMuP,KAAM,GACtC/K,UAAAA,GACH,GAAUU,OAAAV,GAAAU,OAAA0L,GAAA1L,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAFVW;AAEU;AAYd,SAAAmM,GAAA1M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAuP,QAAAtO;AAAAA,EAAAA,IAAAH,GAC0BK,KADfF,MAAAyB,SAAA,KAAAzB,MACyBzF,GAAM6S;AAAW,MAAAhN;AAAA,EAAAX,SAAAS,KAAzCE,KAAC7F,GAAMyP,MAAO9J,CAA2B,GAACT,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,SAAAd,EAAA,CAAA,MAAAV,KAAAU,SAAAW,KAA3DG,IAAA,gBAAAwB,EAAA,OAAA,EAAA,oBAAA,mCAAA,GAAAC,EAAAC,EAAA7F,KAAiBgE,CAA0C,GAAGrB,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAAlFc;AAAkF;AAK3F,SAAAiM,GAAA3M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,mCAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM0P,MAAO,GAAGlL,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAU9D,SAAAyM,GAAA5M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,IAAA,cAAAiB;AAAAA,EAAAA,IAAAH,GAAyB+G,IAAA5G,MAAAyB,SAAA,UAAAzB,GACtC;AAAA,IAAAwL,cAAAA;AAAAA,EAAAA,IAAuB8B,GAAAA;AAEvB,MAAIvO,GAAQ;AAAA,QAAAmB;AAAA,WAAAT,EAAA,CAAA,MAAAV,KAAAU,SAAA+L,KAERtL,sFAAmBsL,YAAY,GAAAxJ,EAAAC,EAAA7F,KAAS7B,GAAM2P,aAAc,GACzDnL,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA+L,GAAA/L,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFXS;AAAAA,EAEW;AAEd,MAAAA;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAIGtH,+BAAY,OAAA,IAAY,QAAA,IAAY,SAAA,aAAiB,MAAA,QACnD,4BAAA,QAAA,EACI,GAAA,sBACK,QAAA,gBACM,aAAA,KACC,eAAA,SAAO,EAAA,CAEzB,GAAMT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAX,EAAA,CAAA,MAAAmH,KAAAnH,SAAA+L,KARRpL,sBAAA,UAAA,EAAA,oBAAA,mCAAsBoL,SAAAA,GAA0B5E,cAAAA,GAAS,GAAA5E,EAAAC,EAAA9F,QAAS5B,GAAMwG,WAAY,GAAA,MAAA,UAClFb,UAAAA,GAQF,GAAcT,OAAAmH,GAAAnH,OAAA+L,GAAA/L,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GATdW;AASc;AAMX,MAAMmO,KAAc;AAAA,EAAA,MACzB9F;AAAAA,EAAAA,SACA4F;AAAAA,EAAAA,QACAlC;AAAAA,EAAAA,OACAC;AAAAA,EAAAA,MACAG;AAAAA,EAAAA,QACAC;AAAAA,EAAAA,OACAC;AACF,GCpSalS,IAAM;AAAA,EAAA+O,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,iBAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAA6I,cAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAA7I,OAAA;AAAA,EAAA;AAAA,EAAA8I,iBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAA9I,OAAA;AAAA,EAAA;AAAA,EAAA+I,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/I,OAAA;AAAA,EAAA;AAAA,EAAA8N,eAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA9N,OAAA;AAAA,EAAA;AAAA,EAAA+N,cAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA/N,OAAA;AAAA,EAAA;AAAA,EAAAgO,gBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAhO,OAAA;AAAA,EAAA;AAAA,EAAAiO,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAjO,OAAA;AAAA,EAAA;AAAA,EAAAkO,iBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAAlO,OAAA;AAAA,EAAA;AAAA,EAAAmO,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,8BAAA;AAAA,IAAA,+BAAA;AAAA,IAAA,mBAAA;AAAA,IAAAnO,OAAA;AAAA,EAAA;AAAA,EAAAoO,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAApO,OAAA;AAAA,EAAA;AAAA,EAAAgE,IAAA;AAAA,IAAA,mBAAA;AAAA,IAAAhE,OAAA;AAAA,EAAA;AAAA,EAAAiE,IAAA;AAAA,IAAA,mBAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAmJ,IAAA;AAAA,IAAA,mBAAA;AAAA,IAAAnJ,OAAA;AAAA,EAAA;AAAA,EAAAqO,cAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAArO,OAAA;AAAA,EAAA;AAAA,EAAAsO,eAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAtO,OAAA;AAAA,EAAA;AAAA,EAAAuO,aAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAvO,OAAA;AAAA,EAAA;AAAA,EAAAwO,cAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAxO,OAAA;AAAA,EAAA;AAAA,EAAAyO,eAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAAzO,OAAA;AAAA,EAAA;AAAA,EAAA0O,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,4BAAA;AAAA,IAAA1O,OAAA;AAAA,EAAA;AAAA,EAAAnE,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAmE,OAAA;AAAA,EAAA;AAAA,EAAAoJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAApJ,OAAA;AAAA,EAAA;AAAA,EAAAqJ,aAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAArJ,OAAA;AAAA,EAAA;AAAA,EAAAsJ,MAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,eAAA;AAAA,IAAAtJ,OAAA;AAAA,EAAA;AAAA,EAAAuJ,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAvJ,OAAA;AAAA,EAAA;AAAA,EAAAK,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAAL,OAAA;AAAA,EAAA;AAAA,EAAAwJ,eAAA;AAAA,IAAA,kBAAA;AAAA,IAAAxJ,OAAA;AAAA,EAAA;AAAA,GCFb2O,KAAoB,KAGpBC,KAAqB,KAGrBC,KAAmB,KAOnBC,KAA0B;AA0BzB,SAAAC,GAAA5P,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAyB;AAAA,IAAAgQ,QAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAnC,UAAAA;AAAAA,EAAAA,IAAA5N;AAA8D,MAAAG;AAAA,EAAAP,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACxDxH,IAAA;AAAA,IAAA6P,QAC1B;AAAA,IAACC,QACD;AAAA,IAACC,UACC;AAAA,IAACC,UACD;AAAA,IAACC,WACA;AAAA,IAACC,SACH;AAAA,IAAKC,WACH;AAAA,EAAA,GACZ1Q,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AARD,QAAA2Q,IAAiBnR,EAAmBe,CAQnC,GAEDqQ,IAAqBX,MAAW,UAAUA,MAAW;AAAO,MAAAxP;AAAA,EAAAT,EAAA,CAAA,MAAAiQ,KAAAjQ,SAAA4Q,KAI1DnQ,IAAAoQ,CAAAA,MAAA;AACE,QAAID,GAAY;AACd,YAAAE,IAAWD,EAAKP,WAAYO,EAAKT;AAAO,aACjCH,MAAW,UAAXa,IAAA,CAA2BA;AAAAA,IAAE;AACrC,WACMD,EAAKN,WAAYM,EAAKR;AAAAA,EAAO,GACrCrQ,OAAAiQ,GAAAjQ,OAAA4Q,GAAA5Q,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAPH,QAAA+Q,IAAoBtQ;AASnB,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAAiQ,KAAAjQ,SAAA4Q,KAGCjQ,IAAAA,CAAAqQ,GAAAC,MAAA;AACE,UAAAvT,IAAawT,OAAOD,EAAOE,QAAQT,SAAe,KAArC;AAEb,QAAIM,KAAY,GAAC;AAEf,YAAAI,IAAiBJ,IAAWtT;AAE5B,UAAIkT,GAAY;AACd,cAAAS,IAAapB,MAAW,UAAX,IAAA;AACbgB,QAAAA,EAAO/V,MAAMV,YAAa,cAAc6W,IAAOL,CAAQ;AAAA,MAAhC;AAEvBC,QAAAA,EAAO/V,MAAMV,YAAa,cAAcwW,CAAQ;AAIlD,YAAAnH,IAAiBoH,EAAOK,QAAS,wBACR,GAACC;AAC1B,MAAI1H,MACFA,EAAQ3O,MAAM0M,UAAW4J,OAAOC,KAAIC,IAAK,GAAG,IAAIN,CAAQ,CAAC;AAAA,IAC1D,OAAA;AAKD,YAAAO,IAAoBF,KAAIG,IAAKZ,CAAQ,GACrCa,IAAoBF,KAAeA,IAAcjU,IAAO,OAAQqS,IAChE+B,IAAqBL,KAAIM,MAAOF,CAAU;AAE1CZ,MAAAA,EAAO/V,MAAMV,YAAa,IAC1ByW,EAAO/V,MAAM8W,YACXF,IAAe,IAAf,OAA0BA,IAAe,CAAC,MAAMA,CAAY,2BAA5D;AAAA,IADqB;AAAA,EAExB,GACF9R,OAAAiQ,GAAAjQ,OAAA4Q,GAAA5Q,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAjCH,QAAAiS,IAAuBtR,GAsCvBuR,IAAoBC;AASd,MAAArR;AAAA,EAAAd,EAAA,CAAA,MAAAiQ,KAAAjQ,SAAA4Q,KAAA5Q,EAAA,CAAA,MAAAmQ,KAIJrP,IAAAsR,CAAAA,MAAA;AACE,UAAAC,IAAyBzB,IAAA,cACPX,MAAW,UAAX,SAAA,OAAqC,MAD9B;AAIzBgB,IAAAA,EAAO/V,MAAMoX,aAAc,aAAaxC,EAAgB,cACxDmB,EAAO/V,MAAMV,YAAa6X;AAE1B,UAAAE,IAAiBtB,EAAOK,QAAS,wBACR,GAACC;AAC1B,IAAI1H,MACFA,EAAQ3O,MAAMoX,aAAc,WAAWxC,EAAgB,cACvDjG,EAAQ3O,MAAM0M,UAAW;AAO3B,QAAA4K,IAAgB;AAChB,UAAAC,IAAaA,MAAA;AACX,MAAID,MACJA,IAAYA,IACZrC,EAAAA;AAAAA,IAAW;AAEbc,IAAAA,EAAO9E,iBAAkB,iBAAiBsG,GAAM;AAAA,MAAAC,MAAO;AAAA,IAAA,CAAK,GAC5D5G,WAAW2G,GAAM3C,KAAmB,EAAE;AAAA,EAAC,GACxC9P,OAAAiQ,GAAAjQ,OAAA4Q,GAAA5Q,OAAAmQ,GAAAnQ,QAAAc,KAAAA,IAAAd,EAAA,EAAA;AA5BH,QAAA2S,IAAuB7R,GAiCvB8R,IAAwBC;AAiBlB,MAAA3Q;AAAA,EAAAlC,UAAA2S,KAAA3S,EAAA,EAAA,MAAAiS,KAAAjS,EAAA,EAAA,MAAAkQ,KAAAlQ,EAAA,EAAA,MAAA+Q,KAAA/Q,UAAA4Q,KAAA5Q,EAAA,EAAA,MAAAgO,KAEI9L,IAAAA,MAAA;AACR,QAAI,CAACgO;AAAO;AACZ,UAAAhB,IAAclB,EAAQvO;AACtB,QAAI,CAACyP;AAAK;AAEV,UAAA4D,IAAA,SAAA9T,GAAA;AAGE,UAFIA,EAACtC,WAAY,KACFsC,EAAC0I,OACN4J,QAAS,qDAAqD;AAAC;AAIzE,YAAAyB,IAAa7D,EAAK8D,sBAAAA,GAClBC,IAActC,EAAQlR;AACtBoR,MAAAA,EAAKT,SAAUpR,EAACkU,SAChBrC,EAAKR,SAAUrR,EAACmU,SAChBtC,EAAKP,WAAYtR,EAACkU,SAClBrC,EAAKN,WAAYvR,EAACmU,SAClBtC,EAAKL,YAAa4C,KAAIC,IAAAA,GACtBxC,EAAKJ,UAAW,IAChBI,EAAKH,YAAaE,IAAemC,EAAIO,QAASP,EAAIQ,QAElDrE,EAAKiC,QAAST,YAAac,OAAOX,EAAKH,SAAU,GACjDxB,EAAKsE,kBAAoBxU,EAACyU,SAAU,GAIpCvE,EAAKhU,MAAOwY,YAAa;AAAA,IAAH,GAGxBC,IAAA,SAAAC,GAAA;AACE,YAAAC,IAAclD,EAAQlR;AACtB,UAAIoR,EAAKL,cAAe;AAAC;AAEzBK,MAAAA,EAAKP,WAAYtR,EAACkU,SAClBrC,EAAKN,WAAYvR,EAACmU;AAElB,YAAAW,IAAWrC,KAAIG,IAAKf,EAAKP,WAAYO,EAAKT,MAAO,GACjD2D,IAAWtC,KAAIG,IAAKf,EAAKN,WAAYM,EAAKR,MAAO;AAEjD,UAAI,CAACQ,EAAKJ,SAAQ;AAEhB,YADsBgB,KAAIuC,KAAMlD,IAAKA,IAAKiD,IAAKA,CAAE,IAC7B;AAAC;AAErB,YAAInD,KAAgBE,IAAKiD;AACvBlD,UAAAA,EAAKJ,UAAW;AAAA,iBACP,CAACG,KAAgBmD,IAAKjD;AAC/BD,UAAAA,EAAKJ,UAAW;AAAA,aAAH;AAGbI,UAAAA,EAAKL,YAAa;AAAH;AAAA,QAAA;AAAA,MAEhB;AAGH,UAAIK,EAAKJ,SAAQ;AACfzR,QAAAA,EAACiV,eAAAA;AACD,cAAAC,IAAiBnD,EAAYF,CAAK;AAClCoB,QAAAA,EAAejB,GAAU9B,CAAM;AAAA,MAAC;AAAA,IACjC,GAGHiF,IAAA,SAAAC,GAAA;AACE,YAAAC,IAAc1D,EAAQlR;AACtB,UAAIoR,EAAKL,cAAe;AAAC;AAEzB,YAAA8D,IAAiBvD,EAAYF,CAAK,GAClC0D,IAAgBnB,KAAIC,IAAAA,IAASxC,EAAKL,WAClCgE,IAAiBxD,IAAWuD;AAI5B,UAFA1D,EAAKL,YAAa,GAEd,CAACK,EAAKJ;AAAQ;AAMlB,UAFAI,EAAKJ,UAAW,IAEZO,KAAY,GAAC;AAEfkB,QAAAA,EAAYhD,CAAM;AAAC;AAAA,MAAA;AAOrB,MAHiB8B,IAAWH,EAAKH,YACAd,MAAqB4E,IAAW3E,KAG/D8C,EAAezD,CAAM,IAErB0D,EAAgB1D,CAAM;AAAA,IACvB,GAGHuF,eAAA;AACE,YAAAC,IAAc/D,EAAQlR;AACtBoR,MAAAA,EAAKL,YAAa,GAClBK,EAAKJ,UAAW,IAChByB,EAAYhD,CAAM;AAAA,IAAC;AAGrBA,IAAAA,EAAK/C,iBAAkB,eAAe2G,CAAiB,GACvD5D,EAAK/C,iBAAkB,eAAewH,CAAiB,GACvDzE,EAAK/C,iBAAkB,aAAagI,CAAe,GACnDjF,EAAK/C,iBAAkB,iBAAiBsI,CAAmB;AAE3D,UAAAE,IAAA,SAAAC,GAAA;AACE,MAAIjE,EAAQlR,QAAQgR,WAClBzR,EAACiV,eAAAA;AAAAA,IACF;AAEH/E,WAAAA,EAAK/C,iBAAkB,aAAawI,GAAiB;AAAA,MAAAE,SAAU;AAAA,IAAA,CAAM,GAE9D,MAAA;AACL3F,MAAAA,EAAK9C,oBAAqB,eAAe0G,CAAiB,GAC1D5D,EAAK9C,oBAAqB,eAAeuH,CAAiB,GAC1DzE,EAAK9C,oBAAqB,aAAa+H,CAAe,GACtDjF,EAAK9C,oBAAqB,iBAAiBqI,CAAmB,GAC9DvF,EAAK9C,oBAAqB,aAAauI,CAAe;AAAA,IAAC;AAAA,EACxD,GACF3U,QAAA2S,GAAA3S,QAAAiS,GAAAjS,QAAAkQ,GAAAlQ,QAAA+Q,GAAA/Q,QAAA4Q,GAAA5Q,QAAAgO,GAAAhO,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAmC;AAAA,EAAAnC,EAAA,EAAA,MAAAiQ,KAAAjQ,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAiS,KAAAjS,UAAAkQ,KAAAlQ,EAAA,EAAA,MAAA+Q,KAAA/Q,EAAA,EAAA,MAAA4Q,KAAA5Q,EAAA,EAAA,MAAAgO,KAAE7L,KACD+N,GACAlC,GACAiC,GACAW,GACAG,GACAkB,GACAC,GACAU,GACAD,CAAc,GACf3S,QAAAiQ,GAAAjQ,QAAA2S,GAAA3S,QAAAiS,GAAAjS,QAAAkQ,GAAAlQ,QAAA+Q,GAAA/Q,QAAA4Q,GAAA5Q,QAAAgO,GAAAhO,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAlIDmD,EAAUjB,GAwHPC,CAUF;AAAC;AAjQG,SAAA0Q,GAAAiC,GAAA;AA6GH7D,EAAAA,EAAO/V,MAAMoX,aAAc,iDAC3BrB,EAAO/V,MAAMV,YAAa;AAE1B,QAAAua,IAAiB9D,EAAOK,QAAS,wBACR,GAACC;AAC1B,EAAI1H,MACFA,EAAQ3O,MAAMoX,aAAc,+CAC5BzI,EAAQ3O,MAAM0M,UAAW;AAG3B,QAAAoN,IAAgBA,MAAA;AACd/D,IAAAA,EAAO/V,MAAMoX,aAAc,IACvBzI,MAAUA,EAAQ3O,MAAMoX,aAAc;AAAA,EAAE;AAE9CrB,EAAAA,EAAO9E,iBAAkB,iBAAiB6I,GAAS;AAAA,IAAAtC,MAAO;AAAA,EAAA,CAAK,GAC/D5G,WAAWkJ,GAAS,GAAG;AAAC;AA5HrB,SAAA7C,GAAA8C,GAAA;AAgEHhE,EAAAA,EAAO/V,MAAMV,YAAa,IAC1ByW,EAAO/V,MAAM8W,YAAa;AAE1B,QAAAkD,IAAiBjE,EAAOK,QAAS,wBACR,GAACC;AAC1B,EAAI1H,MACFA,EAAQ3O,MAAM0M,UAAW;AAC1B;AC7EL,MAAMuN,KAAgB/V,EAAyC,IAAI;AAEnE,SAAAgW,KAAA;AACE,QAAAtM,IAAY5I,EAAWiV,EAAa;AACpC,MAAI,CAACrM;AAAK,UAAM,IAAIC,MAAM,4DAA4D;AAAC,SAChFD;AAAG;AAuBZ,SAAAE,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAuL,MAAAC;AAAAA,IAAAC,aAAAxK;AAAAA,IAAAyK,cAAAA;AAAAA,IAAAiF,QAAAxP;AAAAA,IAAAwK,aAAAtK;AAAAA,IAAA0U,cAAAvU;AAAAA,IAAAoK,wBAAAhJ;AAAAA,EAAAA,IAAA9B,GAGZ2K,IAAAxK,MAAAyB,SAAA,KAAAzB,GAEA0P,IAAAxP,MAAAuB,SAAA,UAAAvB,GACAwK,IAAAtK,MAAAqB,SAAA,KAAArB,GACA0U,IAAAvU,MAAAkB,SAAA,KAAAlB,GACAoK,IAAAhJ,MAAAF,SAAA,MAAAE,GAEAmF,IAAqByD,MAAmB9I,QACxC,CAAAmJ,GAAAC,CAAA,IAAwC5D,EAASuD,CAAW,GAC5D,CAAAM,GAAAC,CAAA,IAA8B9D,EAAS,EAAK,GAC5C+D,IAAwB/L,EAA6C,IAAI,GACzEwO,IAAiBxO,EAAuB,IAAI,GAE5CiM,IAAepE,IAAAyD,IAAAK,GAEfO,IAAgBvL,GAAAA,GAChBwL,IAAsBxL,GAAAA;AAAO,MAAAgC;AAAA,EAAAnC,EAAA,CAAA,MAAAqH,KAAArH,SAAAgL,KAEG7I,IAAAA,MAAA;AAC9B,IAAIoJ,EAAe9L,YACjBmM,aAAaL,EAAe9L,OAAQ,GACpC8L,EAAe9L,UAAW,OAE5B6L,EAAW,EAAK,GACXjE,KAAc+D,EAAgB,EAAI,GACvCJ,IAAe,EAAI;AAAA,EAAC,GACrBhL,OAAAqH,GAAArH,OAAAgL,GAAAhL,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AARD,QAAA6L,IAAoB1J;AAQY,MAAAC;AAAA,EAAApC,EAAA,CAAA,MAAAkL,KAAAlL,SAAAqH,KAAArH,EAAA,CAAA,MAAAgL,KAEC5I,IAAAA,MAAA;AAC/BkJ,IAAAA,EAAW,EAAI,GACfC,EAAe9L,UAAWqM,WAAW,MAAA;AACnCR,MAAAA,EAAW,EAAK,GAChBC,EAAe9L,UAAW,MACrB4H,KAAc+D,EAAgB,EAAK,GACxCJ,IAAe,EAAK;AAAA,IAAC,GACpBE,CAAsB;AAAA,EALF,GAMxBlL,OAAAkL,GAAAlL,OAAAqH,GAAArH,OAAAgL,GAAAhL,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AARD,QAAA+L,IAAqB3J;AAQmC,MAAAC;AAAA,EAAArC,EAAA,CAAA,MAAAqH,KAAArH,SAAAgL,KAEd3I,IAAAA,MAAA;AACxC,IAAIkJ,EAAe9L,YACjBmM,aAAaL,EAAe9L,OAAQ,GACpC8L,EAAe9L,UAAW,OAE5B6L,EAAW,EAAK,GACXjE,KAAc+D,EAAgB,EAAK,GACxCJ,IAAe,EAAK;AAAA,EAAC,GACtBhL,OAAAqH,GAAArH,OAAAgL,GAAAhL,OAAAqC,KAAAA,IAAArC,EAAA,CAAA;AARD,QAAAsV,IAA8BjT;AAQE,MAAAK,GAAAD;AAAA,EAAAzC,EAAA,EAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAGtBtF,IAAAA,MACD,MAAA;AACL,IAAI8I,EAAe9L,WAAUmM,aAAaL,EAAe9L,OAAQ;AAAA,EAAC,GAEnEiD,IAAA,CAAA,GAAE1C,QAAA0C,GAAA1C,QAAAyC,MAAAC,IAAA1C,EAAA,EAAA,GAAAyC,IAAAzC,EAAA,EAAA,IAJLmD,EAAUV,GAIPC,CAAE;AAAC,MAAAC,GAAAC;AAAA,EAAA5C,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAAiL,KAAAjL,EAAA,EAAA,MAAAyL,KAAAzL,UAAA+L,KAGIpJ,IAAAA,MAAA;AAER,QADI,CAAC8I,KAAD,CAAYJ,KACZ,CAACJ;AAAW;AAEhB,UAAAe,KAAA,SAAAhN,IAAA;AACE,MAAIA,GAAC2E,QAAS,aACZ3E,GAACiN,gBAAAA,GACDF,EAAAA;AAAAA,IACD;AAEHG,oBAAQC,iBAAkB,WAAWH,EAAS,GACvC,MAAME,SAAQE,oBAAqB,WAAWJ,EAAS;AAAA,EAAC,GAC9DpJ,IAAA,CAAC6I,GAAQJ,GAASJ,GAAac,CAAY,GAAC/L,QAAAqL,GAAArL,QAAAiL,GAAAjL,QAAAyL,GAAAzL,QAAA+L,GAAA/L,QAAA2C,GAAA3C,QAAA4C,MAAAD,IAAA3C,EAAA,EAAA,GAAA4C,IAAA5C,EAAA,EAAA,IAZ/CmD,EAAUR,GAYPC,CAA4C;AAAC,MAAAC,GAAAgF;AAAA,EAAA7H,EAAA,EAAA,MAAAqL,KAAArL,UAAAyL,KAGtC5I,IAAAA,MAAA;AACR,QAAI4I,KAAAJ,GAAiB;AACnB,YAAAgB,KAAaH,SAAQ3B,KAAKrP,MAAMoR;AAChCJ,sBAAQ3B,KAAKrP,MAAMoR,WAAY,UACxB,MAAA;AACLJ,iBAAQ3B,KAAKrP,MAAMoR,WAAYD;AAAAA,MAAH;AAAA,IAC7B;AAAA,EACF,GACAxE,IAAA,CAAC4D,GAAQJ,CAAO,GAACrL,QAAAqL,GAAArL,QAAAyL,GAAAzL,QAAA6C,GAAA7C,QAAA6H,MAAAhF,IAAA7C,EAAA,EAAA,GAAA6H,IAAA7H,EAAA,EAAA,IARpBmD,EAAUN,GAQPgF,CAAiB;AAKR,QAAAG,IAAAyD,KAAAJ;AAAiB,MAAApD;AAAA,EAAAjI,EAAA,EAAA,MAAAiQ,KAAAjQ,UAAAqL,KAAArL,EAAA,EAAA,MAAA2L,KAAA3L,UAAAiL,KAAAjL,EAAA,EAAA,MAAA+L,KAAA/L,UAAAsV,KAAAtV,EAAA,EAAA,MAAA6L,KAAA7L,EAAA,EAAA,MAAAqV,KAAArV,EAAA,EAAA,MAAAgI,KAAAhI,UAAA0L,KADlBzD,IAAA;AAAA,IAAA4C,MACC7C;AAAAA,IAAiBqD,SAAAA;AAAAA,IAAA4E,QAAAA;AAAAA,IAAAhF,aAAAA;AAAAA,IAAAoK,cAAAA;AAAAA,IAAAxJ,aAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAuJ,uBAAAA;AAAAA,IAAA5J,SAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAqC,UAAAA;AAAAA,EAAAA,GAWxBhO,QAAAiQ,GAAAjQ,QAAAqL,GAAArL,QAAA2L,GAAA3L,QAAAiL,GAAAjL,QAAA+L,GAAA/L,QAAAsV,GAAAtV,QAAA6L,GAAA7L,QAAAqV,GAAArV,QAAAgI,GAAAhI,QAAA0L,GAAA1L,QAAAiI,KAAAA,IAAAjI,EAAA,EAAA;AAAA,MAAAkI;AAAA,SAAAlI,EAAA,EAAA,MAAAV,KAAAU,UAAAiI,KAbHC,sBAAAiN,GAAA,UAAA,EACS,OAAAlN,GAcN3I,UAAAA,GACH,GAAyBU,QAAAV,GAAAU,QAAAiI,GAAAjI,QAAAkI,KAAAA,IAAAlI,EAAA,EAAA,GAhBzBkI;AAgByB;AAM7B,SAAAqE,GAAAnM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACf;AAAA,IAAAyL,aAAAA;AAAAA,EAAAA,IAAsBuJ,GAAAA;AAAW,MAAA7U;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA6L,KAG/BtL,4EAAmBsL,YAAW,GAAAtJ,EAAAC,EAAA7F,KAAS7B,EAAM2P,aAAc,GACxDnL,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA6L,GAAA7L,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFXO;AAEW;AAYf,MAAMgV,KAAa;AAAA,EACjBC,OAAO1a,EAAOwU;AAAAA,EACdmG,MAAM3a,EAAO0U;AAAAA,EACbkG,QAAQ5a,EAAO4U;AACjB,GAEMiG,KAAc;AAAA,EAClBH,OAAO1a,EAAOyU;AAAAA,EACdkG,MAAM3a,EAAO2U;AAAAA,EACbiG,QAAQ5a,EAAO6U;AACjB,GAEMiG,KAAoB;AAAA,EACxBJ,OAAO1a,EAAOiU;AAAAA,EACd0G,MAAM3a,EAAOkU;AAAAA,EACb0G,QAAQ5a,EAAOmU;AACjB;AAEA,SAAAzC,GAAApM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,IAAA5B,MAAA6C;AAAAA,EAAAA,IAAAH,GAAW1C,IAAA6C,MAAAyB,SAAA,OAAAzB,GACzB;AAAA,IAAAsK,MAAAA;AAAAA,IAAAQ,SAAAA;AAAAA,IAAA4E,QAAAA;AAAAA,IAAAhF,aAAAA;AAAAA,IAAAoK,cAAAQ;AAAAA,IAAA9J,cAAAA;AAAAA,IAAAuJ,uBAAAA;AAAAA,IAAA5J,SAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAqC,UAAAA;AAAAA,EAAAA,IAWIoH,GAAAA;AAAW,MAAA3U;AAAA,EAAAT,EAAA,CAAA,MAAAiL,KAAAjL,SAAA+L,KAEyBtL,IAAAA,MAAA;AACtC,IAAIwK,KACFc,EAAAA;AAAAA,EACD,GACF/L,OAAAiL,GAAAjL,OAAA+L,GAAA/L,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAJD,QAAAyM,IAA4BhM,GASjBE,IAAAkV,KAAAhL,KAAA,CAAyBQ;AAAO,MAAAvK;AAK3C,MAL2Cd,EAAA,CAAA,MAAAiQ,KAAAjQ,EAAA,CAAA,MAAAgO,KAAAhO,EAAA,CAAA,MAAAsV,KAAAtV,SAAAW,KAF3BG,IAAA;AAAA,IAAAmP,QAAAA;AAAAA,IAAAC,SAELvP;AAAAA,IAAgCwP,WAC9BmF;AAAAA,IAAqBtH,UAAAA;AAAAA,EAAAA,GAEjChO,OAAAiQ,GAAAjQ,OAAAgO,GAAAhO,OAAAsV,GAAAtV,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GALDgQ,GAAgBlP,CAKf,GAEG,CAAC+J;AAAI,WAAS;AAElB,QAAA+F,IAAqBX,MAAW,UAAUA,MAAW,SAQ7C/N,IAAAmJ,KAAWvQ,EAAMiP,iBACjB5H,IAAA,CAACkJ,KAAWvQ,EAAMgP;AAAa,MAAA1H;AAAA,EAAApC,EAAA,CAAA,MAAAkC,KAAAlC,SAAAmC,KAH1BC,IAAA,CACLtH,EAAM+O,UACN3H,GACAC,CAA+B,GAChCnC,OAAAkC,GAAAlC,OAAAmC,GAAAnC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,EAAArC,EAAA,EAAA,MAAAyM,KAAAzM,UAAAoC,KALHC,+EAAAE,EAAAC,EAAA7F,KACSyF,CAIN,GACD,mBACSqK,SAAAA,GAAmB,GAC5BzM,QAAAyM,GAAAzM,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAGiC,QAAAyC,IAAAmT,GAAkB3F,CAAM;AAAC,MAAAvN;AAAA,EAAA1C,UAAAyC,KAA3CC,KAAC5H,EAAMkP,UAAWvH,CAAyB,GAACzC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AASvD,QAAA2C,IAAAiO,KAAgB9V,EAAMqU,iBACtBvM,IAAAgO,KAAgB9V,EAAO4C,CAAI,GAC3BmF,IAAA,CAAC+N,KAAgB9V,EAAMsU,eACvBvH,IAAAoI,MAAW,UAAUnV,EAAMuU,iBAC3BrH,IAAAqD,KAAWsK,GAAY1F,CAAM,GAC7BhI,IAAA,CAACoD,KAAWkK,GAAWtF,CAAM;AAAC,MAAA/H;AAAA,EAAAlI,UAAA2C,KAAA3C,EAAA,EAAA,MAAA4C,KAAA5C,EAAA,EAAA,MAAA6C,KAAA7C,EAAA,EAAA,MAAA6H,KAAA7H,UAAAgI,KAAAhI,EAAA,EAAA,MAAAiI,KAPzBC,KACLpN,EAAMoU,OACNvM,GACAC,GACAC,GACAgF,GACAG,GACAC,CAA8B,GAC/BjI,QAAA2C,GAAA3C,QAAA4C,GAAA5C,QAAA6C,GAAA7C,QAAA6H,GAAA7H,QAAAgI,GAAAhI,QAAAiI,GAAAjI,QAAAkI,KAAAA,IAAAlI,EAAA,EAAA;AAAA,MAAAmI;AAAA,EAAAnI,EAAA,EAAA,MAAAV,KAAAU,EAAA,EAAA,MAAA2L,KAAA3L,EAAA,EAAA,MAAAgO,KAAAhO,EAAA,EAAA,MAAAkI,KAAAlI,UAAA0L,KAdHvD,IAAA,gBAAA7F,EAAA,SAAA,oBAAA,yBACO0L,KAAAA,GACA,MAAA,UACM,cAAA,QACMtC,mBAAAA,GACCC,oBAAAA,MAAapJ,EAAAC,EAAA7F,KACxBuL,CAQN,GAEA5I,UAAAA,GACH,GAAWU,QAAAV,GAAAU,QAAA2L,GAAA3L,QAAAgO,GAAAhO,QAAAkI,GAAAlI,QAAA0L,GAAA1L,QAAAmI,KAAAA,IAAAnI,EAAA,EAAA;AAAA,MAAA8V;AAAA,EAAA9V,EAAA,EAAA,MAAA0C,KAAA1C,UAAAmI,KAlBb2N,+EAAAvT,EAAAC,EAAA7F,KAAiB+F,CAA4C,GAAuB,wBAAA,IAClFyF,UAAAA,GAkBF,GAAWnI,QAAA0C,GAAA1C,QAAAmI,GAAAnI,QAAA8V,KAAAA,IAAA9V,EAAA,EAAA;AAAA,MAAA+V;AAAA,SAAA/V,EAAA,EAAA,MAAA8V,KAAA9V,UAAAqC,KAhCb0T,4BAEE1T,UAAAA;AAAAA,IAAAA;AAAAA,IAWAyT;AAAAA,EAAAA,GAmBW,GACV9V,QAAA8V,GAAA9V,QAAAqC,GAAArC,QAAA+V,KAAAA,IAAA/V,EAAA,EAAA,GAjCH+V;AAiCG;AAMP,SAAArJ,GAAAtM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,EAAMgC,MAAO,GAAGwC,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAK9D,SAAAoM,GAAAvM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACb;AAAA,IAAAsL,SAAAA;AAAAA,EAAAA,IAAkB0J,GAAAA;AAAW,MAAA7U;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA0L,KAE3BnL,2EAAamL,OAAO,GAAAnJ,EAAAC,EAAAoK,IAAS9R,EAAMuP,KAAM,GACtC/K,UAAAA,GACH,GAAUU,OAAAV,GAAAU,OAAA0L,GAAA1L,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFVO;AAEU;AAMd,SAAAsM,GAAAzM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAqB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACnB;AAAA,IAAAuL,eAAAA;AAAAA,EAAAA,IAAwByJ,GAAAA;AAAW,MAAA7U;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA2L,KAEjCpL,0EAAYoL,OAAa,GAAApJ,EAAAC,EAAArF,GAASrC,EAAMwP,WAAY,GACjDhL,UAAAA,GACH,GAASU,OAAAV,GAAAU,OAAA2L,GAAA3L,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFTO;AAES;AAMb,SAAAuM,GAAA1M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACtCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,EAAMyP,IAAK,GAAGjL,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAnDO;AAAmD;AAK5D,SAAAwM,GAAA3M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,EAAM0P,MAAO,GAAGlL,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAU9D,SAAAyM,GAAA5M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,IAAA,cAAAiB;AAAAA,EAAAA,IAAAH,GAAyB+G,IAAA5G,MAAAyB,SAAA,UAAAzB,GACtC;AAAA,IAAAwL,cAAAA;AAAAA,EAAAA,IAAuBqJ,GAAAA;AAEvB,MAAI9V,GAAQ;AAAA,QAAAmB;AAAA,WAAAT,EAAA,CAAA,MAAAV,KAAAU,SAAA+L,KAERtL,4EAAmBsL,YAAY,GAAAxJ,EAAAC,EAAA7F,KAAS7B,EAAM2P,aAAc,GACzDnL,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA+L,GAAA/L,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFXS;AAAAA,EAEW;AAEd,MAAAA;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAIGtH,+BAAY,OAAA,IAAY,QAAA,IAAY,SAAA,aAAiB,MAAA,QACnD,4BAAA,QAAA,EACI,GAAA,sBACK,QAAA,gBACM,aAAA,KACC,eAAA,SAAO,EAAA,CAEzB,GAAMT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAX,EAAA,CAAA,MAAAmH,KAAAnH,SAAA+L,KARRpL,sBAAA,UAAA,EAAA,oBAAA,yBAAsBoL,SAAAA,GAA0B5E,cAAAA,GAAS,GAAA5E,EAAAC,EAAA9F,QAAS5B,EAAMwG,WAAY,GAAA,MAAA,UAClFb,UAAAA,GAQF,GAAcT,OAAAmH,GAAAnH,OAAA+L,GAAA/L,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GATdW;AASc;AAMX,MAAMqV,KAAS;AAAA,EAAA,MACpBhN;AAAAA,EAAAA,SACAuD;AAAAA,EACAC,QAAAA;AAAAA,EAAAA,QACAE;AAAAA,EACAC,OAAAA;AAAAA,EAAAA,aACAE;AAAAA,EAAAA,MACAC;AAAAA,EAAAA,QACAC;AAAAA,EACAC,OAAAA;AACF,GCrWalS,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,oBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAgV,SAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAhV,OAAA;AAAA,EAAA;AAAA,EAAAiV,QAAA;AAAA,IAAA,oBAAA;AAAA,IAAAjV,OAAA;AAAA,EAAA;AAAA;ACKZ,SAAAkV,GAAA/V,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAoB;AAAA,IAAAgW,SAAAA;AAAAA,IAAAxR,MAAAA;AAAAA,IAAAyR,QAAAA;AAAAA,EAAAA,IAAA9V;AAAwC,MAAAG;AAAA,EAAAP,SAAAiW,KAI7D1V,IAAA,gBAAA+B,EAAA,KAAA,EAAA,oBAAA,gCAAA,GAAAC,EAAAC,EAAArF,GAAerC,GAAMmb,OAAQ,GAAGA,UAAAA,EAAAA,CAAQ,GAASjW,OAAAiW,GAAAjW,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,EAAAT,SAAAkW,KAChDzV,IAAAyV,KAAU,gBAAA5T,EAAA,OAAA,EAAA,oBAAA,gCAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMob,MAAO,GAAGA,UAAAA,GAAO,GAAWlW,OAAAkW,GAAAlW,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAX,EAAA,CAAA,MAAAyE,KAAAzE,SAAAO,KAAAP,EAAA,CAAA,MAAAS,KAHhEE,sFAAA4B,EAAAC,EAAA7F,KAAiB7B,GAAM4L,IAAK,GACzBjC,UAAAA;AAAAA,IAAAA;AAAAA,IACDlE;AAAAA,IACCE;AAAAA,EAAAA,GACH,GAAWT,OAAAyE,GAAAzE,OAAAO,GAAAP,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAJXW;AAIW;ACbR,MAAMyV,KAAW;AAAA,EAAAC,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAApV,OAAA;AAAA,EAAA;AAAA,EAAAqV,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAArV,OAAA;AAAA,EAAA;AAAA,EAAAsV,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAtV,OAAA;AAAA,EAAA;AAAA,EAAAuV,SAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAvV,OAAA;AAAA,EAAA;AAAA,EAAAjE,OAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAiE,OAAA;AAAA,EAAA;AAAA,EAAAwV,MAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAxV,OAAA;AAAA,EAAA;AAAA,EAAAyV,UAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAzV,OAAA;AAAA,EAAA;AAAA,EAAA0V,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA1V,OAAA;AAAA,EAAA;AAAA,EAAA2V,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA3V,OAAA;AAAA,EAAA;AAAA,EAAA4V,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA5V,OAAA;AAAA,EAAA;AAAA,EAAA6V,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA7V,OAAA;AAAA,EAAA;AAAA,EAAA8V,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA9V,OAAA;AAAA,EAAA;AAAA,EAAA+V,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/V,OAAA;AAAA,EAAA;AAAA,EAAAgW,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAhW,OAAA;AAAA,EAAA;AAAA,GCAXnG,KAAM;AAAA,EAAAiK,SAAA;AAAA,IAAA,gBAAA;AAAA,IAAA9D,OAAA;AAAA,EAAA;AAAA,EAAAiW,OAAA;AAAA,IAAA,gBAAA;AAAA,IAAAjW,OAAA;AAAA,EAAA;AAAA,EAAAkW,QAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlW,OAAA;AAAA,EAAA;AAAA,EAAAmW,YAAA;AAAA,IAAA,oBAAA;AAAA,IAAAnW,OAAA;AAAA,EAAA;AAAA,EAAAoW,aAAA;AAAA,IAAA,oBAAA;AAAA,IAAApW,OAAA;AAAA,EAAA;AAAA,EAAAqW,UAAA;AAAA,IAAA,oBAAA;AAAA,IAAArW,OAAA;AAAA,EAAA;AAAA,GCmBbsW,KAAoD;AAAA,EACxD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,GAEMC,KAAW;AAAA,EACfC,OAAO3c,GAAOsc;AAAAA,EACdM,QAAQ5c,GAAOuc;AAAAA,EACfM,KAAK7c,GAAOwc;AACd;AAEO,SAAAM,GAAAxX,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAiB;AAAA,IAAA4X,OAAAA;AAAAA,IAAAnT,SAAAA;AAAAA,IAAAoT,OAAAvX;AAAAA,IAAAwX,OAAAA;AAAAA,IAAAzY,UAAAA;AAAAA,EAAAA,IAAAc,GAAiB0X,IAAAvX,MAAAyB,SAAA,YAAAzB,GACvCyX,IAAwBtT,KAAW6S,GAAkBM,CAAK,GAC3CpX,IAAA2V,GAAY4B,CAAe,GAAGrX,IAAA7F,GAAOgd,CAAK,GAAGhX,IAAAiX,KAASP,GAASO,CAAK;AAAC,MAAA7V;AAAA,EAAAlC,EAAA,CAAA,MAAAS,KAAAT,SAAAW,KAAAX,EAAA,CAAA,MAAAc,KAAtEoB,KAACzB,GAA8BE,GAAeG,CAAwB,GAACd,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAArF,QAAA9E,IAAcgH;AAEd,MAAI2V,MAAU,GAAC;AAAA,QAAA1V;AAAA,WAAAnC,EAAA,CAAA,MAAAV,KAAAU,SAAA9E,KAASiH,IAAA,gBAAAG,EAAA,MAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAAyV,IAAgB/c,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAUU,OAAAV,GAAAU,OAAA9E,GAAA8E,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAA3CmC;AAAAA,EAA2C;AACnE,MAAI0V,MAAU,GAAC;AAAA,QAAA1V;AAAA,WAAAnC,EAAA,CAAA,MAAAV,KAAAU,SAAA9E,KAASiH,IAAA,gBAAAG,EAAA,MAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAAoK,IAAgB1R,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAUU,OAAAV,GAAAU,OAAA9E,GAAA8E,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAA3CmC;AAAAA,EAA2C;AACnE,MAAI0V,MAAU,GAAC;AAAA,QAAA1V;AAAA,WAAAnC,EAAA,EAAA,MAAAV,KAAAU,UAAA9E,KAASiH,IAAA,gBAAAG,EAAA,MAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAA0V,IAAgBhd,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAUU,QAAAV,GAAAU,QAAA9E,GAAA8E,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAA3CmC;AAAAA,EAA2C;AACnE,MAAI0V,MAAU,GAAC;AAAA,QAAA1V;AAAA,WAAAnC,EAAA,EAAA,MAAAV,KAAAU,UAAA9E,KAASiH,IAAA,gBAAAG,EAAA,MAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAA2V,IAAgBjd,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAUU,QAAAV,GAAAU,QAAA9E,GAAA8E,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAA3CmC;AAAAA,EAA2C;AACnE,MAAI0V,MAAU,GAAC;AAAA,QAAA1V;AAAA,WAAAnC,EAAA,EAAA,MAAAV,KAAAU,UAAA9E,KAASiH,IAAA,gBAAAG,EAAA,MAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAA4V,IAAgBld,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAUU,QAAAV,GAAAU,QAAA9E,GAAA8E,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAA3CmC;AAAAA,EAA2C;AAAA,MAAAA;AAAA,SAAAnC,EAAA,EAAA,MAAAV,KAAAU,UAAA9E,KAC5DiH,IAAA,gBAAAG,EAAA,MAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAA6V,IAAgBnd,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAUU,QAAAV,GAAAU,QAAA9E,GAAA8E,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAA3CmC;AAA2C;ACzC7C,MAAMrH,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAqX,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,iBAAA;AAAA,IAAArX,OAAA;AAAA,EAAA;AAAA,EAAAsX,cAAA;AAAA,IAAA,0BAAA;AAAA,IAAAtX,OAAA;AAAA,EAAA;AAAA,EAAAsI,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAtI,OAAA;AAAA,EAAA;AAAA,EAAAiD,SAAA;AAAA,IAAA,eAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,mBAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,EAAAuX,MAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAvX,OAAA;AAAA,EAAA;AAAA,EAAAqJ,aAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAArJ,OAAA;AAAA,EAAA;AAAA,EAAAI,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,oBAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAwX,OAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAxX,OAAA;AAAA,EAAA;AAAA,GCSbyX,KAActZ,EAAgC;AAAA,EAACuZ,eAAe;AAAM,CAAC;AAE3E,SAAAC,KAAA;AAAA,SACS1Y,EAAWwY,EAAW;AAAC;AAahC,SAAA1P,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAqZ,eAAApY;AAAAA,IAAA,cAAA4G;AAAAA,EAAAA,IAAA/G,GAAWuY,IAAApY,MAAAyB,SAAA,SAAAzB;AAAsB,MAAAE;AAAA,EAAAT,SAAA2Y,KAEdlY,IAAA;AAAA,IAAAkY,eAAAA;AAAAA,EAAAA,GAAe3Y,OAAA2Y,GAAA3Y,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,EAAAX,EAAA,CAAA,MAAAmH,KAAAnH,SAAAV,KAC1CqB,IAAA,gBAAA2B,EAAA,OAAA,EAAA,oBAAA,oBAAe,MAAA,QAAmB6E,cAAAA,GAAS,GAAA5E,EAAAC,EAAA7F,KAAS7B,GAAM4L,IAAK,GAC5DpH,UAAAA,GACH,GAAWU,OAAAmH,GAAAnH,OAAAV,GAAAU,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,SAAAd,EAAA,CAAA,MAAAS,KAAAT,SAAAW,KAHbG,sBAAA4X,GAAA,UAAA,EAA6B,OAAAjY,GAC3BE,UAAAA,GAGF,GAAuBX,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAJvBc;AAIuB;AAgB3B,SAAAwI,GAAAlJ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAuZ,UAAAA;AAAAA,IAAAjT,UAAAA;AAAAA,IAAAI,SAAAA;AAAAA,EAAAA,IAAA5F,GACZ;AAAA,IAAAuY,eAAAA;AAAAA,EAAAA,IAAwBC,GAAAA,GAMLrY,IALEoY,MAAkB,SAKpBE,IAAA7W,QACAvB,IAAAmF,KAAA5D,QACNrB,IAAAiF,IAAA5D,SAAAgE,GAGPlF,IAAA+X,KAAY/d,GAAMyd,cAClBrW,IAAA0D,KAAY9K,GAAMyO;AAAa,MAAApH;AAAA,EAAAnC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KAH1BC,IAAA,CACLrH,GAAMwd,MACNxX,GACAoB,CAA+B,GAChClC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAAO,KAAAP,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAW,KAAAX,SAAAmC,KATHC,sBAAA,OAAA,EAAA,oBAAA,oBACO,MAAA,YACU,iBAAA7B,GACA,iBAAAE,GACN,SAAAE,MAA8B4B,EAAAC,EAAA7F,KAChCwF,CAIN,GAEA7C,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAO,GAAAP,OAAAS,GAAAT,OAAAW,GAAAX,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA,GAZXoC;AAYW;AAMf,SAAAwM,GAAAxO,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACzCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMoJ,OAAQ,GAAG5E,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAtDO;AAAsD;AAK/D,SAAAuY,GAAA1Y,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAkB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KAC1CiB,IAAA,gBAAA+B,EAAA,KAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAArF,GAAerC,GAAM0d,IAAK,GAAGlZ,UAAAA,EAAAA,CAAS,GAASU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAA/CO;AAA+C;AAKxD,SAAAsM,GAAAzM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAqB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KAC7CiB,IAAA,gBAAA+B,EAAA,KAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAArF,GAAerC,GAAMwP,WAAY,GAAGhL,UAAAA,EAAAA,CAAS,GAASU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAtDO;AAAsD;AAK/D,SAAAwY,GAAA3Y,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACzCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMuG,OAAQ,GAAG/B,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAtDO;AAAsD;AAK/D,SAAAyY,GAAA5Y,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KAE5CiB,wEAAe,MAAA,YAAU,GAAAgC,EAAAC,EAAA7F,KAAQ7B,GAAM2d,KAAM,GAC1CnZ,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFXO;AAEW;AAMR,MAAM0Y,KAAO;AAAA,EAAA,MAClBjQ;AAAAA,EAAAA,MACAM;AAAAA,EAAAA,SACAsF;AAAAA,EACAsK,MAAMJ;AAAAA,EAAAA,aACNjM;AAAAA,EACAkM,SAAAA;AAAAA,EACAC,OAAAA;AACF,GClGaG,KAAe/Z,EAAwC,IAAI;AAEjE,SAAAga,KAAA;AAAA,SACElZ,EAAWiZ,EAAY;AAAC;ACpB1B,MAAME,KAAcja,EAAc,EAAK;AAEvC,SAAAka,KAAA;AAAA,SACEpZ,EAAWmZ,EAAW;AAAC;ACAzB,MAAMve,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAjE,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAiE,OAAA;AAAA,EAAA;AAAA,EAAAqJ,aAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAArJ,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA;ACSnB,SAAA+H,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA;AAAA,MAAA6D,GAAAf;AAAA,EAAA/C,SAAAI,KAAc;AAAA,IAAA0D,MAAAA;AAAAA,IAAA,GAAAf;AAAAA,EAAAA,IAAA3C,GAA2BJ,OAAAI,GAAAJ,OAAA8D,GAAA9D,OAAA+C,MAAAe,IAAA9D,EAAA,CAAA,GAAA+C,IAAA/C,EAAA,CAAA;AACvC,QAAAuZ,IAAmBD,GAAAA;AACnB,MAAIxV,KAAAyV,GAAkB;AAAA,QAAAhZ;AAAA,WAAAP,EAAA,CAAA,MAAA8D,KAAA9D,SAAA+C,KACbxC,IAAA,gBAAA+B,EAACkX,IAAA,EAAqB1V,MAAAA,GAAI,GAAMf,EAAAA,CAAK,GAAI/C,OAAA8D,GAAA9D,OAAA+C,GAAA/C,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAzCO;AAAAA,EAAyC;AACjD,MAAAA;AAAA,SAAAP,SAAA+C,KACMxC,IAAA,gBAAA+B,EAACmX,IAAA,EAAU,GAAK1W,EAAAA,CAAK,GAAI/C,OAAA+C,GAAA/C,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAzBO;AAAyB;AAIlC,SAAAiZ,GAAApZ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAwB;AAAA,IAAA6D,MAAAA;AAAAA,IAAA4V,SAAAnZ;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAEbuZ,IAAApZ,MAAAyB,SAAA,KAAAzB,GAOT3B,IAAWuB,GAAAA,GACX;AAAA,IAAAyZ,SAAAA;AAAAA,EAAAA,IAAkBC,GAAAA;AAAmB,MAAApZ;AAAA,EAAAT,EAAA,CAAA,MAAA4Z,KAAA5Z,SAAA8D,KACKrD,IAAA;AAAA,IAAAmZ,SAAAA;AAAAA,IAAA9V,MAAAA;AAAAA,EAAAA,GAAe9D,OAAA4Z,GAAA5Z,OAAA8D,GAAA9D,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAzD,QAAA;AAAA,IAAA8Z,OAAAA;AAAAA,IAAAC,YAAAA;AAAAA,EAAAA,IAA4BC,GAAcvZ,CAAe,GACzDiZ,IAAgBC,KAAA,CAAgB,CAACI,EAAU5V,OAI5BxD,IAAA,GAAG/B,CAAE,YACDkC,IAAA,GAAGlC,CAAE,gBACXsD,IAAA,GAAGtD,CAAE;AAAQ,MAAAuD;AAAA,EAAAnC,EAAA,CAAA,MAAA8Z,EAAAhW,QAAA9D,EAAA,CAAA,MAAA8Z,EAAAG,UAAAja,EAAA,CAAA,MAAA8Z,EAAA1S,YAAApH,EAAA,CAAA,MAAA8Z,EAAAI,OAAAla,EAAA,CAAA,MAAA8Z,EAAAve,SAEf4G,IAAA;AAAA,IAAA5G,OACEue,EAAKve;AAAAA,IAAM6L,UACR0S,EAAK1S;AAAAA,IAAS6S,QAChBH,EAAKG;AAAAA,IAAOC,KACfJ,EAAKI;AAAAA,IAAIpW,MACRgW,EAAKhW;AAAAA,EAAAA,GACZ9D,EAAA,CAAA,IAAA8Z,EAAAhW,MAAA9D,EAAA,CAAA,IAAA8Z,EAAAG,QAAAja,EAAA,CAAA,IAAA8Z,EAAA1S,UAAApH,EAAA,CAAA,IAAA8Z,EAAAI,KAAAla,EAAA,CAAA,IAAA8Z,EAAAve,OAAAyE,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AACa,QAAAoC,IAAA2X,EAAU5V,OAAe8R;AAAA,MAAA5T;AAAA,EAAArC,SAAA0Z,KAAA1Z,EAAA,EAAA,MAAAW,KAAAX,EAAA,EAAA,MAAAc,KAAAd,EAAA,EAAA,MAAAkC,KAAAlC,UAAAmC,KAAAnC,EAAA,EAAA,MAAAoC,KAZlCC,IAAA;AAAA,IAAA8X,WACMxZ;AAAAA,IAAegL,eACX7K;AAAAA,IAAmBsZ,SACzBlY;AAAAA,IAAawX,SAAAA;AAAAA,IAAAI,OAEf3X;AAAAA,IAMNkY,cACajY;AAAAA,EAAAA,GACfpC,OAAA0Z,GAAA1Z,QAAAW,GAAAX,QAAAc,GAAAd,QAAAkC,GAAAlC,QAAAmC,GAAAnC,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAdH,QAAA8I,IACSzG;AAwBR,MAAAI;AAAA,EAAAzC,UAAAV,KAIGmD,IAAA,gBAAAH,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM4L,IAAK,GAAGpH,UAAAA,EAAAA,CAAS,GAAWU,QAAAV,GAAAU,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,SAAA1C,EAAA,EAAA,MAAA8I,KAAA9I,UAAAyC,KADrDC,sBAAAyW,GAAA,UAAA,EAA8BrQ,OAAAA,GAC5BrG,UAAAA,GACF,GAAwBzC,QAAA8I,GAAA9I,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GAFxB0C;AAEwB;AAK5B,SAAA+W,GAAArZ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAoB;AAAA,IAAAyZ,SAAAnZ;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAACsZ,IAAAnZ,MAAAyB,SAAA,KAAAzB,GACnB3B,IAAWuB,GAAAA,GAGIM,IAAA,GAAG7B,CAAE,YACD+B,IAAA,GAAG/B,CAAE,gBACXkC,IAAA,GAAGlC,CAAE;AAAQ,MAAAsD;AAAA,EAAAlC,EAAA,CAAA,MAAA0Z,KAAA1Z,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KAHjBoB,IAAA;AAAA,IAAAiY,WACM1Z;AAAAA,IAAekL,eACXhL;AAAAA,IAAmByZ,SACzBtZ;AAAAA,IAAa4Y,SAAAA;AAAAA,EAAAA,GAEvB1Z,OAAA0Z,GAAA1Z,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AANH,QAAA8I,IACS5G;AAOR,MAAAC;AAAA,EAAAnC,SAAAV,KAIG6C,IAAA,gBAAAG,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM4L,IAAK,GAAGpH,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAA8I,KAAA9I,SAAAmC,KADrDC,sBAAA+W,GAAA,UAAA,EAA8BrQ,OAAAA,GAC5B3G,UAAAA,GACF,GAAwBnC,OAAA8I,GAAA9I,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA,GAFxBoC;AAEwB;AAS5B,SAAAkY,GAAAla,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GAGMG,IAFP6Y,GAAAA,GAEUe;AAAW,MAAA1Z;AAAA,SAAAT,EAAA,CAAA,MAAAV,KAAAU,SAAAO,KAA/BE,4EAAiB,SAAAF,MAAcgC,EAAAC,EAAAxF,OAASlC,GAAMkC,KAAM,GACjDsC,UAAAA,GACH,GAAaU,OAAAV,GAAAU,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFbS;AAEa;AASjB,SAAAoM,GAAAzM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAqB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GAGFG,IAFL6Y,GAAAA,GAEQzN;AAAe,MAAAlL;AAAA,SAAAT,EAAA,CAAA,MAAAV,KAAAU,SAAAO,KAAjCE,2EAAe,IAAAF,MAAkBgC,EAAAC,EAAApF,MAAStC,GAAMwP,WAAY,GACzDhL,UAAAA,GACH,GAAYU,OAAAV,GAAAU,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFZS;AAEY;AAShB,SAAAsI,GAAA3I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACb0I,IAAYsQ,GAAAA,GACZlV,IAAgB5E,KAAYwJ,GAAGuR;AAC/B,MAAI,CAACvR,GAAG4Q,WAAJ,CAAkBxV;AAAO,WAAS;AAGrB,QAAA3D,IAAAuI,GAAGsR;AAAS,MAAA3Z;AAAA,SAAAT,EAAA,CAAA,MAAAkE,KAAAlE,SAAAO,KAA3BE,IAAA,gBAAA6B,EAAA,QAAA,EAAA,oBAAA,uBAAe,IAAA/B,GAAmB,MAAA,SAAO,GAAAgC,EAAAC,EAAApF,MAAQtC,GAAMqJ,KAAM,GAC1DD,UAAAA,GACH,GAAYlE,OAAAkE,GAAAlE,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFZS;AAEY;AAIT,MAAM8Z,KAAQ;AAAA,EAAA,MACnBvR;AAAAA,EACAsR,OAAAA;AAAAA,EACAzN,aAAAA;AAAAA,EAAAA,OACA9D;AACF;ACzHO,SAAAyR,GAAApa,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAqC;AAAA,IAAAwa,QAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAArb,UAAAA;AAAAA,EAAAA,IAAAc;AAK7B,MAAAG;AAAA,EAAAP,SAAAya,KAEDla,IAAAqa,GAAiBH,CAAM,GAACza,OAAAya,GAAAza,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,EAAAT,EAAA,CAAA,MAAA0a,KAAA1a,SAAAO,KADTE,IAAA;AAAA,IAAAoa,UACfta;AAAAA,IAAwBma,eAAAA;AAAAA,IAAAI,MAE5B;AAAA,IAAWC,gBACD;AAAA,EAAA,GACjB/a,OAAA0a,GAAA1a,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AALD,QAAAgb,IAAgBC,GAAWxa,CAK1B,GAEDya,IAAgB1b,EAAwB,IAAI;AAAC,MAAAmB;AAAA,EAAAX,EAAA,CAAA,MAAAgb,KAAAhb,SAAA2a,KAE3Cha,IAAA3B,CAAAA,MAAA;AACEA,IAAAA,EAACiV,eAAAA,GACI+G,EAAOG,aAAcR,CAAQ,EAAA;AAAA,EAAG,GACtC3a,OAAAgb,GAAAhb,OAAA2a,GAAA3a,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAJH,QAAAmb,IAAqBxa;AAMpB,MAAAG,GAAAoB;AAAA,EAAAlC,SAAAmb,KAESra,IAAAA,MAAA;AACR,UAAAwN,IAAW4M,EAAOzb;AAClB,QAAK6O;AACLA,aAAAA,EAAEnC,iBAAkB,UAAUgP,CAAY,GACnC,MAAM7M,EAAElC,oBAAqB,UAAU+O,CAAY;AAAA,EAAC,GAC1DjZ,IAAA,CAACiZ,CAAY,GAACnb,OAAAmb,GAAAnb,OAAAc,GAAAd,QAAAkC,MAAApB,IAAAd,EAAA,CAAA,GAAAkC,IAAAlC,EAAA,EAAA,IALjBmD,EAAUrC,GAKPoB,CAAc;AAAC,MAAAC;AAAA,EAAAnC,EAAA,EAAA,MAAAV,KAAAU,UAAAgb,KAMT7Y,IAAA,OAAO7C,KAAa,aAAaA,EAAS0b,CAAkB,IAA5D1b,GAA6DU,QAAAV,GAAAU,QAAAgb,GAAAhb,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA;AAAA,MAAAoC;AAAA,EAAApC,UAAAmC,KAFlEC,sBAAAiX,GAAA,UAAA,EAA6B,OAAA,IAC3B,4BAAA,QAAA,EAAA,oBAAA,oBAAgB6B,KAAAA,MAAO3Y,EAAAC,EAAA5F,IAAA,GACpBuF,aACH,GACF,GAAuBnC,QAAAmC,GAAAnC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,EAAA,MAAAgb,KAAAhb,UAAAoC,KALzBC,IAAA,gBAAAC,EAAC8Y,IAAA,EAAY,GAAKJ,GAChB5Y,UAAAA,GAKF,GAAepC,QAAAgb,GAAAhb,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA,GANfqC;AAMe;ACnDZ,MAAMvH,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAoa,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAApa,OAAA;AAAA,EAAA;AAAA,EAAA2E,UAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA3E,OAAA;AAAA,EAAA;AAAA,EAAAqa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAra,OAAA;AAAA,EAAA;AAAA,EAAAsa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAta,OAAA;AAAA,EAAA;AAAA,EAAAua,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAva,OAAA;AAAA,EAAA;AAAA,EAAAwa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAxa,OAAA;AAAA,EAAA;AAAA,EAAAya,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAza,OAAA;AAAA,EAAA;AAAA,EAAA0a,OAAA;AAAA,IAAA,cAAA;AAAA,IAAA1a,OAAA;AAAA,EAAA;AAAA,GCCb2a,KAAS;AAAA,EACbC,IAAI/gB,GAAOwgB;AAAAA,EACXrW,IAAInK,GAAOygB;AAAAA,EACXO,IAAIhhB,GAAO0gB;AAAAA,EACXtW,IAAIpK,GAAO2gB;AAAAA,EACXrR,IAAItP,GAAO4gB;AAAAA,EACXK,IAAIjhB,GAAO6gB;AACb;AAWA,SAAA3S,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAA2F,UAAArF;AAAAA,IAAAyb,KAAAvb;AAAAA,IAAAnB,UAAAA;AAAAA,EAAAA,IAAAc,GAACwF,IAAArF,MAAAyB,SAAA,KAAAzB,GAAkByb,IAAAvb,MAAAuB,SAAA,OAAAvB,GAIZE,IAAAiF,KAAA5D,QACMlB,IAAA8a,GAAOI,CAAG,GAAG9Z,IAAA0D,KAAY9K,GAAM8K;AAAS,MAAAzD;AAAA,EAAAnC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KAAtDC,IAAA,CAACrH,GAAM4L,MAAO5F,GAAaoB,CAA2B,GAAClC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAAV,KAAAU,SAAAW,KAAAX,EAAA,CAAA,MAAAmC,KAHhEC,IAAA,gBAAAE,EAAA,OAAA,EAAA,oBAAA,4BACO,MAAA,SACU,iBAAA3B,MAAqB4B,EAAAC,EAAA7F,KAC7BwF,CAAuD,GAE7D7C,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAW,GAAAX,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA,GANXoC;AAMW;AASf,SAAA6Z,GAAA7b,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAuB,MAAAG;AAAA,SAAAP,SAAAV,KAC9BiB,IAAA,gBAAA+B,EAAA,QAAA,EAAA,oBAAA,4BAAA,GAAAC,EAAAC,EAAApF,MAAkBtC,GAAMugB,MAAO,GAAG/b,UAAAA,EAAAA,CAAS,GAAYU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAvDO;AAAuD;AAGzD,MAAM2b,KAAW;AAAA,EAAA,MACtBlT;AAAAA,EACAiT,QAAAA;AACF,GC1CaE,KAAoB/c,EAA6C,IAAI;AAE3E,SAAAgd,KAAA;AAAA,SACElc,EAAWic,EAAiB;AAAC;ACJ/B,MAAMrhB,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAA8D,SAAA;AAAA,IAAA,sBAAA;AAAA,IAAA9D,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,sBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA,EAAAob,SAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAApb,OAAA;AAAA,EAAA;AAAA;AC+BZ,SAAAqb,GAAAlc,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAAyE,SAAAnE;AAAAA,IAAAwF,MAAAtF;AAAAA,IAAAqD,MAAAA;AAAAA,IAAAyY,aAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAphB,OAAAA;AAAAA,IAAA+M,cAAAA;AAAAA,IAAA1C,UAAAA;AAAAA,IAAAwB,UAAAA;AAAAA,IAAA6S,QAAAA;AAAAA,IAAAC,KAAAA;AAAAA,EAAAA,IAAA9Z,GACpBsE,IAAAnE,MAAAyB,SAAA,YAAAzB,GACAwF,IAAAtF,MAAAuB,SAAA,SAAAvB,GAcAqI,IAAYsQ,GAAAA,GACZwD,IAAiBR,GAAAA,GAEjBS,IAAiB/T,GAAGgR,OACpBgD,IAAsBhZ,KAAQ+Y,GAAQ/Y,MACtCiZ,IAAuBxhB,MAAUshB,IAAWrL,OAAOqL,EAAQthB,SAAR,EAAgC,IAAlDyG,SACjCgb,IAA0B5V,KAAYyV,GAAQzV,UAC9C6V,IAAwBhD,KAAU4C,GAAQ5C,QAC1CiD,IAAqBhD,KAAO2C,GAAQ3C,KACpCiD,IAAyBrU,GAAG4Q,UAAH,UAAAhV;AAAgC,MAAA/D;AAAA,EAAAX,SAAA0c,KAItC/b,IAAA+b,MAAY1a,SAAZ;AAAA,IAAA0a,SAAAA;AAAAA,EAAAA,IAAA1a,QAA6ChC,OAAA0c,GAAA1c,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAhE,QAAAod,IAAmBzc,GAIXG,IAAAgI,GAAGqR;AAAW,MAAAjY;AAAA,EAAAlC,SAAA8I,KAWhB5G,IAAA4G,IAAM,GAAGA,EAAG6C,aAAc,IAAI7C,EAAG4Q,UAAW5Q,EAAGsR,UAAjB,EAA8B,GAAEiD,KAAAA,IAA9Drb,QAAiFhC,OAAA8I,GAAA9I,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAErE,QAAAmC,IAAA2G,GAAG4Q,WAAahV,MAAY,WAA5B1C,QACJI,IAAA4a,GACF3a,IAAA4a,GACHxa,IAAAya,GACgBxa,IAAA5H,GAAOqiB,CAAgB,GAAGxa,IAAAia,GAAQP,WAAavhB,GAAMuhB;AAAQ,MAAAzZ;AAAA,EAAA5C,EAAA,CAAA,MAAA0C,KAAA1C,SAAA2C,KAA3EC,IAAA,CAAC9H,GAAMkJ,MAAOtB,GAA0BC,CAAmC,GAAC3C,OAAA0C,GAAA1C,OAAA2C,GAAA3C,OAAA4C,KAAAA,IAAA5C,EAAA,CAAA;AAC9E,QAAA6C,IAAAua;AAAqC,MAAAvV;AAAA,SAAA7H,EAAA,CAAA,MAAA2c,KAAA3c,EAAA,CAAA,MAAAsI,KAAAtI,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,EAAA,MAAA8c,KAAA9c,EAAA,EAAA,MAAA+c,KAAA/c,UAAAyc,KAAAzc,EAAA,EAAA,MAAAuc,KAAAvc,EAAA,EAAA,MAAAwc,KAAAxc,EAAA,EAAA,MAAA4C,KAAA5C,EAAA,EAAA,MAAA6C,KAAA7C,EAAA,EAAA,MAAAc,KAAAd,EAAA,EAAA,MAAAkC,KAAAlC,EAAA,EAAA,MAAAmC,KAAAnC,EAAA,EAAA,MAAAoC,KAAApC,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAAyC,KAAAzC,UAAA+F,KAnB5C8B,2EACM,IAAA/G,GACEiF,MAAAA,GACA+W,MAAAA,GACOP,aAAAA,GACHC,UAAAA,GACCC,WAAAA,GACGE,cAAAA,GACPI,UACOzU,cAAAA,GACJ1C,UAAAA,GAER,oBAAA1D,GAEY,gBAAAC,GACJ,UAAAC,GACF,QAAAC,GACH,KAAAI,MAA2CF,EAAAC,EAAAzF,OACzC6F,CAA4E,GAAA,GAC9EC,GAAqC,KAAA,QAAA,GAC1C7C,OAAA2c,GAAA3c,OAAAsI,GAAAtI,OAAA4F,GAAA5F,QAAA8c,GAAA9c,QAAA+c,GAAA/c,QAAAyc,GAAAzc,QAAAuc,GAAAvc,QAAAwc,GAAAxc,QAAA4C,GAAA5C,QAAA6C,GAAA7C,QAAAc,GAAAd,QAAAkC,GAAAlC,QAAAmC,GAAAnC,QAAAoC,GAAApC,QAAAqC,GAAArC,QAAAyC,GAAAzC,QAAA+F,GAAA/F,QAAA6H,KAAAA,IAAA7H,EAAA,EAAA,GApBF6H;AAoBE;ACnFC,MAAM/M,KAAM;AAAA,EAAAoS,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAjM,OAAA;AAAA,EAAA;AAAA,EAAAqc,OAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAArc,OAAA;AAAA,EAAA;AAAA,EAAAsc,YAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAAtc,OAAA;AAAA,EAAA;AAAA,EAAAuc,UAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,0BAAA;AAAA,IAAAvc,OAAA;AAAA,EAAA;AAAA,EAAAwc,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAxc,OAAA;AAAA,EAAA;AAAA,EAAAyc,eAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAzc,OAAA;AAAA,EAAA;AAAA;ACMnB,SAAA+H,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAqB,MAAAG;AAAA,EAAAP,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACNxH,IAAA;AAAA,IAAA8b,SAAU;AAAA,EAAA,GAAKrc,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAA1C,QAAA8I,IAA2BvI;AAAqB,MAAAE;AAAA,SAAAT,SAAAV,KAG9CmB,sBAAA0b,GAAA,UAAA,EAAmCrT,OAAAA,GACjC,4BAAA,OAAA,EAAA,oBAAA,gCAAA,GAAAvG,EAAAC,EAAA7F,KAAiB7B,GAAMoS,OAAQ,GAAG5N,UAAAA,GAAS,GAC7C,GAA6BU,OAAAV,GAAAU,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAF7BS;AAE6B;AAKjC,MAAMkd,KAAa;AAAA,EAAAC,UAAAA,CACNriB,MAAsB,CAAA;AAAA,IAAA,mBAAiBA,iCAAAA;AAAAA,IAAK0F,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,iBAAA4c,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA7b,QAALzG,CAAK;AAAA,EAAA,CAAA;AAAA;AAYzD,SAAAuiB,GAAA1d,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAA8d,UAAAxd;AAAAA,IAAAyF,SAAAA;AAAAA,IAAAJ,UAAAA;AAAAA,IAAAgY,UAAAA;AAAAA,IAAAte,UAAAA;AAAAA,EAAAA,IAAAc,GACb4d,KADczd,MAAAyB,SAAA,QAAAzB,OACqB,UAAUzF,GAAMyiB,aAAcziB,GAAM0iB,UAIrE/c,IAAAuF,KAAA,CAAYJ,KAAY9K,GAAM2iB,gBAC9B9c,IAAAiF,KAAY9K,GAAM4iB;AAAc,MAAA5c;AAAA,EAAAd,SAAA4d,KAChC9c,IAAA8c,KAAY,QAAQD,GAAaC,SAAUA,CAAQ,GAAC5d,OAAA4d,GAAA5d,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAAge,KAAAhe,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KALxCoB,IAAA,CACZpH,GAAMwiB,OACNU,GACAvd,GACAE,GACAG,CAAoD,GACrDd,OAAAge,GAAAhe,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAND,QAAA9E,IAAcgH;AAQd,MAAI8D,GAAO;AAAA,QAAA7D;AAAA,WAAAnC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,CAAA,MAAAgG,KAAAhG,UAAA9E,KAEPiH,IAAA,gBAAAG,EAAA,UAAA,EAAA,oBAAA,gCAAkB,MAAA,UAAkB0D,SAAAA,GAAmBJ,UAAAA,GAAQ,GAAArD,EAAAC,EAAA9F,QAASxB,CAAK,GAC1EoE,UAAAA,GACH,GAAcU,OAAAV,GAAAU,OAAA4F,GAAA5F,OAAAgG,GAAAhG,QAAA9E,GAAA8E,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAFdmC;AAAAA,EAEc;AAEjB,MAAAA;AAAA,SAAAnC,EAAA,EAAA,MAAAV,KAAAU,UAAA9E,KAEMiH,IAAA,gBAAAG,EAAA,QAAA,EAAA,oBAAA,gCAAA,GAAAC,EAAAC,EAAApF,MAAkBlC,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAYU,QAAAV,GAAAU,QAAA9E,GAAA8E,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAA/CmC;AAA+C;AAGjD,MAAM8b,KAAa;AAAA,EAAA,MACxBjV;AAAAA,EACA8U,OAAAA;AACF,GCtDahjB,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAmE,aAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAnE,OAAA;AAAA,EAAA;AAAA,EAAAoE,WAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAApE,OAAA;AAAA,EAAA;AAAA,EAAAqE,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAArE,OAAA;AAAA,EAAA;AAAA,EAAAsE,WAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAtE,OAAA;AAAA,EAAA;AAAA,EAAA0E,WAAA;AAAA,IAAA,gBAAA;AAAA,IAAA1E,OAAA;AAAA,EAAA;AAAA,GCYb+D,KAAU;AAAA,EACdD,SAASjK,GAAOsK;AAAAA,EAChBS,OAAO/K,GAAOuK;AAChB;AAEO,SAAA6Y,GAAA9d,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAoB;AAAA,IAAAke,MAAAA;AAAAA,IAAAzZ,SAAAnE;AAAAA,IAAA7C,MAAA+C;AAAAA,IAAAkF,WAAAhF;AAAAA,IAAA+G,QAAAA;AAAAA,IAAA0W,KAAAA;AAAAA,IAAA9e,UAAAA;AAAAA,EAAAA,IAAAc,GAEzBsE,IAAAnE,MAAAyB,SAAA,YAAAzB,GACA7C,IAAA+C,MAAAuB,SAAA,YAAAvB,GACAkF,IAAAhF,MAAAqB,SAAA,KAAArB,GAUyBG,IAAAkE,GAAQtH,CAAI,GAAGwE,IAAApH,GAAO4J,CAAO,GAAGvC,IAAAwD,KAAa7K,GAAM6K;AAAU,MAAAvD;AAAA,EAAApC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KAAAlC,EAAA,CAAA,MAAAmC,KAA3EC,IAAA,CAACtH,GAAMkJ,MAAOlD,GAAeoB,GAAiBC,CAA6B,GAACnC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAAme,KAAAne,EAAA,CAAA,MAAAoe,KAAApe,EAAA,CAAA,MAAAoC,KAAApC,SAAA0H,KAJrFrF,IAAA,gBAAAC,EAAA,KAAA,EAAA,oBAAA,gCACQ6b,MAAAA,GACEzW,QAAAA,GACH0W,KAAAA,GAAG,GAAA7b,EAAAC,EAAA/F,GACD2F,CAA4E,GAElF9C,UAAAA,GACH,GAASU,OAAAV,GAAAU,OAAAme,GAAAne,OAAAoe,GAAApe,OAAAoC,GAAApC,OAAA0H,GAAA1H,OAAAqC,KAAAA,IAAArC,EAAA,CAAA,GAPTqC;AAOS;ACjCN,MAAMvH,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAod,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAApd,OAAA;AAAA,EAAA;AAAA,EAAA4I,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAAgJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAhJ,OAAA;AAAA,EAAA;AAAA,EAAAqd,UAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAArd,OAAA;AAAA,EAAA;AAAA,EAAAqX,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAArX,OAAA;AAAA,EAAA;AAAA,EAAAsd,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAAtd,OAAA;AAAA,EAAA;AAAA,EAAAud,UAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAvd,OAAA;AAAA,EAAA;AAAA,GCONwd,KAAcrf,EAAuC,IAAI;AAE/D,SAAAsf,KAAA;AACL,QAAA5V,IAAY5I,EAAWue,EAAW;AAClC,MAAI,CAAC3V;AAAK,UAAM,IAAIC,MAAM,wDAAwD;AAAC,SAC5ED;AAAG;ACfL,SAAA6V,KAAA;AAAA,QAAA3e,IAAAC,EAAAA,EAAA,EAAA,GACL,CAAA4K,GAAA+T,CAAA,IAAwBpX,EAAS,EAAK,GACtC,CAAAqX,GAAAC,CAAA,IAA0CtX,EAAwB,IAAI,GACtEuX,IAAe5e,GAAAA,GACf6e,IAAgBxf,EAAuB,IAAI,GAC3Cyf,IAAmBzf,EAAiC,IAAI;AAAC,MAAAY;AAAA,EAAAJ,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACjC3H,wBAAI8e,IAAAA,GAA0Blf,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAtD,QAAAmf,IAAiB3f,EAAOY,CAA8B;AAAC,MAAAG;AAAA,EAAAP,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACrBxH,IAAA,CAAA,GAAEP,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAApC,QAAAof,IAAiB5f,EAAiBe,CAAE,GACpC8e,IAAiC7f,EAAO,EAAK;AAAC,MAAAiB;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEpBtH,IAAAA,MAAA;AACxBme,IAAAA,EAAQ,EAAK,GACbE,EAAiB,IAAI,GACrBO,EAAwB5f,UAAW,IACnCwf,EAAUxf,SAAe4O,MAAAA;AAAAA,EAAE,GAC5BrO,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AALD,QAAAsf,IAAc7e;AAKR,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEqBpH,IAAAA,MAAA;AACzBie,IAAAA,EAAQvS,CAAAA,OACDA,KAGHyS,EAAiB,IAAI,GACrBO,EAAwB5f,UAAW,MAHnC4f,EAAwB5f,UAAW,IAK9B,CAAC4M,EACT;AAAA,EAAC,GACHrM,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAVD,QAAAuf,IAAe5e;AAUT,MAAAG,GAAAoB;AAAA,EAAAlC,SAAA6K,KAKI/J,IAAAA,MAAA;AACR,QAAI+J,KAAQwU,EAAwB5f,SAAQ;AAC1C4f,MAAAA,EAAwB5f,UAAW;AACnC,YAAA+f,IAAcJ,EAAQ3f;AACtB,MAAI+f,EAAK3f,SAAU,KACjBif,EAAiBU,EAAK,CAAA,CAAG;AAAA,IAC1B;AAAA,EACF,GACAtd,IAAA,CAAC2I,CAAI,GAAC7K,OAAA6K,GAAA7K,OAAAc,GAAAd,OAAAkC,MAAApB,IAAAd,EAAA,CAAA,GAAAkC,IAAAlC,EAAA,CAAA,IARTmD,EAAUrC,GAQPoB,CAAM;AAAC,MAAAC;AAAA,EAAAnC,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEuB5F,IAAAA,CAAAvD,GAAA6gB,MAAA;AAC/BN,IAAAA,EAAQ1f,QAAQigB,IAAK9gB,GAAI6gB,CAAO;AAChC,UAAA1gB,IAAYogB,EAAQ1f,SACpBkgB,IAAY,CAAA,GAAI5gB,EAAG6gB,MAAO;AAC1BD,WAAAA,EAAGE,KAAM,CAAApjB,GAAAqjB,MAAA;AACP,YAAAC,IAAYhhB,EAAGihB,IAAKvjB,CAAC,GACrBwjB,IAAYlhB,EAAGihB,IAAKF,CAAC;AACrB,aAAI,CAACC,KAAD,CAASE,IAAY,IAClBF,EAAGG,wBAAyBD,CAAG,IAAIE,KAAIC,8BAAvC,KAAA;AAAA,IAA4E,CACpF,GACDhB,EAAQ3f,UAAWkgB,GACZ,MAAA;AACLR,MAAAA,EAAQ1f,QAAQhB,OAAQG,CAAE,GAC1BwgB,EAAQ3f,UAAW2f,EAAQ3f,QAAQP,OAAQnE,CAAAA,MAAOA,MAAM6D,CAAE;AAAA,IAA1C;AAAA,EACjB,GACFoB,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAfD,QAAAqgB,IAAqBle;AAef,MAAAC,GAAAC;AAAA,EAAArC,SAAA6K,KAGIzI,IAAAA,MAAA;AACR,UAAAsE,IAAasY,EAAOvf;AACpB,QAAI,CAACiH,KAAD,CAAUmE;AAAI;AAElB,UAAAyV,IAAA,SAAAthB,GAAA;AACE,YAAAuhB,IAAcnB,EAAQ3f;AACtB,UAAI+f,EAAK3f,WAAY;AAAS2gB,QAAAA,EAE9B,SAAQxhB,EAAC2E,KAAAA;AAAAA,UAAI,KACN,aAAW;AACd3E,YAAAA,EAACiV,eAAAA,GACD6K,EAAiB2B,CAAAA,MAAA;AACf,oBAAAC,IAAYrU,IAAOmT,EAAKmB,QAAStU,CAAS,IAA9B;AAA+B,qBACpCmT,GAAOoB,IAAM,KAAKpB,EAAK3f,MAAO;AAAA,YAAC,CACvC;AACD,kBAAA2gB;AAAAA,UAAK;AAAA,UAAA,KAEF,WAAS;AACZxhB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiB+B,CAAAA,MAAA;AACf,oBAAAD,IAAYvU,IAAOmT,EAAKmB,QAAStU,CAAQ,IAA7B;AAA8B,qBACnCmT,GAAOoB,IAAM,IAAIpB,EAAK3f,UAAW2f,EAAK3f,MAAO;AAAA,YAAC,CACtD;AACD,kBAAA2gB;AAAAA,UAAK;AAAA,UAAA,KAEF,QAAM;AACTxhB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiBU,EAAK,CAAA,CAAG;AACzB,kBAAAgB;AAAAA,UAAK;AAAA,UAAA,KAEF,OAAK;AACRxhB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiBU,EAAMA,EAAK3f,SAAU,CAAC,CAAC;AACxC,kBAAA2gB;AAAAA,UAAK;AAAA,UAAA,KAEF;AAAA,UAAO,KACP,KAAG;AACNxhB,YAAAA,EAACiV,eAAAA;AACD,kBAAA6M,IAAc3B,EAAQ1f;AACtBqf,YAAAA,EAAiBiC,CAAAA,OACX1U,KACSyU,EAAKd,IAAK3T,CAAI,GACvB2U,MAAAA,GAEG3U,EACR;AACD,kBAAAmU;AAAAA,UAAK;AAAA,UAAA,KAEF;AAAA,UAAQ,KACR;AACHlB,YAAAA,EAAAA;AAAAA,QAAO;AAAA,IAGV;AAGH5Y,WAAAA,EAAIyF,iBAAkB,WAAWmU,CAAa,GACvC,MAAM5Z,EAAI0F,oBAAqB,WAAWkU,CAAa;AAAA,EAAC,GAC9Dje,IAAA,CAACwI,GAAMyU,CAAK,GAACtf,OAAA6K,GAAA7K,OAAAoC,GAAApC,QAAAqC,MAAAD,IAAApC,EAAA,CAAA,GAAAqC,IAAArC,EAAA,EAAA,IA1DhBmD,EAAUf,GA0DPC,CAAa;AAAC,MAAAI;AAAA,SAAAzC,EAAA,EAAA,MAAA6e,KAAA7e,UAAA+e,KAAA/e,EAAA,EAAA,MAAA6K,KAaVpI,IAAA;AAAA,IAAAqG,KAXuB;AAAA,MAAA+B,MAAAA;AAAAA,MAAA0U,QAAAA;AAAAA,MAAAD,OAAAA;AAAAA,MAAAP,QAAAA;AAAAA,MAAAF,eAAAA;AAAAA,MAAAC,kBAAAA;AAAAA,MAAAuB,cAAAA;AAAAA,MAAApB,YAAAA;AAAAA,IAAAA;AAAAA,IAWvBD,SAAAA;AAAAA,EAAAA,GAAchf,QAAA6e,GAAA7e,QAAA+e,GAAA/e,QAAA6K,GAAA7K,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA,GAAdyC;AAAc;AC3HvB,SAAAuG,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACZ;AAAA,IAAA0I,KAAAA;AAAAA,IAAAkW,SAAAA;AAAAA,EAAAA,IAAuBL,GAAAA;AAAa,MAAApe;AAAA,EAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAAgf,KAIhCze,uEAAeye,QAAO,GAAAzc,EAAAC,EAAA7F,KAAS7B,GAAM4L,IAAK,GACvCpH,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAgf,GAAAhf,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,EAAA,CAAA,MAAA8I,KAAA9I,SAAAO,KAHbE,sBAAAge,GAAA,UAAA,EAA6B3V,OAAAA,GAC3BvI,UAAAA,GAGF,GAAuBP,OAAA8I,GAAA9I,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAJvBS;AAIuB;AAK3B,SAAA8L,GAAAnM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACf;AAAA,IAAAyK,MAAAA;AAAAA,IAAA0U,QAAAA;AAAAA,IAAAR,QAAAA;AAAAA,IAAAE,YAAAA;AAAAA,EAAAA,IAA2CP,GAAAA,GAC3CuC,IAAiBzhB,EAA0B,IAAI;AAAC,MAAAe;AAAA,EAAAP,SAAAif,KAGtC1e,IAAAA,MAAA;AACR0e,IAAAA,EAAUxf,UAAWwhB,EAAQxhB;AAAAA,EAAX,GACnBO,OAAAif,GAAAjf,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFDmD,EAAU5C,CAET;AASkB,QAAAE,IAAAoK,IAAAkU,IAAA/c;AAAyB,MAAArB;AAAA,SAAAX,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAA6K,KAAA7K,EAAA,CAAA,MAAAS,KAAAT,SAAAuf,KAN1C5e,0EACOsgB,QACA,MAAA,UACI1B,YACM1U,iBAAAA,GACD,iBAAA,QACC,iBAAApK,MAAyB8B,EAAAC,EAAA9F,QACjC5B,GAAMujB,OAAQ,GAEpB/e,UAAAA,EAAAA,CACH,GAAcU,OAAAV,GAAAU,OAAA6K,GAAA7K,OAAAS,GAAAT,OAAAuf,GAAAvf,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAVdW;AAUc;AAUlB,SAAAugB,GAAA9gB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,IAAAyY,OAAAxX;AAAAA,EAAAA,IAAAH,GAAW2X,IAAAxX,MAAAyB,SAAA,UAAAzB,GACxB;AAAA,IAAAsK,MAAAA;AAAAA,IAAAyU,OAAAA;AAAAA,IAAAP,QAAAA;AAAAA,IAAAF,eAAAA;AAAAA,EAAAA,IAA6CH,GAAAA;AAE7C,MAAI,CAAC7T;AAAI,WAAS;AAAI,MAAApK;AAAA,EAAAT,SAAAsf,KAIlB7e,IAAA,gBAAA6B,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM+O,QAAS,GAAWyV,SAAAA,EAAAA,CAAK,GAAItf,OAAAsf,GAAAtf,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAI3B,QAAAW,IAAAke,KAAA7c,QACDlB,IAAAiX,MAAU,SAASjd,GAAMwjB;AAAS,MAAApc;AAAA,EAAAlC,SAAAc,KAAjDoB,KAACpH,GAAMmP,OAAQnJ,CAAkC,GAACd,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,EAAAnC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAA+e,KAAA/e,EAAA,CAAA,MAAAW,KAAAX,SAAAkC,KAJ3DC,sBAAA,OAAA,EAAA,oBAAA,oBACM4c,IAAAA,GACC,MAAA,QACkB,yBAAApe,GAA0B,GAAA4B,EAAAC,EAAA7F,KAC1CuF,CAAkD,GAExD5C,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA+e,GAAA/e,OAAAW,GAAAX,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAAS,KAAAT,UAAAmC,KATbC,4BACE3B,UAAAA;AAAAA,IAAAA;AAAAA,IACA0B;AAAAA,EAAAA,GAOW,GACVnC,OAAAS,GAAAT,QAAAmC,GAAAnC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA,GAVHoC;AAUG;AAUP,SAAAkH,GAAAlJ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA+F,SAAAA;AAAAA,IAAA1G,UAAAA;AAAAA,EAAAA,IAAAc,GACZ;AAAA,IAAAkf,OAAAA;AAAAA,IAAAT,eAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAuB,cAAAA;AAAAA,EAAAA,IAA+D3B,GAAAA,GAC/D9f,IAAWuB,GAAAA,GACX+Z,IAAY1a,EAAuB,IAAI,GACvC2hB,IAAsBtC,MAAkBjgB;AAAE,MAAA2B,GAAAE;AAAA,EAAAT,EAAA,CAAA,MAAApB,KAAAoB,SAAAqgB,KAEhC9f,IAAAA,MAAA;AACR,UAAA+N,IAAW4L,EAAGza;AACd,QAAK6O;AAAU,aACR+R,EAAazhB,GAAI0P,CAAE;AAAA,EAAC,GAC1B7N,IAAA,CAAC7B,GAAIyhB,CAAY,GAACrgB,OAAApB,GAAAoB,OAAAqgB,GAAArgB,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAJrBmD,EAAU5C,GAIPE,CAAkB;AAAC,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAAsf,KAAAtf,SAAAgG,KAEFrF,IAAAA,MAAA;AAClBqF,IAAAA,IAAAA,GACAsZ,EAAAA;AAAAA,EAAO,GACRtf,OAAAsf,GAAAtf,OAAAgG,GAAAhG,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAHD,QAAAohB,IAAoBzgB;AAGnB,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAApB,KAAAoB,SAAA8e,KAQmBhe,IAAAA,MAAMge,EAAiBlgB,CAAE,GAACoB,OAAApB,GAAAoB,OAAA8e,GAAA9e,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AACrB,QAAAkC,IAAAif,KAAiBrmB,GAAMyjB;AAAgB,MAAApc;AAAA,EAAAnC,UAAAkC,KAArDC,KAACrH,GAAMwd,MAAOpW,CAAuC,GAAClC,QAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,EAAA,MAAAV,KAAAU,EAAA,EAAA,MAAAohB,KAAAphB,EAAA,EAAA,MAAApB,KAAAoB,EAAA,EAAA,MAAAc,KAAAd,UAAAmC,KAN/DC,uEACO8X,KAAAA,GACDtb,IAAAA,GACC,MAAA,YACIwiB,SAAAA,GACO,gBAAAtgB,MAA0ByB,EAAAC,EAAA7F,KACnCwF,CAAsD,GAE5D7C,UAAAA,GACH,GAAWU,QAAAV,GAAAU,QAAAohB,GAAAphB,QAAApB,GAAAoB,QAAAc,GAAAd,QAAAmC,GAAAnC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA,GATXoC;AASW;AAUf,SAAAif,GAAAjhB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAkB;AAAA,IAAAke,MAAAA;AAAAA,IAAA7e,UAAAA;AAAAA,EAAAA,IAAAc,GAChB;AAAA,IAAAkf,OAAAA;AAAAA,IAAAT,eAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAuB,cAAAA;AAAAA,EAAAA,IAA+D3B,GAAAA,GAC/D9f,IAAWuB,GAAAA,GACX+Z,IAAY1a,EAA0B,IAAI,GAC1C2hB,IAAsBtC,MAAkBjgB;AAAE,MAAA2B,GAAAE;AAAA,EAAAT,EAAA,CAAA,MAAApB,KAAAoB,SAAAqgB,KAEhC9f,IAAAA,MAAA;AACR,UAAA+N,IAAW4L,EAAGza;AACd,QAAK6O;AAAU,aACR+R,EAAazhB,GAAI0P,CAAE;AAAA,EAAC,GAC1B7N,IAAA,CAAC7B,GAAIyhB,CAAY,GAACrgB,OAAApB,GAAAoB,OAAAqgB,GAAArgB,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAJrBmD,EAAU5C,GAIPE,CAAkB;AAAC,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAApB,KAAAoB,SAAA8e,KASFne,IAAAA,MAAMme,EAAiBlgB,CAAE,GAACoB,OAAApB,GAAAoB,OAAA8e,GAAA9e,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AACJ,QAAAc,IAAAqgB,KAAiBrmB,GAAMyjB;AAAgB,MAAArc;AAAA,EAAAlC,SAAAc,KAAtEoB,IAAA,CAACpH,GAAMwd,MAAOxd,GAAM0jB,UAAW1d,CAAuC,GAACd,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,SAAAV,KAAAU,EAAA,EAAA,MAAAsf,KAAAtf,EAAA,EAAA,MAAAme,KAAAne,EAAA,EAAA,MAAApB,KAAAoB,UAAAW,KAAAX,EAAA,EAAA,MAAAkC,KAPhFC,sEACO+X,KAAAA,GACDtb,IAAAA,GACEuf,MAAAA,GACGmB,SAAAA,GACJ,MAAA,YACW,gBAAA3e,GAA0B,GAAA4B,EAAAC,EAAA/F,GACnCyF,CAAuE,GAE7E5C,UAAAA,GACH,GAASU,OAAAV,GAAAU,QAAAsf,GAAAtf,QAAAme,GAAAne,QAAApB,GAAAoB,QAAAW,GAAAX,QAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAVTmC;AAUS;AAIN,MAAMmf,KAAO;AAAA,EAAA,MAClBtY;AAAAA,EAAAA,SACAuD;AAAAA,EAAAA,OACA2U;AAAAA,EAAAA,MACA5X;AAAAA,EACA+X,UAAAA;AACF,GClJavmB,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,0BAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAsgB,UAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAtgB,OAAA;AAAA,EAAA;AAAA,EAAAnE,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAAmE,OAAA;AAAA,EAAA;AAAA,EAAAsJ,MAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAtJ,OAAA;AAAA,EAAA;AAAA,EAAA0M,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA1M,OAAA;AAAA,EAAA;AAAA,EAAAuJ,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAvJ,OAAA;AAAA,EAAA;AAAA;ACQnB,SAAA+H,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAiiB,UAAAhhB;AAAAA,EAAAA,IAAAH,GAC0BK,KADfF,MAAAyB,SAAA,KAAAzB,MAC2BzF,GAAMymB;AAAS,MAAA5gB;AAAA,EAAAX,SAAAS,KAAzCE,KAAC7F,GAAM4L,MAAOjG,CAA2B,GAACT,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,SAAAd,EAAA,CAAA,MAAAV,KAAAU,SAAAW,KAA3DG,IAAA,gBAAAwB,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiBgE,CAA0C,GAAGrB,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAAlFc;AAAkF;AAK3F,SAAA4L,GAAAtM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAMgC,MAAO,GAAGwC,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAW9D,SAAAuM,GAAA1M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAuP,QAAAtO;AAAAA,EAAAA,IAAAH,GAC0BK,KADfF,MAAAyB,SAAA,KAAAzB,MACyBzF,GAAM6S;AAAW,MAAAhN;AAAA,EAAAX,SAAAS,KAAzCE,KAAC7F,GAAMyP,MAAO9J,CAA2B,GAACT,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,SAAAd,EAAA,CAAA,MAAAV,KAAAU,SAAAW,KAA3DG,IAAA,gBAAAwB,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiBgE,CAA0C,GAAGrB,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAAlFc;AAAkF;AAK3F,SAAAiM,GAAA3M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KACxCiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM0P,MAAO,GAAGlL,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAArDO;AAAqD;AAKvD,MAAMihB,KAAQ;AAAA,EAAA,MACnBxY;AAAAA,EAAAA,QACA0D;AAAAA,EAAAA,MACAI;AAAAA,EACAC,QAAAA;AACF,GC1CajS,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAA0H,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA1H,OAAA;AAAA,EAAA;AAAA,EAAAqX,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAArX,OAAA;AAAA,EAAA;AAAA,EAAAsI,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAtI,OAAA;AAAA,EAAA;AAAA,EAAAwgB,QAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAxgB,OAAA;AAAA,EAAA;AAAA,EAAAygB,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAAzgB,OAAA;AAAA,EAAA;AAAA,EAAA0gB,eAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA1gB,OAAA;AAAA,EAAA;AAAA,EAAA2gB,KAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA3gB,OAAA;AAAA,EAAA;AAAA,EAAAlE,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAkE,OAAA;AAAA,EAAA;AAAA,GCQb4gB,KAAoBziB,EAA6C,IAAI;AAE3E,SAAA0iB,KAAA;AACE,QAAAhZ,IAAY5I,EAAW2hB,EAAiB;AACxC,MAAI,CAAC/Y;AACH,UAAM,IAAIC,MAAM,qDAAqD;AACtE,SACMD;AAAG;AAcZ,SAAAE,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA1E,OAAA8M;AAAAA,IAAAC,cAAA/H;AAAAA,IAAA0I,eAAAA;AAAAA,IAAAC,aAAAzI;AAAAA,IAAAmF,UAAAjF;AAAAA,IAAArB,UAAAA;AAAAA,EAAAA,IAAAc,GAEZkI,IAAA/H,MAAAyB,SAAA,KAAAzB,GAEA2I,IAAAzI,MAAAuB,SAAA,aAAAvB,GACAmF,IAAAjF,MAAAqB,SAAA,KAAArB,GAGA,CAAApF,GAAAmN,CAAA,IAA0BN,GAAqBC,GAAiBC,GAAcW,CAAa;AAAC,MAAAnI;AAAA,EAAAd,EAAA,CAAA,MAAA4F,KAAA5F,SAAA0I,KAG1F5H,IAAAqI,CAAAA,MAAA;AACE,IAAKvD,KACH8C,EAASS,CAAS;AAAA,EACnB,GACFnJ,OAAA4F,GAAA5F,OAAA0I,GAAA1I,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AALH,QAAA+hB,IAAiBjhB;AAOhB,MAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAA4F,KAAA5F,SAAA+hB,KAAA/hB,EAAA,CAAA,MAAAzE,KAGoC2G,IAAA;AAAA,IAAA3G,OAAAA;AAAAA,IAAAwmB,UAAAA;AAAAA,IAAAnc,UAAAA;AAAAA,EAAAA,GAA2B5F,OAAA4F,GAAA5F,OAAA+hB,GAAA/hB,OAAAzE,GAAAyE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAIrC,QAAAmC,IAAA+G,MAAgB,gBAAgBpO,GAAM6N;AAAe,MAAAvG;AAAA,EAAApC,SAAAmC,KAAnEC,KAACtH,GAAM4L,MAAOvE,CAAqD,GAACnC,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAAA,MAAAqC;AAAA,EAAArC,EAAA,CAAA,MAAAV,KAAAU,UAAAkJ,KAAAlJ,EAAA,EAAA,MAAAoC,KAH7EC,IAAA,gBAAAC,EAAA,OAAA,EAAA,oBAAA,gCACO,MAAA,cACa4G,uBAAW,GAAA3G,EAAAC,EAAA7F,KACtByF,CAAoE,GAE1E9C,UAAAA,GACH,GAAWU,OAAAV,GAAAU,QAAAkJ,GAAAlJ,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAAA,MAAAyC;AAAA,SAAAzC,EAAA,EAAA,MAAAkC,KAAAlC,UAAAqC,KAPbI,sBAAAof,GAAA,UAAA,EAAmC,OAAA3f,GACjCG,UAAAA,GAOF,GAA6BrC,QAAAkC,GAAAlC,QAAAqC,GAAArC,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA,GAR7ByC;AAQ6B;AAYjC,SAAA6G,GAAAlJ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA1E,OAAAA;AAAAA,IAAAqK,UAAArF;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAAkBmJ,IAAAhJ,MAAAyB,SAAA,KAAAzB,GAC9B;AAAA,IAAAhF,OAAAiO;AAAAA,IAAAuY,UAAAA;AAAAA,IAAAnc,UAAA6D;AAAAA,EAAAA,IAA+DqY,GAAAA,GAC/Dra,IAAkB+B,MAAejO,GACjCoO,IAAmBF,KAAAF;AAA6B,MAAA9I;AAAA,EAAAT,EAAA,CAAA,MAAA2J,KAAA3J,SAAA+hB,KAAA/hB,EAAA,CAAA,MAAAzE,KAE5BkF,IAAAA,MAAA;AAClB,IAAKkJ,KACHoY,EAASxmB,CAAK;AAAA,EACf,GACFyE,OAAA2J,GAAA3J,OAAA+hB,GAAA/hB,OAAAzE,GAAAyE,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAJD,QAAAohB,IAAoB3gB,GAQKE,IAAAgJ,KAAc7O,GAAMyO;AAAa,MAAAzI;AAAA,EAAAd,SAAAW,KAA/CG,KAAChG,GAAMwd,MAAO3X,CAAiC,GAACX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAA+hB,KAAA/hB,SAAAzE,KAQ3C2G,IAAAA,MAAM6f,EAASxmB,CAAK,GAACyE,OAAA+hB,GAAA/hB,OAAAzE,GAAAyE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,EAAAnC,EAAA,CAAA,MAAAyH,KAAAzH,EAAA,EAAA,MAAA2J,KAAA3J,EAAA,EAAA,MAAAkC,KAAAlC,UAAAzE,KALjC4G,IAAA,gBAAAG,EAAA,WAAA,oBAAA,gCACO,MAAA,SACE/G,OAAAA,GACEkM,SAAAA,GACCkC,UAAAA,GACA,UAAAzH,GAAqB,GAAAK,EAAAC,EAAAzF,OACxBjC,GAAMiC,KAAM,GAAA,KAAA,OAAA,CAAA,GACnBiD,OAAAyH,GAAAzH,QAAA2J,GAAA3J,QAAAkC,GAAAlC,QAAAzE,GAAAyE,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA;AAEuB,QAAAoC,IAAAqF,IAAY3M,GAAM6mB,gBAAiB7mB,GAAM4mB;AAAgB,MAAArf;AAAA,EAAArC,UAAAoC,KAAzEC,KAACvH,GAAM2mB,QAASrf,CAAyD,GAACpC,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAAA,MAAAyC;AAAA,EAAAzC,UAAAyH,KAGhFhF,IAAAgF,KAAa,gBAAAnF,EAAA,QAAA,EAAA,oBAAA,iCAAA,GAAAC,EAAAC,EAAApF,MAAkBtC,GAAM8mB,GAAI,EAAA,CAAA,GAAI5hB,QAAAyH,GAAAzH,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,EAAA1C,EAAA,EAAA,MAAAqC,KAAArC,UAAAyC,KAJhDC,uFAAAH,EAAAC,EAAApF,MACSiF,CAA0E,GACjF,eAAA,IAECI,UAAAA,GACH,GAAYzC,QAAAqC,GAAArC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,UAAAV,KACXqD,IAAArD,KAAY,gBAAAgD,EAAA,QAAA,EAAA,oBAAA,iCAAA,GAAAC,EAAAC,EAAApF,IAAA,GAAYkC,UAAAA,EAAAA,CAAS,GAAYU,QAAAV,GAAAU,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA4C;AAAA,SAAA5C,EAAA,EAAA,MAAAohB,KAAAphB,EAAA,EAAA,MAAA0C,KAAA1C,EAAA,EAAA,MAAA2C,KAAA3C,EAAA,EAAA,MAAAc,KAAAd,UAAAmC,KAlBhDS,IAAA,gBAAA9C,EAAA,SAAA,EAAA,oBAAA,gCAAA,GAAAyC,EAAAC,EAAAxF,OACS8D,CAAgD,GAC9CsgB,YAETjf,UAAAA;AAAAA,IAAAA;AAAAA,IAQAO;AAAAA,IAMCC;AAAAA,EAAAA,GACH,GAAa3C,QAAAohB,GAAAphB,QAAA0C,GAAA1C,QAAA2C,GAAA3C,QAAAc,GAAAd,QAAAmC,GAAAnC,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA,GAnBb4C;AAmBa;AAIV,MAAMof,KAAa;AAAA,EAAA,MACxBhZ;AAAAA,EAAAA,MACAM;AACF,GC5GaxO,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAA+I,UAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA/I,OAAA;AAAA,EAAA;AAAA,EAAAiD,SAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,oBAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,EAAAghB,WAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAhhB,OAAA;AAAA,EAAA;AAAA,EAAAihB,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAjhB,OAAA;AAAA,EAAA;AAAA,EAAAkhB,qBAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAlhB,OAAA;AAAA,EAAA;AAAA,EAAAmhB,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAnhB,OAAA;AAAA,EAAA;AAAA,EAAAohB,kBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAphB,OAAA;AAAA,EAAA;AAAA,EAAAqhB,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,eAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAArhB,OAAA;AAAA,EAAA;AAAA,EAAAshB,mBAAAA,CAiEGC,MAA0B,CAAA;AAAA,IAAA,mBAC5CA,mCAAAA;AAAAA,IAASvhB,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,kBAAA4c,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA7b,QAATwgB,CAAS;AAAA,EAAA,CAAA;AAAA,EAAAC,eAAAA,CAEKlP,GAAgB/Y,MAAiB,CAAA;AAAA,IAAA,iBAC/C+Y,gCAAAA;AAAAA,IAAM,oBACN/Y,kCAAAA;AAAAA,IAASyG,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,eAAA4c,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA7b,QADTuR,CAAM;AAAA,IAAA,iBACN/Y,KAASwH;AAAAA,EAAAA,CAAA;AAAA,EAAA0gB,iBAAAA,CAEOpP,GAAe9Y,MAAiB,CAAA;AAAA,IAAA,gBAChD8Y,8BAAAA;AAAAA,IAAK,oBACL9Y,kCAAAA;AAAAA,IAASyG,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,cAAA4c,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA7b,QADTsR,CAAK;AAAA,IAAA,iBACL9Y,KAASwH;AAAAA,EAAAA,CAAA;AAAA,GChEA2gB,KAAoBvjB,EAA6C,IAAI;AAE3E,SAAAwjB,KAAA;AACL,QAAA9Z,IAAY5I,EAAWyiB,EAAiB;AACxC,MAAI,CAAC7Z;AAAK,UAAM,IAAIC,MAAM,oEAAoE;AAAC,SACxFD;AAAG;AChBL,SAAA+Z,KAAA;AAAA,QAAA7iB,IAAAC,EAAAA,EAAA,EAAA,GACL6iB,IAAoBtjB,EAA8B,IAAI,GACtDujB,IAAmBvjB,EAA8B,IAAI,GACrD,CAAAwjB,GAAAC,CAAA,IAAkCzb,EAAS,CAAC,GAC5C,CAAA0b,GAAAC,CAAA,IAAoC3b,EAAS,CAAC,GAC9C,CAAA4b,GAAAC,CAAA,IAAwC7b,EAAS,CAAC,GAClD,CAAA8b,GAAAC,CAAA,IAAsC/b,EAAS,CAAC,GAChD,CAAAgc,GAAAC,CAAA,IAAwCjc,EAAS,CAAC,GAClD,CAAAkc,GAAAC,CAAA,IAAsCnc,EAAS,CAAC,GAChD,CAAAoc,GAAAC,CAAA,IAAkCrc,EAAS,EAAK,GAChDsc,IAAuBtkB,EAA6C,IAAI;AAAC,MAAAY;AAAA,EAAAJ,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAExC3H,IAAAA,MAAA;AAC/B,UAAA2jB,IAAWjB,EAAWrjB;AACtB,IAAKskB,MAELd,EAAac,EAAEf,SAAU,GACzBG,EAAcY,EAAEb,UAAW,GAC3BG,EAAgBU,EAAEX,YAAa,GAC/BG,EAAeQ,EAAET,WAAY,GAC7BG,EAAgBM,EAAEP,YAAa,GAC/BG,EAAeI,EAAEL,WAAY,GAC7BG,EAAa,EAAI,GAEbC,EAAcrkB,WAAUmM,aAAakY,EAAcrkB,OAAQ,GAC/DqkB,EAAcrkB,UAAWqM,WAAW,MAAM+X,EAAa,EAAK,GAAG,GAAI;AAAA,EAA7C,GACvB7jB,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAdD,QAAAgkB,IAAqB5jB;AAcf,MAAAG,GAAAE;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAGIxH,IAAAA,MAAA;AACR,UAAA0jB,IAAWnB,EAAWrjB;AACtB,QAAI,CAACskB;AAAE;AAEP,UAAAG,IAAiB,IAAIC,eAAe,MAAA;AAClCd,MAAAA,EAAgBU,EAAEX,YAAa,GAC/BG,EAAeQ,EAAET,WAAY,GAC7BG,EAAgBM,EAAEP,YAAa,GAC/BG,EAAeI,EAAEL,WAAY;AAAA,IAAC,CAC/B;AACDQ,WAAAA,EAAQE,QAASL,CAAE,GAEnBV,EAAgBU,EAAEX,YAAa,GAC/BG,EAAeQ,EAAET,WAAY,GAC7BG,EAAgBM,EAAEP,YAAa,GAC/BG,EAAeI,EAAEL,WAAY,GAEtB,MAAMQ,EAAQG,WAAAA;AAAAA,EAAa,GACjC5jB,IAAA,CAAA,GAAET,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAlBLmD,EAAU5C,GAkBPE,CAAE;AAAC,MAAAE,GAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAGIpH,IAAAA,MAAA;AACR,UAAA2jB,IAAWxB,EAAWrjB;AACtB,QAAKskB;AACLA,aAAAA,EAAE5X,iBAAkB,UAAU6X,GAAc;AAAA,QAAAnP,SAAU;AAAA,MAAA,CAAK,GACpD,MAAMkP,EAAE3X,oBAAqB,UAAU4X,CAAY;AAAA,EAAC,GAC1DljB,IAAA,CAACkjB,CAAY,GAAChkB,OAAAW,GAAAX,OAAAc,MAAAH,IAAAX,EAAA,CAAA,GAAAc,IAAAd,EAAA,CAAA,IALjBmD,EAAUxC,GAKPG,CAAc;AAAC,MAAAoB;AAAA,SAAAlC,EAAA,CAAA,MAAAwjB,KAAAxjB,EAAA,CAAA,MAAA0jB,KAAA1jB,EAAA,CAAA,MAAAojB,KAAApjB,SAAAkjB,KAAAljB,EAAA,CAAA,MAAAgjB,KAAAhjB,EAAA,EAAA,MAAAsjB,KAAAtjB,EAAA,EAAA,MAAA4jB,KAEX1hB,IAAA;AAAA,IAAA4gB,aAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAE,YAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAE,aAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAE,aAAAA;AAAAA,IAAAE,WAAAA;AAAAA,EAAAA,GAUN5jB,OAAAwjB,GAAAxjB,OAAA0jB,GAAA1jB,OAAAojB,GAAApjB,OAAAkjB,GAAAljB,OAAAgjB,GAAAhjB,QAAAsjB,GAAAtjB,QAAA4jB,GAAA5jB,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAVMkC;AAUN;AC1DH,SAAA8G,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACZ0I,IAAY+Z,GAAAA;AAAmB,MAAAtiB;AAAA,EAAAP,SAAAV,KAI3BiB,IAAA,gBAAA+B,EAAA,OAAA,EAAA,oBAAA,gCAAA,GAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM4L,IAAK,GAAGpH,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,EAAA,CAAA,MAAA8I,KAAA9I,SAAAO,KADrDE,sBAAAkiB,GAAA,UAAA,EAAmC7Z,OAAAA,GACjCvI,UAAAA,GACF,GAA6BP,OAAA8I,GAAA9I,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAF7BS;AAE6B;AAWjC,SAAA8jB,GAAAnkB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAkB;AAAA,IAAAX,UAAAA;AAAAA,IAAAkjB,WAAAA;AAAAA,EAAAA,IAAApiB,GAChB;AAAA,IAAA0iB,aAAAA;AAAAA,EAAAA,IAAsBF,GAAAA;AAAe,MAAAriB;AAAA,EAAAP,SAAAwiB,KAKRjiB,IAAAiiB,KAAa,QAAQ1nB,GAAMynB,kBAAmBC,CAAS,GAACxiB,OAAAwiB,GAAAxiB,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,EAAAT,SAAAO,KAA1EE,KAAC3F,GAAMkP,UAAWzJ,CAAwD,GAACP,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAX,EAAA,CAAA,MAAAV,KAAAU,SAAAS,KAAAT,EAAA,CAAA,MAAA8iB,KAFpFniB,mFACOmiB,KAAAA,MAAWvgB,EAAAC,EAAA7F,KACT8D,CAA2E,GAEjFnB,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAS,GAAAT,OAAA8iB,GAAA9iB,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GALXW;AAKW;AAUf,SAAAiO,GAAAxO,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACf;AAAA,IAAA2iB,YAAAA;AAAAA,EAAAA,IAAqBH,GAAAA;AAAe,MAAAriB;AAAA,SAAAP,EAAA,CAAA,MAAAV,KAAAU,SAAA+iB,KAElCxiB,mFAAewiB,QAAU,GAAAxgB,EAAAC,EAAA7F,KAAS7B,GAAMoJ,OAAQ,GAC7C5E,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAA+iB,GAAA/iB,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFXO;AAEW;AAaf,SAAAikB,GAAApkB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAmB;AAAA,IAAAiJ,aAAA3I;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAAC8I,IAAA3I,MAAAyB,SAAA,aAAAzB,GAClB;AAAA,IAAAqjB,WAAAA;AAAAA,IAAAR,cAAAA;AAAAA,IAAAE,aAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAE,aAAAA;AAAAA,EAAAA,IAA0Ed,GAAAA;AAM1E,MAAI,EAFF1Z,MAAgB,aAAaka,IAAeI,IAAeF,IAAcI;AAE3D,WAAS;AAMnB,QAAAjjB,IAAAyI,MAAgB,aAAapO,GAAMonB,oBAAqBpnB,GAAMqnB,qBAC9DxhB,IAAAijB,IAAY9oB,GAAMunB,mBAAoBvnB,GAAMsnB;AAAgB,MAAAthB;AAAA,EAAAd,EAAA,CAAA,MAAAS,KAAAT,SAAAW,KAHvDG,IAAA,CACLhG,GAAMmnB,WACNxhB,GACAE,CAA4D,GAC7DX,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAAc,KALHoB,IAAA,gBAAAI,EAAA,OAAA,EAAA,oBAAA,gCAAA,GAAAC,EAAAC,EAAA7F,KACSmE,CAIN,GAEAxB,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA,GARXkC;AAQW;AAUf,SAAAuiB,GAAArkB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAAiJ,aAAA3I;AAAAA,EAAAA,IAAAH,GAAC8I,IAAA3I,MAAAyB,SAAA,aAAAzB,GACd;AAAA,IAAAuiB,aAAAA;AAAAA,IAAAE,WAAAA;AAAAA,IAAAE,YAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAE,aAAAA;AAAAA,IAAAE,cAAAA;AAAAA,IAAAE,aAAAA;AAAAA,EAAAA,IACEd,GAAAA,GACF8B,IAAoBllB,EAAO,EAAK,GAChCmlB,IAAoBnlB,EAAO,CAAC,GAC5BolB,IAAuBplB,EAAO,CAAC,GAE/BqlB,IAAmB3b,MAAgB,YAEnC4b,IACIrT,KAAIC,IADiBmT,IACXrB,IAAeJ,IAAgB,MAC/BM,IAAcJ,IAAe,KADO,EACA,GAElDyB,IAAkBF,IAAazB,IAAeI,IAAeF,IAAcI,GAC3EsB,IAAkBH,IAAArB,IAAAE,GAClBuB,IAAwBH,IAAmB,MAAOE,GAClDE,IAAqBL,IAAA7B,IAAAE,GACrBiC,IAAoBJ,IAAY,IAAKG,IAAeH,KAAcC,IAAYC,KAA1D;AAA6E,MAAAxkB;AAAA,EAAAT,EAAA,CAAA,MAAA6kB,KAAA7kB,SAAAmlB,KAAAnlB,EAAA,CAAA,MAAA8kB,KAE9ErkB,IAAAokB,IACf/pB,GAAM2nB,cAAe,GAAGqC,CAAgB,KAAK,cAAcK,CAAW,KACO,IAA7ErqB,GAAM4nB,gBAAiB,GAAGoC,CAAgB,KAAK,cAAcK,CAAW,KAAK,GAACnlB,OAAA6kB,GAAA7kB,OAAAmlB,GAAAnlB,OAAA8kB,GAAA9kB,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAFlF,QAAAolB,IAAmB3kB;AAE+D,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA6kB,KAAA7kB,SAAA8iB,KAGhFniB,IAAA3B,CAAAA,MAAA;AACEA,IAAAA,EAACiV,eAAAA,GACDyQ,EAAWjlB,UAAW,IACtBklB,EAAWllB,UAAWolB,IAAa7lB,EAACmU,UAAWnU,EAACkU,SAChD0R,EAAcnlB,UAAWolB,IACpB/B,EAAWrjB,SAAmBujB,aAA9B,IACAF,EAAWrjB,SAAoByjB,cAA/B,GACHlkB,EAAC0I,OAAsB8L,kBAAoBxU,EAACyU,SAAU;AAAA,EAAC,GAC1DzT,OAAA6kB,GAAA7kB,OAAA8iB,GAAA9iB,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AATH,QAAA8S,IAA0BnS;AAWzB,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA6kB,KAAA7kB,EAAA,CAAA,MAAA+kB,KAAA/kB,EAAA,CAAA,MAAAilB,KAAAjlB,EAAA,EAAA,MAAAglB,KAAAhlB,UAAA8iB,KAGChiB,IAAA8S,CAAAA,MAAA;AACE,QAAI,CAAC8Q,EAAWjlB;AAAQ;AACxB,UAAAskB,IAAWjB,EAAWrjB;AACtB,QAAI,CAACskB;AAAE;AAEP,UAAAsB,KAAeR,IAAa7lB,EAACmU,UAAWnU,EAACkU,WAAYyR,EAAWllB,SAChE6lB,IAAoBP,KAAaC,IAAYC,IAC7CM,IAAoBF,IAAQC;AAE5B,IAAIT,IACFd,EAAEf,YAAa4B,EAAcnlB,UAAW8lB,IAExCxB,EAAEb,aAAc0B,EAAcnlB,UAAW8lB;AAAAA,EAC1C,GACFvlB,OAAA6kB,GAAA7kB,OAAA+kB,GAAA/kB,OAAAilB,GAAAjlB,QAAAglB,GAAAhlB,QAAA8iB,GAAA9iB,QAAAc,KAAAA,IAAAd,EAAA,EAAA;AAfH,QAAA2T,IAA0B7S;AAiBzB,MAAAoB;AAAA,EAAAlC,EAAA,EAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEmC7F,IAAAA,MAAA;AAClCwiB,IAAAA,EAAWjlB,UAAW;AAAA,EAAH,GACpBO,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAFD,QAAAmU,IAAwBjS;AAElB,MAAAC;AAAA,EAAAnC,UAAAolB,KAOKjjB,KAACrH,GAAMwnB,OAAQ8C,CAAU,GAACplB,QAAAolB,GAAAplB,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,EAAA,MAAA8S,KAAA9S,UAAA2T,KAAA3T,EAAA,EAAA,MAAAmC,KAJnCC,IAAA,gBAAAE,EAAA,OAAA,EAAA,oBAAA,iCACiBwQ,eAAAA,GACAa,eAAAA,GACFQ,aAAAA,GAAe,GAAA5R,EAAAC,EAAA7F,KACrBwF,CAA0B,GAAA,GACjCnC,QAAA8S,GAAA9S,QAAA2T,GAAA3T,QAAAmC,GAAAnC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA,GALFoC;AAKE;AAIC,MAAMojB,KAAa;AAAA,EAAA,MACxBxc;AAAAA,EACAub,UAAAA;AAAAA,EACA3V,SAAAA;AAAAA,EACA4V,WAAAA;AAAAA,EACAC,OAAAA;AACF,GCnKa3pB,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAod,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAApd,OAAA;AAAA,EAAA;AAAA,EAAA1F,OAAA;AAAA,IAAA,gBAAA;AAAA,IAAA0F,OAAA;AAAA,EAAA;AAAA,EAAAsb,aAAA;AAAA,IAAA,gBAAA;AAAA,IAAAtb,OAAA;AAAA,EAAA;AAAA,EAAAwD,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAxD,OAAA;AAAA,EAAA;AAAA,EAAA4I,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAAgJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAhJ,OAAA;AAAA,EAAA;AAAA,EAAAqX,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAArX,OAAA;AAAA,EAAA;AAAA,EAAAsX,cAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAtX,OAAA;AAAA,EAAA;AAAA,EAAAsd,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAAtd,OAAA;AAAA,EAAA;AAAA,EAAAwkB,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAAxkB,OAAA;AAAA,EAAA;AAAA,GCWNykB,KAAgBtmB,EAAyC,IAAI;AAEnE,SAAAumB,KAAA;AACL,QAAA7c,IAAY5I,EAAWwlB,EAAa;AACpC,MAAI,CAAC5c;AAAK,UAAM,IAAIC,MAAM,4DAA4D;AAAC,SAChFD;AAAG;ACXL,SAAA8c,GAAAxlB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAuB;AAAA,IAAAqI,cAAAA;AAAAA,IAAA/M,OAAA8M;AAAAA,IAAAY,eAAAA;AAAAA,IAAA4c,eAAAA;AAAAA,EAAAA,IAAAzlB,GAM5B,CAAA7E,GAAAmN,CAAA,IAA0BN,GACxBC,GACAC,KAAA,MACAW,CACF,GACA,CAAA4B,GAAA+T,CAAA,IAAwBpX,EAAS,EAAK;AAAC,MAAAjH;AAAA,EAAAP,SAAA6lB,KACsBtlB,IAAAslB,KAAA,CAAA,GAAmB7lB,OAAA6lB,GAAA7lB,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAhF,QAAA,CAAA8lB,GAAAC,CAAA,IAA4Bve,EAAiCjH,CAAmB,GAChF,CAAAse,GAAAC,CAAA,IAA0CtX,EAAwB,IAAI,GACtEwe,IAAkB7lB,GAAAA,GAClB6e,IAAgBxf,EAAuB,IAAI,GAC3Cyf,IAAmBzf,EAAiC,IAAI;AAAC,MAAAiB;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACjCtH,wBAAIye,IAAAA,GAAoDlf,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAhF,QAAAmf,IAAiB3f,EAAOiB,CAAwD;AAAC,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAC/CpH,IAAA,CAAA,GAAEX,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAApC,QAAAof,IAAiB5f,EAAiBmB,CAAE;AAAC,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEXjH,IAAAA,MAAA;AACxB8d,IAAAA,EAAQ,EAAK,GACbE,EAAiB,IAAI,GACrBG,EAAUxf,SAAe4O,MAAAA;AAAAA,EAAE,GAC5BrO,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAJD,QAAAsf,IAAcxe;AAIR,MAAAoB;AAAA,EAAAlC,SAAAzE,KAEqB2G,IAAAA,MAAA;AACzB0c,IAAAA,EAAQvS,CAAAA,MAAA;AACN,UAAKA;AAaHyS,QAAAA,EAAiB,IAAI;AAAA,WAbd;AACP,cAAAgC,IAAc3B,EAAQ1f,SACtB+f,IAAcJ,EAAQ3f;AACtB,YAAAwmB,IAA2B;AAC3B,mBAAKrnB,KAAY4gB,GAAK;AACpB,gBAAAlH,KAAawI,EAAKd,IAAKphB,CAAE;AACzB,cAAI0Z,MAAQA,GAAI/c,UAAWA,GAAK;AAC9B0qB,YAAAA,IAAQrnB;AACR;AAAA,UAAK;AAAA,QACN;AAEHkgB,QAAAA,EAAiBmH,MAAUzG,EAAK3f,SAAU,IAAI2f,EAAK,CAAA,IAAxB,KAAmC;AAAA,MAAC;AAGhE,aACM,CAACnT;AAAAA,IAAI,CACb;AAAA,EAAC,GACHrM,OAAAzE,GAAAyE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAnBD,QAAAuf,IAAerd;AAmBJ,MAAAC;AAAA,EAAAnC,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEuB5F,IAAAA,CAAAsG,GAAAzL,MAAA;AAChC+oB,IAAAA,EAAUhF,CAAAA,MACJ1U,EAAK5D,CAAC,MAAMzL,IAAcqP,IACvB;AAAA,MAAA,GAAIA;AAAAA,MAAI,CAAG5D,CAAC,GAAGzL;AAAAA,IAAAA,CACvB;AAAA,EAAC,GACHgD,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AALD,QAAAkmB,IAAsB/jB;AAKhB,MAAAC;AAAA,EAAApC,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAE2B3F,IAAAA,CAAA+jB,GAAAhd,GAAAsW,MAAA;AAC/BN,IAAAA,EAAQ1f,QAAQigB,IAAK9gB,GAAI;AAAA,MAAArD,OAAQ4N;AAAAA,MAASsW,SAAAA;AAAAA,IAAAA,CAAU;AACpD,UAAA1gB,IAAYogB,EAAQ1f,SACpBkgB,IAAY,CAAA,GAAI5gB,EAAG6gB,MAAO;AAC1BD,WAAAA,EAAGE,KAAM,CAAApjB,IAAAqjB,OAAA;AACP,YAAAC,KAAYhhB,EAAGihB,IAAKvjB,EAAU,GAACgjB,SAC/BQ,KAAYlhB,EAAGihB,IAAKF,EAAU,GAACL;AAC/B,aAAI,CAACM,MAAD,CAASE,KAAY,IAClBF,GAAGG,wBAAyBD,EAAG,IAAIE,KAAIC,8BAAvC,KAAA;AAAA,IAA4E,CACpF,GACDhB,EAAQ3f,UAAWkgB,GACZ,MAAA;AACLR,MAAAA,EAAQ1f,QAAQhB,OAAQG,CAAE,GAC1BwgB,EAAQ3f,UAAW2f,EAAQ3f,QAAQP,OAAQnE,CAAAA,OAAOA,OAAM6D,CAAE;AAAA,IAA1C;AAAA,EACjB,GACFoB,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAfD,QAAAqgB,IAAqBje;AAef,MAAAC,GAAAI;AAAA,EAAAzC,EAAA,CAAA,MAAA6K,KAAA7K,UAAA0I,KAGIrG,IAAAA,MAAA;AACR,UAAAqE,IAAasY,EAAOvf;AACpB,QAAI,CAACiH,KAAD,CAAUmE;AAAI;AAElB,UAAAyV,IAAA,SAAAthB,GAAA;AACE,YAAAuhB,IAAcnB,EAAQ3f,SACtB2mB,KAAcjH,EAAQ1f;AACtB,UAAI+f,EAAK3f,WAAY;AAASwmB,QAAAA,EAE9B,SAAQrnB,EAAC2E,KAAAA;AAAAA,UAAI,KACN,aAAW;AACd3E,YAAAA,EAACiV,eAAAA,GACD6K,EAAiBwH,CAAAA,OAAA;AACf,oBAAA5F,KAAYrU,KAAOmT,EAAKmB,QAAStU,EAAS,IAA9B;AAA+B,qBACpCmT,GAAOoB,KAAM,KAAKpB,EAAK3f,MAAO;AAAA,YAAC,CACvC;AACD,kBAAAwmB;AAAAA,UAAK;AAAA,UAAA,KAEF,WAAS;AACZrnB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiB2B,CAAAA,OAAA;AACf,oBAAAG,KAAYvU,KAAOmT,EAAKmB,QAAStU,EAAQ,IAA7B;AAA8B,qBACnCmT,GAAOoB,KAAM,IAAIpB,EAAK3f,UAAW2f,EAAK3f,MAAO;AAAA,YAAC,CACtD;AACD,kBAAAwmB;AAAAA,UAAK;AAAA,UAAA,KAEF,QAAM;AACTrnB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiBU,EAAK,CAAA,CAAG;AACzB,kBAAA6G;AAAAA,UAAK;AAAA,UAAA,KAEF,OAAK;AACRrnB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiBU,EAAMA,EAAK3f,SAAU,CAAC,CAAC;AACxC,kBAAAwmB;AAAAA,UAAK;AAAA,UAAA,KAEF;AAAA,UAAO,KACP,KAAG;AACNrnB,YAAAA,EAACiV,eAAAA,GACD6K,EAAiB+B,CAAAA,OAAA;AACf,kBAAIxU,IAAI;AACN,sBAAAka,KAAazF,GAAKd,IAAK3T,EAAI;AAC3B,gBAAIiM,OACF5P,EAAS4P,GAAI/c,KAAM,GACnB+jB,EAAAA;AAAAA,cACD;AACF,qBACMjT;AAAAA,YAAI,CACZ;AACD,kBAAAga;AAAAA,UAAK;AAAA,UAAA,KAEF;AAAA,UAAQ,KACR;AACH/G,YAAAA,EAAAA;AAAAA,QAAO;AAAA,IAGV;AAGH5Y,WAAAA,EAAIyF,iBAAkB,WAAWmU,CAAa,GACvC,MAAM5Z,EAAI0F,oBAAqB,WAAWkU,CAAa;AAAA,EAAC,GAC9D7d,KAACoI,GAAMyU,GAAO5W,CAAQ,GAAC1I,OAAA6K,GAAA7K,QAAA0I,GAAA1I,QAAAqC,GAAArC,QAAAyC,MAAAJ,IAAArC,EAAA,EAAA,GAAAyC,IAAAzC,EAAA,EAAA,IA7D1BmD,EAAUd,GA6DPI,CAAuB;AAAC,MAAAC;AAAA,EAAA1C,EAAA,EAAA,MAAA6e,KAAA7e,EAAA,EAAA,MAAA8lB,KAAA9lB,EAAA,EAAA,MAAAgmB,KAAAhmB,UAAA6K,KAAA7K,EAAA,EAAA,MAAA0I,KAAA1I,EAAA,EAAA,MAAAuf,KAAAvf,EAAA,EAAA,MAAAzE,KAGlBmH,IAAA;AAAA,IAAAmI,MAAAA;AAAAA,IAAA0U,QAAAA;AAAAA,IAAAD,OAAAA;AAAAA,IAAA/jB,OAAAA;AAAAA,IAAAmN,UAAAA;AAAAA,IAAAod,QAAAA;AAAAA,IAAAI,eAAAA;AAAAA,IAAAF,WAAAA;AAAAA,IAAAnH,eAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAuB,cAAAA;AAAAA,IAAApB,YAAAA;AAAAA,EAAAA,GAaNjf,QAAA6e,GAAA7e,QAAA8lB,GAAA9lB,QAAAgmB,GAAAhmB,QAAA6K,GAAA7K,QAAA0I,GAAA1I,QAAAuf,GAAAvf,QAAAzE,GAAAyE,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAdH,QAAA8I,IACSpG;AA2BR,MAAAC;AAAA,SAAA3C,UAAA8I,KAEMnG,IAAA;AAAA,IAAAmG,KAAAA;AAAAA,IAAAkW,SAAAA;AAAAA,EAAAA,GAAchf,QAAA8I,GAAA9I,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA,GAAd2C;AAAc;AChKvB,SAAAqG,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA6D,MAAAA;AAAAA,IAAAwE,cAAAA;AAAAA,IAAA/M,OAAAA;AAAAA,IAAA0N,eAAAA;AAAAA,IAAA4c,eAAAA;AAAAA,IAAAvmB,UAAAA;AAAAA,EAAAA,IAAAc;AAA8E,MAAAG;AAAA,EAAAP,EAAA,CAAA,MAAAsI,KAAAtI,EAAA,CAAA,MAAA6lB,KAAA7lB,EAAA,CAAA,MAAAiJ,KAAAjJ,SAAAzE,KACrDgF,IAAA;AAAA,IAAA+H,cAAAA;AAAAA,IAAA/M,OAAAA;AAAAA,IAAA0N,eAAAA;AAAAA,IAAA4c,eAAAA;AAAAA,EAAAA,GAAmD7lB,OAAAsI,GAAAtI,OAAA6lB,GAAA7lB,OAAAiJ,GAAAjJ,OAAAzE,GAAAyE,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAxF,QAAA;AAAA,IAAA8I,KAAAA;AAAAA,IAAAkW,SAAAA;AAAAA,EAAAA,IAAuB4G,GAAcrlB,CAAmD;AAAC,MAAAE;AAAA,EAAAT,EAAA,CAAA,MAAA8I,KAAA9I,SAAA8D,KAKlFrD,IAAAqD,KAAQ,gBAAAxB,EAAA,SAAA,EAAA,oBAAA,wBAAiB,MAAA,UAAewB,MAAAA,GAAa,OAAAgF,EAAGvN,SAAH,IAAe,KAAA,QAAA,GAAAgH,EAAAC,EAAAzF,KAAA,GAAA,GAAIiD,OAAA8I,GAAA9I,OAAA8D,GAAA9D,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,EAAAX,EAAA,CAAA,MAAAV,KAAAU,SAAAgf,KAAAhf,EAAA,EAAA,MAAAS,KAD3EE,IAAA,gBAAAb,EAAA,OAAA,EAAA,oBAAA,wBAAekf,KAAAA,GAAO,GAAAzc,EAAAC,EAAA7F,KAAS7B,GAAM4L,IAAK,GACvCjG,UAAAA;AAAAA,IAAAA;AAAAA,IACAnB;AAAAA,EAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAgf,GAAAhf,QAAAS,GAAAT,QAAAW,KAAAA,IAAAX,EAAA,EAAA;AAAA,MAAAc;AAAA,SAAAd,EAAA,EAAA,MAAA8I,KAAA9I,UAAAW,KAJbG,sBAAA4kB,GAAA,UAAA,EAA+B5c,OAAAA,GAC7BnI,UAAAA,GAIF,GAAyBX,QAAA8I,GAAA9I,QAAAW,GAAAX,QAAAc,KAAAA,IAAAd,EAAA,EAAA,GALzBc;AAKyB;AAK7B,SAAAyL,GAAAnM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,IAAA,cAAA6H;AAAAA,EAAAA,IAAA/G,GAOf;AAAA,IAAAyK,MAAAA;AAAAA,IAAA0U,QAAAA;AAAAA,IAAAyG,WAAAA;AAAAA,IAAAnH,eAAAA;AAAAA,IAAAI,YAAAA;AAAAA,EAAAA,IAA6D0G,GAAAA,GAC7D1E,IAAiBzhB,EAA0B,IAAI;AAAC,MAAAe;AAAA,EAAAP,SAAAif,KAGtC1e,IAAAA,MAAA;AACR0e,IAAAA,EAAUxf,UAAWwhB,EAAQxhB;AAAAA,EAAX,GACnBO,OAAAif,GAAAjf,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFDmD,EAAU5C,CAET;AAWkB,QAAAE,IAAAoK,IAAAmb,IAAAhkB,QACQrB,IAAAke,KAAA7c;AAA0B,MAAAlB;AAAA,SAAAd,SAAAmH,KAAAnH,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAA6K,KAAA7K,EAAA,CAAA,MAAAS,KAAAT,SAAAW,KAAAX,EAAA,CAAA,MAAAuf,KATnDze,IAAA,gBAAAwB,EAAA,UAAA,EAAA,oBAAA,wBACO2e,KAAAA,GACA,MAAA,UACC,MAAA,YACG1B,SAAAA,GACGpY,cAAAA,GACG0D,iBAAAA,GACD,iBAAA,WACC,iBAAApK,GACQ,yBAAAE,GAA0B,GAAA4B,EAAAC,EAAA9F,QAC1C5B,GAAMujB,OAAQ,GAEpB/e,UAAAA,GACH,GAAcU,OAAAmH,GAAAnH,OAAAV,GAAAU,OAAA6K,GAAA7K,OAAAS,GAAAT,OAAAW,GAAAX,OAAAuf,GAAAvf,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAbdc;AAac;AAKlB,SAAA0lB,GAAApmB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAAsc,aAAAA;AAAAA,EAAAA,IAAAnc,GACb;AAAA,IAAA7E,OAAAA;AAAAA,IAAAuqB,QAAAA;AAAAA,EAAAA,IAAwBH,GAAAA,GACxBc,IAAgBlrB,IAASuqB,EAAOvqB,CAAK,KAAZA,IAAT,MAGIgF,IAAAkmB,IAAU3rB,GAAMS,QAAST,GAAMyhB,aAC9C9b,IAAAgmB,KAAAlK;AAAsB,MAAA5b;AAAA,SAAAX,EAAA,CAAA,MAAAO,KAAAP,SAAAS,KADzBE,IAAA,gBAAA2B,EAAA,QAAA,EAAA,oBAAA,wBAAA,GAAAC,EAAAC,EAAApF,MAAkBmD,CAA2C,GAC1DE,UAAAA,EAAAA,CACH,GAAYT,OAAAO,GAAAP,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAFZW;AAEY;AAKhB,SAAAkD,GAAAzD,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAkC,MAAAG;AAAA,EAAAP,SAAAV,KAGzCiB,IAAAjB,KACC,gBAAAgD,EAAA,OAAA,EACQ,OAAA,MACC,QAAA,MACC,SAAA,aACH,MAAA,QACE,QAAA,gBACK,aAAA,KACE,eAAA,SACC,gBAAA,SACH,eAAA,QAEZ,UAAA,gBAAAA,EAAA,QAAA,EAAQ,GAAA,eAAA,CAAc,EAAA,CACxB,GACDtC,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,SAAAO,KAfHE,IAAA,gBAAA6B,EAAA,QAAA,EAAA,oBAAA,wBAAA,GAAAC,EAAAC,EAAApF,MAAkBtC,GAAM2J,IAAK,GAC1BlE,UAAAA,EAAAA,CAeH,GAAYP,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAhBZS;AAgBY;AAKhB,SAAAygB,GAAA9gB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACb;AAAA,IAAAyK,MAAAA;AAAAA,IAAAyU,OAAAA;AAAAA,IAAA0G,WAAAA;AAAAA,EAAAA,IAAiCL,GAAAA;AAAW,MAAAplB;AAAA,EAAAP,EAAA,CAAA,MAAAsf,KAAAtf,SAAA6K,KAIvCtK,IAAAsK,KAAQ,gBAAAvI,2DAAAC,EAAAC,EAAA7F,KAAiB7B,GAAM+O,QAAS,GAAWyV,SAAAA,GAAK,GAAItf,OAAAsf,GAAAtf,OAAA6K,GAAA7K,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAI9C,QAAAS,KAACoK,GACQlK,IAAA,CAACkK,KAAQ/P,GAAM2qB;AAAO,MAAA3kB;AAAA,EAAAd,SAAAW,KAArCG,KAAChG,GAAMmP,OAAQtJ,CAAsB,GAACX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAAgmB,KAAAhmB,EAAA,CAAA,MAAAS,KAAAT,SAAAc,KAJ/CoB,sBAAA,OAAA,EAAA,oBAAA,yBACM8jB,IAAAA,GACC,MAAA,WACQ,eAAAvlB,GAAK,GAAA8B,EAAAC,EAAA7F,KACXmE,CAAsC,GAE5CxB,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAgmB,GAAAhmB,OAAAS,GAAAT,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,EAAA,MAAAO,KAAAP,UAAAkC,KATbC,4BACG5B,UAAAA;AAAAA,IAAAA;AAAAA,IACD2B;AAAAA,EAAAA,GAOW,GACVlC,QAAAO,GAAAP,QAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAVHmC;AAUG;AAUP,SAAAmH,GAAAlJ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA1E,OAAA4N;AAAAA,IAAA7J,UAAAA;AAAAA,EAAAA,IAAAc,GACZ;AAAA,IAAA7E,OAAAmrB;AAAAA,IAAAhe,UAAAA;AAAAA,IAAA4W,OAAAA;AAAAA,IAAA4G,eAAAA;AAAAA,IAAArH,eAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAuB,cAAAA;AAAAA,EAAAA,IAQIsF,GAAAA,GACJ/mB,IAAWuB,GAAAA,GACX+Z,IAAY1a,EAAuB,IAAI,GACvCmnB,IAAmBD,MAAkBvd,GACrCgY,IAAsBtC,MAAkBjgB;AAAE,MAAA2B,GAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAmJ,KAAAnJ,SAAAkmB,KAGhC3lB,IAAAA,MAAA;AACR,UAAA+N,IAAW4L,EAAGza;AACd,QAAI,CAAC6O;AAAE;AACP,UAAAkK,IAAalK,EAAEsY;AACf,IAAIpO,KAAM0N,EAAc/c,GAAWqP,CAAI;AAAA,EAAC,GACvC/X,IAAA,CAAC0I,GAAW+c,CAAa,GAAClmB,OAAAmJ,GAAAnJ,OAAAkmB,GAAAlmB,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAL7BmD,EAAU5C,GAKPE,CAA0B;AAAC,MAAAE,GAAAG;AAAA,EAAAd,EAAA,CAAA,MAAApB,KAAAoB,SAAAmJ,KAAAnJ,EAAA,CAAA,MAAAqgB,KAEpB1f,IAAAA,MAAA;AACR,UAAAkmB,IAAW3M,EAAGza;AACd,QAAK6O;AAAU,aACR+R,EAAazhB,GAAIuK,GAAWmF,CAAE;AAAA,EAAC,GACrCxN,KAAClC,GAAIuK,GAAWkX,CAAY,GAACrgB,OAAApB,GAAAoB,OAAAmJ,GAAAnJ,OAAAqgB,GAAArgB,OAAAW,GAAAX,OAAAc,MAAAH,IAAAX,EAAA,CAAA,GAAAc,IAAAd,EAAA,CAAA,IAJhCmD,EAAUxC,GAIPG,CAA6B;AAAC,MAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAAsf,KAAAtf,UAAAmJ,KAAAnJ,EAAA,EAAA,MAAA0I,KAEbxG,IAAAA,MAAA;AAClBwG,IAAAA,EAASS,CAAS,GAClBmW,EAAAA;AAAAA,EAAO,GACRtf,OAAAsf,GAAAtf,QAAAmJ,GAAAnJ,QAAA0I,GAAA1I,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAHD,QAAAohB,IAAoBlf;AAGnB,MAAAC;AAAA,EAAAnC,EAAA,EAAA,MAAApB,KAAAoB,UAAA8e,KASmB3c,IAAAA,MAAM2c,EAAiBlgB,CAAE,GAACoB,QAAApB,GAAAoB,QAAA8e,GAAA9e,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA;AAGxC,QAAAoC,IAAAukB,KAAc7rB,GAAMyd,cACpBlW,IAAA8e,KAAiBrmB,GAAMyjB;AAAgB,MAAA9b;AAAA,EAAAzC,EAAA,EAAA,MAAAoC,KAAApC,UAAAqC,KAHlCI,IAAA,CACL3H,GAAMwd,MACNlW,GACAC,CAAuC,GACxCrC,QAAAoC,GAAApC,QAAAqC,GAAArC,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,SAAA1C,UAAAV,KAAAU,EAAA,EAAA,MAAAohB,KAAAphB,EAAA,EAAA,MAAApB,KAAAoB,EAAA,EAAA,MAAA2mB,KAAA3mB,UAAAmC,KAAAnC,EAAA,EAAA,MAAAyC,KAXHC,4EACOwX,KAAAA,GACDtb,IAAAA,GACC,MAAA,UACU+nB,oBACNvF,YACO,gBAAAjf,GAA0B,GAAAI,EAAAC,EAAA7F,KACnC8F,CAIN,GAEAnD,UAAAA,GACH,GAAWU,QAAAV,GAAAU,QAAAohB,GAAAphB,QAAApB,GAAAoB,QAAA2mB,GAAA3mB,QAAAmC,GAAAnC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GAdX0C;AAcW;AAKf,SAAAoW,GAAA1Y,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAkB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KAC1CiB,IAAA,gBAAA+B,EAAA,UAAA,oBAAA,yBAAA,GAAAC,EAAAC,EAAApF,IAAA,GAAYkC,UAAAA,EAAAA,CAAS,GAAYU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAAjCO;AAAiC;AAGnC,MAAMumB,KAAS;AAAA,EAAA,MACpB9d;AAAAA,EAAAA,SACAuD;AAAAA,EACAia,OAAAA;AAAAA,EACA3iB,MAAAA;AAAAA,EACAqd,OAAAA;AAAAA,EAAAA,MACA5X;AAAAA,EACAwP,UAAAA;AACF,GCxLahe,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAA8lB,OAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA9lB,OAAA;AAAA,EAAA;AAAA,EAAA+lB,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA/lB,OAAA;AAAA,EAAA;AAAA,EAAAgmB,oBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAhmB,OAAA;AAAA,EAAA;AAAA,EAAAimB,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAjmB,OAAA;AAAA,EAAA;AAAA,EAAAkmB,aAAA;AAAA,IAAA,oBAAA;AAAA,IAAAlmB,OAAA;AAAA,EAAA;AAAA,EAAAqX,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAArX,OAAA;AAAA,EAAA;AAAA,EAAAmmB,YAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAnmB,OAAA;AAAA,EAAA;AAAA,GCMNomB,KAAiBjoB,EAA0C,IAAI;AAErE,SAAAkoB,KAAA;AACL,QAAAxe,IAAY5I,EAAWmnB,EAAc;AACrC,MAAI,CAACve;AAAK,UAAM,IAAIC,MAAM,8DAA8D;AAAC,SAClFD;AAAG;ACDZ,SAAAE,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAA/D,OAAA8M;AAAAA,IAAAC,cAAAA;AAAAA,IAAAW,eAAAA;AAAAA,EAAAA,IAAA7I;AAA0E,MAAAG;AAAA,EAAAP,SAAAiJ,KAIpF1I,IAAA0I,IAAAR,CAAAA,MAAA;AAEM,IAAIA,MAAM,QAAMQ,EAAcR,CAAC;AAAA,EAAC,IAFtCzG,QAIahC,OAAAiJ,GAAAjJ,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAPf,QAAA,CAAAunB,GAAAxF,CAAA,IAAgC3Z,GAC9BC,GACAC,KAAA,MACA/H,CAKF;AAAC,MAAAE;AAAA,EAAAT,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACiEtH,wBAAIvC,IAAAA,GAAK8B,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAA3E,QAAA,CAAAwnB,GAAAC,CAAA,IAA4CjgB,EAAsB/G,CAAS;AAAC,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAC1CpH,IAAA,CAAA,GAAEX,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAApC,QAAAof,IAAiB5f,EAAiBmB,CAAE;AAAC,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAELjH,IAAAimB,CAAAA,MAAA;AAC9BU,IAAAA,EAAkBpb,CAAAA,MAAA;AAChB,YAAAjD,IAAa,IAAIlL,IAAImO,CAAI;AACzB,aAAIjD,EAAIse,IAAKX,CAAK,IAChB3d,EAAI3K,OAAQsoB,CAAK,IAEjB3d,EAAI5K,IAAKuoB,CAAK,GAET3d;AAAAA,IAAI,CACZ;AAAA,EAAC,GACHpJ,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAVD,QAAA2nB,IAAoB7mB;AAUd,MAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAE2B7F,IAAA3G,CAAAA,OAC1B6jB,EAAQ3f,QAAQiK,SAAUnO,CAAK,KAClC6jB,EAAQ3f,QAAQd,KAAMpD,CAAK,GAEtB,MAAA;AACL6jB,IAAAA,EAAQ3f,UAAW2f,EAAQ3f,QAAQP,OAAQ0oB,CAAAA,MAAOnf,MAAMlN,CAAK;AAAA,EAA7C,IAEnByE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAPD,QAAAqgB,IAAqBne;AAOf,MAAAC,GAAAC;AAAA,EAAApC,SAAAunB,KAGIplB,IAAAA,MAAA;AACR,IAAIolB,KACFE,EAAkBtV,EAGjB;AAAA,EACF,GACA/P,IAAA,CAACmlB,CAAW,GAACvnB,OAAAunB,GAAAvnB,OAAAmC,GAAAnC,OAAAoC,MAAAD,IAAAnC,EAAA,CAAA,GAAAoC,IAAApC,EAAA,CAAA,IAPhBmD,EAAUhB,GAOPC,CAAa;AAAC,MAAAC;AAAA,EAAArC,EAAA,CAAA,MAAAunB,KAAAvnB,UAAAwnB,KAAAxnB,EAAA,EAAA,MAAA+hB,KAIN1f,IAAA;AAAA,IAAAklB,aAAAA;AAAAA,IAAAxF,UAAAA;AAAAA,IAAAyF,gBAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAtH,cAAAA;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,GAA4Epf,OAAAunB,GAAAvnB,QAAAwnB,GAAAxnB,QAAA+hB,GAAA/hB,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAAA,MAAAyC;AAAA,EAAAzC,UAAAV,KAEnFmD,6EAAe,MAAA,cAAY,GAAAF,EAAAC,EAAAtF,KAAQpC,GAAM4L,IAAK,GAC3CpH,UAAAA,GACH,GAAWU,QAAAV,GAAAU,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,SAAA1C,EAAA,EAAA,MAAAqC,KAAArC,UAAAyC,KALbC,sBAAA2kB,GAAA,UAAA,EACS,OAAAhlB,GAEPI,UAAAA,GAGF,GAA0BzC,QAAAqC,GAAArC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GAN1B0C;AAM0B;AAnD9B,SAAAyP,GAAA4O,GAAA;AAAA,SAuCe1U;AAAI;AAyBnB,SAASwb,GAAM;AAAA,EAACvoB,UAAAA;AAAAA,EAAUtC,OAAAA;AAAAA,EAAO8qB,UAAAA;AAAAA,EAAUC,iBAAAA;AAA2B,GAAG;AACvE,QAAMpkB,IAAMmkB,KAAY9qB,GAClB;AAAA,IAACwqB,gBAAAA;AAAAA,IAAgBG,aAAAA;AAAAA,IAAaJ,aAAAA;AAAAA,EAAAA,IAAeD,GAAAA,GAC7CU,IAAaR,EAAeE,IAAI/jB,CAAG,GACnCskB,IAAWzoB,EAAuB,IAAI;AAG5C2D,EAAAA,EAAU,MAAM;AACd,QAAI,CAACokB,KAAeC,EAAeE,IAAI/jB,CAAG,EAAG;AAC7C,UAAM2K,IAAK2Z,EAASxoB;AACpB,QAAI,CAAC6O,EAAI;AAET,IADkBA,EAAG4Z,cAAc,oBAAoBX,CAAW,IAAI,KAEpEI,EAAYhkB,CAAG;AAAA,EAEnB,GAAG,CAAC4jB,GAAa5jB,GAAK6jB,GAAgBG,CAAW,CAAC,GAGlDxkB,EAAU,MAAM;AACd,IAAI4kB,KAAmB,CAACP,EAAeE,IAAI/jB,CAAG,KAC5CgkB,EAAYhkB,CAAG;AAAA,EAInB,GAAG,CAAA,CAAE;AAEL,QAAMwkB,IACA,CAACZ,KAAe,CAACU,EAASxoB,UAAgB,KACvC,CAAC,CAACwoB,EAASxoB,QAAQyoB,cAAc,oBAAoBX,CAAW,IAAI;AAG7E,SACE,gBAAAznB,EAAA,OAAA,EAAA,oBAAA,2BAAU,KAAKmoB,GAAS,GAAA1lB,EAAAC,EAAA7F,KAAQ7B,GAAOisB,KAAK,GAC1C,UAAA;AAAA,IAAA,gBAAAjnB,EAAA,UAAA,EAAA,oBAAA,2BACE,MAAK,UACL,SAAS,MAAM6nB,EAAYhkB,CAAG,MAAEpB,EAAAC,EAAA9F,QACxB5B,GAAOksB,cAAcmB,KAAkBrtB,GAAOmsB,kBAAkB,GACxE,iBAAee,GAEf,UAAA;AAAA,MAAA,gBAAA1lB,EAAA,UAAA,oBAAA,2BAAA,GAAAC,EAAAC,EAAApF,MAAmBtC,GAAOosB,SAASc,KAAcltB,GAAOqsB,WAAW,GACjE,UAAA,gBAAA7kB,EAAC,OAAA,EACC,OAAO,IACP,QAAQ,IACR,SAAQ,aACR,MAAK,QACL,QAAO,gBACP,aAAa,KACb,eAAc,SACd,gBAAe,SAEf,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,gBAAA,CAAe,GACzB,GACF;AAAA,MACCtF;AAAAA,IAAAA,GACH;AAAA,IACCgrB,KAAc1oB;AAAAA,EAAAA,GACjB;AAEJ;AASA,SAAAgK,GAAAlJ,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAA1E,OAAAA;AAAAA,IAAA+D,UAAAA;AAAAA,EAAAA,IAAAc,GACZ;AAAA,IAAAmnB,aAAAA;AAAAA,IAAAxF,UAAAA;AAAAA,IAAA1B,cAAAA;AAAAA,EAAAA,IAA8CiH,GAAAA,GAC9CrkB,IAAiBskB,MAAgBhsB;AAAK,MAAAgF,GAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAqgB,KAAArgB,SAAAzE,KAE5BgF,IAAAA,MACD8f,EAAa9kB,CAAK,GACxBkF,IAAA,CAAClF,GAAO8kB,CAAY,GAACrgB,OAAAqgB,GAAArgB,OAAAzE,GAAAyE,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAFxBmD,EAAU5C,GAEPE,CAAqB;AAAC,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA+hB,KAAA/hB,SAAAzE,KAMZoF,IAAAA,MAAMohB,EAASxmB,CAAK,GAACyE,OAAA+hB,GAAA/hB,OAAAzE,GAAAyE,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AACT,QAAAc,IAAAmC,KAAYnI,GAAMssB;AAAW,MAAAllB;AAAA,EAAAlC,SAAAc,KAA3CoB,KAACpH,GAAMwd,MAAOxX,CAA6B,GAACd,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AACrC,QAAAmC,IAAAc,IAAA,SAAAjB;AAA6B,MAAAI;AAAA,SAAApC,EAAA,CAAA,MAAAV,KAAAU,EAAA,EAAA,MAAAW,KAAAX,EAAA,EAAA,MAAAkC,KAAAlC,EAAA,EAAA,MAAAmC,KAAAnC,UAAAzE,KAL7C6G,sBAAA,UAAA,EAAA,oBAAA,2BACO,MAAA,UACW7G,kBAAAA,GACP,SAAAoF,GAAqB,GAAA4B,EAAAC,EAAA9F,QACvBwF,CAA4C,GACrC,gBAAAC,GAEb7C,UAAAA,GACH,GAAcU,OAAAV,GAAAU,QAAAW,GAAAX,QAAAkC,GAAAlC,QAAAmC,GAAAnC,QAAAzE,GAAAyE,QAAAoC,KAAAA,IAAApC,EAAA,EAAA,GARdoC;AAQc;AAIX,MAAMgmB,KAAU;AAAA,EAAA,MACrBpf;AAAAA,EACA6e,OAAAA;AAAAA,EACAve,MAAAA;AACF,GCnKaxO,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAonB,SAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,kCAAA;AAAA,IAAApnB,OAAA;AAAA,EAAA;AAAA,EAAAgE,IAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAhE,OAAA;AAAA,EAAA;AAAA,EAAAiE,IAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAmJ,IAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAnJ,OAAA;AAAA,EAAA;AAAA,EAAAqnB,QAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,eAAA;AAAA,IAAArnB,OAAA;AAAA,EAAA;AAAA,GCEb+D,KAAU;AAAA,EACdC,IAAInK,GAAOmK;AAAAA,EACXC,IAAIpK,GAAOoK;AAAAA,EACXkF,IAAItP,GAAOsP;AACb;AAEO,SAAAme,GAAAnoB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAvC,MAAA6C;AAAAA,IAAAvD,OAAAyD;AAAAA,EAAAA,IAAAL,GAAC1C,IAAA6C,MAAAyB,SAAA,OAAAzB,GAAavD,IAAAyD,MAAAuB,SAAA,YAAAvB,GAGEE,IAAAqE,GAAQtH,CAAI;AAAC,MAAAoD;AAAA,EAAAd,SAAAW,KAA/CG,gFAAAyB,EAAAC,EAAA7F,KAAkB7B,GAAMutB,SAAU1nB,CAAa,GAAG,eAAA,IAAW,GAAGX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,SAAAhD,KAChEkF,IAAA,gBAAAI,EAAA,QAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAApF,MAAkBtC,GAAMwtB,MAAO,GAAGtrB,UAAAA,EAAAA,CAAM,GAAYgD,OAAAhD,GAAAgD,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KAFtDC,IAAA,gBAAArC,EAAA,OAAA,EAAA,oBAAA,0BAAe,MAAA,aAAQyC,EAAAC,EAAA7F,KAAQ7B,GAAM4L,IAAK,GACxC5F,UAAAA;AAAAA,IAAAA;AAAAA,IACAoB;AAAAA,EAAAA,GACF,GAAWlC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAHXmC;AAGW;ACjBR,MAAMrH,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA,EAAAmD,SAAA;AAAA,IAAA,gBAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAAoD,SAAA;AAAA,IAAA,gBAAA;AAAA,IAAApD,OAAA;AAAA,EAAA;AAAA,EAAAqD,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAArD,OAAA;AAAA,EAAA;AAAA,EAAAiW,OAAA;AAAA,IAAA,gBAAA;AAAA,IAAAjW,OAAA;AAAA,EAAA;AAAA;ACaZ,SAAAunB,GAAApoB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAoB;AAAA,IAAA6D,MAAAA;AAAAA,IAAApG,MAAA6C;AAAAA,IAAAmE,SAAAjE;AAAAA,EAAAA,IAAAL,GAAO1C,IAAA6C,MAAAyB,SAAA,KAAAzB,GAECI,IAAA7F,GAFU2F,MAAAuB,SAAA,UAAAvB,CAEI;AAAC,MAAAK;AAAA,EAAAd,SAAAW,KAA7BG,KAAChG,GAAM4L,MAAO/F,CAAe,GAACX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAA8D,KAAA9D,SAAAtC,KAC7CwE,IAAA,gBAAAI,EAACuB,IAAA,EAAWC,MAAAA,GAAYpG,MAAAA,EAAAA,CAAI,GAAIsC,OAAA8D,GAAA9D,OAAAtC,GAAAsC,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KADlCC,IAAA,gBAAAG,EAAA,OAAA,EAAA,oBAAA,gCAAA,GAAAC,EAAAC,EAAA7F,KAAiBmE,CAA8B,GAC7CoB,UAAAA,EAAAA,CACF,GAAWlC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAFXmC;AAEW;ACrBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,MAAMsmB,KAAiB,CAAA;AACvB,SAASC,GAASC,GAAK;AACrB,EAAI,QAAQ,IAAI,aAAa,UAAUF,GAAeE,CAAG,MAGzDF,GAAeE,CAAG,IAAI,IACtB,QAAQ,MAAM,6BAA6BA,CAAG,EAAE;AAClD;AACA,MAAMC,KAAqB,oBAAI,IAAI,CAAC,OAAO,yBAAyB,eAAe,qBAAqB,aAAa,gBAAgB,iBAAiB,iBAAiB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,oBAAoB,gBAAgB,iBAAiB,qBAAqB,iBAAiB,eAAe,iBAAiB,eAAe,gBAAgB,qBAAqB,cAAc,mBAAmB,cAAc,aAAa,cAAc,kBAAkB,wBAAwB,oBAAoB,aAAa,oBAAoB,iBAAiB,gBAAgB,iBAAiB,iBAAiB,wBAAwB,iBAAiB,iBAAiB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,aAAa,iBAAiB,iBAAiB,iBAAiB,kBAAkB,kBAAkB,gBAAgB,aAAa,WAAW,YAAY,eAAe,YAAY,kBAAkB,gBAAgB,OAAO,YAAY,YAAY,aAAa,iBAAiB,gBAAgB,iBAAiB,OAAO,UAAU,UAAU,QAAQ,MAAM,SAAS,aAAa,SAAS,QAAQ,WAAW,OAAO,aAAa,OAAO,aAAa,YAAY,QAAQ,cAAc,iBAAiB,UAAU,YAAY,WAAW,iBAAiB,UAAU,SAAS,WAAW,WAAW,aAAa,cAAc,sBAAsB,qBAAqB,uBAAuB,WAAW,aAAa,aAAa,WAAW,UAAU,wBAAwB,WAAW,mBAAmB,iBAAiB,kBAAkB,kBAAkB,iBAAiB,gBAAgB,iBAAiB,eAAe,YAAY,YAAY,qBAAqB,WAAW,eAAe,YAAY,kBAAkB,OAAO,YAAY,QAAQ,QAAQ,YAAY,cAAc,OAAO,UAAU,QAAQ,SAAS,YAAY,UAAU,QAAQ,SAAS,SAAS,4BAA4B,eAAe,gBAAgB,gBAAgB,eAAe,cAAc,eAAe,aAAa,iBAAiB,cAAc,eAAe,cAAc,CAAC;AACpkE,SAASC,GAAcllB,GAAK;AAC1B,SAAOilB,GAAmB,IAAIjlB,CAAG,KAAKA,EAAI,QAAQ,OAAO,IAAI;AAC/D;AACA,IAAI3J,KAAW,CAAA;AACf,OAAO,eAAeA,IAAU,cAAc;AAAA,EAC5C,OAAO;AACT,CAAC;AACD,IAAIC,KAAWD,GAAS,SAAS,QAC7BE,KAAQ,oBAAI,QAAO,GACnBC,KAAc;AAClB,SAASC,GAAaC,GAAS;AAC7B,MAAIC,GACAC,GACAC;AACJ,SAAIH,KAAW,SACbC,IAAeD,EAAQ,iBAAiB,IACxCE,IAAaF,EAAQ,eAAe,IACpCG,IAAYH,EAAQ,YAEf,WAAkB;AAOvB,aANII,IAAoB,CAAA,GACpBC,IAAY,IACZC,IAAc,MACdC,IAAc,IACdC,IAAYP,IAAe,OAAOJ,IAClCY,IAAS,IAAI,MAAM,UAAU,MAAM,GAC9BC,IAAI,GAAGA,IAAI,UAAU,QAAQA;AACpC,MAAAD,EAAOC,CAAC,IAAI,UAAUA,CAAC;AAEzB,WAAOD,EAAO,SAAS,KAAG;AACxB,UAAIE,IAAgBF,EAAO,IAAG;AAC9B,UAAI,EAAAE,KAAiB,QAAQA,MAAkB,KAG/C;AAAA,YAAI,MAAM,QAAQA,CAAa,GAAG;AAChC,mBAASC,IAAK,GAAGA,IAAKD,EAAc,QAAQC;AAC1C,YAAAH,EAAO,KAAKE,EAAcC,CAAE,CAAC;AAE/B;AAAA,QACF;AACA,YAAIC,IAAQV,KAAa,OAAOA,EAAUQ,CAAa,IAAIA;AAC3D,YAAIE,EAAM,SAAS,MAAM;AACvB,cAAIC,IAAiB;AACrB,cAAIN,KAAa,QAAQA,EAAU,IAAIK,CAAK,GAAG;AAC7C,gBAAIE,IAAaP,EAAU,IAAIK,CAAK;AACpC,YAAIE,KAAc,SAChBD,IAAiBC,EAAW,CAAC,GAC7BR,IAAcQ,EAAW,CAAC,GAC1BX,EAAkB,KAAK,MAAMA,GAAmBW,EAAW,CAAC,CAAC,GAC7DP,IAAYO,EAAW,CAAC;AAAA,UAE5B,OAAO;AACL,gBAAIC,IAAyB,CAAA;AAC7B,qBAASC,KAAQJ,GAAO;AACtB,kBAAIK,IAAQL,EAAMI,CAAI;AACtB,kBAAIA,MAASnB,IAAa;AACxB,oBAAIqB,IAAmBN,EAAMI,CAAI;AACjC,gBAAIE,MAAqB,OACvBZ,IAAcA,IAAcY,IAAmB,OAAOZ,IAAcY;AAEtE;AAAA,cACF;AACA,cAAI,OAAOD,KAAU,YAAYA,MAAU,OACpCd,EAAkB,SAASa,CAAI,MAClCb,EAAkB,KAAKa,CAAI,GACvBT,KAAa,QACfQ,EAAuB,KAAKC,CAAI,GAE9B,OAAOC,KAAU,aACnBJ,KAAkBA,IAAiB,MAAMI,IAAQA,MAIrD,QAAQ,MAAM,WAAW,OAAOD,GAAM,UAAU,EAAE,OAAO,OAAOC,CAAK,GAAG,6BAAiC,CAAC;AAAA,YAE9G;AACA,gBAAIV,KAAa,MAAM;AACrB,kBAAIY,IAAU,oBAAI,QAAO;AACzB,cAAAZ,EAAU,IAAIK,GAAO,CAACC,GAAgBE,GAAwBT,GAAaa,CAAO,CAAC,GACnFZ,IAAYY;AAAA,YACd;AAAA,UACF;AACA,UAAIN,MACFT,IAAYA,IAAYS,IAAiB,MAAMT,IAAYS;AAAA,QAE/D,WACMZ;AACF,UAAII,KAAe,SACjBA,IAAc,CAAA,IAEhBA,IAAc,OAAO,OAAO,CAAA,GAAIO,GAAOP,CAAW;AAAA,aAC7C;AACL,cAAIe,IAAW;AACf,mBAASC,KAAST,GAAO;AACvB,gBAAIU,IAASV,EAAMS,CAAK;AACxB,YAAIC,MAAW,WACRnB,EAAkB,SAASkB,CAAK,MAC/BC,KAAU,SACRjB,KAAe,SACjBA,IAAc,CAAA,IAEZe,KAAY,SACdA,IAAW,CAAA,IAEbA,EAASC,CAAK,IAAIC,IAEpBnB,EAAkB,KAAKkB,CAAK,GAC5Bd,IAAY;AAAA,UAGlB;AACA,UAAIa,KAAY,SACdf,IAAc,OAAO,OAAOe,GAAUf,CAAW;AAAA,QAErD;AAAA;AAAA,IAEJ;AACA,QAAIkB,IAAa,CAACnB,GAAWC,GAAaC,CAAW;AACrD,WAAOiB;AAAA,EACT;AACF;AACA,IAAIC,KAAS7B,KAAWD,GAAS,SAASI,GAAY;AACtD0B,GAAO,UAAU1B;AACjB,MAAM2B,KAAkB9B,GAAS,QAAQ;AAAA,EACvC,YAAY;AACd,CAAC;AACD,SAAS+B,MAASlB,GAAQ;AACxB,QAAM,CAACJ,GAAWQ,GAAOe,CAAY,IAAIF,GAAgBjB,CAAM,GACzDoB,IAAS,CAAA;AAOf,MANIxB,KAAa,QAAQA,MAAc,OACrCwB,EAAO,YAAYxB,IAEjBQ,KAAS,SACXgB,EAAO,QAAQhB,IAEbe,KAAgB,QAAQA,MAAiB,IAAI;AAC/C,UAAME,IAASF,EAAa,MAAM,GAAG,GAC/BG,IAAW,CAAA;AACjB,eAAWC,KAASF,GAAQ;AAC1B,YAAMG,IAAUD,EAAM,KAAI,GACpB,CAACE,GAAMC,CAAI,IAAIF,EAAQ,MAAM,GAAG;AACtC,MAAIE,KAAQ,SACVJ,EAASG,CAAI,IAAIH,EAASG,CAAI,KAAK,OAAO,GAAGH,EAASG,CAAI,CAAC,IAAIC,CAAI,KAAKA;AAAA,IAE5E;AACA,IAAAN,EAAO,gBAAgB,IAAI,OAAO,KAAKE,CAAQ,EAAE,IAAI,CAAAG,MAAQ,GAAGA,CAAI,IAAIH,EAASG,CAAI,CAAC,EAAE,EAAE,KAAK,IAAI;AAAA,EACrG;AACA,SAAOL;AACT;AACA,SAAS4sB,GAAoB/lB,GAAO;AAClC,SAAO,KAAKA,CAAK,EAAE,QAAQ,CAAAY,MAAO;AAEhC,IADgBklB,GAAcllB,CAAG,MAE/B+kB,GAAS,iBAAiB/kB,CAAG,GAAG,GAChC,OAAOZ,EAAMY,CAAG;AAAA,EAEpB,CAAC;AACH;AACA,SAASolB,EAAyBC,GAASC,GAAc;AACvD,QAAMC,IAAa;AAAA,IACjB,OAAO;AAAA,IACP,eAAe,QAAQF,CAAO;AAAA,EAClC;AACE,WAASG,EAAU;AAAA,IACjB,KAAAjP;AAAA,IACA,GAAGnX;AAAA,EACP,GAAK;AACD,UAAM;AAAA,MACJ,KAAKqmB;AAAA,MACL,OAAAluB;AAAA,MACA,GAAGmuB;AAAA,IACT,IAAQtmB,GACEumB,IAAYD;AAClB,IAAAP,GAAoBQ,CAAS,GACzBF,KAAW,SACbE,EAAU,UAAUF,IAElBrmB,EAAM,QAAQ,SAChBumB,EAAU,OAAOvmB,EAAM,SAAS,SAAS,iBAAiBA,EAAM,OAE9DimB,MAAY,WACdM,EAAU,OAAOA,EAAU,OAAOA,EAAU,OAAO,YAC1CN,MAAY,WAAWA,MAAY,gBAC5CM,EAAU,MAAMA,EAAU,MAAMA,EAAU,MAAM;AAElD,UAAMC,IAAiBvtB,GAAM,CAACktB,GAAYD,GAAc/tB,CAAK,CAAC;AAM9D,WALgBoH,EAAI0mB,GAAS;AAAA,MAC3B,GAAGM;AAAA,MACH,GAAGC;AAAA,MACH,KAAKrP;AAAA,IACX,CAAK;AAAA,EAEH;AACA,SAAAiP,EAAU,cAAc,QAAQH,CAAO,IAChCG;AACT;AACA,MAAMruB,IAAS;AAAA,EACb,OAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,IACzB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EACE,SAAS;AAAA,IACP,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,SAAS;AAAA,IACP,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,IAAI;AAAA,IACF,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX;AAAA,EACE,KAAK;AAAA,IACH,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,OAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EACE,MAAM;AAAA,IACJ,oBAAoB;AAAA,IACpB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,qBAAqB;AAAA,IACrB,OAAO;AAAA,EACX;AAAA,EACE,UAAU;AAAA,IACR,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX;AACA,GACM0uB,KAAM1uB,EAAO,QACb2uB,KAAY3uB,EAAO,OACnB4uB,KAAU5uB,EAAO,OACjB6uB,KAAM7uB,EAAO,QACb8uB,KAAQ9uB,EAAO,QACf+uB,KAAQ/uB,EAAO,QACfgvB,KAAehvB,EAAO,OACtBivB,KAAO,MACPC,KAAW,CAAClvB,EAAO,aAAaA,EAAO,MAAM,GAC7CmvB,KAAS,CAACnvB,EAAO,QAAQA,EAAO,OAAO,GACvCovB,KAAQ,MACRC,KAAQrvB,EAAO,OACfsvB,KAAOtvB,EAAO,QACduvB,KAAavvB,EAAO,OACpBwvB,KAAWxvB,EAAO,OAClByvB,KAASzvB,EAAO,OAChB+B,KAAU,CAAC/B,EAAO,OAAOA,EAAO,OAAO,GACvC0vB,KAAW1vB,EAAO,OAClB2vB,KAAO,CAAC3vB,EAAO,OAAOA,EAAO,EAAE,GAC/B4vB,KAAM5vB,EAAO,QACb6vB,KAAQ7vB,EAAO,KACf8vB,KAAU,CAAC9vB,EAAO,aAAaA,EAAO,KAAK,GAC3C+vB,KAAQ,MACRC,KAAQ,MACRC,KAAUjwB,EAAO,QACjBkwB,KAAOlwB,EAAO,OACdmwB,KAASnwB,EAAO,OAChBowB,KAASpwB,EAAO,QAChBqwB,KAAQrwB,EAAO,OACfswB,KAAO,CAACtwB,EAAO,MAAMA,EAAO,KAAK,GACjCuwB,KAAa,MACbC,KAAW,MACXC,KAAMzwB,EAAO,OACb0wB,KAAQ,CAAC1wB,EAAO,OAAOA,EAAO,OAAO,GACrC2wB,KAAM,MACNC,KAAY5wB,EAAO,OACnB6wB,KAAW7wB,EAAO,aAClB8wB,KAAS9wB,EAAO,QAChB+wB,KAAW,CAAC/wB,EAAO,QAAQA,EAAO,MAAM,GACxCgxB,KAAQhxB,EAAO,QACfixB,KAAQjxB,EAAO,QACfkxB,KAAa,CAAClxB,EAAO,aAAaA,EAAO,QAAQ,GACjDmxB,KAAM,MACNC,KAAO,CAACpxB,EAAO,MAAMA,EAAO,KAAK,GACjCwC,IAAgB;AAAA,EACpB,GAAGksB;AAAA,EACH,SAASC;AAAA,EACT,OAAOC;AAAA,EACP,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,YAAYC;AAAA,EACZ,IAAIC;AAAA,EACJ,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,IAAI1tB;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,QAAQ2tB;AAAA,EACR,IAAIC;AAAA,EACJ,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,OAAOC;AAAA,EACP,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,OAAOC;AAAA,EACP,IAAIC;AAAA,EACJ,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,GAAGC;AAAA,EACH,SAASC;AAAA,EACT,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,QAAQC;AAAA,EACR,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,UAAUC;AAAA,EACV,GAAGC;AAAA,EACH,IAAIC;AACN,GACMzvB,KAAIssB,EAAyB,KAAKzrB,EAAc,CAAC,GACjD6uB,KAAUpD,EAAyB,WAAWzrB,EAAc,OAAO,GACnE8uB,KAAQrD,EAAyB,SAASzrB,EAAc,KAAK,GAC7DwiB,KAAIiJ,EAAyB,KAAKzrB,EAAc,CAAC,GACjD+uB,KAAMtD,EAAyB,OAAOzrB,EAAc,GAAG,GACvDgvB,KAAMvD,EAAyB,OAAOzrB,EAAc,GAAG,GACvDivB,KAAaxD,EAAyB,cAAczrB,EAAc,UAAU,GAC5EkvB,KAAKzD,EAAyB,MAAMzrB,EAAc,EAAE,GACpDZ,KAASqsB,EAAyB,UAAUzrB,EAAc,MAAM,GAChEmZ,KAAOsS,EAAyB,QAAQzrB,EAAc,IAAI,GAC1DmvB,KAAM1D,EAAyB,OAAOzrB,EAAc,GAAG,GACvDX,KAAMosB,EAAyB,OAAOzrB,EAAc,GAAG,GACvDovB,KAAK3D,EAAyB,MAAMzrB,EAAc,EAAE,GACpDqvB,KAAW5D,EAAyB,YAAYzrB,EAAc,QAAQ,GACtEkN,KAASue,EAAyB,UAAUzrB,EAAc,MAAM,GAChEV,KAAOmsB,EAAyB,QAAQzrB,EAAc,IAAI,GAC1D2a,KAAK8Q,EAAyB,MAAMzrB,EAAc,EAAE,GACpDsP,KAAKmc,EAAyB,MAAMzrB,EAAc,EAAE,GACpD4a,KAAK6Q,EAAyB,MAAMzrB,EAAc,EAAE,GACpD6a,KAAK4Q,EAAyB,MAAMzrB,EAAc,EAAE,GACpD8a,KAAK2Q,EAAyB,MAAMzrB,EAAc,EAAE,GACpD+a,KAAK0Q,EAAyB,MAAMzrB,EAAc,EAAE,GACpDR,KAASisB,EAAyB,UAAUzrB,EAAc,MAAM,GAChEsvB,KAAK7D,EAAyB,MAAMzrB,EAAc,EAAE,GACpDvC,KAAIguB,EAAyB,KAAKzrB,EAAc,CAAC,GACjDuvB,KAAM9D,EAAyB,OAAOzrB,EAAc,GAAG,GACvDP,KAAQgsB,EAAyB,SAASzrB,EAAc,KAAK,GAC7DwvB,KAAM/D,EAAyB,OAAOzrB,EAAc,GAAG,GACvDyvB,KAAMhE,EAAyB,OAAOzrB,EAAc,GAAG,GACvDN,KAAQ+rB,EAAyB,SAASzrB,EAAc,KAAK,GAC7D0vB,KAAKjE,EAAyB,MAAMzrB,EAAc,EAAE,GACpDL,KAAO8rB,EAAyB,QAAQzrB,EAAc,IAAI,GAC1D2vB,KAAOlE,EAAyB,QAAQzrB,EAAc,IAAI,GAC1DJ,KAAM6rB,EAAyB,OAAOzrB,EAAc,GAAG,GACvD4vB,KAAKnE,EAAyB,MAAMzrB,EAAc,EAAE,GACpD6vB,KAAWpE,EAAyB,YAAYzrB,EAAc,QAAQ,GACtE8vB,KAASrE,EAAyB,UAAUzrB,EAAc,MAAM,GAChEH,KAAI4rB,EAAyB,KAAKzrB,EAAc,CAAC,GACjD+vB,KAAMtE,EAAyB,OAAOzrB,EAAc,GAAG,GACvDgwB,KAAIvE,EAAyB,KAAKzrB,EAAc,CAAC,GACjDiwB,KAAUxE,EAAyB,WAAWzrB,EAAc,OAAO,GACnEkwB,KAASzE,EAAyB,UAAUzrB,EAAc,MAAM,GAChEF,KAAO2rB,EAAyB,QAAQzrB,EAAc,IAAI,GAC1DmwB,KAAS1E,EAAyB,UAAUzrB,EAAc,MAAM,GAChEowB,KAAM3E,EAAyB,OAAOzrB,EAAc,GAAG,GACvDqwB,KAAM5E,EAAyB,OAAOzrB,EAAc,GAAG,GACvDD,KAAW0rB,EAAyB,YAAYzrB,EAAc,QAAQ,GACtEswB,KAAI7E,EAAyB,KAAKzrB,EAAc,CAAC,GACjDuwB,KAAK9E,EAAyB,MAAMzrB,EAAc,EAAE;AAC1D,IAAIwwB,KAAoB,uBAAO,OAAO;AAAA,EACpC,WAAW;AAAA,EACX,GAAGrxB;AAAA,EACH,SAAS0vB;AAAA,EACT,OAAOC;AAAA,EACP,GAAGtM;AAAA,EACH,KAAKuM;AAAA,EACL,KAAKC;AAAA,EACL,YAAYC;AAAA,EACZ,IAAIC;AAAA,EACJ,QAAQ9vB;AAAA,EACR,MAAM+Z;AAAA,EACN,KAAKgW;AAAA,EACL,KAAK9vB;AAAA,EACL,IAAI+vB;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQniB;AAAA,EACR,MAAM5N;AAAA,EACN,IAAIqb;AAAA,EACJ,IAAIrL;AAAA,EACJ,IAAIsL;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,QAAQvb;AAAA,EACR,IAAI8vB;AAAA,EACJ,GAAG7xB;AAAA,EACH,KAAK8xB;AAAA,EACL,OAAO9vB;AAAA,EACP,KAAK+vB;AAAA,EACL,KAAKC;AAAA,EACL,OAAO/vB;AAAA,EACP,IAAIgwB;AAAA,EACJ,MAAM/vB;AAAA,EACN,MAAMgwB;AAAA,EACN,KAAK/vB;AAAA,EACL,IAAIgwB;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,GAAGjwB;AAAA,EACH,KAAKkwB;AAAA,EACL,GAAGC;AAAA,EACH,SAASC;AAAA,EACT,QAAQC;AAAA,EACR,MAAMpwB;AAAA,EACN,QAAQqwB;AAAA,EACR,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,UAAUtwB;AAAA,EACV,GAAGuwB;AAAA,EACH,IAAIC;AACN,CAAC;AC7dM,MAAM/yB,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAnE,QAAA;AAAA,IAAA,0BAAA;AAAA,IAAAmE,OAAA;AAAA,EAAA;AAAA,EAAA8sB,KAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA9sB,OAAA;AAAA,EAAA;AAAA,EAAA+sB,cAAA;AAAA,IAAA,4BAAA;AAAA,IAAA/sB,OAAA;AAAA,EAAA;AAAA,EAAAgtB,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAhtB,OAAA;AAAA,EAAA;AAAA,EAAAitB,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,oBAAA;AAAA,IAAAjtB,OAAA;AAAA,EAAA;AAAA,EAAAktB,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAltB,OAAA;AAAA,EAAA;AAAA,EAAAmtB,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAntB,OAAA;AAAA,EAAA;AAAA,EAAAotB,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAptB,OAAA;AAAA,EAAA;AAAA,EAAAqtB,aAAA;AAAA,IAAA,0BAAA;AAAA,IAAArtB,OAAA;AAAA,EAAA;AAAA,EAAAstB,cAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAAttB,OAAA;AAAA,EAAA;AAAA,EAAAutB,kBAAA;AAAA,IAAA,2BAAA;AAAA,IAAAvtB,OAAA;AAAA,EAAA;AAAA,EAAAwtB,aAAAA,CAwFHC,MAAgB,CAAA;AAAA,IAAA,8BACPA,4CAAAA;AAAAA,IAAQztB,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,2BAARytB,KAAQ1sB;AAAAA,EAAAA,CAAA;AAAA,GC5E3B2sB,KAAevvB,EAAwC,IAAI;AAEjE,SAAAwvB,KAAA;AACE,QAAA9lB,IAAY5I,EAAWyuB,EAAY;AACnC,MAAI,CAAC7lB;AAAK,UAAM,IAAIC,MAAM,0DAA0D;AAAC,SAC9ED;AAAG;AAKZ,MAAM+lB,KAAgBzvB,EAAc,EAAK;AAUzC,SAAA4J,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAAoF,SAAAnE;AAAAA,IAAA7C,MAAA+C;AAAAA,EAAAA,IAAAL,GAAWsE,IAAAnE,MAAAyB,SAAA,YAAAzB,GAAqB7C,IAAA+C,MAAAuB,SAAA,OAAAvB,GAC5CquB,IAA4BtvB,EAAsB,IAAI;AAAC,MAAAmB;AAAA,EAAAX,EAAA,CAAA,MAAAtC,KAAAsC,SAAA0E,KAGvB/D,IAAA;AAAA,IAAA+D,SAAAA;AAAAA,IAAAhH,MAAAA;AAAAA,IAAAoxB,qBAAAA;AAAAA,EAAAA,GAAoC9uB,OAAAtC,GAAAsC,OAAA0E,GAAA1E,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,EAAAd,SAAAV,KAChEwB,yEAAe,MAAA,SAAO,GAAAyB,EAAAC,EAAA7F,KAAQ7B,GAAM4L,IAAK,GACtCpH,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KAHboB,sBAAAysB,GAAA,UAAA,EAA8B,OAAAhuB,GAC5BG,UAAAA,GAGF,GAAwBd,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA,GAJxBkC;AAIwB;AAM5B,SAAAwK,GAAAtM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc;AAAiC,MAAAG;AAAA,SAAAP,SAAAV,KAE7CiB,IAAA,gBAAA+B,EAAAusB,GAAA,UAAA,EAA+B,OAAA,IAC7B,UAAA,gBAAAvsB,EAAA,SAAA,oBAAA,sBAAe,MAAA,YAAU,GAAAC,EAAAC,EAAA7F,KAAQ7B,GAAMgC,MAAO,GAC3CwC,UAAAA,GACH,GACF,GAAyBU,OAAAV,GAAAU,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAJzBO;AAIyB;AAM7B,SAAAuM,GAAA1M,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACZ;AAAA,IAAAsE,SAAAA;AAAAA,EAAAA,IAAkBkqB,GAAAA;AAAU,MAAAG,GAAAC,GAAAzuB,GAAAE,GAAAE;AAAA,MAAAX,EAAA,CAAA,MAAAV,KAAAU,SAAA0E,GAAA;AAC5B,UAAAuqB,IAAmBC,GAAQC,QAAS7vB,CAAQ;AAGzC0vB,IAAAA,IAAAH,GAAaO,UAAiBzuB,IAAA,IAC5BouB,IAAAjB,GAAInxB,KAAU4D,IAAA;AAAU,QAAAO;AAAA,IAAAd,SAAA0E,KACP5D,IAAAA,CAAAuuB,GAAAC,MACV5qB,MAAY,8BAEZ6qB,GAAA,UAAA,EAA6CD,OAAAA,GAC1CD,eAD4BC,CAE/B,IAGGD,GACRrvB,OAAA0E,GAAA1E,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GATAS,IAAAwuB,EAAUlwB,IAAK+B,CASf,GAACd,OAAAV,GAAAU,OAAA0E,GAAA1E,OAAA+uB,GAAA/uB,OAAAgvB,GAAAhvB,OAAAO,GAAAP,OAAAS,GAAAT,OAAAW;AAAAA,EAAA;AAAAouB,IAAAA,IAAA/uB,EAAA,CAAA,GAAAgvB,IAAAhvB,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,GAAAW,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,EAAAd,EAAA,CAAA,MAAA+uB,KAAA/uB,UAAAO,KAAAP,EAAA,EAAA,MAAAS,KAVJK,IAAA,gBAAAwB,EAACysB,GAAA,EAAc,MAAAxuB,GACZE,UAAAA,GAUH,GAAWT,OAAA+uB,GAAA/uB,QAAAO,GAAAP,QAAAS,GAAAT,QAAAc,KAAAA,IAAAd,EAAA,EAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,EAAA,MAAAgvB,KAAAhvB,UAAAW,KAAAX,EAAA,EAAA,MAAAc,KAZboB,IAAA,gBAAAI,EAAC0sB,GAAA,EAA8B,OAAAruB,GAC7BG,UAAAA,GAYF,GAAyBd,QAAAgvB,GAAAhvB,QAAAW,GAAAX,QAAAc,GAAAd,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAbzBkC;AAayB;AAI7B,MAAMqtB,KAAkBnwB,EAAsB,EAAE;AAIhD,SAASowB,GAAI;AAAA,EAAClwB,UAAAA;AAA+B,GAAG;AAC9C,QAAM;AAAA,IAACoF,SAAAA;AAAAA,IAASoqB,qBAAAA;AAAAA,EAAAA,IAAuBF,GAAAA,GACjCa,IAAWvvB,EAAW2uB,EAAa,GACnCa,IAAWxvB,EAAWqvB,EAAe,GACrCI,IAAYD,KAAY,KAAKA,IAAW,MAAM,GAC9CT,IAAaC,GAASC,QAAQ7vB,CAAQ;AAE5C,MAAIovB;AAEJ,MAAIe,GAAU;AAEZ,UAAMG,IAAmB,CAAA;AACzBV,IAAAA,GAAS9wB,QAAQkB,GAAW+vB,CAAAA,MAAU;AACpC,UAAIQ,GAAeR,CAAK,GAAG;AACzB,cAAMtsB,IAAQssB,EAAMtsB;AACpB6sB,QAAAA,EAAOjxB,KAAKoE,EAAMuQ,SAAS,KAAK;AAAA,MAClC;AAAA,IACF,CAAC,GACDob,IAAWkB,EAAOE,KAAK,GAAG,GAC1BhB,EAAoBrvB,UAAUivB;AAAAA,EAChC;AACEA,IAAAA,IAAWI,EAAoBrvB,WAAW,UAAUwvB,EAAWpvB,MAAM;AAGvE,+EAEI,MAAK,OAAK,GAAA0C,EAAAC,EAAA7F,KAER7B,GAAOizB,KACPjzB,GAAO2zB,YAAYC,CAAQ,GAC3B,CAACe,KAAY30B,GAAOmzB,SACpB,CAACwB,KAAY/qB,MAAY,aAAairB,KAAa70B,GAAOwzB,WAAW,GAGtE5pB,UAAAA,MAAY,aACTuqB,EAAWlwB,IAAI,CAACswB,GAAOC,wBACpBS,GAAiB,UAAjB,EAAsC,OAAO;AAAA,IAACT,OAAAA;AAAAA,IAAOU,OAAOf,EAAWpvB;AAAAA,EAAAA,GACrEwvB,UAAAA,EAAAA,GAD6BC,CAEhC,CACD,IACDhwB,EAAAA,CACN;AAEJ;AAEA,MAAMywB,KAAmB3wB,EAA8C;AAAA,EAACkwB,OAAO;AAAA,EAAGU,OAAO;AAAC,CAAC;AAI3F,SAAAC,GAAA7vB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAoB;AAAA,IAAAX,UAAAA;AAAAA,IAAA,cAAA6H;AAAAA,EAAAA,IAAA/G,GAUlB;AAAA,IAAA1C,MAAAA;AAAAA,IAAAgH,SAAAA;AAAAA,EAAAA,IAAwBkqB,GAAAA,GACxB;AAAA,IAAAU,OAAAA;AAAAA,IAAAU,OAAAA;AAAAA,EAAAA,IAAuB9vB,EAAW6vB,EAAgB,GAClDG,IAAexrB,MAAY,cAAc4qB,MAAUU,IAAQ,GAQrDzvB,IAAA7C,MAAS,OAAO5C,GAAMszB,SAAUtzB,GAAMuzB,QACtC5tB,IAAAiE,MAAY,cAAc5J,GAAMyzB,cAChC5tB,IAAAuvB,KAAUp1B,GAAM0zB;AAAiB,MAAA1tB;AAAA,EAAAd,EAAA,CAAA,MAAAO,KAAAP,SAAAS,KAAAT,EAAA,CAAA,MAAAW,KAJ5BG,IAAA,CACLhG,GAAMozB,YACN3tB,GACAE,GACAE,CAAiC,GAClCX,OAAAO,GAAAP,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,CAAA,MAAAmH,KAAAnH,SAAAV,KAAAU,EAAA,CAAA,MAAAc,KARHoB,IAAA,gBAAAI,EAAA,OAAA,EAAA,oBAAA,uBACO,MAAA,gBACO6E,iBAAS,GAAA5E,EAAAC,EAAA7F,KACdmE,CAKN,GAEAxB,UAAAA,GACH,GAAWU,OAAAmH,GAAAnH,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA,GAXXkC;AAWW;AAMf,SAAAiuB,GAAA/vB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACZ;AAAA,IAAA1C,MAAAA;AAAAA,IAAAgH,SAAAA;AAAAA,EAAAA,IAAwBkqB,GAAAA,GACxB;AAAA,IAAAU,OAAAA;AAAAA,IAAAU,OAAAA;AAAAA,EAAAA,IAAuB9vB,EAAW6vB,EAAgB,GAClDG,IAAexrB,MAAY,cAAc4qB,MAAUU,IAAQ,GAOrDzvB,IAAA7C,MAAS,OAAO5C,GAAMszB,SAAUtzB,GAAMuzB,QACtC5tB,IAAAiE,MAAY,cAAc5J,GAAMyzB,cAChC5tB,IAAAuvB,KAAUp1B,GAAM0zB;AAAiB,MAAA1tB;AAAA,EAAAd,EAAA,CAAA,MAAAO,KAAAP,SAAAS,KAAAT,EAAA,CAAA,MAAAW,KAJ5BG,IAAA,CACLhG,GAAMqzB,MACN5tB,GACAE,GACAE,CAAiC,GAClCX,OAAAO,GAAAP,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAAc,KAPHoB,IAAA,gBAAAI,EAAA,OAAA,EAAA,oBAAA,uBACO,MAAA,WAAMC,EAAAC,EAAA7F,KACJmE,CAKN,GAEAxB,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA,GAVXkC;AAUW;AAMR,MAAMkuB,KAAQ;AAAA,EAAA,MACnBpnB;AAAAA,EACA0D,QAAAA;AAAAA,EACAI,MAAAA;AAAAA,EACA0iB,KAAAA;AAAAA,EACAS,YAAAA;AAAAA,EACAE,MAAAA;AACF,GCnMar1B,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAovB,cAAA;AAAA,IAAA,wBAAA;AAAA,IAAApvB,OAAA;AAAA,EAAA;AAAA,EAAAqvB,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,cAAA;AAAA,IAAArvB,OAAA;AAAA,EAAA;AAAA,EAAAsvB,cAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,cAAA;AAAA,IAAAtvB,OAAA;AAAA,EAAA;AAAA,EAAAuvB,KAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAvvB,OAAA;AAAA,EAAA;AAAA,EAAAwvB,aAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAAxvB,OAAA;AAAA,EAAA;AAAA,EAAAyvB,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,4BAAA;AAAA,IAAAzvB,OAAA;AAAA,EAAA;AAAA,EAAA0vB,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,2BAAA;AAAA,IAAA1vB,OAAA;AAAA,EAAA;AAAA,EAAA2vB,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA3vB,OAAA;AAAA,EAAA;AAAA,EAAAiO,OAAA;AAAA,IAAA,qBAAA;AAAA,IAAAjO,OAAA;AAAA,EAAA;AAAA,EAAAmO,eAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAnO,OAAA;AAAA,EAAA;AAAA,GCQN4vB,KAAczxB,EAAuC,IAAI;AAE/D,SAAA0xB,KAAA;AACL,QAAAhoB,IAAY5I,EAAW2wB,EAAW;AAClC,MAAI,CAAC/nB;AAAK,UAAM,IAAIC,MAAM,wDAAwD;AAAC,SAC5ED;AAAG;ACPL,SAAAioB,GAAA3wB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAqB;AAAA,IAAA1E,OAAA8M;AAAAA,IAAAC,cAAAA;AAAAA,IAAAW,eAAAA;AAAAA,IAAAC,aAAA3I;AAAAA,EAAAA,IAAAH,GAI1B8I,IAAA3I,MAAAyB,SAAA,eAAAzB;AAA0B,MAAAE;AAAA,EAAAT,SAAAiJ,KAKxBxI,IAAAwI,IAAAR,CAAAA,MAAA;AAEM,IAAIA,MAAM,QAAMQ,EAAcR,CAAC;AAAA,EAAC,IAFtCzG,QAIahC,OAAAiJ,GAAAjJ,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAPf,QAAA,CAAAunB,GAAAxF,CAAA,IAAgC3Z,GAC9BC,GACAC,KAAA,MACA7H,CAKF;AAAC,MAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KACsBpH,wBAAIue,IAAAA,GAAsBlf,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAjD,QAAAgxB,IAAgBxxB,EAAOmB,CAA0B;AAAC,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAChBjH,IAAA,CAAA,GAAEd,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAApC,QAAAof,IAAiB5f,EAAiBsB,CAAE;AAAC,MAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEL7F,IAAAA,CAAA3G,GAAAqK,OAC9BorB,EAAOvxB,QAAQigB,IAAKnkB,GAAOqK,CAAQ,GAC9BwZ,EAAQ3f,QAAQiK,SAAUnO,CAAK,KAClC6jB,EAAQ3f,QAAQd,KAAMpD,CAAK,GAEtB,MAAA;AACLy1B,IAAAA,EAAOvxB,QAAQhB,OAAQlD,CAAK,GAC5B6jB,EAAQ3f,UAAW2f,EAAQ3f,QAAQP,OAAQ0oB,CAAAA,MAAOnf,MAAMlN,CAAK;AAAA,EAA7C,IAEnByE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AATD,QAAAixB,IAAoB/uB;AASd,MAAAC;AAAA,SAAAnC,EAAA,CAAA,MAAAunB,KAAAvnB,SAAA+hB,KAAA/hB,EAAA,CAAA,MAAAkJ,KAEC/G,IAAA;AAAA,IAAAolB,aAAAA;AAAAA,IAAAxF,UAAAA;AAAAA,IAAA7Y,aAAAA;AAAAA,IAAA+nB,aAAAA;AAAAA,IAAAD,SAAAA;AAAAA,IAAA5R,UAAAA;AAAAA,EAAAA,GAAoEpf,OAAAunB,GAAAvnB,OAAA+hB,GAAA/hB,OAAAkJ,GAAAlJ,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAApEmC;AAAoE;ACxB7E,SAAA6G,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAA/D,OAAAA;AAAAA,IAAA+M,cAAAA;AAAAA,IAAAW,eAAAA;AAAAA,IAAAC,aAAA3I;AAAAA,EAAAA,IAAAH,GAKZ8I,IAAA3I,MAAAyB,SAAA,eAAAzB;AAA0B,MAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAsI,KAAAtI,EAAA,CAAA,MAAAiJ,KAAAjJ,EAAA,CAAA,MAAAkJ,KAAAlJ,SAAAzE,KAEFkF,IAAA;AAAA,IAAAlF,OAAAA;AAAAA,IAAA+M,cAAAA;AAAAA,IAAAW,eAAAA;AAAAA,IAAAC,aAAAA;AAAAA,EAAAA,GAAiDlJ,OAAAsI,GAAAtI,OAAAiJ,GAAAjJ,OAAAkJ,GAAAlJ,OAAAzE,GAAAyE,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAzE,QAAA8I,IAAYioB,GAAYtwB,CAAiD,GAItCE,IAAAuI,MAAgB,cAAcpO,GAAMu1B;AAAa,MAAAvvB;AAAA,EAAAd,SAAAW,KAA/DG,KAAChG,GAAM4L,MAAO/F,CAAiD,GAACX,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAAc,KAAjFoB,IAAA,gBAAAI,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiBmE,CAAgE,GAC9ExB,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,EAAA,MAAA8I,KAAA9I,UAAAkC,KAHbC,sBAAA0uB,GAAA,UAAA,EAA6B/nB,OAAAA,GAC3B5G,UAAAA,GAGF,GAAuBlC,QAAA8I,GAAA9I,QAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAJvBmC;AAIuB;AAU3B,SAAS8W,GAAK;AAAA,EAAC3Z,UAAAA;AAAmB,GAAG;AACnC,QAAM;AAAA,IAAC4J,aAAAA;AAAAA,IAAaqe,aAAAA;AAAAA,IAAaxF,UAAAA;AAAAA,IAAUiP,SAAAA;AAAAA,IAAS5R,UAAAA;AAAAA,EAAAA,IAAY0R,GAAAA,GAC1DI,IAAU1xB,EAAuB,IAAI;AAE3C2D,SAAAA,EAAU,MAAM;AACd,UAAMmL,IAAK4iB,EAAQzxB;AACnB,QAAI,CAAC6O,EAAI;AAET,aAASgS,EAAiCthB,GAAkB;AAC1D,YAAMwgB,IAAQJ,EAAS3f,SACjB0xB,IAAOH,EAAQvxB;AACrB,UAAI+f,EAAM3f,WAAW,EAAG;AACxB,YAAMuxB,IAAS,MAETC,IAAUnoB,MAAgB,eAAe,cAAc,WACvDooB,IAAUpoB,MAAgB,eAAe,eAAe;AAE9D,UAAIqoB,IAA6B;AAEjC,cAAQvyB,EAAE2E,KAAAA;AAAAA,QACR,KAAK2tB,GAAS;AACZtyB,UAAAA,EAAEiV,eAAAA;AACF,gBAAMud,IAAajK,IAAc/H,EAAMmB,QAAQ4G,CAAW,IAAI;AAC9D,mBAASxsB,IAAI,GAAGA,KAAKykB,EAAM3f,QAAQ9E,KAAK;AACtC,kBAAM6lB,KAAO4Q,IAAaz2B,KAAKykB,EAAM3f,QAC/Bge,IAAM2B,EAAMoB,CAAG;AACrB,gBAAI,CAACuQ,EAAKnR,IAAInC,CAAG,GAAG;AAClB0T,cAAAA,IAAc1T;AACd;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAKwT,GAAS;AACZryB,UAAAA,EAAEiV,eAAAA;AACF,gBAAMud,IAAajK,IAAc/H,EAAMmB,QAAQ4G,CAAW,IAAI;AAC9D,mBAASxsB,IAAI,GAAGA,KAAKykB,EAAM3f,QAAQ9E,KAAK;AACtC,kBAAM6lB,KAAO4Q,IAAaz2B,IAAIykB,EAAM3f,UAAU2f,EAAM3f,QAC9Cge,IAAM2B,EAAMoB,CAAG;AACrB,gBAAI,CAACuQ,EAAKnR,IAAInC,CAAG,GAAG;AAClB0T,cAAAA,IAAc1T;AACd;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX7e,UAAAA,EAAEiV,eAAAA;AACF,qBAAW4J,KAAO2B;AAChB,gBAAI,CAAC2R,EAAKnR,IAAInC,CAAG,GAAG;AAClB0T,cAAAA,IAAc1T;AACd;AAAA,YACF;AAEF;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV7e,UAAAA,EAAEiV,eAAAA;AACF,mBAASlZ,IAAIykB,EAAM3f,SAAS,GAAG9E,KAAK,GAAGA;AACrC,gBAAI,CAACo2B,EAAKnR,IAAIR,EAAMzkB,CAAC,CAAC,GAAG;AACvBw2B,cAAAA,IAAc/R,EAAMzkB,CAAC;AACrB;AAAA,YACF;AAEF;AAAA,QACF;AAAA,MAAA;AAGF,MAAIw2B,MACFxP,EAASwP,CAAW,GAENH,EAAOlJ,cACnB,oBAAoBqJ,CAAW,IACjC,GACOljB,MAAAA;AAAAA,IAEX;AAEAC,WAAAA,EAAGnC,iBAAiB,WAAWmU,CAAa,GACrC,MAAMhS,EAAGlC,oBAAoB,WAAWkU,CAAa;AAAA,EAC9D,GAAG,CAACpX,GAAaqe,GAAaxF,GAAUiP,GAAS5R,CAAQ,CAAC,GAGxD,gBAAA9c,EAAA,SAAA,oBAAA,qBACE,KAAK4uB,GACL,MAAK,WACL,oBAAkBhoB,GAAY,GAAA3G,EAAAC,EAAA7F,KACtB7B,GAAOw1B,MAAMpnB,MAAgB,cAAcpO,GAAOy1B,YAAY,GAErEjxB,UAAAA,GACH;AAEJ;AAUA,SAAAmyB,GAAArxB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAa;AAAA,IAAA1E,OAAAA;AAAAA,IAAAqK,UAAArF;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAAQwF,IAAArF,MAAAyB,SAAA,KAAAzB,GACnB;AAAA,IAAAgnB,aAAAA;AAAAA,IAAAxF,UAAAA;AAAAA,IAAA7Y,aAAAA;AAAAA,IAAA+nB,aAAAA;AAAAA,EAAAA,IAA0DH,GAAAA,GAC1D7tB,IAAiBskB,MAAgBhsB,GACjCm2B,IAAcvxB,GAAAA,GACdwxB,IAAgB,GAAGD,CAAK;AAAQ,MAAAjxB,GAAAE;AAAA,EAAAX,EAAA,CAAA,MAAA4F,KAAA5F,SAAAixB,KAAAjxB,EAAA,CAAA,MAAAzE,KAEtBkF,IAAAA,MACDwwB,EAAY11B,GAAOqK,CAAQ,GACjCjF,KAACpF,GAAOqK,GAAUqrB,CAAW,GAACjxB,OAAA4F,GAAA5F,OAAAixB,GAAAjxB,OAAAzE,GAAAyE,OAAAS,GAAAT,OAAAW,MAAAF,IAAAT,EAAA,CAAA,GAAAW,IAAAX,EAAA,CAAA,IAFjCmD,EAAU1C,GAEPE,CAA8B;AAAC,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA4F,KAAA5F,SAAA+hB,KAAA/hB,EAAA,CAAA,MAAAzE,KAEduF,IAAAA,MAAA;AAClB,IAAK8E,KACHmc,EAASxmB,CAAK;AAAA,EACf,GACFyE,OAAA4F,GAAA5F,OAAA+hB,GAAA/hB,OAAAzE,GAAAyE,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAJD,QAAAohB,IAAoBtgB,GAaDoB,IAAA0D,KAAA5D,QAELG,IAAAc,IAAA,IAAA,IAIRb,IAAA8G,MAAgB,cAAcpO,GAAM21B,aACpCpuB,IAAAY,MACGiG,MAAgB,aAAapO,GAAM61B,oBAAqB71B,GAAM41B,sBACjEjuB,IAAAmD,KAAY9K,GAAM81B;AAAY,MAAAluB;AAAA,EAAA1C,EAAA,CAAA,MAAAoC,KAAApC,UAAAqC,KAAArC,EAAA,EAAA,MAAAyC,KALzBC,IAAA,CACL5H,GAAM01B,KACNpuB,GACAC,GAEAI,CAA8B,GAC/BzC,OAAAoC,GAAApC,QAAAqC,GAAArC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAAA,MAAA2C;AAAA,SAAA3C,EAAA,EAAA,MAAAV,KAAAU,EAAA,EAAA,MAAAohB,KAAAphB,UAAAiD,KAAAjD,EAAA,EAAA,MAAA2xB,KAAA3xB,EAAA,EAAA,MAAA0C,KAAA1C,EAAA,EAAA,MAAAkC,KAAAlC,EAAA,EAAA,MAAAmC,KAAAnC,EAAA,EAAA,MAAA0xB,KAAA1xB,UAAAzE,KAhBHoH,IAAA,gBAAAL,EAAA,UAAA,EAAA,oBAAA,qBACO,MAAA,UACA,MAAA,OACDovB,IAAAA,GACWzuB,iBAAAA,GACA0uB,iBAAAA,GACA,iBAAAzvB,GACC3G,kBAAAA,GACN,UAAA4G,GACDif,YAAW,GAAA7e,EAAAC,EAAA9F,QACbgG,CAMN,GAEApD,UAAAA,EAAAA,CACH,GAAcU,QAAAV,GAAAU,QAAAohB,GAAAphB,QAAAiD,GAAAjD,QAAA2xB,GAAA3xB,QAAA0C,GAAA1C,QAAAkC,GAAAlC,QAAAmC,GAAAnC,QAAA0xB,GAAA1xB,QAAAzE,GAAAyE,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA,GAnBd2C;AAmBc;AAWlB,SAAA6e,GAAAphB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAA1E,OAAAA;AAAAA,IAAA+D,UAAAA;AAAAA,EAAAA,IAAAc,GACb;AAAA,IAAAmnB,aAAAA;AAAAA,IAAAre,aAAAA;AAAAA,EAAAA,IAAmC4nB,GAAAA;AAEnC,MAAIvJ,MAAgBhsB;AAAK,WAAS;AAKR,QAAAgF,IAAA2I,MAAgB,cAAcpO,GAAMsU;AAAc,MAAA3O;AAAA,EAAAT,SAAAO,KAAjEE,KAAC3F,GAAMoU,OAAQ3O,CAAkD,GAACP,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAX,EAAA,CAAA,MAAAV,KAAAU,SAAAS,KAF3EE,IAAA,gBAAA2B,EAAA,OAAA,EAAA,oBAAA,qBACO,MAAA,eAAUC,EAAAC,EAAA7F,KACR8D,CAAkE,GAExEnB,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GALXW;AAKW;AAIR,MAAMixB,KAAO;AAAA,EAAA,MAClB5oB;AAAAA,EACAiQ,MAAAA;AAAAA,EACAwY,KAAAA;AAAAA,EACAjQ,OAAAA;AACF,GC5Ma1mB,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAA8D,SAAA;AAAA,IAAA,sBAAA;AAAA,IAAA9D,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,sBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA;ACiBZ,SAAA4wB,GAAAzxB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAkB;AAAA,IAAAyE,SAAAnE;AAAAA,IAAAuD,MAAAA;AAAAA,IAAAyY,aAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAsV,MAAArxB;AAAAA,IAAAlF,OAAAA;AAAAA,IAAA+M,cAAAA;AAAAA,IAAA1C,UAAAA;AAAAA,IAAAwB,UAAAA;AAAAA,IAAA6S,QAAAA;AAAAA,IAAAC,KAAAA;AAAAA,EAAAA,IAAA9Z,GACvBsE,IAAAnE,MAAAyB,SAAA,YAAAzB,GAIAuxB,IAAArxB,MAAAuB,SAAA,IAAAvB,GAQAqI,IAAYsQ,GAAAA,GAEZyD,IAAiB/T,GAAGgR,OACpBgD,IAAsBhZ,KAAQ+Y,GAAQ/Y,MACtCiZ,IAAuBxhB,MAAUshB,IAAWrL,OAAOqL,EAAQthB,SAAR,EAAgC,IAAlDyG,SACjCgb,IAA0B5V,KAAYyV,GAAQzV,UAC9C6V,IAAwBhD,KAAU4C,GAAQ5C,QAC1CiD,IAAqBhD,KAAO2C,GAAQ3C,KACpCiD,IAAyBrU,GAAG4Q,UAAH,UAAAhV,GAIjB/D,IAAAmI,GAAGqR;AAAW,MAAArZ;AAAA,EAAAd,SAAA8I,KAShBhI,IAAAgI,IAAM,GAAGA,EAAG6C,aAAc,IAAI7C,EAAG4Q,UAAW5Q,EAAGsR,UAAjB,EAA8B,GAAEiD,KAAAA,IAA9Drb,QAAiFhC,OAAA8I,GAAA9I,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAErE,QAAAkC,IAAA4G,GAAG4Q,WAAahV,MAAY,WAA5B1C,QACJG,IAAA6a,GACF5a,IAAA6a,GACH5a,IAAA6a,GACgBza,IAAA3H,GAAOqiB,CAAgB;AAAC,MAAAza;AAAA,EAAA1C,SAAAyC,KAAtCC,KAAC5H,GAAMkJ,MAAOvB,CAAwB,GAACzC,OAAAyC,GAAAzC,OAAA0C,KAAAA,IAAA1C,EAAA,CAAA;AAAA,MAAA2C;AAAA,SAAA3C,EAAA,CAAA,MAAAsI,KAAAtI,SAAA4F,KAAA5F,EAAA,CAAA,MAAA8c,KAAA9c,EAAA,CAAA,MAAA+c,KAAA/c,EAAA,CAAA,MAAAuc,KAAAvc,EAAA,CAAA,MAAAwc,KAAAxc,EAAA,EAAA,MAAA8xB,KAAA9xB,EAAA,EAAA,MAAA0C,KAAA1C,EAAA,EAAA,MAAAW,KAAAX,EAAA,EAAA,MAAAc,KAAAd,UAAAkC,KAAAlC,EAAA,EAAA,MAAAmC,KAAAnC,EAAA,EAAA,MAAAoC,KAAApC,EAAA,EAAA,MAAAqC,KAhBhDM,oFACM,IAAAhC,GACEmc,MAAAA,GACOP,aAAAA,GACHC,UAAAA,GACJsV,MAAAA,GACC/U,OAAAA,GACOzU,cAAAA,GACJ1C,UAAAA,GAER,oBAAA9E,GAEY,gBAAAoB,GACJ,UAAAC,GACF,QAAAC,GACH,KAAAC,GAA8C,GAAAE,EAAAC,EAAAnF,UAC5CqF,CAAuC,GAAA,KAAA,QAAA,GAC9C1C,OAAAsI,GAAAtI,OAAA4F,GAAA5F,OAAA8c,GAAA9c,OAAA+c,GAAA/c,OAAAuc,GAAAvc,OAAAwc,GAAAxc,QAAA8xB,GAAA9xB,QAAA0C,GAAA1C,QAAAW,GAAAX,QAAAc,GAAAd,QAAAkC,GAAAlC,QAAAmC,GAAAnC,QAAAoC,GAAApC,QAAAqC,GAAArC,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA,GAjBF2C;AAiBE;AC3DC,MAAMovB,KAAU;AAAA,EAAAC,SAAA;AAAA,EAAA/wB,OAAA;AAAA,GA8BVgxB,KAAY;AAAA,EAAAC,UAAA;AAAA,EAAAjxB,OAAA;AAAA,GC9BZkxB,KAAiB;AAAA,EAAAH,SAAA;AAAA,EAAA/wB,OAAA;AAAA,GA8BjBmxB,KAAmB;AAAA,EAAAF,UAAA;AAAA,EAAAjxB,OAAA;AAAA,GCrB1BoxB,KAA0F;AAAA,EAC9FC,OAAO,CAACP,IAAYE,EAAY;AAAA,EAChC,iBAAiB,CAACE,IAAmBC,EAAmB;AAC1D,GAEMt3B,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA;AAWL,SAAAsxB,GAAAnyB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAuB;AAAA,IAAAuyB,OAAAjyB;AAAAA,IAAAjB,UAAAA;AAAAA,EAAAA,IAAAc,GAC5BqyB,IAAkBJ,GADW9xB,MAAAyB,SAAA,SAAAzB,CACG,GACXE,IAAAgyB,IAAS,CAAA,GAAO9xB,IAAA8xB,IAAS,CAAA;AAAK,MAAA3xB;AAAA,EAAAd,EAAA,CAAA,MAAAS,KAAAT,SAAAW,KAA/BG,IAAA,CAACL,GAAgBE,GAAgB7F,GAAM4L,IAAK,GAAC1G,OAAAS,GAAAT,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAjE,QAAA0yB,IAAoB5xB;AAAyD,MAAAoB;AAAA,SAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAA0yB,KAEtExwB,IAAA,gBAAAI,EAAA,OAAA,EAAA,oBAAA,sCAAA,GAAAC,EAAAC,EAAA7F,KAAiB+1B,CAAW,GAAGpzB,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAA0yB,GAAA1yB,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA,GAAnDkC;AAAmD;AC7BrD,MAAMpH,KAAM;AAAA,EAAAiK,SAAA;AAAA,IAAA,gBAAA;AAAA,IAAA9D,OAAA;AAAA,EAAA;AAAA,EAAAiW,OAAA;AAAA,IAAA,gBAAA;AAAA,IAAAjW,OAAA;AAAA,EAAA;AAAA,EAAAkW,QAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlW,OAAA;AAAA,EAAA;AAAA,EAAAkD,OAAA;AAAA,IAAA,gBAAA;AAAA,IAAAlD,OAAA;AAAA,EAAA;AAAA,EAAAmD,SAAA;AAAA,IAAA,gBAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAAoD,SAAA;AAAA,IAAA,gBAAA;AAAA,IAAApD,OAAA;AAAA,EAAA;AAAA,EAAA0xB,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA1xB,OAAA;AAAA,EAAA;AAAA,EAAA2xB,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA3xB,OAAA;AAAA,EAAA;AAAA,EAAA4xB,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA5xB,OAAA;AAAA,EAAA;AAAA,EAAA6xB,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAA7xB,OAAA;AAAA,EAAA;AAAA,EAAAmW,YAAA;AAAA,IAAA,oBAAA;AAAA,IAAAnW,OAAA;AAAA,EAAA;AAAA,EAAAoW,aAAA;AAAA,IAAA,oBAAA;AAAA,IAAApW,OAAA;AAAA,EAAA;AAAA,EAAAqW,UAAA;AAAA,IAAA,oBAAA;AAAA,IAAArW,OAAA;AAAA,EAAA;AAAA,EAAA8xB,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA9xB,OAAA;AAAA,EAAA;AAAA,GCcb+xB,KAAY;AAAA,EAChBC,QAAQn4B,GAAO63B;AAAAA,EACfO,QAAQp4B,GAAO83B;AAAAA,EACfO,UAAUr4B,GAAO+3B;AAAAA,EACjBO,MAAMt4B,GAAOg4B;AACf,GAEMtb,KAAW;AAAA,EACfC,OAAO3c,GAAOsc;AAAAA,EACdM,QAAQ5c,GAAOuc;AAAAA,EACfM,KAAK7c,GAAOwc;AACd;AAEO,SAAA4B,GAAA9Y,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAyE,SAAAnE;AAAAA,IAAAuX,OAAArX;AAAAA,IAAA4yB,QAAAA;AAAAA,IAAAtb,OAAAA;AAAAA,IAAAgb,UAAAA;AAAAA,IAAAO,IAAA3yB;AAAAA,IAAArB,UAAAA;AAAAA,EAAAA,IAAAc,GACnBsE,IAAAnE,MAAAyB,SAAA,WAAAzB,GACAuX,IAAArX,MAAAuB,SAAA,YAAAvB,GAIA6yB,IAAA3yB,MAAAqB,SAAA,SAAArB,GAIEG,IAAAsV,GAAY1R,CAAO,GACnBxC,IAAApH,GAAOgd,CAAK,GACZ3V,IAAAkxB,KAAUL,GAAUK,CAAM,GAC1BjxB,IAAA2V,KAASP,GAASO,CAAK,GACvB1V,IAAA0wB,KAAYj4B,GAAMi4B;AAAS,MAAAtwB;AAAA,EAAAzC,EAAA,CAAA,MAAAc,KAAAd,EAAA,CAAA,MAAAkC,KAAAlC,EAAA,CAAA,MAAAmC,KAAAnC,EAAA,CAAA,MAAAoC,KAAApC,SAAAqC,KALfI,IAAA,CACZ3B,GACAoB,GACAC,GACAC,GACAC,CAA2B,GAC5BrC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,GAAAnC,OAAAoC,GAAApC,OAAAqC,GAAArC,OAAAyC,KAAAA,IAAAzC,EAAA,CAAA;AAND,QAAA9E,IAAcuH;AAQd,MAAI6wB,MAAO,KAAG;AAAA,QAAA5wB;AAAA,WAAA1C,EAAA,CAAA,MAAAV,KAAAU,SAAA9E,KAASwH,IAAA,gBAAAJ,EAAA,KAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAArF,GAAejC,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAASU,OAAAV,GAAAU,OAAA9E,GAAA8E,OAAA0C,KAAAA,IAAA1C,EAAA,CAAA,GAAzC0C;AAAAA,EAAyC;AAChE,MAAI4wB,MAAO,OAAK;AAAA,QAAA5wB;AAAA,WAAA1C,EAAA,CAAA,MAAAV,KAAAU,UAAA9E,KAASwH,IAAA,gBAAAJ,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiBzB,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,QAAA9E,GAAA8E,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GAA7C0C;AAAAA,EAA6C;AAAA,MAAAA;AAAA,SAAA1C,EAAA,EAAA,MAAAV,KAAAU,UAAA9E,KAC/DwH,IAAA,gBAAAJ,EAAA,QAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAApF,MAAkBlC,CAAK,GAAGoE,UAAAA,EAAAA,CAAS,GAAYU,QAAAV,GAAAU,QAAA9E,GAAA8E,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA,GAA/C0C;AAA+C;ACrCjD,MAAM6wB,KAAqBn0B,EAA8C,IAAI;AAE7E,SAAAo0B,KAAA;AAAA,SACEtzB,EAAWqzB,EAAkB;AAAC;ACXhC,MAAMz4B,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAmE,aAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,cAAA;AAAA,IAAAnE,OAAA;AAAA,EAAA;AAAA,EAAAoE,WAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,cAAA;AAAA,IAAApE,OAAA;AAAA,EAAA;AAAA,EAAAwyB,WAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAxyB,OAAA;AAAA,EAAA;AAAA,EAAAyyB,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAzyB,OAAA;AAAA,EAAA;AAAA,EAAA0yB,SAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA1yB,OAAA;AAAA,EAAA;AAAA,EAAA2E,UAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA3E,OAAA;AAAA,EAAA;AAAA,GCoBb+D,KAAU;AAAA,EACdD,SAASjK,GAAOsK;AAAAA,EAChBS,OAAO/K,GAAOuK;AAChB;AAEO,SAAAuuB,GAAAxzB,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAgB;AAAA,IAAAyzB,SAAAG;AAAAA,IAAAC,gBAAAvzB;AAAAA,IAAAwzB,iBAAAA;AAAAA,IAAAx4B,OAAAA;AAAAA,IAAAqK,UAAAnF;AAAAA,IAAA/C,MAAAiD;AAAAA,IAAA,cAAAwG;AAAAA,IAAA7H,UAAAA;AAAAA,EAAAA,IAAAc,GAErB0zB,IAAAvzB,MAAAyB,SAAA,KAAAzB,GAGUyzB,IAAAvzB,MAAAuB,SAAA,KAAAvB,GACJwzB,IAAAtzB,MAAAqB,SAAA,YAAArB,GAINomB,IAAcyM,GAAAA;AAAgB,MAAA1yB;AAAA,EAAAd,EAAA,CAAA,MAAA+mB,KAAA/mB,SAAAzE,KAGTuF,IAAAimB,KAASxrB,MAAUyG,SAAY+kB,EAAKxrB,MAAMmO,SAAUnO,CAAiB,IAArEyG,QAAsEhC,OAAA+mB,GAAA/mB,OAAAzE,GAAAyE,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA3F,QAAAk0B,IAAqBpzB,GACrBqzB,IAAkBpN,MAAU,MAC5BnhB,IAAiBouB,MAAiBjN,GAAKnhB,YAAL,KAClClI,IAAaqpB,GAAKrpB,QAALu2B,GAEb,CAAAG,GAAAC,CAAA,IAAkDjsB,GAChDyrB,GACAC,GACAC,CACF,GAEAL,IAAgBQ,KAAAE;AAAiC,MAAAlyB;AAAA,EAAAlC,SAAA4F,KAAA5F,EAAA,CAAA,MAAA+mB,KAAA/mB,EAAA,CAAA,MAAAm0B,KAAAn0B,EAAA,CAAA,MAAA0zB,KAAA1zB,SAAAq0B,KAAAr0B,EAAA,CAAA,MAAAzE,KAEjB2G,IAAAA,MAAA;AAC9B,IAAI0D,MACAuuB,KAAa54B,MAAUyG,SACzB+kB,EAAKxH,OAAQhkB,CAAK,IAElB84B,EAAqB,CAACX,CAAO;AAAA,EAC9B,GACF1zB,OAAA4F,GAAA5F,OAAA+mB,GAAA/mB,OAAAm0B,GAAAn0B,OAAA0zB,GAAA1zB,OAAAq0B,GAAAr0B,OAAAzE,GAAAyE,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAPD,QAAAohB,IAAoBlf,GAgBFC,IAAAuxB,IAAA,KAAA1xB,QAGZI,IAAA4C,GAAQtH,CAAI,GACZ2E,IAAAqxB,IAAU54B,GAAM44B,UAAW54B,GAAM24B,WACjChxB,IAAA0xB,KAAar5B,GAAM64B,SACnBjxB,IAAAkD,KAAY9K,GAAM8K;AAAS,MAAAjD;AAAA,EAAA3C,EAAA,EAAA,MAAA0C,KAAA1C,EAAA,EAAA,MAAAoC,KAAApC,EAAA,EAAA,MAAAqC,KAAArC,UAAAyC,KALtBE,IAAA,CACL7H,GAAMkJ,MACN5B,GACAC,GACAI,GACAC,CAA2B,GAC5B1C,QAAA0C,GAAA1C,QAAAoC,GAAApC,QAAAqC,GAAArC,QAAAyC,GAAAzC,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA4C;AAAA,SAAA5C,EAAA,EAAA,MAAAmH,KAAAnH,EAAA,EAAA,MAAAV,KAAAU,EAAA,EAAA,MAAA4F,KAAA5F,UAAAohB,KAAAphB,EAAA,EAAA,MAAA0zB,KAAA1zB,EAAA,EAAA,MAAA2C,KAAA3C,EAAA,EAAA,MAAAmC,KAbHS,8EACO,MAAA,UACS8wB,gBAAAA,GACFvsB,cAAAA,GACFvB,UAAAA,GACDwb,YACK,gBAAAjf,GAAwB,GAAAI,EAAAC,EAAA9F,QAC/BiG,CAMN,GAEArD,UAAAA,EAAAA,CACH,GAAcU,QAAAmH,GAAAnH,QAAAV,GAAAU,QAAA4F,GAAA5F,QAAAohB,GAAAphB,QAAA0zB,GAAA1zB,QAAA2C,GAAA3C,QAAAmC,GAAAnC,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA,GAhBd4C;AAgBc;AC9EX,MAAM9H,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAqzB,UAAA;AAAA,IAAA,wBAAA;AAAA,IAAArzB,OAAA;AAAA,EAAA;AAAA;ACqBZ,SAAAszB,GAAAn0B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAqB;AAAA,IAAA1E,OAAA8M;AAAAA,IAAAC,cAAA/H;AAAAA,IAAA0I,eAAAA;AAAAA,IAAAurB,UAAA/zB;AAAAA,IAAAmF,UAAAjF;AAAAA,IAAAuI,aAAApI;AAAAA,IAAApD,MAAAwE;AAAAA,IAAA5C,UAAAA;AAAAA,EAAAA,IAAAc;AAST,MAAA+B;AAAA,EAAAnC,SAAAO,KAPjB4B,IAAA5B,MAAAyB,SAAA,CAAA,IAAAzB,GAAiBP,OAAAO,GAAAP,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AAAjB,QAAAsI,IAAAnG,GAEAqyB,IAAA/zB,MAAAuB,SAAA,KAAAvB,GACAmF,IAAAjF,MAAAqB,SAAA,KAAArB,GACAuI,IAAApI,MAAAkB,SAAA,eAAAlB,GACApD,IAAAwE,MAAAF,SAAA,YAAAE,GAGA,CAAA3G,GAAAmN,CAAA,IAA0BN,GAAqBC,GAAiBC,GAAcW,CAAa;AAAC,MAAA7G;AAAA,EAAApC,EAAA,CAAA,MAAAw0B,KAAAx0B,SAAA0I,KAAA1I,EAAA,CAAA,MAAAzE,KAG1F6G,IAAA+G,CAAAA,MAAA;AACE,UAAAsrB,IAAoB,CAACl5B,EAAKmO,SAAUP,CAAS;AACzCC,QAAAA;AACJ,IAAIorB,IACFprB,IAAOqrB,IAAA,CAAA,GAAkBl5B,GAAO4N,CAAS,IAAI5N,EAAK2D,OAAQuJ,CAAAA,MAAOA,MAAMU,CAAS,IAEhFC,IAAOqrB,IAAA,CAAetrB,CAAS,IAAxB,CAAA,GAETT,EAASU,CAAI;AAAA,EAAC,GACfpJ,OAAAw0B,GAAAx0B,OAAA0I,GAAA1I,OAAAzE,GAAAyE,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAVH,QAAAuf,IAAend;AAYd,MAAAC;AAAA,EAAArC,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,CAAA,MAAAkJ,KAAAlJ,EAAA,CAAA,MAAAtC,KAAAsC,EAAA,CAAA,MAAAuf,KAAAvf,UAAAzE,KAGqC8G,IAAA;AAAA,IAAA9G,OAAAA;AAAAA,IAAAgkB,QAAAA;AAAAA,IAAA3Z,UAAAA;AAAAA,IAAAsD,aAAAA;AAAAA,IAAAxL,MAAAA;AAAAA,EAAAA,GAA4CsC,OAAA4F,GAAA5F,OAAAkJ,GAAAlJ,OAAAtC,GAAAsC,OAAAuf,GAAAvf,QAAAzE,GAAAyE,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAIvD,QAAAyC,IAAAyG,MAAgB,cAAcpO,GAAMw5B;AAAS,MAAA5xB;AAAA,EAAA1C,UAAAyC,KAA3DC,KAAC5H,GAAM4L,MAAOjE,CAA6C,GAACzC,QAAAyC,GAAAzC,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,EAAA,EAAA,MAAAV,KAAAU,UAAAkJ,KAAAlJ,EAAA,EAAA,MAAA0C,KAHrEC,IAAA,gBAAAL,EAAA,OAAA,EAAA,oBAAA,kCACO,MAAA,WACa4G,uBAAW,GAAA3G,EAAAC,EAAA7F,KACtB+F,CAA4D,GAElEpD,UAAAA,GACH,GAAWU,QAAAV,GAAAU,QAAAkJ,GAAAlJ,QAAA0C,GAAA1C,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA4C;AAAA,SAAA5C,EAAA,EAAA,MAAA2C,KAAA3C,UAAAqC,KAPbO,sBAAA2wB,GAAA,UAAA,EAAoC,OAAAlxB,GAClCM,UAAAA,GAOF,GAA8B3C,QAAA2C,GAAA3C,QAAAqC,GAAArC,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA,GAR9B4C;AAQ8B;ACtD3B,MAAM9H,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAgJ,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAhJ,OAAA;AAAA,EAAA;AAAA,EAAAyzB,KAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,uBAAA;AAAA,IAAAzzB,OAAA;AAAA,EAAA;AAAA,EAAAyU,QAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,oBAAA;AAAA,IAAAzU,OAAA;AAAA,EAAA;AAAA,EAAAwU,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAxU,OAAA;AAAA,EAAA;AAAA,EAAAuU,OAAA;AAAA,IAAA,eAAA;AAAA,IAAA,cAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAvU,OAAA;AAAA,EAAA;AAAA,GCkBb0zB,KAAiBv1B,EAA0C,IAAI;AAErE,SAAAw1B,KAAA;AACE,QAAA9rB,IAAY5I,EAAWy0B,EAAc;AACrC,MAAI,CAAC7rB;AAAK,UAAM,IAAIC,MAAM,8DAA8D;AAAC,SAClFD;AAAG;AAYZ,SAAAE,GAAA5I,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAX,UAAAA;AAAAA,IAAA4E,SAAAA;AAAAA,IAAA2wB,WAAAt0B;AAAAA,IAAAu0B,OAAAr0B;AAAAA,EAAAA,IAAAL,GAAoBy0B,IAAAt0B,MAAAyB,SAAA,QAAAzB,GAAmBu0B,IAAAr0B,MAAAuB,SAAA,MAAAvB,GACnD,CAAAoK,GAAA+T,CAAA,IAAwBpX,EAAS,EAAK,GACtCutB,IAAkB50B,GAAAA,GAClB60B,IAAiBx1B,EAA6C,IAAI;AAAC,MAAAmB;AAAA,EAAAX,SAAA80B,KAE1Cn0B,IAAAA,MAAA;AACvB,IAAIq0B,EAAQv1B,WAAUmM,aAAaopB,EAAQv1B,OAAQ,GACnDu1B,EAAQv1B,UAAWqM,WAAW,MAAM8S,EAAQ,EAAI,GAAGkW,CAAK;AAAA,EAAxC,GACjB90B,OAAA80B,GAAA90B,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAHD,QAAAi1B,IAAat0B;AAGF,MAAAG;AAAA,EAAAd,EAAA,CAAA,MAAA8H,OAAAC,IAAA,2BAAA,KAEcjH,IAAAA,MAAA;AACvB,IAAIk0B,EAAQv1B,WAAUmM,aAAaopB,EAAQv1B,OAAQ,GACnDu1B,EAAQv1B,UAAW,MACnBmf,EAAQ,EAAK;AAAA,EAAC,GACf5e,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAJD,QAAAk1B,IAAap0B;AAIP,MAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAA6K,KAAA7K,EAAA,CAAA,MAAA60B,KAAA70B,EAAA,CAAA,MAAAi1B,KAAAj1B,SAAA+0B,KAG4B7yB,IAAA;AAAA,IAAA2I,MAAAA;AAAAA,IAAAoqB,MAAAA;AAAAA,IAAAC,MAAAA;AAAAA,IAAAH,WAAAA;AAAAA,IAAAF,WAAAA;AAAAA,EAAAA,GAAwC70B,OAAA6K,GAAA7K,OAAA60B,GAAA70B,OAAAi1B,GAAAj1B,OAAA+0B,GAAA/0B,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,EAAAnC,EAAA,CAAA,MAAAkE,KAAAlE,EAAA,CAAA,MAAA6K,KAAA7K,EAAA,EAAA,MAAA60B,KAAA70B,UAAA+0B,KAGnE5yB,IAAA0I,KACC,gBAAAvI,EAAA,OAAA,EAAA,oBAAA,0BAAcyyB,IAAAA,GAAgB,MAAA,cAASxyB,EAAAC,EAAA7F,KAAS7B,GAAMmP,OAAQnP,GAAO+5B,CAAS,CAAC,GAC5E3wB,UAAAA,GACH,GACDlE,OAAAkE,GAAAlE,OAAA6K,GAAA7K,QAAA60B,GAAA70B,QAAA+0B,GAAA/0B,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA;AAAA,MAAAoC;AAAA,EAAApC,EAAA,EAAA,MAAAV,KAAAU,UAAAmC,KANHC,gFAAAG,EAAAC,EAAA7F,KAAiB7B,GAAM4L,IAAK,GACzBpH,UAAAA;AAAAA,IAAAA;AAAAA,IACA6C;AAAAA,EAAAA,GAKH,GAAWnC,QAAAV,GAAAU,QAAAmC,GAAAnC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,EAAA,MAAAkC,KAAAlC,UAAAoC,KARbC,sBAAAsyB,GAAA,UAAA,EAAgC,OAAAzyB,GAC9BE,UAAAA,GAQF,GAA0BpC,QAAAkC,GAAAlC,QAAAoC,GAAApC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA,GAT1BqC;AAS0B;AAU9B,SAAAkK,GAAAnM,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAX,UAAAA;AAAAA,EAAAA,IAAAc,GACf;AAAA,IAAAyK,MAAAA;AAAAA,IAAAoqB,MAAAA;AAAAA,IAAAC,MAAAA;AAAAA,IAAAH,WAAAA;AAAAA,EAAAA,IAAsCH,GAAAA,GAQhBr0B,IAAAsK,IAAAkqB,IAAA/yB;AAA4B,MAAAvB;AAAA,SAAAT,EAAA,CAAA,MAAAV,KAAAU,EAAA,CAAA,MAAAk1B,KAAAl1B,EAAA,CAAA,MAAAi1B,KAAAj1B,SAAAO,KALhDE,sBAAA,OAAA,EAAA,oBAAA,0BACkBw0B,gBAAAA,GACAC,gBAAAA,GACPD,SAAAA,GACDC,QAAAA,GACU,oBAAA30B,GAA4B,GAAAgC,EAAAC,EAAA7F,GAAA,GAE7C2C,UAAAA,GACH,GAAWU,OAAAV,GAAAU,OAAAk1B,GAAAl1B,OAAAi1B,GAAAj1B,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GARXS;AAQW;AAIR,MAAM00B,KAAU;AAAA,EACrBnsB,MAAAA;AAAAA,EACAuD,SAAAA;AACF,GC3FazR,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAA0F,cAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA1F,OAAA;AAAA,EAAA;AAAA,EAAAm0B,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,oBAAA;AAAA,IAAAn0B,OAAA;AAAA,EAAA;AAAA,EAAAo0B,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAAp0B,OAAA;AAAA,EAAA;AAAA,EAAAq0B,cAAA;AAAA,IAAA,0BAAA;AAAA,IAAAr0B,OAAA;AAAA,EAAA;AAAA,EAAAqhB,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAArhB,OAAA;AAAA,EAAA;AAAA,EAAAs0B,cAAA;AAAA,IAAA,oBAAA;AAAA,IAAAt0B,OAAA;AAAA,EAAA;AAAA,EAAAlE,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAkE,OAAA;AAAA,EAAA;AAAA;ACiBZ,SAAAu0B,GAAAp1B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAgB;AAAA,IAAA+G,SAAAC;AAAAA,IAAAC,gBAAA3G;AAAAA,IAAAk1B,iBAAAA;AAAAA,IAAA7vB,UAAAnF;AAAAA,IAAAqD,MAAAA;AAAAA,IAAAvI,OAAAA;AAAAA,IAAA+D,UAAAA;AAAAA,EAAAA,IAAAc,GAErB8G,IAAA3G,MAAAyB,SAAA,KAAAzB,GAEAqF,IAAAnF,MAAAuB,SAAA,KAAAvB,GAKA,CAAAuG,GAAA0uB,CAAA,IAA8BttB,GAC5BnB,GACAC,GACAuuB,CACF,GACAE,IAAiBn2B,EAAyB,IAAI;AAAC,MAAAmB;AAAA,EAAAX,EAAA,CAAA,MAAAgH,KAAAhH,SAAA4F,KAAA5F,EAAA,CAAA,MAAA01B,KAEf/0B,IAAAA,MAAA;AAC9B,IAAIiF,MACJ8vB,EAAW,CAAC1uB,CAAO,GAEf2uB,EAAQl2B,YACVk2B,EAAQl2B,QAAQuH,UAAW,CAACA;AAAAA,EAC7B,GACFhH,OAAAgH,GAAAhH,OAAA4F,GAAA5F,OAAA01B,GAAA11B,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAPD,QAAAohB,IAAoBzgB,GAUeG,IAAA8E,KAAY9K,GAAM6L;AAAa,MAAAzE;AAAA,EAAAlC,SAAAc,KAA7CoB,KAACpH,GAAM4L,MAAO5F,CAA+B,GAACd,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAOpD,QAAAmC,IAAA8E,MAAsBjF,SAAtBiF,IAAAjF,QACOI,IAAA6E,MAAsBjF,SAAtBkF,IAAAlF;AAA4D,MAAAK;AAAA,EAAArC,SAAAy1B,KAGlEpzB,IAAArD,CAAAA,MAAA;AACRy2B,IAAAA,IAAkBz2B,EAAC0I,OAAOV,OAAQ;AAAA,EAAC,GACpChH,OAAAy1B,GAAAz1B,OAAAqC,KAAAA,IAAArC,EAAA,CAAA;AAAA,MAAAyC;AAAA,EAAAzC,EAAA,CAAA,MAAAgH,KAAAhH,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,EAAA,MAAA8D,KAAA9D,UAAAmC,KAAAnC,EAAA,EAAA,MAAAoC,KAAApC,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAAzE,KAZHkH,IAAA,gBAAAH,EAAA,SAAA,EAAA,oBAAA,wBACOqzB,KAAAA,GACA,MAAA,YACA,MAAA,UACC7xB,MAAAA,GACCvI,OAAAA,GACE,SAAA4G,GACO,gBAAAC,GACNwD,UAAAA,GACIoB,gBAAAA,GACJ,UAAA3E,GAET,GAAAE,EAAAC,EAAAzF,OACMjC,GAAMiC,KAAM,GAAA,KAAA,QAAA,GACnBiD,OAAAgH,GAAAhH,OAAA4F,GAAA5F,QAAA8D,GAAA9D,QAAAmC,GAAAnC,QAAAoC,GAAApC,QAAAqC,GAAArC,QAAAzE,GAAAyE,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAOsB,QAAA0C,IAAAsE,IAAUlM,GAAMw6B,eAAgBx6B,GAAMu6B;AAAe,MAAA1yB;AAAA,EAAA3C,UAAA0C,KAApEC,KAAC7H,GAAMs6B,OAAQ1yB,CAAqD,GAAC1C,QAAA0C,GAAA1C,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAE3C,QAAA4C,IAAAoE,KAAWlM,GAAMy6B;AAAa,MAAA1yB;AAAA,EAAA7C,UAAA4C,KAA/DC,IAAA,gBAAAP,EAAA,QAAA,EAAA,oBAAA,wBAAA,GAAAC,EAAAC,EAAApF,MAAmBtC,GAAMwnB,OAAQ1f,CAA8B,EAAA,CAAA,GAAK5C,QAAA4C,GAAA5C,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA6H;AAAA,EAAA7H,EAAA,EAAA,MAAA4F,KAAA5F,EAAA,EAAA,MAAAohB,KAAAphB,EAAA,EAAA,MAAA2C,KAAA3C,UAAA6C,KARtEgF,8EACO,MAAA,UACK,UAAA,IACV,eAAA,IACUjC,UAAAA,GACDwb,SAAAA,GAAW,GAAA7e,EAAAC,EAAA9F,QACbiG,CAAqE,GAE5EE,UAAAA,GACF,GAAc7C,QAAA4F,GAAA5F,QAAAohB,GAAAphB,QAAA2C,GAAA3C,QAAA6C,GAAA7C,QAAA6H,KAAAA,IAAA7H,EAAA,EAAA;AAAA,MAAAgI;AAAA,EAAAhI,UAAAV,KACb0I,IAAA1I,KAAY,gBAAAgD,EAAA,QAAA,EAAA,oBAAA,wBAAA,GAAAC,EAAAC,EAAApF,IAAA,GAAYkC,UAAAA,EAAAA,CAAS,GAAYU,QAAAV,GAAAU,QAAAgI,KAAAA,IAAAhI,EAAA,EAAA;AAAA,MAAAiI;AAAA,SAAAjI,EAAA,EAAA,MAAA6H,KAAA7H,EAAA,EAAA,MAAAgI,KAAAhI,EAAA,EAAA,MAAAkC,KAAAlC,UAAAyC,KA1BhDwF,gFAAA1F,EAAAC,EAAAxF,OAAmBkF,CAA8C,GAC/DO,UAAAA;AAAAA,IAAAA;AAAAA,IAeAoF;AAAAA,IAUCG;AAAAA,EAAAA,GACH,GAAahI,QAAA6H,GAAA7H,QAAAgI,GAAAhI,QAAAkC,GAAAlC,QAAAyC,GAAAzC,QAAAiI,KAAAA,IAAAjI,EAAA,EAAA,GA3BbiI;AA2Ba;ACxEV,MAAMnN,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAmW,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAAnW,OAAA;AAAA,EAAA;AAAA,EAAAoW,aAAA;AAAA,IAAA,qBAAA;AAAA,IAAApW,OAAA;AAAA,EAAA;AAAA,EAAAqW,UAAA;AAAA,IAAA,qBAAA;AAAA,IAAArW,OAAA;AAAA,EAAA;AAAA,EAAA20B,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA30B,OAAA;AAAA,EAAA;AAAA,EAAAqa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAra,OAAA;AAAA,EAAA;AAAA,EAAAsa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAta,OAAA;AAAA,EAAA;AAAA,EAAAua,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAva,OAAA;AAAA,EAAA;AAAA,EAAAwa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAxa,OAAA;AAAA,EAAA;AAAA,EAAAya,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAza,OAAA;AAAA,EAAA;AAAA,EAAA0a,OAAA;AAAA,IAAA,cAAA;AAAA,IAAA1a,OAAA;AAAA,EAAA;AAAA,EAAA40B,QAAA;AAAA,IAAA,cAAA;AAAA,IAAA50B,OAAA;AAAA,EAAA;AAAA,EAAA60B,SAAA;AAAA,IAAA,cAAA;AAAA,IAAA70B,OAAA;AAAA,EAAA;AAAA,GCSb2a,KAAS;AAAA,EACbC,IAAI/gB,GAAOwgB;AAAAA,EACXrW,IAAInK,GAAOygB;AAAAA,EACXO,IAAIhhB,GAAO0gB;AAAAA,EACXtW,IAAIpK,GAAO2gB;AAAAA,EACXrR,IAAItP,GAAO4gB;AAAAA,EACXK,IAAIjhB,GAAO6gB;AAAAA,EACXoa,KAAKj7B,GAAO+6B;AAAAA,EACZG,MAAMl7B,GAAOg7B;AACf,GAEMte,KAAW;AAAA,EACfC,OAAO3c,GAAOsc;AAAAA,EACdM,QAAQ5c,GAAOuc;AAAAA,EACfM,KAAK7c,GAAOwc;AAAAA,EACZ2e,SAASn7B,GAAO86B;AAClB;AAEO,SAAAM,GAAA91B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAe;AAAA,IAAA+b,KAAAzb;AAAAA,IAAAwX,OAAAtX;AAAAA,IAAAnB,UAAAA;AAAAA,EAAAA,IAAAc,GAAC4b,IAAAzb,MAAAyB,SAAA,OAAAzB,GAAYwX,IAAAtX,MAAAuB,SAAA,YAAAvB,GACKE,IAAAib,GAAOI,CAAG,GAAGlb,IAAA0W,GAASO,CAAK;AAAC,MAAA7V;AAAA,EAAAlC,EAAA,CAAA,MAAAW,KAAAX,SAAAc,KAA1CoB,IAAA,CAACpH,GAAMkJ,MAAOrD,GAAaG,CAAe,GAACd,OAAAW,GAAAX,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAV,KAAAU,SAAAkC,KAA5DC,IAAA,gBAAAG,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAC,EAAAC,EAAA7F,KAAiBuF,CAA2C,GAAG5C,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAkC,GAAAlC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAAnFmC;AAAmF;AC5BrF,MAAMrH,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAmW,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAAnW,OAAA;AAAA,EAAA;AAAA,EAAAoW,aAAA;AAAA,IAAA,qBAAA;AAAA,IAAApW,OAAA;AAAA,EAAA;AAAA,EAAAqW,UAAA;AAAA,IAAA,qBAAA;AAAA,IAAArW,OAAA;AAAA,EAAA;AAAA,EAAAk1B,eAAA;AAAA,IAAA,qBAAA;AAAA,IAAAl1B,OAAA;AAAA,EAAA;AAAA,EAAA20B,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA30B,OAAA;AAAA,EAAA;AAAA,EAAAm1B,cAAA;AAAA,IAAA,yBAAA;AAAA,IAAAn1B,OAAA;AAAA,EAAA;AAAA,EAAAo1B,eAAA;AAAA,IAAA,yBAAA;AAAA,IAAAp1B,OAAA;AAAA,EAAA;AAAA,EAAAq1B,YAAA;AAAA,IAAA,yBAAA;AAAA,IAAAr1B,OAAA;AAAA,EAAA;AAAA,EAAAs1B,gBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAt1B,OAAA;AAAA,EAAA;AAAA,EAAAqa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAra,OAAA;AAAA,EAAA;AAAA,EAAAsa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAta,OAAA;AAAA,EAAA;AAAA,EAAAua,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAva,OAAA;AAAA,EAAA;AAAA,EAAAwa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAxa,OAAA;AAAA,EAAA;AAAA,EAAAya,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAza,OAAA;AAAA,EAAA;AAAA,EAAA0a,OAAA;AAAA,IAAA,cAAA;AAAA,IAAA1a,OAAA;AAAA,EAAA;AAAA,EAAA40B,QAAA;AAAA,IAAA,cAAA;AAAA,IAAA50B,OAAA;AAAA,EAAA;AAAA,EAAA60B,SAAA;AAAA,IAAA,cAAA;AAAA,IAAA70B,OAAA;AAAA,EAAA;AAAA,GCSb2a,KAAS;AAAA,EACbC,IAAI/gB,GAAOwgB;AAAAA,EACXrW,IAAInK,GAAOygB;AAAAA,EACXO,IAAIhhB,GAAO0gB;AAAAA,EACXtW,IAAIpK,GAAO2gB;AAAAA,EACXrR,IAAItP,GAAO4gB;AAAAA,EACXK,IAAIjhB,GAAO6gB;AAAAA,EACXoa,KAAKj7B,GAAO+6B;AAAAA,EACZG,MAAMl7B,GAAOg7B;AACf,GAEMte,KAAW;AAAA,EACfC,OAAO3c,GAAOsc;AAAAA,EACdM,QAAQ5c,GAAOuc;AAAAA,EACfM,KAAK7c,GAAOwc;AAAAA,EACZkf,UAAU17B,GAAOq7B;AAAAA,EACjBF,SAASn7B,GAAO86B;AAClB,GAEMa,KAAa;AAAA,EACjBhf,OAAO3c,GAAOs7B;AAAAA,EACd1e,QAAQ5c,GAAOu7B;AAAAA,EACf1e,KAAK7c,GAAOw7B;AAAAA,EACZI,SAAS57B,GAAOy7B;AAClB;AAEO,SAAAI,GAAAv2B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAA+b,KAAAzb;AAAAA,IAAAwX,OAAAtX;AAAAA,IAAAm2B,SAAAj2B;AAAAA,IAAArB,UAAAA;AAAAA,EAAAA,IAAAc,GAAC4b,IAAAzb,MAAAyB,SAAA,OAAAzB,GAAYwX,IAAAtX,MAAAuB,SAAA,WAAAvB,GAAkBm2B,IAAAj2B,MAAAqB,SAAA,UAAArB,GAEnBG,IAAA8a,GAAOI,CAAG,GAAG9Z,IAAAsV,GAASO,CAAK,GAAG5V,IAAAs0B,GAAWG,CAAO;AAAC,MAAAx0B;AAAA,EAAApC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KAAAlC,EAAA,CAAA,MAAAmC,KAA/DC,IAAA,CAACtH,GAAMkJ,MAAOlD,GAAaoB,GAAiBC,CAAmB,GAACnC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,CAAA,MAAAV,KAAAU,SAAAoC,KAAjFC,IAAA,gBAAAC,EAAA,OAAA,EAAA,oBAAA,wBAAA,GAAAC,EAAAC,EAAA7F,KAAiByF,CAAgE,GAC9E9C,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAoC,GAAApC,OAAAqC,KAAAA,IAAArC,EAAA,CAAA,GAFXqC;AAEW;ACvCR,MAAMvH,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAAmW,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAAnW,OAAA;AAAA,EAAA;AAAA,EAAAoW,aAAA;AAAA,IAAA,qBAAA;AAAA,IAAApW,OAAA;AAAA,EAAA;AAAA,EAAAqW,UAAA;AAAA,IAAA,qBAAA;AAAA,IAAArW,OAAA;AAAA,EAAA;AAAA,EAAAm1B,cAAA;AAAA,IAAA,yBAAA;AAAA,IAAAn1B,OAAA;AAAA,EAAA;AAAA,EAAAo1B,eAAA;AAAA,IAAA,yBAAA;AAAA,IAAAp1B,OAAA;AAAA,EAAA;AAAA,EAAAq1B,YAAA;AAAA,IAAA,yBAAA;AAAA,IAAAr1B,OAAA;AAAA,EAAA;AAAA,EAAAs1B,gBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAt1B,OAAA;AAAA,EAAA;AAAA,EAAAqa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAra,OAAA;AAAA,EAAA;AAAA,EAAAsa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAta,OAAA;AAAA,EAAA;AAAA,EAAAua,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAva,OAAA;AAAA,EAAA;AAAA,EAAAwa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAxa,OAAA;AAAA,EAAA;AAAA,EAAAya,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAza,OAAA;AAAA,EAAA;AAAA,EAAA0a,OAAA;AAAA,IAAA,cAAA;AAAA,IAAA1a,OAAA;AAAA,EAAA;AAAA,EAAA40B,QAAA;AAAA,IAAA,cAAA;AAAA,IAAA50B,OAAA;AAAA,EAAA;AAAA,EAAA60B,SAAA;AAAA,IAAA,cAAA;AAAA,IAAA70B,OAAA;AAAA,EAAA;AAAA,GCSb2a,KAAS;AAAA,EACbC,IAAI/gB,GAAOwgB;AAAAA,EACXrW,IAAInK,GAAOygB;AAAAA,EACXO,IAAIhhB,GAAO0gB;AAAAA,EACXtW,IAAIpK,GAAO2gB;AAAAA,EACXrR,IAAItP,GAAO4gB;AAAAA,EACXK,IAAIjhB,GAAO6gB;AAAAA,EACXoa,KAAKj7B,GAAO+6B;AAAAA,EACZG,MAAMl7B,GAAOg7B;AACf,GAEMte,KAAW;AAAA,EACfC,OAAO3c,GAAOsc;AAAAA,EACdM,QAAQ5c,GAAOuc;AAAAA,EACfM,KAAK7c,GAAOwc;AACd,GAEMmf,KAAa;AAAA,EACjBhf,OAAO3c,GAAOs7B;AAAAA,EACd1e,QAAQ5c,GAAOu7B;AAAAA,EACf1e,KAAK7c,GAAOw7B;AAAAA,EACZI,SAAS57B,GAAOy7B;AAClB;AAEO,SAAAM,GAAAz2B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAA+b,KAAAzb;AAAAA,IAAAwX,OAAAtX;AAAAA,IAAAm2B,SAAAj2B;AAAAA,IAAArB,UAAAA;AAAAA,EAAAA,IAAAc,GAAC4b,IAAAzb,MAAAyB,SAAA,OAAAzB,GAAYwX,IAAAtX,MAAAuB,SAAA,UAAAvB,GAAiBm2B,IAAAj2B,MAAAqB,SAAA,UAAArB,GAEnBG,IAAA8a,GAAOI,CAAG,GAAG9Z,IAAAsV,GAASO,CAAK,GAAG5V,IAAAs0B,GAAWG,CAAO;AAAC,MAAAx0B;AAAA,EAAApC,EAAA,CAAA,MAAAc,KAAAd,SAAAkC,KAAAlC,EAAA,CAAA,MAAAmC,KAA/DC,IAAA,CAACtH,GAAMkJ,MAAOlD,GAAaoB,GAAiBC,CAAmB,GAACnC,OAAAc,GAAAd,OAAAkC,GAAAlC,OAAAmC,GAAAnC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,CAAA,MAAAV,KAAAU,SAAAoC,KAAjFC,IAAA,gBAAAC,EAAA,OAAA,EAAA,oBAAA,0BAAA,GAAAC,EAAAC,EAAA7F,KAAiByF,CAAgE,GAC9E9C,UAAAA,EAAAA,CACH,GAAWU,OAAAV,GAAAU,OAAAoC,GAAApC,OAAAqC,KAAAA,IAAArC,EAAA,CAAA,GAFXqC;AAEW;ACvC4C,MAAA8P,KAAA;AAAA,EAAA,8BAAA;AAAA,EAAA,OAAA;AAAA,GAE9CrX,KAAM;AAAA,EAAAkJ,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA/C,OAAA;AAAA,EAAA;AAAA,EAAA61B,MAAA;AAAA,IAAA,8BAAA;AAAA,IAAA71B,OAAA;AAAA,EAAA;AAAA,EAAA81B,MAAA;AAAA,IAAA,8BAAA;AAAA,IAAA91B,OAAA;AAAA,EAAA;AAAA,EAAA+1B,MAAA;AAAA,IAAA,8BAAA;AAAA,IAAA/1B,OAAA;AAAA,EAAA;AAAA,EAAAg2B,MAAA;AAAA,IAAA,8BAAA;AAAA,IAAAh2B,OAAA;AAAA,EAAA;AAAA,EAAAi2B,MAAA;AAAA,IAAA,8BAAA;AAAA,IAAAj2B,OAAA;AAAA,EAAA;AAAA,EAAAk2B,MAAA;AAAA,IAAA,8BAAA;AAAA,IAAAl2B,OAAA;AAAA,EAAA;AAAA,EAAAm2B,SAAAA,CAUPxZ,OAAgBzL,IAAA;AAAA,IAAA,2BACH,4BAA4ByL,CAAQ,oBAApC,4BAA4BA,CAAQ,YAAS5b;AAAAA,EAAAA,CAAA;AAAA,EAAAsZ,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAra,OAAA;AAAA,EAAA;AAAA,EAAAsa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAta,OAAA;AAAA,EAAA;AAAA,EAAAua,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAva,OAAA;AAAA,EAAA;AAAA,EAAAwa,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAxa,OAAA;AAAA,EAAA;AAAA,EAAAya,OAAA;AAAA,IAAA,cAAA;AAAA,IAAAza,OAAA;AAAA,EAAA;AAAA,EAAA0a,OAAA;AAAA,IAAA,cAAA;AAAA,IAAA1a,OAAA;AAAA,EAAA;AAAA,EAAA40B,QAAA;AAAA,IAAA,cAAA;AAAA,IAAA50B,OAAA;AAAA,EAAA;AAAA,EAAA60B,SAAA;AAAA,IAAA,cAAA;AAAA,IAAA70B,OAAA;AAAA,EAAA;AAAA,GCFhE2a,KAAS;AAAA,EACbC,IAAI/gB,GAAOwgB;AAAAA,EACXrW,IAAInK,GAAOygB;AAAAA,EACXO,IAAIhhB,GAAO0gB;AAAAA,EACXtW,IAAIpK,GAAO2gB;AAAAA,EACXrR,IAAItP,GAAO4gB;AAAAA,EACXK,IAAIjhB,GAAO6gB;AAAAA,EACXoa,KAAKj7B,GAAO+6B;AAAAA,EACZG,MAAMl7B,GAAOg7B;AACf,GAEMuB,KAAa;AAAA,EACjB,GAAGv8B,GAAOg8B;AAAAA,EACV,GAAGh8B,GAAOi8B;AAAAA,EACV,GAAGj8B,GAAOk8B;AAAAA,EACV,GAAGl8B,GAAOm8B;AAAAA,EACV,GAAGn8B,GAAOo8B;AAAAA,EACV,GAAGp8B,GAAOq8B;AACZ;AAEO,SAAAG,GAAAl3B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAA+b,KAAAzb;AAAAA,IAAAg3B,SAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAl4B,UAAAA;AAAAA,EAAAA,IAAAc,GAAC4b,IAAAzb,MAAAyB,SAAA,OAAAzB;AAAU,MAAAE;AAAA,EAAAT,EAAA,CAAA,MAAAu3B,KAAAv3B,SAAAw3B,KACV/2B,IAAA+2B,IAChB18B,GAAMs8B,QAASI,CAGL,IAFVD,IACEF,GAAWE,CAAO,IADpBv1B,QAEWhC,OAAAu3B,GAAAv3B,OAAAw3B,GAAAx3B,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAJf,QAAAy3B,IAAoBh3B,GAMkBE,IAAAib,GAAOI,CAAG;AAAC,MAAAlb;AAAA,EAAAd,EAAA,CAAA,MAAAy3B,KAAAz3B,SAAAW,KAAzBG,IAAA,CAAChG,GAAMkJ,MAAOrD,GAAa82B,CAAW,GAACz3B,OAAAy3B,GAAAz3B,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAAc,KAAxDoB,IAAA,gBAAAI,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAC,EAAAC,EAAA7F,KAAiBmE,CAAuC,GAAGxB,UAAAA,EAAAA,CAAS,GAAWU,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA,GAA/EkC;AAA+E;ACnCjF,MAAMpH,KAAM;AAAA,EAAA4L,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAAzF,OAAA;AAAA,EAAA;AAAA,EAAAy2B,WAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAz2B,OAAA;AAAA,EAAA;AAAA,EAAA02B,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA12B,OAAA;AAAA,EAAA;AAAA,EAAA22B,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA32B,OAAA;AAAA,EAAA;AAAA,EAAA42B,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA52B,OAAA;AAAA,EAAA;AAAA,EAAA62B,OAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA72B,OAAA;AAAA,EAAA;AAAA,EAAA82B,OAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA92B,OAAA;AAAA,EAAA;AAAA,EAAA+2B,OAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA/2B,OAAA;AAAA,EAAA;AAAA,EAAAg3B,eAAA;AAAA,IAAA,qBAAA;AAAA,IAAAh3B,OAAA;AAAA,EAAA;AAAA,EAAAi3B,aAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAAj3B,OAAA;AAAA,EAAA;AAAA,GCabk3B,KAAc;AAAA,EAClBlzB,IAAInK,GAAO68B;AAAAA,EACXzyB,IAAIpK,GAAO88B;AAAAA,EACXxtB,IAAItP,GAAO+8B;AAAAA,EACXrxB,MAAM;AACR,GAEM4xB,KAAa;AAAA,EACjBnzB,IAAInK,GAAOg9B;AAAAA,EACX5yB,IAAIpK,GAAOi9B;AAAAA,EACX3tB,IAAItP,GAAOk9B;AACb;AAEO,SAAAK,GAAAj4B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,EAAA,GAAmB;AAAA,IAAAq4B,UAAA/3B;AAAAA,IAAAg4B,SAAA93B;AAAAA,IAAA3D,QAAAA;AAAAA,IAAAwC,UAAAA;AAAAA,EAAAA,IAAAc,GAACk4B,IAAA/3B,MAAAyB,SAAA,OAAAzB,GAAiBg4B,IAAA93B,MAAAuB,SAAA,OAAAvB,GAC1C+3B,IAAWL,GAAYG,CAAQ,GAC/BG,IAAYL,GAAWG,CAAO;AAAC,MAAA53B;AAAA,EAAAX,EAAA,CAAA,MAAAlD,KAAAkD,SAAAy4B,KAI1B93B,IAAA7D,KAAU,QACT,gBAAAwF,EAAA,YAAA,oBAAA,8BAAA,GAAAC,EAAAC,EAAA1F,QAAqBhC,GAAM48B,WAAY58B,GAAM+8B,OAAQY,GAAK39B,GAAMm9B,aAAc,GAC3En7B,UAAAA,GACH,GACDkD,OAAAlD,GAAAkD,OAAAy4B,GAAAz4B,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAc;AAAA,EAAAd,EAAA,CAAA,MAAAw4B,KAAAx4B,SAAAy4B,KACiB33B,IAAA,CAAChG,GAAM48B,WAAYc,GAAIC,GAAK39B,GAAMo9B,WAAY,GAACl4B,OAAAw4B,GAAAx4B,OAAAy4B,GAAAz4B,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,CAAA,MAAAV,KAAAU,SAAAc,KAAjEoB,IAAA,gBAAAI,EAAA,QAAA,EAAA,oBAAA,8BAAA,GAAAC,EAAAC,EAAAvF,MAAkB6D,CAA+C,GAAGxB,UAAAA,EAAAA,CAAS,GAAYU,OAAAV,GAAAU,OAAAc,GAAAd,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAA,MAAAmC;AAAA,SAAAnC,EAAA,CAAA,MAAAW,KAAAX,UAAAkC,KAN3FC,oFAAAI,EAAAC,EAAA7F,KAAiB7B,GAAM4L,IAAK,GACzB/F,UAAAA;AAAAA,IAAAA;AAAAA,IAKDuB;AAAAA,EAAAA,GACF,GAAWlC,OAAAW,GAAAX,QAAAkC,GAAAlC,QAAAmC,KAAAA,IAAAnC,EAAA,EAAA,GAPXmC;AAOW;ACjCR,SAAAu2B,GAAAt4B,GAAA;AAAA,QAAAJ,IAAAC,EAAAA,EAAA,CAAA;AAAA,MAAAM;AAAA,EAAAP,SAAAI,KACLG,IAAAH,MAAA4B,SAAA,CAAA,IAAA5B,GAAsCJ,OAAAI,GAAAJ,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAtC,QAAA3F,IAAAkG,GAKA;AAAA,IAAAo4B,cAAAl4B;AAAAA,IAAAm4B,eAAAj4B;AAAAA,EAAAA,IAAkDtG,GAA3Cs+B,IAAAl4B,MAAAuB,SAAA,MAAAvB,GAAoBm4B,IAAAj4B,MAAAqB,SAAA,MAAArB,GAC3BuZ,IAAY1a,EAAiB,IAAI,GACjC,CAAA9B,GAAAm7B,CAAA,IAAwBrxB,EAAwB,SAAS;AAAC,MAAA1G,GAAAoB;AAAA,EAAAlC,EAAA,CAAA,MAAA24B,KAAA34B,SAAA44B,KAEhD93B,IAAAA,MAAA;AACR,UAAA2e,IAAgBvF,EAAGza;AACnB,QAAI,CAACggB;AAAO;AAEZ,QAAAqZ,IAA2B;AAE3B,UAAA5U,IAAiB,IAAIC,eAAenmB,CAAAA,MAAA;AAClC,MAAI86B,MAAU,QAAMC,qBAAqBD,CAAK,GAE9CA,IAAQE,sBAAsB,MAAA;AAC5B,cAAAC,IAAcj7B,EAAO,CAAA;AACrB,YAAI,CAACi7B;AAAK;AAEV,cAAA3lB,IAAc2lB,EAAKC,iBAAoB,CAAA,GAAYC,cAAIF,EAAKG,YAAY9lB;AAExE,QAAIA,IAAQqlB,IACVE,EAAQ,SAAS,IACRvlB,KAASslB,IAClBC,EAAQ,UAAU,IAElBA,EAAQ,SAAS;AAAA,MAClB,CACF;AAAA,IAbI,CAcN;AAED3U,WAAAA,EAAQE,QAAS3E,CAAO,GAEjB,MAAA;AACLyE,MAAAA,EAAQG,WAAAA,GACJyU,MAAU,QAAMC,qBAAqBD,CAAK;AAAA,IAAC;AAAA,EAChD,GACA52B,IAAA,CAACy2B,GAAcC,CAAa,GAAC54B,OAAA24B,GAAA34B,OAAA44B,GAAA54B,OAAAc,GAAAd,OAAAkC,MAAApB,IAAAd,EAAA,CAAA,GAAAkC,IAAAlC,EAAA,CAAA,IA/BhCmD,EAAUrC,GA+BPoB,CAA6B;AAAC,MAAAC;AAAA,SAAAnC,SAAAtC,KAE1ByE,IAAA;AAAA,IAAA+X,KAAAA;AAAAA,IAAAxc,MAAAA;AAAAA,EAAAA,GAAWsC,OAAAtC,GAAAsC,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA,GAAXmC;AAAW;","x_google_ignoreList":[0,1,2,3,74]}