@duro-app/ui 0.5.2 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alert/styles.css.d.ts.map +1 -1
- package/dist/components/Badge/styles.css.d.ts.map +1 -1
- package/dist/components/Button/styles.css.d.ts.map +1 -1
- package/dist/components/Card/styles.css.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.stories.d.ts +12 -0
- package/dist/components/Checkbox/Checkbox.stories.d.ts.map +1 -0
- package/dist/components/Checkbox/styles.css.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.stories.d.ts +10 -0
- package/dist/components/EmptyState/EmptyState.stories.d.ts.map +1 -0
- package/dist/components/EmptyState/styles.css.d.ts.map +1 -1
- package/dist/components/Field/styles.css.d.ts.map +1 -1
- package/dist/components/Input/styles.css.d.ts.map +1 -1
- package/dist/components/LinkButton/LinkButton.stories.d.ts +12 -0
- package/dist/components/LinkButton/LinkButton.stories.d.ts.map +1 -0
- package/dist/components/LinkButton/styles.css.d.ts.map +1 -1
- package/dist/components/Menu/Menu.stories.d.ts +1 -0
- package/dist/components/Menu/Menu.stories.d.ts.map +1 -1
- package/dist/components/Menu/styles.css.d.ts.map +1 -1
- package/dist/components/ScrollArea/styles.css.d.ts.map +1 -1
- package/dist/components/Select/Select.stories.d.ts +1 -0
- package/dist/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/components/Select/styles.css.d.ts.map +1 -1
- package/dist/components/SideNav/SideNav.d.ts.map +1 -1
- package/dist/components/SideNav/SideNav.stories.d.ts +9 -0
- package/dist/components/SideNav/SideNav.stories.d.ts.map +1 -0
- package/dist/components/SideNav/styles.css.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.stories.d.ts +11 -0
- package/dist/components/Spinner/Spinner.stories.d.ts.map +1 -0
- package/dist/components/StatusIcon/StatusIcon.d.ts.map +1 -1
- package/dist/components/StatusIcon/StatusIcon.stories.d.ts +14 -0
- package/dist/components/StatusIcon/StatusIcon.stories.d.ts.map +1 -0
- package/dist/components/StatusIcon/styles.css.d.ts.map +1 -1
- package/dist/components/Table/styles.css.d.ts.map +1 -1
- package/dist/components/Tabs/styles.css.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.stories.d.ts +11 -0
- package/dist/components/Textarea/Textarea.stories.d.ts.map +1 -0
- package/dist/components/Textarea/styles.css.d.ts.map +1 -1
- package/dist/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
- package/dist/components/Tooltip/styles.css.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +1243 -2450
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/dist/stubs/react-native.d.ts +0 -27
- package/dist/stubs/react-native.d.ts.map +0 -1
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","../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/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/stubs/react-native.ts","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/web/utils/index.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/web/utils/hasProperty.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/lib/extract/transform.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/lib/extract/transformToRn.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/lib/extract/extractTransform.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/web/utils/parseTransform.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/lib/resolve.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/lib/resolveAssetUri.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/web/utils/prepare.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/web/utils/convertInt32Color.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/lib/SvgTouchableMixin.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/web/WebShape.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/elements.web.js","../../../node_modules/.pnpm/react-native-svg@15.15.3_react-native@0.84.1_@babel+core@7.29.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/react-native-svg/lib/module/xml.js","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../src/components/Field/FieldContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Input/styles.css.ts","../src/components/Input/Input.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/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","../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/dist/index.js","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx"],"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","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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 },\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 {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\ninterface AlertProps {\n variant?: AlertVariant\n children: ReactNode\n}\n\nexport function Alert({variant = 'info', children}: AlertProps) {\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography} from '@duro-app/tokens'\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 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 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' | '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, radii, spacing, shadows, typography} from '@duro-app/tokens'\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","// Minimal react-native shim for react-native-svg web builds\nimport {createElement} from 'react'\n\nexport const Platform = {OS: 'web'} as const\nexport const StyleSheet = {create: (s: any) => s}\nexport const Image = {}\nexport const PixelRatio = {get: () => 1}\nexport const NativeModules = {}\nexport const processColor = (c: any) => c\nexport const findNodeHandle = () => null\nexport const Touchable = {Mixin: {}}\nexport const PanResponder = {create: () => ({})}\nexport const View = 'div'\nexport const TurboModuleRegistry = {get: () => null, getEnforcing: () => null}\nexport {createElement as unstable_createElement}\n","export const camelCaseToDashed = camelCase => {\n return camelCase.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n};\nexport const getBoundingClientRect = node => {\n if (node) {\n const isElement = node.nodeType === 1; /* Node.ELEMENT_NODE */\n if (isElement && typeof node.getBoundingClientRect === 'function') {\n return node.getBoundingClientRect();\n }\n }\n throw new Error('Can not get boundingClientRect of ' + node || 'undefined');\n};\nconst measureLayout = (node, callback) => {\n const relativeNode = node === null || node === void 0 ? void 0 : node.parentNode;\n if (relativeNode) {\n setTimeout(() => {\n // @ts-expect-error TODO: handle it better\n const relativeRect = getBoundingClientRect(relativeNode);\n const {\n height,\n left,\n top,\n width\n } = getBoundingClientRect(node);\n const x = left - relativeRect.left;\n const y = top - relativeRect.top;\n callback(x, y, width, height, left, top);\n }, 0);\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function remeasure() {\n const tag = this.state.touchable.responderID;\n if (tag === null) {\n return;\n }\n measureLayout(tag, this._handleQueryLayout);\n}\n\n/* Taken from here: https://gist.github.com/jennyknuth/222825e315d45a738ed9d6e04c7a88d0 */\nexport function encodeSvg(svgString) {\n return svgString.replace('<svg', ~svgString.indexOf('xmlns') ? '<svg' : '<svg xmlns=\"http://www.w3.org/2000/svg\"').replace(/\"/g, \"'\").replace(/%/g, '%25').replace(/#/g, '%23').replace(/{/g, '%7B').replace(/}/g, '%7D').replace(/</g, '%3C').replace(/>/g, '%3E').replace(/\\s+/g, ' ');\n}\nconst KEEP_CAMEL_CASE = new Set(['stdDeviation', 'edgeMode', 'kernelMatrix', 'kernelUnitLength', 'preserveAlpha', 'baseFrequency', 'targetX', 'targetY', 'numOctaves', 'stitchTiles', 'filterUnits', 'primitiveUnits', 'pathLength', 'gradientUnits', 'gradientTransform', 'spreadMethod', 'markerHeight', 'markerUnits', 'markerWidth', 'viewBox', 'refX', 'refY', 'maskContentUnits', 'maskUnits', 'patternContentUnits', 'patternTransform', 'patternUnits', 'textLength', 'lengthAdjust', 'startOffset', 'clipPathUnits']);\nexport const getAttributeName = attr => {\n return KEEP_CAMEL_CASE.has(attr) ? attr : camelCaseToDashed(attr);\n};\n//# sourceMappingURL=index.js.map","export function hasTouchableProperty(props) {\n return !!(props.onPress || props.onPressIn || props.onPressOut || props.onLongPress);\n}\n//# sourceMappingURL=hasProperty.js.map","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() {\n this.constructor = child;\n }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\npeg$subclass(peg$SyntaxError, Error);\npeg$SyntaxError.buildMessage = function (expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function (expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n \"class\": function (expectation) {\n var escapedParts = \"\",\n i;\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1]) : classEscape(expectation.parts[i]);\n }\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n any: function (expectation) {\n return \"any character\";\n },\n end: function (expectation) {\n return \"end of input\";\n },\n other: function (expectation) {\n return expectation.description;\n }\n };\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n function literalEscape(s) {\n return s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\0/g, '\\\\0').replace(/\\t/g, '\\\\t').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n }).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n function classEscape(s) {\n return s.replace(/\\\\/g, '\\\\\\\\').replace(/\\]/g, '\\\\]').replace(/\\^/g, '\\\\^').replace(/-/g, '\\\\-').replace(/\\0/g, '\\\\0').replace(/\\t/g, '\\\\t').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n }).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i,\n j;\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n descriptions.sort();\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n default:\n return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n }\n }\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n var peg$FAILED = {},\n peg$startRuleFunctions = {\n transformList: peg$parsetransformList\n },\n peg$startRuleFunction = peg$parsetransformList,\n peg$c0 = function (ts) {\n return ts;\n },\n peg$c1 = function (t, ts) {\n return multiply_matrices(t, ts);\n },\n peg$c2 = \"matrix\",\n peg$c3 = peg$literalExpectation(\"matrix\", false),\n peg$c4 = \"(\",\n peg$c5 = peg$literalExpectation(\"(\", false),\n peg$c6 = \")\",\n peg$c7 = peg$literalExpectation(\")\", false),\n peg$c8 = function (a, b, c, d, e, f) {\n return [a, c, e, b, d, f];\n },\n peg$c9 = \"translate\",\n peg$c10 = peg$literalExpectation(\"translate\", false),\n peg$c11 = function (tx, ty) {\n return [1, 0, tx, 0, 1, ty || 0];\n },\n peg$c12 = \"scale\",\n peg$c13 = peg$literalExpectation(\"scale\", false),\n peg$c14 = function (sx, sy) {\n return [sx, 0, 0, 0, sy === null ? sx : sy, 0];\n },\n peg$c15 = \"rotate\",\n peg$c16 = peg$literalExpectation(\"rotate\", false),\n peg$c17 = function (angle, c) {\n var cos = Math.cos(deg2rad * angle);\n var sin = Math.sin(deg2rad * angle);\n if (c !== null) {\n var x = c[0];\n var y = c[1];\n return [cos, -sin, cos * -x + -sin * -y + x, sin, cos, sin * -x + cos * -y + y];\n }\n return [cos, -sin, 0, sin, cos, 0];\n },\n peg$c18 = \"skewX\",\n peg$c19 = peg$literalExpectation(\"skewX\", false),\n peg$c20 = function (angle) {\n return [1, Math.tan(deg2rad * angle), 0, 0, 1, 0];\n },\n peg$c21 = \"skewY\",\n peg$c22 = peg$literalExpectation(\"skewY\", false),\n peg$c23 = function (angle) {\n return [1, 0, 0, Math.tan(deg2rad * angle), 1, 0];\n },\n peg$c24 = function (f) {\n return parseFloat(f.join(\"\"));\n },\n peg$c25 = function (i) {\n return parseInt(i.join(\"\"));\n },\n peg$c26 = function (n) {\n return n;\n },\n peg$c27 = function (n1, n2) {\n return [n1, n2];\n },\n peg$c28 = \",\",\n peg$c29 = peg$literalExpectation(\",\", false),\n peg$c30 = function (ds) {\n return ds.join(\"\");\n },\n peg$c31 = function (f) {\n return f.join(\"\");\n },\n peg$c32 = function (d) {\n return d.join(\"\");\n },\n peg$c33 = peg$otherExpectation(\"fractionalConstant\"),\n peg$c34 = \".\",\n peg$c35 = peg$literalExpectation(\".\", false),\n peg$c36 = function (d1, d2) {\n return [d1 ? d1.join(\"\") : null, \".\", d2.join(\"\")].join(\"\");\n },\n peg$c37 = /^[eE]/,\n peg$c38 = peg$classExpectation([\"e\", \"E\"], false, false),\n peg$c39 = function (e) {\n return [e[0], e[1], e[2].join(\"\")].join(\"\");\n },\n peg$c40 = /^[+\\-]/,\n peg$c41 = peg$classExpectation([\"+\", \"-\"], false, false),\n peg$c42 = /^[0-9]/,\n peg$c43 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c44 = /^[ \\t\\r\\n]/,\n peg$c45 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false),\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{\n line: 1,\n column: 1\n }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n peg$result;\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location);\n }\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildSimpleError(message, location);\n }\n function peg$literalExpectation(text, ignoreCase) {\n return {\n type: \"literal\",\n text: text,\n ignoreCase: ignoreCase\n };\n }\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return {\n type: \"class\",\n parts: parts,\n inverted: inverted,\n ignoreCase: ignoreCase\n };\n }\n function peg$anyExpectation() {\n return {\n type: \"any\"\n };\n }\n function peg$endExpectation() {\n return {\n type: \"end\"\n };\n }\n function peg$otherExpectation(description) {\n return {\n type: \"other\",\n description: description\n };\n }\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p;\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n p++;\n }\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n peg$maxFailExpected.push(expected);\n }\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected, found), expected, found, location);\n }\n function peg$parsetransformList() {\n var s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetransforms();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsetransforms() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$parsetransform();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsecommaWsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsecommaWsp();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetransforms();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsetransform();\n }\n return s0;\n }\n function peg$parsetransform() {\n var s0;\n s0 = peg$parsematrix();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetranslate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsescale();\n if (s0 === peg$FAILED) {\n s0 = peg$parserotate();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewY();\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parsematrix() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c2) {\n s1 = peg$c2;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c3);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWsp();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenumber();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsecommaWsp();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenumber();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsecommaWsp();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsenumber();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsecommaWsp();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsenumber();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsecommaWsp();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsenumber();\n if (s15 !== peg$FAILED) {\n s16 = [];\n s17 = peg$parsewsp();\n while (s17 !== peg$FAILED) {\n s16.push(s17);\n s17 = peg$parsewsp();\n }\n if (s16 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s17 = peg$c6;\n peg$currPos++;\n } else {\n s17 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s17 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c8(s5, s7, s9, s11, s13, s15);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsetranslate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9) === peg$c9) {\n s1 = peg$c9;\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c10);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsescale() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c13);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c14(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parserotate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c16);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspTwoNumbers();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c17(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseskewX() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c18) {\n s1 = peg$c18;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c19);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c6;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseskewY() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c21) {\n s1 = peg$c21;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c22);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c6;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsenumber() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsefloatingPointConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseintegerConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n }\n return s0;\n }\n function peg$parsecommaWspNumber() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsecommaWspTwoNumbers() {\n var s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsenumber();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsecommaWsp() {\n var s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsecomma();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecomma();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsecomma() {\n var s0;\n if (input.charCodeAt(peg$currPos) === 44) {\n s0 = peg$c28;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c29);\n }\n }\n return s0;\n }\n function peg$parseintegerConstant() {\n var s0, s1;\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsefloatingPointConstant() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsefractionalConstant();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexponent();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsedigitSequence();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexponent();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s1);\n }\n s0 = s1;\n }\n return s0;\n }\n function peg$parsefractionalConstant() {\n var s0, s1, s2, s3;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c34;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c34;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n return s0;\n }\n function peg$parseexponent() {\n var s0, s1, s2, s3, s4;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c37.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c38);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsesign();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsedigitSequence();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c39(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsesign() {\n var s0;\n if (peg$c40.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c41);\n }\n }\n return s0;\n }\n function peg$parsedigitSequence() {\n var s0, s1;\n s0 = [];\n s1 = peg$parsedigit();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedigit();\n }\n } else {\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedigit() {\n var s0;\n if (peg$c42.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c43);\n }\n }\n return s0;\n }\n function peg$parsewsp() {\n var s0;\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c45);\n }\n }\n return s0;\n }\n var deg2rad = Math.PI / 180;\n\n /*\n ╔═ ═╗ ╔═ ═╗ ╔═ ═╗\n ║ al cl el ║ ║ ar cr er ║ ║ a c e ║\n ║ bl dl fl ║ * ║ br dr fr ║ = ║ b d f ║\n ║ 0 0 1 ║ ║ 0 0 1 ║ ║ 0 0 1 ║\n ╚═ ═╝ ╚═ ═╝ ╚═ ═╝\n */\n function multiply_matrices(l, r) {\n var al = l[0];\n var cl = l[1];\n var el = l[2];\n var bl = l[3];\n var dl = l[4];\n var fl = l[5];\n var ar = r[0];\n var cr = r[1];\n var er = r[2];\n var br = r[3];\n var dr = r[4];\n var fr = r[5];\n var a = al * ar + cl * br;\n var c = al * cr + cl * dr;\n var e = al * er + cl * fr + el;\n var b = bl * ar + dl * br;\n var d = bl * cr + dl * dr;\n var f = bl * er + dl * fr + fl;\n return [a, c, e, b, d, f];\n }\n peg$result = peg$startRuleFunction();\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));\n }\n}\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n//# sourceMappingURL=transform.js.map","// @generated by Peggy 4.0.3.\n//\n// https://peggyjs.org/\n\n'use strict';\n\nfunction peg$subclass(child, parent) {\n function C() {\n this.constructor = child;\n }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = 'SyntaxError';\n return self;\n}\npeg$subclass(peg$SyntaxError, Error);\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || ' ';\n if (str.length > targetLength) {\n return str;\n }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\npeg$SyntaxError.prototype.format = function (sources) {\n var str = 'Error: ' + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = this.location.source && typeof this.location.source.offset === 'function' ? this.location.source.offset(s) : s;\n var loc = this.location.source + ':' + offset_s.line + ':' + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd('', offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = last - s.column || 1;\n str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + offset_s.line + ' | ' + line + '\\n' + filler + ' | ' + peg$padEnd('', s.column - 1, ' ') + peg$padEnd('', hatLen, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n};\npeg$SyntaxError.buildMessage = function (expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function (expectation) {\n return '\"' + literalEscape(expectation.text) + '\"';\n },\n class: function (expectation) {\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part) ? classEscape(part[0]) + '-' + classEscape(part[1]) : classEscape(part);\n });\n return '[' + (expectation.inverted ? '^' : '') + escapedParts.join('') + ']';\n },\n any: function () {\n return 'any character';\n },\n end: function () {\n return 'end of input';\n },\n other: function (expectation) {\n return expectation.description;\n }\n };\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n function literalEscape(s) {\n return s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\0/g, '\\\\0').replace(/\\t/g, '\\\\t').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n }).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n function classEscape(s) {\n return s.replace(/\\\\/g, '\\\\\\\\').replace(/\\]/g, '\\\\]').replace(/\\^/g, '\\\\^').replace(/-/g, '\\\\-').replace(/\\0/g, '\\\\0').replace(/\\t/g, '\\\\t').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n }).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n descriptions.sort();\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n case 2:\n return descriptions[0] + ' or ' + descriptions[1];\n default:\n return descriptions.slice(0, -1).join(', ') + ', or ' + descriptions[descriptions.length - 1];\n }\n }\n function describeFound(found) {\n return found ? '\"' + literalEscape(found) + '\"' : 'end of input';\n }\n return 'Expected ' + describeExpected(expected) + ' but ' + describeFound(found) + ' found.';\n};\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n var peg$startRuleFunctions = {\n start: peg$parsestart\n };\n var peg$startRuleFunction = peg$parsestart;\n var peg$c0 = 'matrix(';\n var peg$c1 = ')';\n var peg$c2 = 'translate(';\n var peg$c3 = 'scale(';\n var peg$c4 = 'rotate(';\n var peg$c5 = 'skewX(';\n var peg$c6 = 'skewY(';\n var peg$c7 = '.';\n var peg$c8 = 'e';\n var peg$r0 = /^[ \\t\\n\\r,]/;\n var peg$r1 = /^[ \\t\\n\\r]/;\n var peg$r2 = /^[+\\-]/;\n var peg$r3 = /^[0-9]/;\n var peg$e0 = peg$otherExpectation('transform functions');\n var peg$e1 = peg$otherExpectation('transformFunctions');\n var peg$e2 = peg$otherExpectation('transform function');\n var peg$e3 = peg$otherExpectation('matrix');\n var peg$e4 = peg$literalExpectation('matrix(', false);\n var peg$e5 = peg$literalExpectation(')', false);\n var peg$e6 = peg$otherExpectation('translate');\n var peg$e7 = peg$literalExpectation('translate(', false);\n var peg$e8 = peg$otherExpectation('scale');\n var peg$e9 = peg$literalExpectation('scale(', false);\n var peg$e10 = peg$otherExpectation('rotate');\n var peg$e11 = peg$literalExpectation('rotate(', false);\n var peg$e12 = peg$otherExpectation('x, y');\n var peg$e13 = peg$otherExpectation('skewX');\n var peg$e14 = peg$literalExpectation('skewX(', false);\n var peg$e15 = peg$otherExpectation('skewY');\n var peg$e16 = peg$literalExpectation('skewY(', false);\n var peg$e17 = peg$otherExpectation('space or comma');\n var peg$e18 = peg$classExpectation([' ', '\\t', '\\n', '\\r', ','], false, false);\n var peg$e19 = peg$otherExpectation('whitespace');\n var peg$e20 = peg$classExpectation([' ', '\\t', '\\n', '\\r'], false, false);\n var peg$e21 = peg$classExpectation(['+', '-'], false, false);\n var peg$e22 = peg$classExpectation([['0', '9']], false, false);\n var peg$e23 = peg$literalExpectation('.', false);\n var peg$e24 = peg$literalExpectation('e', false);\n var peg$f0 = function (head, tail) {\n const results = Array.isArray(head) ? head : [head];\n tail.forEach(element => {\n if (Array.isArray(element[1])) {\n results.push(...element[1]);\n } else {\n results.push(element[1]);\n }\n });\n return results;\n };\n var peg$f1 = function (a, b, c, d, e, f, g, h, i) {\n return {\n matrix: [a, b, c, d, e, f, g, h, i]\n };\n };\n var peg$f2 = function (x, y) {\n if (y == undefined) {\n return {\n translate: x\n };\n }\n return {\n translate: [x, y]\n };\n };\n var peg$f3 = function (x, y) {\n if (y == undefined) {\n return {\n scale: x\n };\n }\n return [{\n scaleX: x\n }, {\n scaleY: y\n }];\n };\n var peg$f4 = function (x, yz) {\n if (yz !== null) {\n return {\n rotate: `${x}deg`\n };\n }\n return [{\n rotate: `${x}deg`\n }];\n };\n var peg$f5 = function (y, z) {\n return [y, z];\n };\n var peg$f6 = function (x) {\n return [{\n skewX: `${x}deg`\n }];\n };\n var peg$f7 = function (y) {\n return [{\n skewY: `${y}deg`\n }];\n };\n var peg$f8 = function () {\n return parseFloat(text());\n };\n var peg$currPos = options.peg$currPos | 0;\n var peg$savedPos = peg$currPos;\n var peg$posDetailsCache = [{\n line: 1,\n column: 1\n }];\n var peg$maxFailPos = peg$currPos;\n var peg$maxFailExpected = options.peg$maxFailExpected || [];\n var peg$silentFails = options.peg$silentFails | 0;\n var peg$result;\n if (options.startRule) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error('Can\\'t start parsing from rule \"' + options.startRule + '\".');\n }\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n function offset() {\n return peg$savedPos;\n }\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n function expected(description, location) {\n location = location !== undefined ? location : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location);\n }\n function error(message, location) {\n location = location !== undefined ? location : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildSimpleError(message, location);\n }\n function peg$literalExpectation(text, ignoreCase) {\n return {\n type: 'literal',\n text: text,\n ignoreCase: ignoreCase\n };\n }\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return {\n type: 'class',\n parts: parts,\n inverted: inverted,\n ignoreCase: ignoreCase\n };\n }\n function peg$anyExpectation() {\n return {\n type: 'any'\n };\n }\n function peg$endExpectation() {\n return {\n type: 'end'\n };\n }\n function peg$otherExpectation(description) {\n return {\n type: 'other',\n description: description\n };\n }\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n p++;\n }\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && typeof peg$source.offset === 'function') {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n peg$maxFailExpected.push(expected);\n }\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected, found), expected, found, location);\n }\n function peg$parsestart() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$parsetransformFunctions();\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n return s0;\n }\n function peg$parsetransformFunctions() {\n var s0, s1, s2, s3, s4, s5;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsefunction();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n s5 = peg$parsefunction();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n s5 = peg$parsefunction();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f0(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e1);\n }\n }\n return s0;\n }\n function peg$parsefunction() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$parsematrix();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetranslate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsescale();\n if (s0 === peg$FAILED) {\n s0 = peg$parserotate();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewY();\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n return s0;\n }\n function peg$parsematrix() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 7) === peg$c0) {\n s2 = peg$c0;\n peg$currPos += 7;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e4);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsespaceOrComma();\n s6 = peg$parseNUM();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsespaceOrComma();\n s8 = peg$parseNUM();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsespaceOrComma();\n s10 = peg$parseNUM();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsespaceOrComma();\n s12 = peg$parseNUM();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsespaceOrComma();\n s14 = peg$parseNUM();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsespaceOrComma();\n s16 = peg$parseNUM();\n if (s16 !== peg$FAILED) {\n s17 = peg$parsespaceOrComma();\n s18 = peg$parseNUM();\n if (s18 !== peg$FAILED) {\n s19 = peg$parsespaceOrComma();\n s20 = peg$parseNUM();\n if (s20 !== peg$FAILED) {\n s21 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s22 = peg$c1;\n peg$currPos++;\n } else {\n s22 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s22 !== peg$FAILED) {\n s23 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f1(s4, s6, s8, s10, s12, s14, s16, s18, s20);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e3);\n }\n }\n return s0;\n }\n function peg$parsetranslate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 10) === peg$c2) {\n s2 = peg$c2;\n peg$currPos += 10;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e7);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsespaceOrComma();\n s6 = peg$parseNUM();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c1;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f2(s4, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e6);\n }\n }\n return s0;\n }\n function peg$parsescale() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 6) === peg$c3) {\n s2 = peg$c3;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsespaceOrComma();\n s6 = peg$parseNUM();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c1;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f3(s4, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e8);\n }\n }\n return s0;\n }\n function peg$parserotate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 7) === peg$c4) {\n s2 = peg$c4;\n peg$currPos += 7;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetwoNumbers();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c1;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f4(s4, s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e10);\n }\n }\n return s0;\n }\n function peg$parsetwoNumbers() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsespaceOrComma();\n s2 = peg$parseNUM();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsespaceOrComma();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s2, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e12);\n }\n }\n return s0;\n }\n function peg$parseskewX() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 6) === peg$c5) {\n s2 = peg$c5;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e14);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c1;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f6(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e13);\n }\n }\n return s0;\n }\n function peg$parseskewY() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 6) === peg$c6) {\n s2 = peg$c6;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e16);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseNUM();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c1;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f7(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e15);\n }\n }\n return s0;\n }\n function peg$parsespaceOrComma() {\n var s0, s1;\n peg$silentFails++;\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r0.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r0.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e17);\n }\n return s0;\n }\n function peg$parse_() {\n var s0, s1;\n peg$silentFails++;\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r1.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e20);\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r1.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e20);\n }\n }\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e19);\n }\n return s0;\n }\n function peg$parseNUM() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r2.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e21);\n }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = peg$currPos;\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r3.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r3.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e23);\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = input.charAt(peg$currPos);\n if (peg$r3.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = input.charAt(peg$currPos);\n if (peg$r3.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r3.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r3.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 101) {\n s4 = peg$c8;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e24);\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r2.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e21);\n }\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r3.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n if (s7 !== peg$FAILED) {\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = input.charAt(peg$currPos);\n if (peg$r3.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n }\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f8();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n peg$result = peg$startRuleFunction();\n if (options.peg$library) {\n return /** @type {any} */{\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos\n };\n }\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));\n }\n}\nmodule.exports = {\n StartRules: ['start'],\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n//# sourceMappingURL=transformToRn.js.map","import { append, appendTransform, identity, reset, toArray } from '../Matrix2D';\nimport { parse } from './transform';\nimport { parse as parseTransformSvgToRnStyle } from './transformToRn';\nfunction appendTransformProps(props) {\n const {\n x,\n y,\n originX,\n originY,\n scaleX,\n scaleY,\n rotation,\n skewX,\n skewY\n } = props;\n appendTransform(x + originX, y + originY, scaleX, scaleY, rotation, skewX, skewY, originX, originY);\n}\nfunction universal2axis(universal, axisX, axisY, defaultValue) {\n let x;\n let y;\n if (typeof universal === 'number') {\n x = y = universal;\n } else if (typeof universal === 'string') {\n const coords = universal.split(/\\s*,\\s*/);\n if (coords.length === 2) {\n x = +coords[0];\n y = +coords[1];\n } else if (coords.length === 1) {\n x = y = +coords[0];\n }\n } else if (Array.isArray(universal)) {\n if (universal.length === 2) {\n x = +universal[0];\n y = +universal[1];\n } else if (universal.length === 1) {\n x = y = +universal[0];\n }\n }\n axisX = +axisX;\n if (!isNaN(axisX)) {\n x = axisX;\n }\n axisY = +axisY;\n if (!isNaN(axisY)) {\n y = axisY;\n }\n return [x || defaultValue || 0, y || defaultValue || 0];\n}\nexport function props2transform(props) {\n if (!props) {\n return null;\n }\n const {\n rotation,\n translate,\n translateX,\n translateY,\n origin,\n originX,\n originY,\n scale,\n scaleX,\n scaleY,\n skew,\n skewX,\n skewY,\n x,\n y\n } = props;\n if (rotation == null && translate == null && translateX == null && translateY == null && origin == null && originX == null && originY == null && scale == null && scaleX == null && scaleY == null && skew == null && skewX == null && skewY == null && x == null && y == null) {\n return null;\n }\n if (Array.isArray(x) || Array.isArray(y)) {\n console.warn('Passing SvgLengthList to x or y attribute where SvgLength expected');\n }\n const tr = universal2axis(translate, translateX || (Array.isArray(x) ? x[0] : x), translateY || (Array.isArray(y) ? y[0] : y));\n const or = universal2axis(origin, originX, originY);\n const sc = universal2axis(scale, scaleX, scaleY, 1);\n const sk = universal2axis(skew, skewX, skewY);\n return {\n rotation: rotation == null ? 0 : +rotation || 0,\n originX: or[0],\n originY: or[1],\n scaleX: sc[0],\n scaleY: sc[1],\n skewX: sk[0],\n skewY: sk[1],\n x: tr[0],\n y: tr[1]\n };\n}\nexport function transformToMatrix(props, transform) {\n if (!props && !transform) {\n return null;\n }\n reset();\n props && appendTransformProps(props);\n if (transform) {\n if (Array.isArray(transform)) {\n if (typeof transform[0] === 'number') {\n const columnMatrix = transform;\n append(columnMatrix[0], columnMatrix[1], columnMatrix[2], columnMatrix[3], columnMatrix[4], columnMatrix[5]);\n } else {\n const stringifiedTransform = stringifyTransformArrayProps(\n // @ts-expect-error FIXME\n transform);\n const t = parse(stringifiedTransform);\n append(t[0], t[3], t[1], t[4], t[2], t[5]);\n }\n } else if (typeof transform === 'string') {\n try {\n const t = parse(transform);\n append(t[0], t[3], t[1], t[4], t[2], t[5]);\n } catch (e) {\n console.error(e);\n }\n } else {\n // @ts-expect-error FIXME\n const transformProps = props2transform(transform);\n transformProps && appendTransformProps(transformProps);\n }\n }\n return toArray();\n}\nexport default function extractTransform(props) {\n if (Array.isArray(props) && typeof props[0] === 'number') {\n return props;\n }\n if (typeof props === 'string') {\n try {\n const t = parse(props);\n return [t[0], t[3], t[1], t[4], t[2], t[5]];\n } catch (e) {\n console.error(e);\n return identity;\n }\n }\n // this type is not correct since props can be of type TransformsStyle['transform'] too\n // but it satisfies TS and should not produce any type errors\n const transformProps = props;\n return transformToMatrix(props2transform(transformProps), transformProps === null || transformProps === void 0 ? void 0 : transformProps.transform);\n}\nexport function extractTransformSvgView(props) {\n if (typeof props.transform === 'string') {\n return parseTransformSvgToRnStyle(props.transform);\n }\n return props.transform;\n}\nconst getAngleValueInDeg = angle => {\n if (angle.endsWith('rad')) {\n return parseFloat(angle) * (180 / Math.PI);\n }\n if (angle.endsWith('deg')) {\n return parseFloat(angle);\n }\n};\nexport function stringifyTransformArrayProps(transformArray) {\n if (!transformArray) {\n return '';\n }\n return transformArray.map(transform => {\n const [key, value] = Object.entries(transform)[0];\n switch (key) {\n case 'translateX':\n return `translate(${value}, 0)`;\n case 'translateY':\n return `translate(0, ${value})`;\n case 'rotate':\n return `rotate(${getAngleValueInDeg(value)})`;\n case 'scale':\n return `scale(${value})`;\n case 'scaleX':\n return `scale(${value}, 1)`;\n case 'scaleY':\n return `scale(1, ${value})`;\n case 'skewX':\n return `skewX(${getAngleValueInDeg(value)})`;\n case 'skewY':\n return `skewY(${getAngleValueInDeg(value)})`;\n case 'matrix':\n return `matrix(${value.join(', ')})`;\n default:\n return '';\n }\n }).join(' ');\n}\n//# sourceMappingURL=extractTransform.js.map","import { stringifyTransformArrayProps } from '../../lib/extract/extractTransform';\nexport function parseTransformProp(transform, props) {\n const transformArray = [];\n props && transformArray.push(...stringifyTransformProps(props));\n if (Array.isArray(transform)) {\n if (typeof transform[0] === 'number') {\n transformArray.push(`matrix(${transform.join(' ')})`);\n } else {\n const stringifiedProps = stringifyTransformArrayProps(\n // @ts-expect-error FIXME\n transform).split(' ');\n transformArray.push(...stringifiedProps);\n }\n } else if (typeof transform === 'string') {\n transformArray.push(transform);\n }\n return transformArray.length ? transformArray.join(' ') : undefined;\n}\nexport function stringifyTransformProps(transformProps) {\n const transformArray = [];\n if (transformProps.translate != null) {\n transformArray.push(`translate(${transformProps.translate})`);\n }\n if (transformProps.translateX != null || transformProps.translateY != null) {\n transformArray.push(`translate(${transformProps.translateX || 0}, ${transformProps.translateY || 0})`);\n }\n if (transformProps.scale != null) {\n transformArray.push(`scale(${transformProps.scale})`);\n }\n if (transformProps.scaleX != null || transformProps.scaleY != null) {\n transformArray.push(`scale(${transformProps.scaleX || 1}, ${transformProps.scaleY || 1})`);\n }\n // rotation maps to rotate, not to collide with the text rotate attribute (which acts per glyph rather than block)\n if (transformProps.rotation != null) {\n transformArray.push(`rotate(${transformProps.rotation})`);\n }\n if (transformProps.skewX != null) {\n transformArray.push(`skewX(${transformProps.skewX})`);\n }\n if (transformProps.skewY != null) {\n transformArray.push(`skewY(${transformProps.skewY})`);\n }\n return transformArray;\n}\n//# sourceMappingURL=parseTransform.js.map","import { StyleSheet } from 'react-native';\n\n// Kept in separate file, to avoid name collision with Symbol element\nexport function resolve(styleProp, cleanedProps) {\n if (styleProp) {\n return StyleSheet ? [styleProp, cleanedProps] :\n // Compatibility for arrays of styles in plain react web\n styleProp[Symbol.iterator] ? Object.assign({}, ...styleProp, cleanedProps) : Object.assign({}, styleProp, cleanedProps);\n } else {\n return cleanedProps;\n }\n}\n//# sourceMappingURL=resolve.js.map","import { PixelRatio } from 'react-native';\n// @ts-expect-error react-native/assets-registry doesn't export types.\nimport { getAssetByID } from '@react-native/assets-registry/registry';\nconst svgDataUriPattern = /^(data:image\\/svg\\+xml;utf8,)(.*)/;\n\n// Based on that function: https://github.com/necolas/react-native-web/blob/54c14d64dabd175e8055e1dc92e9196c821f9b7d/packages/react-native-web/src/exports/Image/index.js#L118-L156\nexport function resolveAssetUri(source) {\n let src = {};\n if (typeof source === 'number') {\n // get the URI from the packager\n const asset = getAssetByID(source);\n if (asset == null) {\n throw new Error(`Image: asset with ID \"${source}\" could not be found. Please check the image source or packager.`);\n }\n src = {\n width: asset.width,\n height: asset.height,\n scale: asset.scales[0]\n };\n if (asset.scales.length > 1) {\n const preferredScale = PixelRatio.get();\n // Get the scale which is closest to the preferred scale\n src.scale = asset.scales.reduce((prev, curr) => Math.abs(curr - preferredScale) < Math.abs(prev - preferredScale) ? curr : prev);\n }\n const scaleSuffix = src.scale !== 1 ? `@${src.scale}x` : '';\n src.uri = asset ? `${asset.httpServerLocation}/${asset.name}${scaleSuffix}.${asset.type}` : '';\n } else if (typeof source === 'string') {\n src.uri = source;\n } else if (source && !Array.isArray(source) && typeof source.uri === 'string') {\n src.uri = source.uri;\n }\n if (src.uri) {\n var _src;\n const match = (_src = src) === null || _src === void 0 || (_src = _src.uri) === null || _src === void 0 ? void 0 : _src.match(svgDataUriPattern);\n // inline SVG markup may contain characters (e.g., #, \") that need to be escaped\n if (match) {\n const [, prefix, svg] = match;\n const encodedSvg = encodeURIComponent(svg);\n src.uri = `${prefix}${encodedSvg}`;\n return src;\n }\n }\n return src;\n}\n//# sourceMappingURL=resolveAssetUri.js.map","import { hasTouchableProperty } from './hasProperty';\nimport { parseTransformProp } from './parseTransform';\nimport { resolve } from '../../lib/resolve';\nimport { resolveAssetUri } from '../../lib/resolveAssetUri';\n/**\n * `react-native-svg` supports additional props that aren't defined in the spec.\n * This function replaces them in a spec conforming manner.\n *\n * @param {WebShape} self Instance given to us.\n * @param {Object?} props Optional overridden props given to us.\n * @returns {Object} Cleaned props object.\n * @private\n */\nexport const prepare = (self, props = self.props) => {\n const {\n transform,\n origin,\n originX,\n originY,\n fontFamily,\n fontSize,\n fontWeight,\n fontStyle,\n style,\n forwardedRef,\n gradientTransform,\n patternTransform,\n onPress,\n ...rest\n } = props;\n const clean = {\n ...(hasTouchableProperty(props) ? {\n onStartShouldSetResponder: self.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: self.touchableHandleResponderTerminationRequest,\n onResponderGrant: self.touchableHandleResponderGrant,\n onResponderMove: self.touchableHandleResponderMove,\n onResponderRelease: self.touchableHandleResponderRelease,\n onResponderTerminate: self.touchableHandleResponderTerminate\n } : null),\n ...rest\n };\n if (origin != null) {\n clean['transform-origin'] = origin.toString().replace(',', ' ');\n } else if (originX != null || originY != null) {\n clean['transform-origin'] = `${originX || 0} ${originY || 0}`;\n }\n\n // we do it like this because setting transform as undefined causes error in web\n const parsedTransform = parseTransformProp(transform, props);\n if (parsedTransform) {\n clean.transform = parsedTransform;\n }\n const parsedGradientTransform = parseTransformProp(gradientTransform);\n if (parsedGradientTransform) {\n clean.gradientTransform = parsedGradientTransform;\n }\n const parsedPatternTransform = parseTransformProp(patternTransform);\n if (parsedPatternTransform) {\n clean.patternTransform = parsedPatternTransform;\n }\n clean.ref = el => {\n self.elementRef.current = el;\n if (typeof forwardedRef === 'function') {\n forwardedRef(el);\n } else if (forwardedRef) {\n forwardedRef.current = el;\n }\n };\n const styles = {};\n if (fontFamily != null) {\n styles.fontFamily = fontFamily;\n }\n if (fontSize != null) {\n styles.fontSize = fontSize;\n }\n if (fontWeight != null) {\n styles.fontWeight = fontWeight;\n }\n if (fontStyle != null) {\n styles.fontStyle = fontStyle;\n }\n clean.style = resolve(style, styles);\n if (onPress !== null) {\n clean.onClick = props.onPress;\n }\n if (props.href !== null && props.href !== undefined) {\n var _resolveAssetUri;\n clean.href = (_resolveAssetUri = resolveAssetUri(props.href)) === null || _resolveAssetUri === void 0 ? void 0 : _resolveAssetUri.uri;\n }\n return clean;\n};\n//# sourceMappingURL=prepare.js.map","export function convertInt32ColorToRGBA(color) {\n const r = color >> 16 & 255;\n const g = color >> 8 & 255;\n const b = color & 255;\n const a = (color >> 24 & 255) / 255;\n const alpha = a.toFixed(2);\n return `rgba(${r},${g},${b},${alpha})`;\n}\n//# sourceMappingURL=convertInt32Color.js.map","import { Touchable } from 'react-native';\nconst PRESS_RETENTION_OFFSET = {\n top: 20,\n left: 20,\n right: 20,\n bottom: 30\n};\n// @ts-expect-error: Mixin is not typed\nconst {\n Mixin\n} = Touchable;\nconst {\n touchableHandleStartShouldSetResponder,\n touchableHandleResponderTerminationRequest,\n touchableHandleResponderGrant,\n touchableHandleResponderMove,\n touchableHandleResponderRelease,\n touchableHandleResponderTerminate,\n touchableGetInitialState\n} = Mixin;\nconst SvgTouchableMixin = {\n ...Mixin,\n touchableHandleStartShouldSetResponder(e) {\n const {\n onStartShouldSetResponder\n } = this.props;\n if (onStartShouldSetResponder) {\n return onStartShouldSetResponder(e);\n } else {\n return touchableHandleStartShouldSetResponder.call(this, e);\n }\n },\n touchableHandleResponderTerminationRequest(e) {\n const {\n onResponderTerminationRequest\n } = this.props;\n if (onResponderTerminationRequest) {\n return onResponderTerminationRequest(e);\n } else {\n return touchableHandleResponderTerminationRequest.call(this, e);\n }\n },\n touchableHandleResponderGrant(e) {\n const {\n onResponderGrant\n } = this.props;\n if (onResponderGrant) {\n return onResponderGrant(e);\n } else {\n return touchableHandleResponderGrant.call(this, e);\n }\n },\n touchableHandleResponderMove(e) {\n const {\n onResponderMove\n } = this.props;\n if (onResponderMove) {\n return onResponderMove(e);\n } else {\n return touchableHandleResponderMove.call(this, e);\n }\n },\n touchableHandleResponderRelease(e) {\n const {\n onResponderRelease\n } = this.props;\n if (onResponderRelease) {\n return onResponderRelease(e);\n } else {\n return touchableHandleResponderRelease.call(this, e);\n }\n },\n touchableHandleResponderTerminate(e) {\n const {\n onResponderTerminate\n } = this.props;\n if (onResponderTerminate) {\n return onResponderTerminate(e);\n } else {\n return touchableHandleResponderTerminate.call(this, e);\n }\n },\n touchableHandlePress(e) {\n const {\n onPress\n } = this.props;\n onPress && onPress(e);\n },\n touchableHandleActivePressIn(e) {\n const {\n onPressIn\n } = this.props;\n onPressIn && onPressIn(e);\n },\n touchableHandleActivePressOut(e) {\n const {\n onPressOut\n } = this.props;\n onPressOut && onPressOut(e);\n },\n touchableHandleLongPress(e) {\n const {\n onLongPress\n } = this.props;\n onLongPress && onLongPress(e);\n },\n touchableGetPressRectOffset() {\n const {\n pressRetentionOffset\n } = this.props;\n return pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n touchableGetHitSlop() {\n const {\n hitSlop\n } = this.props;\n return hitSlop;\n },\n touchableGetHighlightDelayMS() {\n const {\n delayPressIn\n } = this.props;\n return delayPressIn || 0;\n },\n touchableGetLongPressDelayMS() {\n const {\n delayLongPress\n } = this.props;\n return delayLongPress === 0 ? 0 : delayLongPress || 500;\n },\n touchableGetPressOutDelayMS() {\n const {\n delayPressOut\n } = this.props;\n return delayPressOut || 0;\n }\n};\nconst touchKeys = Object.keys(SvgTouchableMixin);\nconst touchVals = touchKeys.map(key => SvgTouchableMixin[key]);\nconst numTouchKeys = touchKeys.length;\nexport default target => {\n for (let i = 0; i < numTouchKeys; i++) {\n const key = touchKeys[i];\n const val = touchVals[i];\n if (typeof val === 'function') {\n target[key] = val.bind(target);\n } else {\n target[key] = val;\n }\n }\n target.state = touchableGetInitialState();\n};\n//# sourceMappingURL=SvgTouchableMixin.js.map","import React from 'react';\nimport {\n// @ts-ignore it is not seen in exports\nunstable_createElement as createElement } from 'react-native';\nimport { prepare } from './utils/prepare';\nimport { convertInt32ColorToRGBA } from './utils/convertInt32Color';\nimport { getAttributeName, remeasure } from './utils';\nimport { hasTouchableProperty } from './utils/hasProperty';\nimport SvgTouchableMixin from '../lib/SvgTouchableMixin';\nexport class WebShape extends React.Component {\n prepareProps(props) {\n return props;\n }\n elementRef = /*#__PURE__*/React.createRef();\n lastMergedProps = {};\n\n /**\n * disclaimer: I am not sure why the props are wrapped in a `style` attribute here, but that's how reanimated calls it\n */\n setNativeProps(props) {\n const merged = Object.assign({}, this.props, this.lastMergedProps, props.style);\n this.lastMergedProps = merged;\n const clean = prepare(this, this.prepareProps(merged));\n const current = this.elementRef.current;\n if (current) {\n for (const cleanAttribute of Object.keys(clean)) {\n const cleanValue = clean[cleanAttribute];\n switch (cleanAttribute) {\n case 'ref':\n case 'children':\n break;\n case 'style':\n // style can be an object here or an array, so we convert it to an array and assign each element\n for (const partialStyle of [].concat(clean.style ?? [])) {\n Object.assign(current.style, partialStyle);\n }\n break;\n case 'fill':\n if (cleanValue && typeof cleanValue === 'object') {\n const value = cleanValue;\n current.setAttribute('fill', convertInt32ColorToRGBA(value.payload));\n }\n break;\n case 'stroke':\n if (cleanValue && typeof cleanValue === 'object') {\n const value = cleanValue;\n current.setAttribute('stroke', convertInt32ColorToRGBA(value.payload));\n }\n break;\n default:\n // apply all other incoming prop updates as attributes on the node\n // same logic as in https://github.com/software-mansion/react-native-reanimated/blob/d04720c82f5941532991b235787285d36d717247/src/reanimated2/js-reanimated/index.ts#L38-L39\n // @ts-expect-error TODO: fix this\n current.setAttribute(getAttributeName(cleanAttribute), cleanValue);\n break;\n }\n }\n }\n }\n constructor(props) {\n super(props);\n\n // Do not attach touchable mixin handlers if SVG element doesn't have a touchable prop\n if (hasTouchableProperty(props)) {\n SvgTouchableMixin(this);\n }\n this._remeasureMetricsOnActivation = remeasure.bind(this);\n }\n render() {\n if (!this.tag) {\n throw new Error('When extending `WebShape` you need to overwrite either `tag` or `render`!');\n }\n this.lastMergedProps = {};\n return createElement(this.tag, prepare(this, this.prepareProps(this.props)));\n }\n}\n//# sourceMappingURL=WebShape.js.map","import { encodeSvg, getBoundingClientRect } from './web/utils';\nimport { WebShape } from './web/WebShape';\nexport class Circle extends WebShape {\n tag = 'circle';\n}\nexport class ClipPath extends WebShape {\n tag = 'clipPath';\n}\nexport class Defs extends WebShape {\n tag = 'defs';\n}\nexport class Ellipse extends WebShape {\n tag = 'ellipse';\n}\nexport class FeBlend extends WebShape {\n tag = 'feBlend';\n}\nexport class FeColorMatrix extends WebShape {\n tag = 'feColorMatrix';\n}\nexport class FeComponentTransfer extends WebShape {\n tag = 'feComponentTransfer';\n}\nexport class FeComposite extends WebShape {\n tag = 'feComposite';\n}\nexport class FeConvolveMatrix extends WebShape {\n tag = 'feConvolveMatrix';\n}\nexport class FeDiffuseLighting extends WebShape {\n tag = 'feDiffuseLighting';\n}\nexport class FeDisplacementMap extends WebShape {\n tag = 'feDisplacementMap';\n}\nexport class FeDistantLight extends WebShape {\n tag = 'feDistantLight';\n}\nexport class FeDropShadow extends WebShape {\n tag = 'feDropShadow';\n}\nexport class FeFlood extends WebShape {\n tag = 'feFlood';\n}\nexport class FeFuncA extends WebShape {\n tag = 'feFuncA';\n}\nexport class FeFuncB extends WebShape {\n tag = 'feFuncB';\n}\nexport class FeFuncG extends WebShape {\n tag = 'feFuncG';\n}\nexport class FeFuncR extends WebShape {\n tag = 'feFuncR';\n}\nexport class FeGaussianBlur extends WebShape {\n tag = 'feGaussianBlur';\n}\nexport class FeImage extends WebShape {\n tag = 'feImage';\n}\nexport class FeMerge extends WebShape {\n tag = 'feMerge';\n}\nexport class FeMergeNode extends WebShape {\n tag = 'feMergeNode';\n}\nexport class FeMorphology extends WebShape {\n tag = 'feMorphology';\n}\nexport class FeOffset extends WebShape {\n tag = 'feOffset';\n}\nexport class FePointLight extends WebShape {\n tag = 'fePointLight';\n}\nexport class FeSpecularLighting extends WebShape {\n tag = 'feSpecularLighting';\n}\nexport class FeSpotLight extends WebShape {\n tag = 'feSpotLight';\n}\nexport class FeTile extends WebShape {\n tag = 'feTile';\n}\nexport class FeTurbulence extends WebShape {\n tag = 'feTurbulence';\n}\nexport class Filter extends WebShape {\n tag = 'filter';\n}\nexport class ForeignObject extends WebShape {\n tag = 'foreignObject';\n}\nexport class G extends WebShape {\n tag = 'g';\n prepareProps(props) {\n const {\n x,\n y,\n ...rest\n } = props;\n if ((x || y) && !rest.translate) {\n rest.translate = `${x || 0}, ${y || 0}`;\n }\n return rest;\n }\n}\nexport class Image extends WebShape {\n tag = 'image';\n}\nexport class Line extends WebShape {\n tag = 'line';\n}\nexport class LinearGradient extends WebShape {\n tag = 'linearGradient';\n}\nexport class Marker extends WebShape {\n tag = 'marker';\n}\nexport class Mask extends WebShape {\n tag = 'mask';\n}\nexport class Path extends WebShape {\n tag = 'path';\n}\nexport class Pattern extends WebShape {\n tag = 'pattern';\n}\nexport class Polygon extends WebShape {\n tag = 'polygon';\n}\nexport class Polyline extends WebShape {\n tag = 'polyline';\n}\nexport class RadialGradient extends WebShape {\n tag = 'radialGradient';\n}\nexport class Rect extends WebShape {\n tag = 'rect';\n}\nexport class Stop extends WebShape {\n tag = 'stop';\n}\nexport class Svg extends WebShape {\n tag = 'svg';\n toDataURL(callback, options = {}) {\n const ref = this.elementRef.current;\n if (ref === null) {\n return;\n }\n const rect = getBoundingClientRect(ref);\n const width = Number(options.width) || rect.width;\n const height = Number(options.height) || rect.height;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', `0 0 ${rect.width} ${rect.height}`);\n svg.setAttribute('width', String(width));\n svg.setAttribute('height', String(height));\n svg.appendChild(ref.cloneNode(true));\n const img = new window.Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n context === null || context === void 0 || context.drawImage(img, 0, 0);\n callback(canvas.toDataURL().replace('data:image/png;base64,', ''));\n };\n img.src = `data:image/svg+xml;utf8,${encodeSvg(new window.XMLSerializer().serializeToString(svg))}`;\n }\n}\nexport class Symbol extends WebShape {\n tag = 'symbol';\n}\nexport class TSpan extends WebShape {\n tag = 'tspan';\n}\nexport class Text extends WebShape {\n tag = 'text';\n}\nexport class TextPath extends WebShape {\n tag = 'textPath';\n}\nexport class Use extends WebShape {\n tag = 'use';\n}\nexport default Svg;\n//# sourceMappingURL=elements.web.js.map","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from 'react';\nimport { Component, useEffect, useMemo, useState } from 'react';\nimport { fetchText } from './utils/fetchData';\nimport { tags } from './xmlTags';\nfunction missingTag() {\n return null;\n}\nexport function SvgAst({\n ast,\n override\n}) {\n if (!ast) {\n return null;\n }\n const {\n props,\n children\n } = ast;\n const Svg = tags.svg;\n return /*#__PURE__*/React.createElement(Svg, _extends({}, props, override), children);\n}\nconst err = console.error.bind(console);\nexport function SvgXml(props) {\n const {\n onError = err,\n xml,\n override,\n fallback\n } = props;\n try {\n const ast = useMemo(() => xml !== null ? parse(xml) : null, [xml]);\n return /*#__PURE__*/React.createElement(SvgAst, {\n ast: ast,\n override: override || props\n });\n } catch (error) {\n onError(error);\n return fallback ?? null;\n }\n}\nexport function SvgUri(props) {\n const {\n onError = err,\n uri,\n onLoad,\n fallback\n } = props;\n const [xml, setXml] = useState(null);\n const [isError, setIsError] = useState(false);\n useEffect(() => {\n uri ? fetchText(uri).then(data => {\n setXml(data);\n isError && setIsError(false);\n onLoad === null || onLoad === void 0 || onLoad();\n }).catch(e => {\n onError(e);\n setIsError(true);\n }) : setXml(null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onError, uri, onLoad]);\n if (isError) {\n return fallback ?? null;\n }\n return /*#__PURE__*/React.createElement(SvgXml, {\n xml: xml,\n override: props,\n fallback: fallback\n });\n}\n\n// Extending Component is required for Animated support.\n\nexport class SvgFromXml extends Component {\n state = {\n ast: null\n };\n componentDidMount() {\n this.parse(this.props.xml);\n }\n componentDidUpdate(prevProps) {\n const {\n xml\n } = this.props;\n if (xml !== prevProps.xml) {\n this.parse(xml);\n }\n }\n parse(xml) {\n const {\n onError = err\n } = this.props;\n try {\n this.setState({\n ast: xml ? parse(xml) : null\n });\n } catch (e) {\n const error = e;\n onError({\n ...error,\n message: `[RNSVG] Couldn't parse SVG, reason: ${error.message}`\n });\n }\n }\n render() {\n const {\n props,\n state: {\n ast\n }\n } = this;\n return /*#__PURE__*/React.createElement(SvgAst, {\n ast: ast,\n override: props.override || props\n });\n }\n}\nexport class SvgFromUri extends Component {\n state = {\n xml: null\n };\n componentDidMount() {\n this.fetch(this.props.uri);\n }\n componentDidUpdate(prevProps) {\n const {\n uri\n } = this.props;\n if (uri !== prevProps.uri) {\n this.fetch(uri);\n }\n }\n async fetch(uri) {\n try {\n this.setState({\n xml: uri ? await fetchText(uri) : null\n });\n } catch (e) {\n console.error(e);\n }\n }\n render() {\n const {\n props,\n state: {\n xml\n }\n } = this;\n return /*#__PURE__*/React.createElement(SvgFromXml, {\n xml: xml,\n override: props,\n onError: props.onError\n });\n }\n}\nconst upperCase = (_match, letter) => letter.toUpperCase();\nexport const camelCase = phrase => phrase.replace(/[:-]([a-z])/g, upperCase);\nexport function getStyle(string) {\n const style = {};\n const declarations = string.split(';').filter(v => v.trim());\n const {\n length\n } = declarations;\n for (let i = 0; i < length; i++) {\n const declaration = declarations[i];\n if (declaration.length !== 0) {\n const split = declaration.split(':');\n const property = split[0];\n const value = split[1];\n style[camelCase(property.trim())] = value.trim();\n }\n }\n return style;\n}\nexport function astToReact(value, index) {\n if (typeof value === 'object') {\n const {\n Tag,\n props,\n children\n } = value;\n if (props !== null && props !== void 0 && props.class) {\n props.className = props.class;\n delete props.class;\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n key: index\n }, props), children.map(astToReact));\n }\n return value;\n}\n\n// slimmed down parser based on https://github.com/Rich-Harris/svg-parser\n\nfunction repeat(str, i) {\n let result = '';\n while (i--) {\n result += str;\n }\n return result;\n}\nconst toSpaces = tabs => repeat(' ', tabs.length);\nfunction locate(source, i) {\n const lines = source.split('\\n');\n const nLines = lines.length;\n let column = i;\n let line = 0;\n for (; line < nLines; line++) {\n const {\n length\n } = lines[line];\n if (column >= length) {\n column -= length;\n } else {\n break;\n }\n }\n const before = source.slice(0, i).replace(/^\\t+/, toSpaces);\n const beforeExec = /(^|\\n).*$/.exec(before);\n const beforeLine = beforeExec && beforeExec[0] || '';\n const after = source.slice(i);\n const afterExec = /.*(\\n|$)/.exec(after);\n const afterLine = afterExec && afterExec[0];\n const pad = repeat(' ', beforeLine.length);\n const snippet = `${beforeLine}${afterLine}\\n${pad}^`;\n return {\n line,\n column,\n snippet\n };\n}\nconst validNameCharacters = /[a-zA-Z0-9:_-]/;\nconst commentStart = /<!--/;\nconst whitespace = /[\\s\\t\\r\\n]/;\nconst quotemarks = /['\"]/;\nexport function parse(source, middleware) {\n const length = source.length;\n let currentElement = null;\n let state = metadata;\n let children = null;\n let root;\n const stack = [];\n function error(message) {\n const {\n line,\n column,\n snippet\n } = locate(source, i);\n throw new Error(`${message} (${line}:${column}). If this is valid SVG, it's probably a bug. Please raise an issue\\n\\n${snippet}`);\n }\n function metadata() {\n while (i + 1 < length && (source[i] !== '<' || !(validNameCharacters.test(source[i + 1]) || commentStart.test(source.slice(i, i + 4))))) {\n i++;\n }\n return neutral();\n }\n function neutral() {\n let text = '';\n let char;\n while (i < length && (char = source[i]) !== '<') {\n text += char;\n i += 1;\n }\n if (/\\S/.test(text)) {\n children.push(text);\n }\n if (source[i] === '<') {\n return openingTag;\n }\n return neutral;\n }\n function openingTag() {\n const char = source[i];\n if (char === '?') {\n return neutral;\n } // <?xml...\n\n if (char === '!') {\n const start = i + 1;\n if (source.slice(start, i + 3) === '--') {\n return comment;\n }\n const end = i + 8;\n if (source.slice(start, end) === '[CDATA[') {\n return cdata;\n }\n if (/doctype/i.test(source.slice(start, end))) {\n return doctype;\n }\n }\n if (char === '/') {\n return closingTag;\n }\n const tag = getName();\n const props = {};\n const element = {\n tag,\n props,\n children: [],\n parent: currentElement,\n Tag: tags[tag] || missingTag\n };\n if (currentElement) {\n children.push(element);\n } else {\n root = element;\n }\n getAttributes(props);\n const {\n style\n } = props;\n if (typeof style === 'string') {\n element.styles = style;\n props.style = getStyle(style);\n }\n let selfClosing = false;\n if (source[i] === '/') {\n i += 1;\n selfClosing = true;\n }\n if (source[i] !== '>') {\n error('Expected >');\n }\n if (!selfClosing) {\n currentElement = element;\n ({\n children\n } = element);\n stack.push(element);\n }\n return neutral;\n }\n function comment() {\n const index = source.indexOf('-->', i);\n if (!~index) {\n error('expected -->');\n }\n i = index + 2;\n return neutral;\n }\n function cdata() {\n const index = source.indexOf(']]>', i);\n if (!~index) {\n error('expected ]]>');\n }\n children.push(source.slice(i + 7, index));\n i = index + 2;\n return neutral;\n }\n function doctype() {\n const index = source.indexOf('>', i);\n if (index === -1) {\n error('expected >');\n }\n i = index;\n return neutral;\n }\n function closingTag() {\n const tag = getName();\n if (!tag) {\n error('Expected tag name');\n }\n if (currentElement && tag !== currentElement.tag) {\n error(`Expected closing tag </${tag}> to match opening tag <${currentElement.tag}>`);\n }\n allowSpaces();\n if (source[i] !== '>') {\n error('Expected >');\n }\n stack.pop();\n currentElement = stack[stack.length - 1];\n if (currentElement) {\n ({\n children\n } = currentElement);\n }\n return neutral;\n }\n function getName() {\n let name = '';\n let char;\n while (i < length && validNameCharacters.test(char = source[i])) {\n name += char;\n i += 1;\n }\n return name;\n }\n function getAttributes(props) {\n while (i < length) {\n if (!whitespace.test(source[i])) {\n return;\n }\n allowSpaces();\n const name = getName();\n if (!name) {\n return;\n }\n let value = true;\n allowSpaces();\n if (source[i] === '=') {\n i += 1;\n allowSpaces();\n value = getAttributeValue();\n if (name !== 'id' && !isNaN(+value) && value.trim() !== '') {\n value = +value;\n }\n }\n props[camelCase(name)] = value;\n }\n }\n function getAttributeValue() {\n return quotemarks.test(source[i]) ? getQuotedAttributeValue() : getUnquotedAttributeValue();\n }\n function getUnquotedAttributeValue() {\n let value = '';\n do {\n const char = source[i];\n if (char === ' ' || char === '>' || char === '/') {\n return value;\n }\n value += char;\n i += 1;\n } while (i < length);\n return value;\n }\n function getQuotedAttributeValue() {\n const quotemark = source[i++];\n let value = '';\n let escaped = false;\n while (i < length) {\n const char = source[i++];\n if (char === quotemark && !escaped) {\n return value;\n }\n if (char === '\\\\' && !escaped) {\n escaped = true;\n }\n value += escaped ? `\\\\${char}` : char;\n escaped = false;\n }\n return value;\n }\n function allowSpaces() {\n while (i < length && whitespace.test(source[i])) {\n i += 1;\n }\n }\n let i = 0;\n while (i < length) {\n if (!state) {\n error('Unexpected character');\n }\n state = state();\n i += 1;\n }\n if (state !== neutral) {\n error('Unexpected end of input');\n }\n if (root) {\n const xml = (middleware ? middleware(root) : root) || root;\n const ast = xml.children.map(astToReact);\n const jsx = xml;\n jsx.children = ast;\n return jsx;\n }\n return null;\n}\nexport { tags };\n//# sourceMappingURL=xml.js.map","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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 Svg, {Polyline} from 'react-native-svg'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\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 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 onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n {isChecked && (\n <Svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\">\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 )}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, spacing, typography} from '@duro-app/tokens'\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 {createContext, useContext} from 'react'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors, spacing, typography} from '@duro-app/tokens'\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 {FieldContext, useFieldContext} from './FieldContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n invalid?: boolean\n children: ReactNode\n}\n\nfunction Root({invalid = false, children}: RootProps) {\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 if (!ctx?.invalid && !children) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {children}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\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}\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}: InputProps) {\n const ctx = useFieldContext()\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={name}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={value}\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={onChange}\n style={[styles.base, styles[variant]]}\n {...(extraProps as Record<string, unknown>)}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography, shadows} from '@duro-app/tokens'\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, radii} from '@duro-app/tokens'\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, radii, spacing, typography, shadows} from '@duro-app/tokens'\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}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\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>>({})\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 children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange})\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({children}: {children: ReactNode}) {\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-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, spacing, radii, typography} from '@duro-app/tokens'\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 Svg, {Path} from 'react-native-svg'\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'\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, spacing} from '@duro-app/tokens'\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 muted: {\n color: colors.textMuted,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport Svg, {Circle, Line, Path, Polyline} from 'react-native-svg'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'muted'\n\nconst icons: Record<StatusIconName, 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}\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 <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 {icons[name]}\n </Svg>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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 const isLastRow = false // handled by CSS or parent\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({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=\"columnheader\"\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, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography} from '@duro-app/tokens'\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\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}\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}: TextareaProps) {\n const ctx = useFieldContext()\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={name}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={value}\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={onChange}\n style={[styles.base, styles[variant]]}\n />\n )\n}\n","const r = {\n bg: \"var(--bg-xqkwqtp)\",\n bgCard: \"var(--bgCard-xj2l5r)\",\n bgCardHover: \"var(--bgCardHover-xlxk7vw)\",\n text: \"var(--text-xlpbogt)\",\n textMuted: \"var(--textMuted-x651nu9)\",\n accent: \"var(--accent-xw7wp3v)\",\n accentHover: \"var(--accentHover-x18fqoz)\",\n accentContrast: \"var(--accentContrast-x3gzxyp)\",\n border: \"var(--border-x1drj1pb)\",\n error: \"var(--error-x13gdhh0)\",\n errorHover: \"var(--errorHover-x7eyu03)\",\n errorBg: \"var(--errorBg-xrl8836)\",\n errorBorder: \"var(--errorBorder-x1a6pjl)\",\n errorText: \"var(--errorText-xf51nwe)\",\n errorContrast: \"var(--errorContrast-x1lvjkah)\",\n success: \"var(--success-x197pe5n)\",\n successBg: \"var(--successBg-xzjukav)\",\n successBorder: \"var(--successBorder-x1my3ygc)\",\n successText: \"var(--successText-x46dg9e)\",\n warning: \"var(--warning-x1gq0pyw)\",\n warningBg: \"var(--warningBg-xtnxqss)\",\n warningBorder: \"var(--warningBorder-x1ev2mr5)\",\n warningText: \"var(--warningText-x1lgjghx)\",\n infoBg: \"var(--infoBg-xho8jir)\",\n infoBorder: \"var(--infoBorder-xnevk3x)\",\n infoText: \"var(--infoText-x19pseus)\",\n __varGroupHash__: \"xjvd03b\"\n}, a = {\n xs: \"var(--xs-xxfyjsd)\",\n sm: \"var(--sm-xbh8y7f)\",\n md: \"var(--md-x3pkb85)\",\n lg: \"var(--lg-x34mutn)\",\n xl: \"var(--xl-xttpygj)\",\n xxl: \"var(--xxl-xbe9eha)\",\n __varGroupHash__: \"x6uc9q\"\n}, e = {\n sm: \"var(--sm-x1bhtfs5)\",\n md: \"var(--md-xx2g89g)\",\n lg: \"var(--lg-xwd56yl)\",\n full: \"var(--full-x9vxdtd)\",\n __varGroupHash__: \"xw3ffwm\"\n}, t = {\n fontFamily: \"var(--fontFamily-xvrmnat)\",\n fontSizeXs: \"var(--fontSizeXs-x1w5m325)\",\n fontSizeSm: \"var(--fontSizeSm-x1bjjs4u)\",\n fontSizeMd: \"var(--fontSizeMd-xq8d99q)\",\n fontSizeLg: \"var(--fontSizeLg-x18ngplw)\",\n fontSizeXl: \"var(--fontSizeXl-x1b1mqsu)\",\n fontSizeHeading: \"var(--fontSizeHeading-x1stydh2)\",\n fontWeightNormal: \"var(--fontWeightNormal-x1y1cayu)\",\n fontWeightMedium: \"var(--fontWeightMedium-xaw13ft)\",\n fontWeightSemibold: \"var(--fontWeightSemibold-xg6c7xe)\",\n fontWeightBold: \"var(--fontWeightBold-x1pjkvwg)\",\n lineHeight: \"var(--lineHeight-x1gubzd5)\",\n __varGroupHash__: \"xs62swl\"\n}, x = {\n sm: \"var(--sm-x17hhtln)\",\n md: \"var(--md-x1oyt0aw)\",\n lg: \"var(--lg-x1mxd62i)\",\n __varGroupHash__: \"x13v825q\"\n}, o = {\n xjvd03b: \"x18itf25 xjvd03b\",\n $$css: !0\n}, v = {\n x13v825q: \"xv9ibj0 x13v825q\",\n $$css: !0\n}, n = {\n xjvd03b: \"x1qgt5a2 xjvd03b\",\n $$css: !0\n}, s = {\n x13v825q: \"x15e39jv x13v825q\",\n $$css: !0\n};\nexport {\n r as colors,\n s as highContrastShadows,\n n as highContrastTheme,\n v as lightShadows,\n o as lightTheme,\n e as radii,\n x as shadows,\n a as spacing,\n t as typography\n};\n//# sourceMappingURL=index.js.map\n","import type {ReactNode} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {lightTheme, lightShadows, highContrastTheme, highContrastShadows} from '@duro-app/tokens'\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 },\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, radii, spacing, typography, shadows} from '@duro-app/tokens'\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"],"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","input","label","nav","p","span","textarea","defaultStyles","base","kmVPX3","kaIpWk","kMzoRj","ksu8eU","kGuDYH","kLWn49","$$css","error","kWkggS","kVAM5u","kMwMTN","success","warning","info","Alert","variant","children","jsx","_rsdMerge","_rsdDefaultStyles","k1xSpc","kGNEyG","kjj79g","kMv6JI","k63SB2","khDVqt","sizeMd","kLKAdn","kGO01o","kE3dHu","kpe85a","sizeSm","default","sizeMap","sm","md","Badge","size","kOIVth","kkrTdU","k1ekBW","kIyJzY","kAMwcw","kybGjl","kMeerF","k3XXqK","kjBf7l","kInvED","sizeDefault","sizeSmall","primary","secondary","link","danger","fullWidth","kzqmXN","disabled","kSiTet","small","Button","type","onClick","elevated","kGVxlE","outlined","filled","interactive","k3aq6I","sizeCompact","sizeFull","header","k1K539","compact","full","Card","jsxs","StyleSheet","Touchable","Mixin","camelCaseToDashed","camelCase","m","getBoundingClientRect","node","measureLayout","callback","relativeNode","relativeRect","height","left","top","width","x","y","remeasure","tag","encodeSvg","svgString","KEEP_CAMEL_CASE","getAttributeName","attr","hasTouchableProperty","props","peg$subclass","child","parent","ctor","peg$SyntaxError","message","expected","found","location","DESCRIBE_EXPECTATION_FNS","expectation","literalEscape","escapedParts","classEscape","hex","ch","s","describeExpectation","describeExpected","descriptions","describeFound","peg$parse","peg$FAILED","peg$startRuleFunctions","peg$parsetransformList","peg$startRuleFunction","peg$c0","ts","peg$c1","multiply_matrices","peg$c2","peg$c3","peg$literalExpectation","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","b","c","e","f","peg$c9","peg$c10","peg$c11","tx","ty","peg$c12","peg$c13","peg$c14","sx","sy","peg$c15","peg$c16","peg$c17","angle","cos","deg2rad","sin","peg$c18","peg$c19","peg$c20","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","n","peg$c27","n1","n2","peg$c28","peg$c29","peg$c30","ds","peg$c31","peg$c32","d","peg$c33","peg$otherExpectation","peg$c34","peg$c35","peg$c36","d1","d2","peg$c37","peg$c38","peg$classExpectation","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$currPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","text","ignoreCase","parts","inverted","peg$endExpectation","description","peg$computePosDetails","pos","details","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","peg$fail","peg$buildStructuredError","s0","s1","s2","s3","s4","peg$parsewsp","peg$parsetransforms","peg$parsetransform","peg$parsecommaWsp","peg$parsematrix","peg$parsetranslate","peg$parsescale","peg$parserotate","peg$parseskewX","peg$parseskewY","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","peg$parsenumber","peg$parsecommaWspNumber","peg$parsecommaWspTwoNumbers","peg$parsesign","peg$parsefloatingPointConstant","peg$parseintegerConstant","peg$parsecomma","peg$parsedigitSequence","peg$parsefractionalConstant","peg$parseexponent","peg$parsedigit","l","r","al","cl","el","bl","dl","fl","ar","cr","er","br","dr","fr","C","self","peg$padEnd","str","targetLength","padString","sources","src","k","offset_s","loc","filler","last","hatLen","part","j","peg$source","peg$parsestart","peg$r0","peg$r1","peg$r2","peg$r3","peg$e0","peg$e1","peg$e2","peg$e3","peg$e4","peg$e5","peg$e6","peg$e7","peg$e8","peg$e9","peg$e10","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$e16","peg$e17","peg$e18","peg$e19","peg$e20","peg$e21","peg$e22","peg$e23","peg$e24","peg$f0","head","tail","results","element","peg$f1","g","h","peg$f2","peg$f3","peg$f4","yz","peg$f5","z","peg$f6","peg$f7","peg$f8","peg$savedPos","offset","res","peg$parsetransformFunctions","peg$parsefunction","peg$parse_","s18","s20","s22","peg$parseNUM","peg$parsespaceOrComma","peg$parsetwoNumbers","transformToRn","getAngleValueInDeg","stringifyTransformArrayProps","transformArray","key","parseTransformProp","stringifyTransformProps","stringifiedProps","transformProps","resolve","styleProp","cleanedProps","svgDataUriPattern","resolveAssetUri","source","_src","match","prefix","svg","encodedSvg","prepare","origin","originX","originY","fontFamily","fontSize","fontWeight","fontStyle","forwardedRef","gradientTransform","patternTransform","onPress","rest","clean","parsedTransform","parsedGradientTransform","parsedPatternTransform","_resolveAssetUri","convertInt32ColorToRGBA","color","alpha","PRESS_RETENTION_OFFSET","touchableHandleStartShouldSetResponder","touchableHandleResponderTerminationRequest","touchableHandleResponderGrant","touchableHandleResponderMove","touchableHandleResponderRelease","touchableHandleResponderTerminate","touchableGetInitialState","SvgTouchableMixin","onStartShouldSetResponder","onResponderTerminationRequest","onResponderGrant","onResponderMove","onResponderRelease","onResponderTerminate","onPressIn","onPressOut","onLongPress","pressRetentionOffset","hitSlop","delayPressIn","delayLongPress","delayPressOut","touchKeys","touchVals","numTouchKeys","SvgTouchableMixin$1","target","val","WebShape","React","__publicField","merged","current","cleanAttribute","cleanValue","partialStyle","createElement","Circle","Line","Path","Polyline","Svg","ref","rect","img","canvas","context","root","rootDisabled","box","kZKoxP","kmuXW","boxUnchecked","boxChecked","kVAEAm","kVQacm","Checkbox","name","checked","controlledChecked","defaultChecked","onChange","isControlled","undefined","internalChecked","setInternalChecked","useState","isChecked","handleChange","useCallback","kXwgrk","k9WMMc","action","keoZOQ","EmptyState","icon","FieldContext","createContext","useFieldContext","useContext","Root","invalid","id","useId","ctx","useMemo","controlId","descriptionId","errorId","Label","Description","Error","Field","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","extraProps","trim","LinkButton","href","rel","trigger","backdrop","k87sOh","kbCHJM","kCIrl2","krVfgx","kY2c9j","popup","k7Eaqz","popupEnd","item","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","open","setOpen","highlightedId","setHighlightedId","menuId","rootRef","useRef","triggerRef","itemsRef","Map","orderRef","needsInitialHighlightRef","close","focus","toggle","prev","useEffect","order","length","registerItem","set","map","ids","keys","sort","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","handleKeyDown","preventDefault","idx","indexOf","items","click","addEventListener","removeEventListener","Trigger","localRef","Popup","align","Fragment","Item","isHighlighted","handleClick","LinkItem","Menu","viewport","kXHlph","kORKVm","k5wCbM","content","kAzted","scrollbar","kFalU9","kfSwDN","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","kUk6DE","viewportMaxHeight","maxHeight","kskxy","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","handleScroll","vp","clearTimeout","setTimeout","observer","ResizeObserver","observe","disconnect","passive","Viewport","Content","Scrollbar","orientation","Thumb","draggingRef","startPosRef","startScrollRef","isVertical","thumbSizePercent","Math","max","maxScroll","trackSize","thumbPixelSize","scrollOffset","thumbOffset","thumbStyle","handlePointerDown","clientY","clientX","setPointerCapture","pointerId","handlePointerMove","delta","scrollRatio","scrollDelta","handlePointerUp","ScrollArea","itemSelected","hidden","SelectContext","useSelect","useControllableValue","controlledValue","internal","setInternal","setValue","v","useSelectRoot","onValueChange","labels","setLabels","listboxId","registerLabel","itemValue","Value","display","Icon","selectedValue","isSelected","textContent","ItemText","Select","group","groupTrigger","kP9fke","kb6lSQ","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","onSelect","expandedGroups","setExpandedGroups","Set","toggleGroup","next","has","add","includes","push","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","isActive","SideNav","spinner","kLZC3w","kKVMdj","k44tkh","kyAemX","ko0y90","lg","srOnly","kMcinP","Spinner","muted","icons","clock","forbidden","StatusIcon","_temp","kumcoG","row","kt9PQ7","kfdmCh","kL6WhQ","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","kWqL5O","kSWEuD","k26BEO","borderedCellLast","gridColumns","columns","TableContext","useTable","HeaderContext","isHeader","Header","Body","childArray","Children","toArray","index","RowIndexContext","Row","rowIndex","isEvenRow","CellIndexContext","total","HeaderCell","isLast","Cell","Table","rootVertical","list","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","panel","panelVertical","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","List","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Panel","Tabs","kHenm0","Textarea","rows","bg","bgCard","bgCardHover","textMuted","accent","accentHover","accentContrast","border","errorHover","errorBg","errorBorder","errorText","errorContrast","successBg","successBorder","successText","warningBg","warningBorder","warningText","infoBg","infoBorder","infoText","__varGroupHash__","themeMap","light","lightTheme","lightShadows","highContrastTheme","highContrastShadows","ThemeProvider","theme","overrides","themeStyles","kfzvcC","bottom","km5ZXQ","right","koQZXg","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip"],"mappings":"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","x_google_ignoreList":[0,10,11,12,13,14,15,16,17,18,19,20,21,22,23]}
|
|
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","../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/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../src/components/Field/FieldContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Input/styles.css.ts","../src/components/Input/Input.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/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","../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/dist/index.js","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx"],"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","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 },\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 {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\ninterface AlertProps {\n variant?: AlertVariant\n children: ReactNode\n}\n\nexport function Alert({variant = 'info', children}: AlertProps) {\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\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 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 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 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' | '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'\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 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 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 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} 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 {createContext, useContext} from 'react'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\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 {FieldContext, useFieldContext} from './FieldContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n invalid?: boolean\n children: ReactNode\n}\n\nfunction Root({invalid = false, children}: RootProps) {\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 if (!ctx?.invalid && !children) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {children}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\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})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\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}\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}: InputProps) {\n const ctx = useFieldContext()\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={name}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={value}\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={onChange}\n style={[styles.base, styles[variant]]}\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 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 {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}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\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>>({})\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 children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange})\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({children}: {children: ReactNode}) {\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-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 muted: {\n color: colors.textMuted,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'muted'\n\nconst icons: Record<StatusIconName, 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}\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 <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 {icons[name]}\n </svg>\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 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 const isLastRow = false // handled by CSS or parent\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({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=\"columnheader\"\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\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}\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}: TextareaProps) {\n const ctx = useFieldContext()\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={name}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={value}\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={onChange}\n style={[styles.base, styles[variant]]}\n />\n )\n}\n","const r = {\n bg: \"var(--bg-xqkwqtp)\",\n bgCard: \"var(--bgCard-xj2l5r)\",\n bgCardHover: \"var(--bgCardHover-xlxk7vw)\",\n text: \"var(--text-xlpbogt)\",\n textMuted: \"var(--textMuted-x651nu9)\",\n accent: \"var(--accent-xw7wp3v)\",\n accentHover: \"var(--accentHover-x18fqoz)\",\n accentContrast: \"var(--accentContrast-x3gzxyp)\",\n border: \"var(--border-x1drj1pb)\",\n error: \"var(--error-x13gdhh0)\",\n errorHover: \"var(--errorHover-x7eyu03)\",\n errorBg: \"var(--errorBg-xrl8836)\",\n errorBorder: \"var(--errorBorder-x1a6pjl)\",\n errorText: \"var(--errorText-xf51nwe)\",\n errorContrast: \"var(--errorContrast-x1lvjkah)\",\n success: \"var(--success-x197pe5n)\",\n successBg: \"var(--successBg-xzjukav)\",\n successBorder: \"var(--successBorder-x1my3ygc)\",\n successText: \"var(--successText-x46dg9e)\",\n warning: \"var(--warning-x1gq0pyw)\",\n warningBg: \"var(--warningBg-xtnxqss)\",\n warningBorder: \"var(--warningBorder-x1ev2mr5)\",\n warningText: \"var(--warningText-x1lgjghx)\",\n infoBg: \"var(--infoBg-xho8jir)\",\n infoBorder: \"var(--infoBorder-xnevk3x)\",\n infoText: \"var(--infoText-x19pseus)\",\n __varGroupHash__: \"xjvd03b\"\n}, a = {\n xs: \"var(--xs-xxfyjsd)\",\n sm: \"var(--sm-xbh8y7f)\",\n md: \"var(--md-x3pkb85)\",\n lg: \"var(--lg-x34mutn)\",\n xl: \"var(--xl-xttpygj)\",\n xxl: \"var(--xxl-xbe9eha)\",\n __varGroupHash__: \"x6uc9q\"\n}, e = {\n sm: \"var(--sm-x1bhtfs5)\",\n md: \"var(--md-xx2g89g)\",\n lg: \"var(--lg-xwd56yl)\",\n full: \"var(--full-x9vxdtd)\",\n __varGroupHash__: \"xw3ffwm\"\n}, t = {\n fontFamily: \"var(--fontFamily-xvrmnat)\",\n fontSizeXs: \"var(--fontSizeXs-x1w5m325)\",\n fontSizeSm: \"var(--fontSizeSm-x1bjjs4u)\",\n fontSizeMd: \"var(--fontSizeMd-xq8d99q)\",\n fontSizeLg: \"var(--fontSizeLg-x18ngplw)\",\n fontSizeXl: \"var(--fontSizeXl-x1b1mqsu)\",\n fontSizeHeading: \"var(--fontSizeHeading-x1stydh2)\",\n fontWeightNormal: \"var(--fontWeightNormal-x1y1cayu)\",\n fontWeightMedium: \"var(--fontWeightMedium-xaw13ft)\",\n fontWeightSemibold: \"var(--fontWeightSemibold-xg6c7xe)\",\n fontWeightBold: \"var(--fontWeightBold-x1pjkvwg)\",\n lineHeight: \"var(--lineHeight-x1gubzd5)\",\n __varGroupHash__: \"xs62swl\"\n}, x = {\n sm: \"var(--sm-x17hhtln)\",\n md: \"var(--md-x1oyt0aw)\",\n lg: \"var(--lg-x1mxd62i)\",\n __varGroupHash__: \"x13v825q\"\n}, o = {\n xjvd03b: \"x18itf25 xjvd03b\",\n $$css: !0\n}, v = {\n x13v825q: \"xv9ibj0 x13v825q\",\n $$css: !0\n}, n = {\n xjvd03b: \"x1qgt5a2 xjvd03b\",\n $$css: !0\n}, s = {\n x13v825q: \"x15e39jv x13v825q\",\n $$css: !0\n};\nexport {\n r as colors,\n s as highContrastShadows,\n n as highContrastTheme,\n v as lightShadows,\n o as lightTheme,\n e as radii,\n x as shadows,\n a as spacing,\n t as typography\n};\n//# sourceMappingURL=index.js.map\n","import type {ReactNode} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {lightTheme, lightShadows, highContrastTheme, highContrastShadows} from '@duro-app/tokens'\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 },\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 {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"],"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","input","label","nav","p","span","textarea","defaultStyles","base","kmVPX3","kaIpWk","kMzoRj","ksu8eU","kGuDYH","kLWn49","$$css","error","kWkggS","kVAM5u","kMwMTN","success","warning","info","Alert","variant","children","jsx","_rsdMerge","_rsdDefaultStyles","k1xSpc","kGNEyG","kjj79g","kMv6JI","k63SB2","khDVqt","sizeMd","kLKAdn","kGO01o","kE3dHu","kpe85a","sizeSm","default","sizeMap","sm","md","Badge","size","kOIVth","kkrTdU","k1ekBW","kIyJzY","kAMwcw","kybGjl","kMeerF","k3XXqK","kjBf7l","kInvED","sizeDefault","sizeSmall","primary","secondary","link","danger","fullWidth","kzqmXN","disabled","kSiTet","small","Button","type","onClick","elevated","kGVxlE","outlined","filled","interactive","k3aq6I","sizeCompact","sizeFull","header","k1K539","compact","full","Card","jsxs","root","rootDisabled","box","kZKoxP","kmuXW","boxUnchecked","boxChecked","kVAEAm","kVQacm","Checkbox","name","checked","controlledChecked","defaultChecked","onChange","isControlled","undefined","internalChecked","setInternalChecked","useState","isChecked","handleChange","useCallback","e","target","opacity","kXwgrk","k9WMMc","message","action","keoZOQ","EmptyState","icon","FieldContext","createContext","useFieldContext","useContext","description","Root","invalid","id","useId","ctx","useMemo","controlId","descriptionId","errorId","Label","Description","Error","Field","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","extraProps","trim","LinkButton","href","rel","trigger","backdrop","k87sOh","kbCHJM","kCIrl2","krVfgx","kY2c9j","popup","k7Eaqz","popupEnd","item","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","open","setOpen","highlightedId","setHighlightedId","menuId","rootRef","useRef","triggerRef","itemsRef","Map","orderRef","needsInitialHighlightRef","close","current","focus","toggle","prev","useEffect","order","length","registerItem","element","set","map","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","handleKeyDown","key","preventDefault","idx","indexOf","items","click","addEventListener","removeEventListener","Trigger","localRef","Popup","align","Fragment","Item","ref","isHighlighted","el","handleClick","LinkItem","Menu","viewport","kXHlph","kORKVm","k5wCbM","content","kAzted","scrollbar","kFalU9","kfSwDN","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","kUk6DE","viewportMaxHeight","maxHeight","kskxy","val","thumbVertical","height","thumbHorizontal","width","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","handleScroll","vp","clearTimeout","setTimeout","observer","ResizeObserver","observe","disconnect","passive","Viewport","Content","Scrollbar","orientation","Thumb","draggingRef","startPosRef","startScrollRef","isVertical","thumbSizePercent","Math","max","maxScroll","trackSize","thumbPixelSize","scrollOffset","thumbOffset","thumbStyle","handlePointerDown","clientY","clientX","setPointerCapture","pointerId","handlePointerMove","delta","scrollRatio","scrollDelta","handlePointerUp","ScrollArea","itemSelected","hidden","SelectContext","useSelect","useControllableValue","controlledValue","internal","setInternal","setValue","v","useSelectRoot","onValueChange","labels","setLabels","listboxId","found","registerLabel","itemValue","Value","display","Icon","selectedValue","isSelected","text","textContent","ItemText","Select","group","groupTrigger","kP9fke","kb6lSQ","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","onSelect","expandedGroups","setExpandedGroups","Set","toggleGroup","next","has","add","includes","push","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","isActive","SideNav","spinner","kLZC3w","kKVMdj","k44tkh","kyAemX","ko0y90","lg","srOnly","kMcinP","Spinner","muted","icons","clock","forbidden","StatusIcon","_temp","kumcoG","row","kt9PQ7","kfdmCh","kL6WhQ","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","kWqL5O","kSWEuD","k26BEO","borderedCellLast","gridColumns","columns","TableContext","useTable","HeaderContext","isHeader","Header","Body","childArray","Children","toArray","child","index","RowIndexContext","Row","rowIndex","isEvenRow","CellIndexContext","total","HeaderCell","isLast","Cell","Table","rootVertical","list","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","panel","panelVertical","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","List","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Panel","Tabs","kHenm0","Textarea","rows","r","bg","bgCard","bgCardHover","textMuted","accent","accentHover","accentContrast","border","errorHover","errorBg","errorBorder","errorText","errorContrast","successBg","successBorder","successText","warningBg","warningBorder","warningText","infoBg","infoBorder","infoText","__varGroupHash__","themeMap","light","lightTheme","lightShadows","highContrastTheme","highContrastShadows","ThemeProvider","theme","overrides","themeStyles","kfzvcC","top","bottom","left","km5ZXQ","right","koQZXg","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip"],"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,IAAS;AAAA,EACb,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EA0BE,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EASE,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,GACM2B,KAAI3B,EAAO,QAQX4B,KAAS,CAAC5B,EAAO,aAAaA,EAAO,MAAM,GAG3C6B,KAAM7B,EAAO,OAUb8B,KAAQ,CAAC9B,EAAO,aAAaA,EAAO,KAAK,GAGzC+B,KAAQ/B,EAAO,QAIfgC,KAAMhC,EAAO,OAIbiC,KAAIjC,EAAO,OAKXkC,KAAOlC,EAAO,QAIdmC,KAAW,CAACnC,EAAO,aAAaA,EAAO,QAAQ,GAG/CoC,IAAgB;AAAA,EACpB,GAAGT;AAAAA,EAQH,QAAQC;AAAA,EAGR,KAAKC;AAAA,EAeL,OAAOC;AAAA,EAGP,OAAOC;AAAA,EAIP,KAAKC;AAAA,EAIL,GAAGC;AAAA,EAKH,MAAMC;AAAA,EAIN,UAAUC;AAGZ,GC3TanC,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,SAAA;AAAA,IAAAH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAM,SAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAO,MAAA;AAAA,IAAAL,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA;ACMZ,SAASQ,GAAM;AAAA,EAACC,SAAAA,IAAU;AAAA,EAAQC,UAAAA;AAAoB,GAAG;AAC9D,SACE,gBAAAC,WAAU,MAAK,SAAO,GAAAC,EAAAC,EAAA5B,KAAS7B,GAAOqC,MAAMrC,GAAOqD,CAAO,CAAC,GACxDC,UAAAA,GACH;AAEJ;ACZO,MAAMtD,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAnB,OAAA;AAAA,EAAA;AAAA,EAAAoB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAAyB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAA0B,SAAA;AAAA,IAAAxB,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,SAAA;AAAA,IAAAH,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAM,SAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAO,MAAA;AAAA,IAAAL,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,GCQb2B,KAAU;AAAA,EACdC,IAAIxE,EAAOqE;AAAAA,EACXI,IAAIzE,EAAOgE;AACb;AAEO,SAASU,GAAM;AAAA,EAACrB,SAAAA,IAAU;AAAA,EAAWsB,MAAAA,IAAO;AAAA,EAAMrB,UAAAA;AAAoB,GAAG;AAC9E,SAAO,gBAAAC,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAmBlC,EAAOqC,MAAMkC,GAAQI,CAAI,GAAG3E,EAAOqD,CAAO,CAAC,GAAIC,UAAAA,GAAS;AACpF;ACfO,MAAMtD,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAf,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAoC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAA0C,aAAA;AAAA,IAAArB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAA2C,WAAA;AAAA,IAAAtB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAA4C,SAAA;AAAA,IAAA1C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA6C,WAAA;AAAA,IAAA3C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA8C,MAAA;AAAA,IAAA5C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiC,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAA+C,QAAA;AAAA,IAAA7C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgD,WAAA;AAAA,IAAAC,QAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,EAAAkD,UAAA;AAAA,IAAAC,QAAA;AAAA,IAAAlB,QAAA;AAAA,IAAAjC,OAAA;AAAA,EAAA;AAAA,GCYb2B,KAAU;AAAA,EACdD,SAAStE,EAAOsF;AAAAA,EAChBU,OAAOhG,EAAOuF;AAChB;AAEO,SAASU,GAAO;AAAA,EACrB5C,SAAAA,IAAU;AAAA,EACVsB,MAAAA,IAAO;AAAA,EACPiB,WAAAA,IAAY;AAAA,EACZE,UAAAA,IAAW;AAAA,EACXI,MAAAA,IAAO;AAAA,EACPC,SAAAA;AAAAA,EACA7C,UAAAA;AACW,GAAG;AACd,SACE,gBAAAC,EAAA,UAAA,EACE,MAAA2C,GACA,UAAAJ,GACA,SAAAK,GAAiB,GAAA3C,EAAAC,EAAA7B,QAEf5B,EAAOqC,MACPkC,GAAQI,CAAI,GACZ3E,EAAOqD,CAAO,GACduC,KAAa5F,EAAO4F,WACpBE,KAAY9F,EAAO8F,QAAQ,GAG5BxC,UAAAA,EAAAA,CACH;AAEJ;ACzCO,MAAMtD,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAS,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAa,QAAA;AAAA,IAAAjB,OAAA;AAAA,EAAA;AAAA,EAAAwD,UAAA;AAAA,IAAA7D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAsD,QAAA;AAAA,IAAAzD,OAAA;AAAA,EAAA;AAAA,EAAA0D,UAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAA2D,QAAA;AAAA,IAAAhE,QAAA;AAAA,IAAAK,OAAA;AAAA,EAAA;AAAA,EAAA4D,aAAA;AAAA,IAAAjE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAD,QAAA;AAAA,IAAA+B,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAyB,QAAA;AAAA,IAAA7D,OAAA;AAAA,EAAA;AAAA,EAAA0C,aAAA;AAAA,IAAAhD,QAAA;AAAA,IAAAM,OAAA;AAAA,EAAA;AAAA,EAAA8D,aAAA;AAAA,IAAApE,QAAA;AAAA,IAAAM,OAAA;AAAA,EAAA;AAAA,EAAA+D,UAAA;AAAA,IAAArE,QAAA;AAAA,IAAAM,OAAA;AAAA,EAAA;AAAA,EAAAgE,QAAA;AAAA,IAAAlE,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAA+C,QAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,GCSb2B,KAAU;AAAA,EACdD,SAAStE,EAAOsF;AAAAA,EAChBwB,SAAS9G,EAAO0G;AAAAA,EAChBK,MAAM/G,EAAO2G;AACf;AAEO,SAASK,GAAK;AAAA,EACnB3D,SAAAA,IAAU;AAAA,EACVsB,MAAAA,IAAO;AAAA,EACPiC,QAAAA;AAAAA,EACAT,SAAAA;AAAAA,EACA7C,UAAAA;AACS,GAAG;AACZ,SACE,gBAAA2D,EAAA,OAAA,EAAU,SAAAd,GAAiB,GAAA3C,EAAAC,EAAA5B,KAAS7B,EAAOqC,MAAMrC,EAAOqD,CAAO,GAAGkB,GAAQI,CAAI,CAAC,GAC5EiC,UAAAA;AAAAA,IAAAA,KAAU,gBAAArD,EAAA,SAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,EAAO4G,MAAM,GAAGA,UAAAA,EAAAA,CAAO;AAAA,IAClDtD;AAAAA,EAAAA,GACH;AAEJ;AC7BO,MAAMtD,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAL,QAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAuE,cAAA;AAAA,IAAApB,QAAA;AAAA,IAAAlB,QAAA;AAAA,IAAAjC,OAAA;AAAA,EAAA;AAAA,EAAAwE,KAAA;AAAA,IAAAvB,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA0D,OAAA;AAAA,IAAAxC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA2E,cAAA;AAAA,IAAAzE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAA4E,YAAA;AAAA,IAAA1E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAd,OAAA;AAAA,IAAA2F,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAtB,QAAA;AAAA,IAAA2B,QAAA;AAAA,IAAA9E,OAAA;AAAA,EAAA;AAAA;ACSZ,SAAS+E,GAAS;AAAA,EACvBC,MAAAA;AAAAA,EACAnH,OAAAA;AAAAA,EACAoH,SAASC;AAAAA,EACTC,gBAAAA,IAAiB;AAAA,EACjBjC,UAAAA,IAAW;AAAA,EACXkC,UAAAA;AAAAA,EACA1E,UAAAA;AACa,GAAG;AAChB,QAAM2E,IAAeH,MAAsBI,QACrC,CAACC,GAAiBC,CAAkB,IAAIC,EAASN,CAAc,GAC/DO,IAAYL,IAAeH,IAAoBK,GAE/CI,IAAeC,EACnB,CAACC,MAA2C;AAC1C,IAAKR,KACHG,EAAmBK,EAAEC,OAAOb,OAAO,GAErCG,IAAWS,CAAC;AAAA,EACd,GACA,CAACR,GAAcD,CAAQ,CACzB;AAEA,SACE,gBAAAf,EAAA,SAAA,EAAA,GAAAzD,EAAAC,EAAA1B,OAAoB/B,EAAOkH,MAAMpB,KAAY9F,EAAOmH,YAAY,GAC9D,UAAA;AAAA,IAAA,gBAAA5D,EAAA,SAAA,EACE,MAAK,YACL,MAAAqE,GACA,OAAAnH,GACA,SAASwH,IAAeH,IAAoBI,QAC5C,gBAAiBD,IAAgCC,SAAjBH,GAChC,UAAAjC,GACA,UAAUyC,GAAa,GAAA/E,EAAAC,EAAA3B,OAChB9B,EAAO8B,KAAK,GAAA,KAAA,OAAA,CAAA;AAAA,IAErB,gBAAAyB,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MACUlC,EAAOoH,KAAKkB,IAAYtI,EAAOwH,aAAaxH,EAAOuH,YAAY,GACvE,eAAW,IAEX,UAAA,gBAAAhE,EAAC,OAAA,EACC,OAAO,IACP,QAAQ,IACR,SAAQ,aACR,MAAK,QACL,OAAO;AAAA,MAACoF,SAASL,IAAY,IAAI;AAAA,IAAA,GAEjC,UAAA,gBAAA/E,EAAC,YAAA,EACC,QAAO,uBACP,QAAO,gBACP,aAAa,KACb,eAAc,SACd,gBAAe,QAAA,CAAO,GAE1B,GACF;AAAA,IACCD,uBAAY,QAAA,EAAA,GAAAE,EAAAC,EAAAvB,IAAA,GAAYoB,UAAAA,EAAAA,CAAS;AAAA,EAAA,GACpC;AAEJ;ACnEO,MAAMtD,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAkF,QAAA;AAAA,IAAAjF,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA2E,QAAA;AAAA,IAAAjG,OAAA;AAAA,EAAA;AAAA,EAAAkG,SAAA;AAAA,IAAApG,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAL,QAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAmG,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApG,OAAA;AAAA,EAAA;AAAA;ACKZ,SAASqG,GAAW;AAAA,EAACH,SAAAA;AAAAA,EAASI,MAAAA;AAAAA,EAAMH,QAAAA;AAAuB,GAAG;AACnE,SACE,gBAAA9B,EAAA,SAAA,GAAAzD,EAAAC,EAAA5B,KAAiB7B,GAAOkH,IAAI,GACzBgC,UAAAA;AAAAA,IAAAA;AAAAA,IACD,gBAAA3F,EAAA,OAAA,GAAAC,EAAAC,EAAAxB,GAAejC,GAAO8I,OAAO,GAAGA,UAAAA,EAAAA,CAAQ;AAAA,IACvCC,KAAU,gBAAAxF,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,GAAO+I,MAAM,GAAGA,UAAAA,EAAAA,CAAO;AAAA,EAAA,GACrD;AAEJ;ACTO,MAAMI,KAAeC,EAAwC,IAAI;AAEjE,SAASC,IAAkB;AAChC,SAAOC,EAAWH,EAAY;AAChC;ACRO,MAAMnJ,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAkF,QAAA;AAAA,IAAAhE,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAAb,OAAA;AAAA,IAAAW,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA2G,aAAA;AAAA,IAAA7G,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAH,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA;ACMnB,SAAS4G,GAAK;AAAA,EAACC,SAAAA,IAAU;AAAA,EAAOnG,UAAAA;AAAmB,GAAG;AACpD,QAAMoG,IAAKC,EAAAA,GACLC,IAAMC,GACV,OAAO;AAAA,IACLC,WAAW,GAAGJ,CAAE;AAAA,IAChBK,eAAe,GAAGL,CAAE;AAAA,IACpBM,SAAS,GAAGN,CAAE;AAAA,IACdD,SAAAA;AAAAA,EAAAA,IAEF,CAACC,GAAID,CAAO,CACd;AAEA,2BACGN,GAAa,UAAb,EAAsB,OAAOS,GAC5B,UAAA,gBAAArG,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,GAAOkH,IAAI,GAAG5D,UAAAA,GAAS,GAC1C;AAEJ;AAOA,SAAS2G,GAAM;AAAA,EAAC3G,UAAAA;AAAoB,GAAG;AACrC,QAAMsG,IAAMP,EAAAA;AACZ,SACE,gBAAA9F,aAAY,SAAKqG,GAAKE,WAAU,GAAAtG,EAAAC,EAAA1B,OAAQ/B,GAAO+B,KAAK,GACjDuB,UAAAA,EAAAA,CACH;AAEJ;AAOA,SAAS4G,GAAY;AAAA,EAAC5G,UAAAA;AAA0B,GAAG;AACjD,QAAMsG,IAAMP,EAAAA;AACZ,SACE,gBAAA9F,YAAW,IAAIqG,GAAKG,eAAc,GAAAvG,EAAAC,EAAAvB,MAAQlC,GAAOuJ,WAAW,GACzDjG,UAAAA,EAAAA,CACH;AAEJ;AAOA,SAAS6G,GAAM;AAAA,EAAC7G,UAAAA;AAAoB,GAAG;AACrC,QAAMsG,IAAMP,EAAAA;AACZ,SAAI,CAACO,GAAKH,WAAW,CAACnG,IAAiB,OAGrC,gBAAAC,EAAA,QAAA,EAAW,IAAIqG,GAAKI,SAAS,MAAK,SAAO,GAAAxG,EAAAC,EAAAvB,MAAQlC,GAAO6C,KAAK,GAC1DS,UAAAA,GACH;AAEJ;AAEO,MAAM8G,KAAQ;AAAA,EAAA,MACnBZ;AAAAA,EACAS,OAAAA;AAAAA,EACAC,aAAAA;AAAAA,EAAAA,OACAC;AACF,GC1EanK,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAwD,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAuC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAA0B,SAAA;AAAA,IAAAvB,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAE,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA;AC4BZ,SAASyH,GAAM;AAAA,EACpBhH,SAAAA,IAAU;AAAA,EACV6C,MAAAA,IAAO;AAAA,EACP0B,MAAAA;AAAAA,EACA0C,aAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAjK,OAAAA;AAAAA,EACAkK,cAAAA;AAAAA,EACA7E,UAAAA;AAAAA,EACAkC,UAAAA;AACU,GAAG;AACb,QAAM4B,IAAMP,EAAAA,GAINuB,IAAaH,MAAYvC,SAAY;AAAA,IAACuC,SAAAA;AAAAA,EAAAA,IAAWvC;AAEvD,SACE,gBAAA3E,EAAA,WACE,IAAIqG,GAAKE,WACT,MAAA5D,GACA,MAAA0B,GACA,aAAA0C,GACA,UAAAC,GACA,WAAAC,GACA,cAAAE,GACA,OAAAjK,GACA,cAAAkK,GACA,UAAA7E,GACA,oBACE8D,IAAM,GAAGA,EAAIG,aAAa,IAAIH,EAAIH,UAAUG,EAAII,UAAU,EAAE,GAAGa,KAAAA,IAAS3C,QAE1E,gBAAc0B,GAAKH,WAAWpG,MAAY,WAAW6E,QACrD,UAAAF,GAAmB,GAAAxE,EAAAC,EAAA3B,OACX9B,GAAOqC,MAAMrC,GAAOqD,CAAO,CAAC,MAC/BuH,GAAuC,KAAA,OAAA,CAAA;AAGlD;ACrEO,MAAM5K,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAf,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAI,QAAA;AAAA,IAAAH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA0C,aAAA;AAAA,IAAArB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAA2C,WAAA;AAAA,IAAAtB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAA4C,SAAA;AAAA,IAAA1C,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA6C,WAAA;AAAA,IAAA3C,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgD,WAAA;AAAA,IAAAC,QAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,GCYb2B,KAAU;AAAA,EACdD,SAAStE,EAAOsF;AAAAA,EAChBU,OAAOhG,EAAOuF;AAChB;AAEO,SAASuF,GAAW;AAAA,EACzBC,MAAAA;AAAAA,EACA1H,SAAAA,IAAU;AAAA,EACVsB,MAAAA,IAAO;AAAA,EACPiB,WAAAA,IAAY;AAAA,EACZ8C,QAAAA;AAAAA,EACAsC,KAAAA;AAAAA,EACA1H,UAAAA;AACe,GAAG;AAClB,SACE,gBAAAC,SACE,MAAAwH,GACA,QAAArC,GACA,KAAAsC,MAASxH,EAAAC,EAAA9B,GACD3B,EAAOqC,MAAMkC,GAAQI,CAAI,GAAG3E,EAAOqD,CAAO,GAAGuC,KAAa5F,EAAO4F,SAAS,GAEjFtC,UAAAA,GACH;AAEJ;ACnCO,MAAMtD,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,EAAAqI,SAAA;AAAA,IAAAvH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAsI,UAAA;AAAA,IAAAzD,QAAA;AAAA,IAAA0D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3I,OAAA;AAAA,EAAA;AAAA,EAAA4I,OAAA;AAAA,IAAA/D,QAAA;AAAA,IAAA0D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAlG,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAuH,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA3I,OAAA;AAAA,EAAA;AAAA,EAAA8I,UAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzI,OAAA;AAAA,EAAA;AAAA,EAAA+I,MAAA;AAAA,IAAAjI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAb,QAAA;AAAA,IAAAT,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAA/B,QAAA;AAAA,IAAAgC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAgJ,iBAAA;AAAA,IAAA9I,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAiJ,UAAA;AAAA,IAAA5G,QAAA;AAAA,IAAAjC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,GCONkJ,KAAc1C,EAAuC,IAAI;AAE/D,SAAS2C,KAAU;AACxB,QAAMnC,IAAMN,EAAWwC,EAAW;AAClC,MAAI,CAAClC,EAAK,OAAM,IAAIO,MAAM,wDAAwD;AAClF,SAAOP;AACT;AChBO,SAASoC,KAAc;AAC5B,QAAM,CAACC,GAAMC,CAAO,IAAI7D,EAAS,EAAK,GAChC,CAAC8D,GAAeC,CAAgB,IAAI/D,EAAwB,IAAI,GAChEgE,IAAS1C,EAAAA,GACT2C,IAAUC,EAAuB,IAAI,GACrCC,IAAaD,EAAiC,IAAI,GAClDE,IAAWF,EAAO,oBAAIG,KAA0B,GAChDC,IAAWJ,EAAiB,EAAE,GAC9BK,IAA2BL,EAAO,EAAK,GAEvCM,IAAQrE,EAAY,MAAM;AAC9B0D,IAAAA,EAAQ,EAAK,GACbE,EAAiB,IAAI,GACrBQ,EAAyBE,UAAU,IACnCN,EAAWM,SAASC,MAAAA;AAAAA,EACtB,GAAG,CAAA,CAAE,GAECC,IAASxE,EAAY,MAAM;AAC/B0D,IAAAA,EAASe,CAAAA,OACFA,KAGHb,EAAiB,IAAI,GACrBQ,EAAyBE,UAAU,MAHnCF,EAAyBE,UAAU,IAK9B,CAACG,EACT;AAAA,EACH,GAAG,CAAA,CAAE;AAKLC,EAAAA,EAAU,MAAM;AACd,QAAIjB,KAAQW,EAAyBE,SAAS;AAC5CF,MAAAA,EAAyBE,UAAU;AACnC,YAAMK,IAAQR,EAASG;AACvB,MAAIK,EAAMC,SAAS,KACjBhB,EAAiBe,EAAM,CAAC,CAAC;AAAA,IAE7B;AAAA,EACF,GAAG,CAAClB,CAAI,CAAC;AAET,QAAMoB,IAAe7E,EAAY,CAACkB,GAAY4D,MAAyB;AACrEb,IAAAA,EAASK,QAAQS,IAAI7D,GAAI4D,CAAO;AAChC,UAAME,IAAMf,EAASK,SACfW,IAAM,CAAC,GAAGD,EAAIE,MAAM;AAC1BD,WAAAA,EAAIE,KAAK,CAAChM,GAAGiM,MAAM;AACjB,YAAMC,IAAML,EAAIM,IAAInM,CAAC,GACfoM,IAAMP,EAAIM,IAAIF,CAAC;AACrB,aAAI,CAACC,KAAO,CAACE,IAAY,IAClBF,EAAIG,wBAAwBD,CAAG,IAAIE,KAAKC,8BAA8B,KAAK;AAAA,IACpF,CAAC,GACDvB,EAASG,UAAUW,GACZ,MAAM;AACXhB,MAAAA,EAASK,QAAQqB,OAAOzE,CAAE,GAC1BiD,EAASG,UAAUH,EAASG,QAAQsB,OAAQnO,CAAAA,MAAMA,MAAMyJ,CAAE;AAAA,IAC5D;AAAA,EACF,GAAG,CAAA,CAAE;AAGLwD,SAAAA,EAAU,MAAM;AACd,UAAMhG,IAAOoF,EAAQQ;AACrB,QAAI,CAAC5F,KAAQ,CAAC+E,EAAM;AAEpB,aAASoC,EAAc5F,GAAkB;AACvC,YAAM0E,IAAQR,EAASG;AACvB,UAAIK,EAAMC,WAAW;AAErB,gBAAQ3E,EAAE6F,KAAAA;AAAAA,UACR,KAAK,aAAa;AAChB7F,YAAAA,EAAE8F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,KAAKrB,EAAMC,MAAM;AAAA,YACvC,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,WAAW;AACd3E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,IAAIrB,EAAMC,UAAUD,EAAMC,MAAM;AAAA,YACtD,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,QAAQ;AACX3E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAiBe,EAAM,CAAC,CAAC;AACzB;AAAA,UACF;AAAA,UACA,KAAK,OAAO;AACV1E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAiBe,EAAMA,EAAMC,SAAS,CAAC,CAAC;AACxC;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,KAAK;AACR3E,YAAAA,EAAE8F,eAAAA;AACF,kBAAMG,IAAQjC,EAASK;AACvBV,YAAAA,EAAkBa,CAAAA,OACZA,KACSyB,EAAMZ,IAAIb,CAAI,GACrB0B,MAAAA,GAEC1B,EACR;AACD;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,OAAO;AACVJ,YAAAA,EAAAA;AACA;AAAA,UACF;AAAA,QAAA;AAAA,IAEJ;AAEA3F,WAAAA,EAAK0H,iBAAiB,WAAWP,CAAa,GACvC,MAAMnH,EAAK2H,oBAAoB,WAAWR,CAAa;AAAA,EAChE,GAAG,CAACpC,GAAMY,CAAK,CAAC,GAaT;AAAA,IAACjD,KAXsB;AAAA,MAC5BqC,MAAAA;AAAAA,MACAe,QAAAA;AAAAA,MACAH,OAAAA;AAAAA,MACAR,QAAAA;AAAAA,MACAF,eAAAA;AAAAA,MACAC,kBAAAA;AAAAA,MACAiB,cAAAA;AAAAA,MACAb,YAAAA;AAAAA,IAAAA;AAAAA,IAGWF,SAAAA;AAAAA,EAAAA;AACf;AC5HA,SAAS9C,GAAK;AAAA,EAAClG,UAAAA;AAAmB,GAAG;AACnC,QAAM;AAAA,IAACsG,KAAAA;AAAAA,IAAK0C,SAAAA;AAAAA,EAAAA,IAAWN,GAAAA;AAEvB,2BACGF,GAAY,UAAZ,EAAqB,OAAOlC,GAC3B,4BAAA,OAAA,EAAU,KAAK0C,GAAQ,GAAA9I,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACvC5D,UAAAA,GACH,GACF;AAEJ;AAGA,SAASwL,GAAQ;AAAA,EAACxL,UAAAA;AAA+B,GAAG;AAClD,QAAM;AAAA,IAAC2I,MAAAA;AAAAA,IAAMe,QAAAA;AAAAA,IAAQX,QAAAA;AAAAA,IAAQG,YAAAA;AAAAA,EAAAA,IAAcT,GAAAA,GACrCgD,IAAWxC,EAA0B,IAAI;AAG/CW,SAAAA,EAAU,MAAM;AACdV,IAAAA,EAAWM,UAAUiC,EAASjC;AAAAA,EAChC,CAAC,GAGC,gBAAAvJ,EAAA,YACE,KAAKwL,GACL,MAAK,UACL,SAAS/B,GACT,iBAAef,GACf,iBAAc,QACd,iBAAeA,IAAOI,IAASnE,QAAU,GAAA1E,EAAAC,EAAA7B,QAClC5B,EAAOiL,OAAO,GAEpB3H,UAAAA,EAAAA,CACH;AAEJ;AAQA,SAAS0L,GAAM;AAAA,EAAC1L,UAAAA;AAAAA,EAAU2L,OAAAA,IAAQ;AAAmB,GAAG;AACtD,QAAM;AAAA,IAAChD,MAAAA;AAAAA,IAAMY,OAAAA;AAAAA,IAAOR,QAAAA;AAAAA,IAAQF,eAAAA;AAAAA,EAAAA,IAAiBJ,GAAAA;AAE7C,SAAKE,IAGH,gBAAAhF,EAAAiI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA3L,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,EAAOkL,QAAQ,GAAE,SAAS2B,EAAAA,CAAM;AAAA,IACjD,gBAAAtJ,EAAA,SACE,IAAI8I,GACJ,MAAK,QACL,yBAAuBF,KAAiBjE,QAAU,GAAA1E,EAAAC,EAAA5B,KAC1C7B,EAAOwL,OAAOyD,MAAU,SAASjP,EAAO0L,QAAQ,GAEvDpI,UAAAA,EAAAA,CACH;AAAA,EAAA,GACF,IAbgB;AAepB;AAQA,SAAS6L,GAAK;AAAA,EAAChJ,SAAAA;AAAAA,EAAS7C,UAAAA;AAAmB,GAAG;AAC5C,QAAM;AAAA,IAACuJ,OAAAA;AAAAA,IAAOV,eAAAA;AAAAA,IAAeC,kBAAAA;AAAAA,IAAkBiB,cAAAA;AAAAA,EAAAA,IAAgBtB,GAAAA,GACzDrC,IAAKC,EAAAA,GACLyF,IAAM7C,EAAuB,IAAI,GACjC8C,IAAgBlD,MAAkBzC;AAExCwD,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAKwC;AACL,aAAOjC,EAAa3D,GAAI4F,CAAE;AAAA,EAC5B,GAAG,CAAC5F,GAAI2D,CAAY,CAAC,GAQnB,gBAAA9J,EAAA,SACE,KAAA6L,GACA,IAAA1F,GACA,MAAK,YACL,SAVgB6F,MAAM;AACxBpJ,IAAAA,IAAAA,GACA0G,EAAAA;AAAAA,EACF,GAQI,gBAAgB,MAAMT,EAAiB1C,CAAE,GAAE,GAAAlG,EAAAC,EAAA5B,KACnC7B,EAAO2L,MAAM0D,KAAiBrP,EAAO4L,eAAe,GAE3DtI,UAAAA,EAAAA,CACH;AAEJ;AAQA,SAASkM,GAAS;AAAA,EAACzE,MAAAA;AAAAA,EAAMzH,UAAAA;AAAuB,GAAG;AACjD,QAAM;AAAA,IAACuJ,OAAAA;AAAAA,IAAOV,eAAAA;AAAAA,IAAeC,kBAAAA;AAAAA,IAAkBiB,cAAAA;AAAAA,EAAAA,IAAgBtB,GAAAA,GACzDrC,IAAKC,EAAAA,GACLyF,IAAM7C,EAA0B,IAAI,GACpC8C,IAAgBlD,MAAkBzC;AAExCwD,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAKwC;AACL,aAAOjC,EAAa3D,GAAI4F,CAAE;AAAA,EAC5B,GAAG,CAAC5F,GAAI2D,CAAY,CAAC,GAGnB,gBAAA9J,EAAA,KAAA,EACE,KAAA6L,GACA,IAAA1F,GACA,MAAAqB,GACA,SAAS8B,GACT,MAAK,YACL,gBAAgB,MAAMT,EAAiB1C,CAAE,GAAE,GAAAlG,EAAAC,EAAA9B,GACnC3B,EAAO2L,MAAM3L,EAAO6L,UAAUwD,KAAiBrP,EAAO4L,eAAe,GAE5EtI,UAAAA,EAAAA,CACH;AAEJ;AAEO,MAAMmM,KAAO;AAAA,EAAA,MAClBjG;AAAAA,EAAAA,SACAsF;AAAAA,EAAAA,OACAE;AAAAA,EAAAA,MACAG;AAAAA,EACAK,UAAAA;AACF,GClJaxP,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA9E,OAAA;AAAA,EAAA;AAAA,EAAA8M,UAAA;AAAA,IAAA7J,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAsI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAjN,OAAA;AAAA,EAAA;AAAA,EAAAkN,SAAA;AAAA,IAAArE,QAAA;AAAA,IAAAsE,QAAA;AAAA,IAAAnN,OAAA;AAAA,EAAA;AAAA,EAAAoN,WAAA;AAAA,IAAAvI,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAA7H,QAAA;AAAA,IAAAuM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApL,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAAuN,mBAAA;AAAA,IAAAhF,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzF,QAAA;AAAA,IAAA+C,QAAA;AAAA,IAAA3E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAAwN,qBAAA;AAAA,IAAAhF,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAjE,QAAA;AAAA,IAAAuB,QAAA;AAAA,IAAAzE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAtB,OAAA;AAAA,EAAA;AAAA,EAAAyN,iBAAA;AAAA,IAAAtK,QAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAA0N,kBAAA;AAAA,IAAAvK,QAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAA2N,OAAA;AAAA,IAAA9I,QAAA;AAAA,IAAA+I,QAAA;AAAA,IAAA1N,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAuC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAA6N,mBAAAA,CAiEGC,MAA0B,CAAA;AAAA,IAAAC,OAC5CD,KAAS,OAAA,aAATA;AAAAA,IAAS9N,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,kBAAAgO,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA1I,QAATwI,CAAS;AAAA,EAAA,CAAA;AAAA,EAAAG,eAAAA,CAEKC,GAAgBpR,MAAiB,CAAA;AAAA,IAAA2H,QAC/CyJ,KAAM,OAAA,aAANA;AAAAA,IAAMrK,QACN/G,KAAS,OAAA,YAATA;AAAAA,IAASkD,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,eAAAgO,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA1I,QADT4I,CAAM;AAAA,IAAA,iBACNpR,KAASwI;AAAAA,EAAAA,CAAA;AAAA,EAAA6I,iBAAAA,CAEOC,GAAetR,MAAiB,CAAA;AAAA,IAAAmG,QAChDmL,KAAK,OAAA,YAALA;AAAAA,IAAKvK,QACL/G,KAAS,OAAA,YAATA;AAAAA,IAASkD,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,cAAAgO,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA1I,QADT8I,CAAK;AAAA,IAAA,iBACLtR,KAASwI;AAAAA,EAAAA,CAAA;AAAA,GChEA+I,KAAoB7H,EAA6C,IAAI;AAE3E,SAAS8H,KAAgB;AAC9B,QAAMtH,IAAMN,EAAW2H,EAAiB;AACxC,MAAI,CAACrH,EAAK,OAAM,IAAIO,MAAM,oEAAoE;AAC9F,SAAOP;AACT;ACjBO,SAASuH,KAA4C;AAC1D,QAAMC,IAAc7E,EAA8B,IAAI,GAChD8E,IAAa9E,EAA8B,IAAI,GAC/C,CAAC+E,GAAWC,CAAY,IAAIlJ,EAAS,CAAC,GACtC,CAACmJ,GAAYC,CAAa,IAAIpJ,EAAS,CAAC,GACxC,CAACqJ,GAAcC,CAAe,IAAItJ,EAAS,CAAC,GAC5C,CAACuJ,GAAaC,CAAc,IAAIxJ,EAAS,CAAC,GAC1C,CAACyJ,GAAcC,CAAe,IAAI1J,EAAS,CAAC,GAC5C,CAAC2J,GAAaC,CAAc,IAAI5J,EAAS,CAAC,GAC1C,CAAC6J,GAAWC,CAAY,IAAI9J,EAAS,EAAK,GAC1C+J,IAAiB7F,EAA6C,IAAI,GAElE8F,IAAe7J,EAAY,MAAM;AACrC,UAAM8J,IAAKlB,EAAYtE;AACvB,IAAKwF,MAELf,EAAae,EAAGhB,SAAS,GACzBG,EAAca,EAAGd,UAAU,GAC3BG,EAAgBW,EAAGZ,YAAY,GAC/BG,EAAeS,EAAGV,WAAW,GAC7BG,EAAgBO,EAAGR,YAAY,GAC/BG,EAAeK,EAAGN,WAAW,GAC7BG,EAAa,EAAI,GAEbC,EAAetF,WAASyF,aAAaH,EAAetF,OAAO,GAC/DsF,EAAetF,UAAU0F,WAAW,MAAML,EAAa,EAAK,GAAG,GAAI;AAAA,EACrE,GAAG,CAAA,CAAE;AAGLjF,SAAAA,EAAU,MAAM;AACd,UAAMoF,IAAKlB,EAAYtE;AACvB,QAAI,CAACwF,EAAI;AAET,UAAMG,IAAW,IAAIC,eAAe,MAAM;AACxCf,MAAAA,EAAgBW,EAAGZ,YAAY,GAC/BG,EAAeS,EAAGV,WAAW,GAC7BG,EAAgBO,EAAGR,YAAY,GAC/BG,EAAeK,EAAGN,WAAW;AAAA,IAC/B,CAAC;AACDS,WAAAA,EAASE,QAAQL,CAAE,GAEnBX,EAAgBW,EAAGZ,YAAY,GAC/BG,EAAeS,EAAGV,WAAW,GAC7BG,EAAgBO,EAAGR,YAAY,GAC/BG,EAAeK,EAAGN,WAAW,GAEtB,MAAMS,EAASG,WAAAA;AAAAA,EACxB,GAAG,CAAA,CAAE,GAGL1F,EAAU,MAAM;AACd,UAAMoF,IAAKlB,EAAYtE;AACvB,QAAKwF;AACLA,aAAAA,EAAG1D,iBAAiB,UAAUyD,GAAc;AAAA,QAACQ,SAAS;AAAA,MAAA,CAAK,GACpD,MAAMP,EAAGzD,oBAAoB,UAAUwD,CAAY;AAAA,EAC5D,GAAG,CAACA,CAAY,CAAC,GAEV;AAAA,IACLjB,aAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,WAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAE,aAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAE,aAAAA;AAAAA,IACAE,WAAAA;AAAAA,EAAAA;AAEJ;AC3DA,SAAS1I,GAAK;AAAA,EAAClG,UAAAA;AAAmB,GAAG;AACnC,QAAMsG,IAAMuH,GAAAA;AAEZ,2BACGF,GAAkB,UAAlB,EAA2B,OAAOrH,GACjC,UAAA,gBAAArG,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,EAAOkH,IAAI,GAAG5D,UAAAA,GAAS,GAC1C;AAEJ;AASA,SAASwP,GAAS;AAAA,EAACxP,UAAAA;AAAAA,EAAUoN,WAAAA;AAAwB,GAAG;AACtD,QAAM;AAAA,IAACU,aAAAA;AAAAA,EAAAA,IAAeF,GAAAA;AAEtB,2BACE,OAAA,EACE,KAAKE,GAAY,GAAA5N,EAAAC,EAAA5B,KACT7B,EAAO0P,UAAUgB,KAAa,QAAQ1Q,EAAOyQ,kBAAkBC,CAAS,CAAC,GAEhFpN,UAAAA,GACH;AAEJ;AAQA,SAASyP,GAAQ;AAAA,EAACzP,UAAAA;AAAsB,GAAG;AACzC,QAAM;AAAA,IAAC+N,YAAAA;AAAAA,EAAAA,IAAcH,GAAAA;AACrB,SACE,gBAAA3N,EAAA,OAAA,EAAU,KAAK8N,GAAW,GAAA7N,EAAAC,EAAA5B,KAAQ7B,EAAO8P,OAAO,GAC7CxM,UAAAA,EAAAA,CACH;AAEJ;AAWA,SAAS0P,GAAU;AAAA,EAACC,aAAAA,IAAc;AAAA,EAAY3P,UAAAA;AAAwB,GAAG;AACvE,QAAM;AAAA,IAAC4O,WAAAA;AAAAA,IAAWR,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,IAAaE,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,EAAAA,IAAed,GAAAA;AAM1E,UAFE+B,MAAgB,aAAavB,IAAeI,IAAeF,IAAcI,KAKzE,gBAAAzO,EAAA,SAAA,GAAAC,EAAAC,EAAA5B,KAEI7B,EAAOgQ,WACPiD,MAAgB,aAAajT,EAAOmQ,oBAAoBnQ,EAAOoQ,qBAC/D8B,IAAYlS,EAAOsQ,mBAAmBtQ,EAAOqQ,eAAe,GAG7D/M,UAAAA,GACH,IAXuB;AAa3B;AAQA,SAAS4P,GAAM;AAAA,EAACD,aAAAA,IAAc;AAAsB,GAAG;AACrD,QAAM;AAAA,IAAC7B,aAAAA;AAAAA,IAAaE,WAAAA;AAAAA,IAAWE,YAAAA;AAAAA,IAAYE,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,IAAaE,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,EAAAA,IAClFd,GAAAA,GACIiC,IAAc5G,EAAO,EAAK,GAC1B6G,IAAc7G,EAAO,CAAC,GACtB8G,IAAiB9G,EAAO,CAAC,GAEzB+G,IAAaL,MAAgB,YAE7BM,IACFC,KAAKC,IADgBH,IACXxB,IAAeJ,IAAgB,MAC/BM,IAAcJ,IAAe,KADO,EAAE,GAG9C8B,IAAYJ,IAAa5B,IAAeI,IAAeF,IAAcI,GACrE2B,IAAYL,IAAaxB,IAAeE,GACxC4B,IAAkBL,IAAmB,MAAOI,GAC5CE,IAAeP,IAAahC,IAAYE,GACxCsC,IAAcJ,IAAY,IAAKG,IAAeH,KAAcC,IAAYC,KAAkB,GAE1FG,IAAaT,IACftT,EAAO6Q,cAAc,GAAG0C,CAAgB,KAAK,cAAcO,CAAW,KAAK,IAC3E9T,EAAO+Q,gBAAgB,GAAGwC,CAAgB,KAAK,cAAcO,CAAW,KAAK,GAE3EE,IAAoBxL,EACxB,CAACC,MAA0B;AACzBA,IAAAA,EAAE8F,eAAAA,GACF4E,EAAYrG,UAAU,IACtBsG,EAAYtG,UAAUwG,IAAa7K,EAAEwL,UAAUxL,EAAEyL,SACjDb,EAAevG,UAAUwG,IACpBlC,EAAYtE,SAASwE,aAAa,IAClCF,EAAYtE,SAAS0E,cAAc,GACtC/I,EAAEC,OAAuByL,kBAAkB1L,EAAE2L,SAAS;AAAA,EAC1D,GACA,CAACd,GAAYlC,CAAW,CAC1B,GAEMiD,IAAoB7L,EACxB,CAACC,MAA0B;AACzB,QAAI,CAAC0K,EAAYrG,QAAS;AAC1B,UAAMwF,IAAKlB,EAAYtE;AACvB,QAAI,CAACwF,EAAI;AAET,UAAMgC,KAAShB,IAAa7K,EAAEwL,UAAUxL,EAAEyL,WAAWd,EAAYtG,SAC3DyH,IAAcb,KAAaC,IAAYC,IACvCY,IAAcF,IAAQC;AAE5B,IAAIjB,IACFhB,EAAGhB,YAAY+B,EAAevG,UAAU0H,IAExClC,EAAGd,aAAa6B,EAAevG,UAAU0H;AAAAA,EAE7C,GACA,CAAClB,GAAYI,GAAWC,GAAWC,GAAgBxC,CAAW,CAChE,GAEMqD,IAAkBjM,EAAY,MAAM;AACxC2K,IAAAA,EAAYrG,UAAU;AAAA,EACxB,GAAG,CAAA,CAAE;AAEL,SACE,gBAAAvJ,EAAA,OAAA,EACE,eAAeyQ,GACf,eAAeK,GACf,aAAaI,GAAgB,GAAAjR,EAAAC,EAAA5B,KACrB7B,EAAOuQ,OAAOwD,CAAU,GAAA;AAGtC;AAEO,MAAMW,KAAa;AAAA,EAAA,MACxBlL;AAAAA,EACAsJ,UAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAE,OAAAA;AACF,GCnKalT,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,EAAAqI,SAAA;AAAA,IAAAvH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAnC,OAAA;AAAA,IAAAuC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA0H,aAAA;AAAA,IAAAtH,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAsG,MAAA;AAAA,IAAAxF,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAsI,UAAA;AAAA,IAAAzD,QAAA;AAAA,IAAA0D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3I,OAAA;AAAA,EAAA;AAAA,EAAA4I,OAAA;AAAA,IAAA/D,QAAA;AAAA,IAAA0D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAlG,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAuH,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA3I,OAAA;AAAA,EAAA;AAAA,EAAA+I,MAAA;AAAA,IAAAjI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAb,QAAA;AAAA,IAAAT,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAA/B,QAAA;AAAA,IAAAgC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAA+R,cAAA;AAAA,IAAA3R,QAAA;AAAA,IAAAc,QAAA;AAAA,IAAAlB,OAAA;AAAA,EAAA;AAAA,EAAAgJ,iBAAA;AAAA,IAAA9I,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAgS,QAAA;AAAA,IAAAlR,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,GCWNiS,KAAgBzL,EAAyC,IAAI;AAEnE,SAAS0L,KAAY;AAC1B,QAAMlL,IAAMN,EAAWuL,EAAa;AACpC,MAAI,CAACjL,EAAK,OAAM,IAAIO,MAAM,4DAA4D;AACtF,SAAOP;AACT;ACrBO,SAASmL,GACdC,GACArK,GACA3C,GACA;AACA,QAAM,CAACiN,GAAUC,CAAW,IAAI7M,EAASsC,CAAY,GAC/ClK,IAAQuU,MAAoB9M,SAAY8M,IAAkBC,GAC1DE,IAAW3M,EACf,CAAC4M,MAAS;AACR,IAAIJ,MAAoB9M,UAAWgN,EAAYE,CAAC,GAChDpN,IAAWoN,CAAC;AAAA,EACd,GACA,CAACJ,GAAiBhN,CAAQ,CAC5B;AACA,SAAO,CAACvH,GAAO0U,CAAQ;AACzB;ACPO,SAASE,GAAc;AAAA,EAC5B1K,cAAAA;AAAAA,EACAlK,OAAOuU;AAAAA,EACPM,eAAAA;AACoB,GAAG;AACvB,QAAM,CAAC7U,GAAO0U,CAAQ,IAAIJ,GACxBC,GACArK,KAAgB,MAChB2K,CACF,GACM,CAACrJ,GAAMC,CAAO,IAAI7D,EAAS,EAAK,GAChC,CAACkN,GAAQC,CAAS,IAAInN,EAAiC,CAAA,CAAE,GACzD,CAAC8D,GAAeC,CAAgB,IAAI/D,EAAwB,IAAI,GAChEoN,IAAY9L,EAAAA,GACZ2C,IAAUC,EAAuB,IAAI,GACrCC,IAAaD,EAAiC,IAAI,GAClDE,IAAWF,EAAO,oBAAIG,KAAoD,GAC1EC,IAAWJ,EAAiB,EAAE,GAE9BM,IAAQrE,EAAY,MAAM;AAC9B0D,IAAAA,EAAQ,EAAK,GACbE,EAAiB,IAAI,GACrBI,EAAWM,SAASC,MAAAA;AAAAA,EACtB,GAAG,CAAA,CAAE,GAECC,IAASxE,EAAY,MAAM;AAC/B0D,IAAAA,EAASe,CAAAA,MAAS;AAChB,UAAKA;AAaHb,QAAAA,EAAiB,IAAI;AAAA,WAbZ;AACT,cAAMsC,IAAQjC,EAASK,SACjBK,IAAQR,EAASG;AACvB,YAAI4I,IAAuB;AAC3B,mBAAWhM,KAAMyD,GAAO;AACtB,gBAAMxB,IAAO+C,EAAMZ,IAAIpE,CAAE;AACzB,cAAIiC,KAAQA,EAAKlL,UAAUA,GAAO;AAChCiV,YAAAA,IAAQhM;AACR;AAAA,UACF;AAAA,QACF;AACA0C,QAAAA,EAAiBsJ,MAAUvI,EAAMC,SAAS,IAAID,EAAM,CAAC,IAAI,KAAK;AAAA,MAChE;AAGA,aAAO,CAACF;AAAAA,IACV,CAAC;AAAA,EACH,GAAG,CAACxM,CAAK,CAAC,GAEJkV,IAAgBnN,EAAY,CAAC4M,GAAWrT,MAAkB;AAC9DyT,IAAAA,EAAWvI,CAAAA,MACLA,EAAKmI,CAAC,MAAMrT,IAAckL,IACvB;AAAA,MAAC,GAAGA;AAAAA,MAAM,CAACmI,CAAC,GAAGrT;AAAAA,IAAAA,CACvB;AAAA,EACH,GAAG,CAAA,CAAE,GAECsL,IAAe7E,EAAY,CAACkB,GAAYkM,GAAmBtI,MAAyB;AACxFb,IAAAA,EAASK,QAAQS,IAAI7D,GAAI;AAAA,MAACjJ,OAAOmV;AAAAA,MAAWtI,SAAAA;AAAAA,IAAAA,CAAQ;AACpD,UAAME,IAAMf,EAASK,SACfW,IAAM,CAAC,GAAGD,EAAIE,MAAM;AAC1BD,WAAAA,EAAIE,KAAK,CAAChM,GAAGiM,MAAM;AACjB,YAAMC,KAAML,EAAIM,IAAInM,CAAC,GAAG2L,SAClBS,KAAMP,EAAIM,IAAIF,CAAC,GAAGN;AACxB,aAAI,CAACO,MAAO,CAACE,KAAY,IAClBF,GAAIG,wBAAwBD,EAAG,IAAIE,KAAKC,8BAA8B,KAAK;AAAA,IACpF,CAAC,GACDvB,EAASG,UAAUW,GACZ,MAAM;AACXhB,MAAAA,EAASK,QAAQqB,OAAOzE,CAAE,GAC1BiD,EAASG,UAAUH,EAASG,QAAQsB,OAAQnO,CAAAA,MAAMA,MAAMyJ,CAAE;AAAA,IAC5D;AAAA,EACF,GAAG,CAAA,CAAE;AAGLwD,SAAAA,EAAU,MAAM;AACd,UAAMhG,IAAOoF,EAAQQ;AACrB,QAAI,CAAC5F,KAAQ,CAAC+E,EAAM;AAEpB,aAASoC,EAAc5F,GAAkB;AACvC,YAAM0E,IAAQR,EAASG,SACjB4B,IAAQjC,EAASK;AACvB,UAAIK,EAAMC,WAAW;AAErB,gBAAQ3E,EAAE6F,KAAAA;AAAAA,UACR,KAAK,aAAa;AAChB7F,YAAAA,EAAE8F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,KAAKrB,EAAMC,MAAM;AAAA,YACvC,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,WAAW;AACd3E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,IAAIrB,EAAMC,UAAUD,EAAMC,MAAM;AAAA,YACtD,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,QAAQ;AACX3E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAiBe,EAAM,CAAC,CAAC;AACzB;AAAA,UACF;AAAA,UACA,KAAK,OAAO;AACV1E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAiBe,EAAMA,EAAMC,SAAS,CAAC,CAAC;AACxC;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,KAAK;AACR3E,YAAAA,EAAE8F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,kBAAIA,GAAM;AACR,sBAAMtB,IAAO+C,EAAMZ,IAAIb,CAAI;AAC3B,gBAAItB,MACFwJ,EAASxJ,EAAKlL,KAAK,GACnBoM,EAAAA;AAAAA,cAEJ;AACA,qBAAOI;AAAAA,YACT,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,OAAO;AACVJ,YAAAA,EAAAA;AACA;AAAA,UACF;AAAA,QAAA;AAAA,IAEJ;AAEA3F,WAAAA,EAAK0H,iBAAiB,WAAWP,CAAa,GACvC,MAAMnH,EAAK2H,oBAAoB,WAAWR,CAAa;AAAA,EAChE,GAAG,CAACpC,GAAMY,GAAOsI,CAAQ,CAAC,GAgCnB;AAAA,IAACvL,KA9BwBC,GAC9B,OAAO;AAAA,MACLoC,MAAAA;AAAAA,MACAe,QAAAA;AAAAA,MACAH,OAAAA;AAAAA,MACApM,OAAAA;AAAAA,MACA0U,UAAAA;AAAAA,MACAI,QAAAA;AAAAA,MACAI,eAAAA;AAAAA,MACAF,WAAAA;AAAAA,MACAtJ,eAAAA;AAAAA,MACAC,kBAAAA;AAAAA,MACAiB,cAAAA;AAAAA,MACAb,YAAAA;AAAAA,IAAAA,IAEF,CACEP,GACAe,GACAH,GACApM,GACA0U,GACAI,GACAI,GACAF,GACAtJ,GACAC,GACAiB,CAAY,CAEhB;AAAA,IAEaf,SAAAA;AAAAA,EAAAA;AACf;AChKA,SAAS9C,GAAK;AAAA,EAAC5B,MAAAA;AAAAA,EAAM+C,cAAAA;AAAAA,EAAclK,OAAAA;AAAAA,EAAO6U,eAAAA;AAAAA,EAAehS,UAAAA;AAAmB,GAAG;AAC7E,QAAM;AAAA,IAACsG,KAAAA;AAAAA,IAAK0C,SAAAA;AAAAA,EAAAA,IAAW+I,GAAc;AAAA,IAAC1K,cAAAA;AAAAA,IAAclK,OAAAA;AAAAA,IAAO6U,eAAAA;AAAAA,EAAAA,CAAc;AAEzE,2BACGT,GAAc,UAAd,EAAuB,OAAOjL,GAC7B,UAAA,gBAAA3C,EAAA,OAAA,EAAU,KAAKqF,GAAQ,GAAA9I,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACvCU,UAAAA;AAAAA,IAAAA,KAAQ,gBAAArE,EAAA,SAAA,EAAY,MAAK,UAAS,MAAAqE,GAAY,OAAOgC,EAAInJ,SAAS,IAAG,KAAA,QAAA,GAAA+C,EAAAC,EAAA3B,KAAA,GAAA;AAAA,IACrEwB;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF;AAEJ;AAGA,SAASwL,GAAQ;AAAA,EAACxL,UAAAA;AAA+B,GAAG;AAClD,QAAM;AAAA,IAAC2I,MAAAA;AAAAA,IAAMe,QAAAA;AAAAA,IAAQyI,WAAAA;AAAAA,IAAWtJ,eAAAA;AAAAA,IAAeK,YAAAA;AAAAA,EAAAA,IAAcsI,GAAAA,GACvD/F,IAAWxC,EAA0B,IAAI;AAG/CW,SAAAA,EAAU,MAAM;AACdV,IAAAA,EAAWM,UAAUiC,EAASjC;AAAAA,EAChC,CAAC,GAGC,gBAAAvJ,EAAA,UAAA,EACE,KAAKwL,GACL,MAAK,UACL,MAAM,YACN,SAAS/B,GACT,iBAAef,GACf,iBAAc,WACd,iBAAeA,IAAOwJ,IAAYvN,QAClC,yBAAuBiE,KAAiBjE,QAAU,GAAA1E,EAAAC,EAAA7B,QAC3C5B,EAAOiL,OAAO,GAEpB3H,UAAAA,EAAAA,CACH;AAEJ;AAGA,SAASuS,GAAM;AAAA,EAACvL,aAAAA;AAAmC,GAAG;AACpD,QAAM;AAAA,IAAC7J,OAAAA;AAAAA,IAAO8U,QAAAA;AAAAA,EAAAA,IAAUT,GAAAA,GAClBgB,IAAUrV,IAAS8U,EAAO9U,CAAK,KAAKA,IAAS;AAEnD,SACE,gBAAA8C,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAkB4T,IAAU9V,EAAOS,QAAQT,EAAOsK,WAAW,GAC1DwL,eAAWxL,GACd;AAEJ;AAGA,SAASyL,GAAK;AAAA,EAACzS,UAAAA;AAAgC,GAAG;AAChD,SACE,gBAAAC,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAkBlC,EAAOkJ,IAAI,GAC1B5F,eACC,gBAAAC,EAAC,OAAA,EACC,OAAM,MACN,QAAO,MACP,SAAQ,aACR,MAAK,QACL,QAAO,gBACP,aAAY,KACZ,eAAc,SACd,gBAAe,SACf,eAAY,QAEZ,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,eAAA,CAAc,GACxB,GAEJ;AAEJ;AAGA,SAASyL,GAAM;AAAA,EAAC1L,UAAAA;AAA+B,GAAG;AAChD,QAAM;AAAA,IAAC2I,MAAAA;AAAAA,IAAMY,OAAAA;AAAAA,IAAO4I,WAAAA;AAAAA,EAAAA,IAAaX,GAAAA;AAEjC,SACE,gBAAA7N,EAAAiI,GAAA,EACGjD,UAAAA;AAAAA,IAAAA,KAAQ,gBAAA1I,cAAAC,EAAAC,EAAA5B,KAAiB7B,EAAOkL,QAAQ,GAAE,SAAS2B,EAAAA,CAAM;AAAA,IAC1D,gBAAAtJ,EAAA,SACE,IAAIkS,GACJ,MAAK,WACL,eAAa,CAACxJ,GAAK,GAAAzI,EAAAC,EAAA5B,KACX7B,EAAOwL,OAAO,CAACS,KAAQjM,EAAO4U,MAAM,GAE3CtR,UAAAA,EAAAA,CACH;AAAA,EAAA,GACF;AAEJ;AAQA,SAAS6L,GAAK;AAAA,EAAC1O,OAAOmV;AAAAA,EAAWtS,UAAAA;AAAmB,GAAG;AACrD,QAAM;AAAA,IACJ7C,OAAOuV;AAAAA,IACPb,UAAAA;AAAAA,IACAtI,OAAAA;AAAAA,IACA8I,eAAAA;AAAAA,IACAxJ,eAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAiB,cAAAA;AAAAA,EAAAA,IACEyH,GAAAA,GACEpL,IAAKC,EAAAA,GACLyF,IAAM7C,EAAuB,IAAI,GACjC0J,IAAaD,MAAkBJ,GAC/BvG,IAAgBlD,MAAkBzC;AAGxCwD,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAI,CAACwC,EAAI;AACT,UAAM4G,IAAO5G,EAAG6G;AAChB,IAAID,KAAMP,EAAcC,GAAWM,CAAI;AAAA,EACzC,GAAG,CAACN,GAAWD,CAAa,CAAC,GAE7BzI,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAKwC;AACL,aAAOjC,EAAa3D,GAAIkM,GAAWtG,CAAE;AAAA,EACvC,GAAG,CAAC5F,GAAIkM,GAAWvI,CAAY,CAAC,GAQ9B,gBAAA9J,EAAA,OAAA,EACE,KAAA6L,GACA,IAAA1F,GACA,MAAK,UACL,iBAAeuM,GACf,SAXgB1G,MAAM;AACxB4F,IAAAA,EAASS,CAAS,GAClB/I,EAAAA;AAAAA,EACF,GASI,gBAAgB,MAAMT,EAAiB1C,CAAE,GAAE,GAAAlG,EAAAC,EAAA5B,KAEzC7B,EAAO2L,MACPsK,KAAcjW,EAAO2U,cACrBtF,KAAiBrP,EAAO4L,eAAe,GAGxCtI,UAAAA,EAAAA,CACH;AAEJ;AAGA,SAAS8S,GAAS;AAAA,EAAC9S,UAAAA;AAA+B,GAAG;AACnD,2BAAO,QAAA,EAAA,GAAAE,EAAAC,EAAAvB,IAAA,GAAYoB,UAAAA,GAAS;AAC9B;AAEO,MAAM+S,KAAS;AAAA,EAAA,MACpB7M;AAAAA,EAAAA,SACAsF;AAAAA,EACA+G,OAAAA;AAAAA,EACAE,MAAAA;AAAAA,EACA/G,OAAAA;AAAAA,EAAAA,MACAG;AAAAA,EACAiH,UAAAA;AACF,GChLapW,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAkF,QAAA;AAAA,IAAAhE,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAA0T,OAAA;AAAA,IAAA5S,QAAA;AAAA,IAAAkF,QAAA;AAAA,IAAAhG,OAAA;AAAA,EAAA;AAAA,EAAA2T,cAAA;AAAA,IAAA7S,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAA0S,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzT,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAqC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA8T,oBAAA;AAAA,IAAA1T,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA+T,SAAA;AAAA,IAAAjT,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAAgU,aAAA;AAAA,IAAAnQ,QAAA;AAAA,IAAA7D,OAAA;AAAA,EAAA;AAAA,EAAA+I,MAAA;AAAA,IAAAjI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAD,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA6D,QAAA;AAAA,IAAA3D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxC,OAAA;AAAA,EAAA;AAAA,EAAAiU,YAAA;AAAA,IAAA7T,QAAA;AAAA,IAAAc,QAAA;AAAA,IAAAlB,OAAA;AAAA,EAAA;AAAA,GCMNkU,KAAiB1N,EAA0C,IAAI;AAErE,SAAS2N,KAAa;AAC3B,QAAMnN,IAAMN,EAAWwN,EAAc;AACrC,MAAI,CAAClN,EAAK,OAAM,IAAIO,MAAM,8DAA8D;AACxF,SAAOP;AACT;ACFA,SAASJ,GAAK;AAAA,EAAClG,UAAAA;AAAAA,EAAU7C,OAAOuU;AAAAA,EAAiBrK,cAAAA;AAAAA,EAAc2K,eAAAA;AAAwB,GAAG;AACxF,QAAM,CAAC0B,GAAaC,CAAQ,IAAIlC,GAC9BC,GACArK,KAAgB,MAChB2K,IACKF,CAAAA,MAAM;AACL,IAAIA,MAAM,QAAME,EAAcF,CAAC;AAAA,EACjC,IACAlN,MACN,GACM,CAACgP,GAAgBC,CAAiB,IAAI9O,EAAsB,oBAAI+O,KAAK,GACrEzK,IAAWJ,EAAiB,EAAE,GAE9B8K,IAAc7O,EAAY,CAAC8N,MAAkB;AACjDa,IAAAA,EAAmBlK,CAAAA,MAAS;AAC1B,YAAMqK,IAAO,IAAIF,IAAInK,CAAI;AACzB,aAAIqK,EAAKC,IAAIjB,CAAK,IAChBgB,EAAKnJ,OAAOmI,CAAK,IAEjBgB,EAAKE,IAAIlB,CAAK,GAETgB;AAAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAA,CAAE,GAECjK,IAAe7E,EAAY,CAAC/H,OAC3BkM,EAASG,QAAQ2K,SAAShX,CAAK,KAClCkM,EAASG,QAAQ4K,KAAKjX,CAAK,GAEtB,MAAM;AACXkM,IAAAA,EAASG,UAAUH,EAASG,QAAQsB,OAAQgH,CAAAA,MAAMA,MAAM3U,CAAK;AAAA,EAC/D,IACC,CAAA,CAAE;AAGLyM,SAAAA,EAAU,MAAM;AACd,IAAI8J,KACFG,EAAmBlK,CAAAA,MAEVA,CACR;AAAA,EAEL,GAAG,CAAC+J,CAAW,CAAC,GAGd,gBAAAzT,EAACuT,GAAe,UAAf,EACC,OAAO;AAAA,IAACE,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUC,gBAAAA;AAAAA,IAAgBG,aAAAA;AAAAA,IAAahK,cAAAA;AAAAA,IAAcV,UAAAA;AAAAA,EAAAA,GAE1E,UAAA,gBAAApJ,EAAA,OAAA,EAAU,MAAK,cAAY,GAAAC,EAAAC,EAAAzB,KAAQhC,EAAOkH,IAAI,GAC3C5D,UAAAA,GACH,EAAA,CACF;AAEJ;AAWA,SAASqU,GAAM;AAAA,EAACrU,UAAAA;AAAAA,EAAUvB,OAAAA;AAAAA,EAAO6V,UAAAA;AAAAA,EAAUC,iBAAAA;AAA2B,GAAG;AACvE,QAAMvJ,IAAMsJ,KAAY7V,GAClB;AAAA,IAACmV,gBAAAA;AAAAA,IAAgBG,aAAAA;AAAAA,IAAaL,aAAAA;AAAAA,EAAAA,IAAeD,GAAAA,GAC7Ce,IAAaZ,EAAeK,IAAIjJ,CAAG,GACnCyJ,IAAWxL,EAAuB,IAAI;AAG5CW,EAAAA,EAAU,MAAM;AACd,QAAI,CAAC8J,KAAeE,EAAeK,IAAIjJ,CAAG,EAAG;AAC7C,UAAMgB,IAAKyI,EAASjL;AACpB,QAAI,CAACwC,EAAI;AAET,IADkBA,EAAG0I,cAAc,oBAAoBhB,CAAW,IAAI,KAEpEK,EAAY/I,CAAG;AAAA,EAEnB,GAAG,CAAC0I,GAAa1I,GAAK4I,GAAgBG,CAAW,CAAC,GAGlDnK,EAAU,MAAM;AACd,IAAI2K,KAAmB,CAACX,EAAeK,IAAIjJ,CAAG,KAC5C+I,EAAY/I,CAAG;AAAA,EAInB,GAAG,CAAA,CAAE;AAEL,QAAM2J,IACA,CAACjB,KAAe,CAACe,EAASjL,UAAgB,KACvC,CAAC,CAACiL,EAASjL,QAAQkL,cAAc,oBAAoBhB,CAAW,IAAI;AAG7E,SACE,gBAAA/P,EAAA,OAAA,EAAU,KAAK8Q,GAAS,GAAAvU,EAAAC,EAAA5B,KAAQ7B,EAAOsW,KAAK,GAC1C,UAAA;AAAA,IAAA,gBAAArP,EAAA,YACE,MAAK,UACL,SAAS,MAAMoQ,EAAY/I,CAAG,MAAE9K,EAAAC,EAAA7B,QACxB5B,EAAOuW,cAAc0B,KAAkBjY,EAAO0W,kBAAkB,GACxE,iBAAeoB,GAEf,UAAA;AAAA,MAAA,gBAAAvU,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAmBlC,EAAO2W,SAASmB,KAAc9X,EAAO4W,WAAW,GACjE,UAAA,gBAAArT,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,MACCxB;AAAAA,IAAAA,GACH;AAAA,IACC+V,KAAcxU;AAAAA,EAAAA,GACjB;AAEJ;AASA,SAAS6L,GAAK;AAAA,EAAC1O,OAAAA;AAAAA,EAAO6C,UAAAA;AAAmB,GAAG;AAC1C,QAAM;AAAA,IAAC0T,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAU5J,cAAAA;AAAAA,EAAAA,IAAgB0J,GAAAA,GACxCmB,IAAWlB,MAAgBvW;AAEjCyM,SAAAA,EAAU,MACDG,EAAa5M,CAAK,GACxB,CAACA,GAAO4M,CAAY,CAAC,GAGtB,gBAAA9J,EAAA,UAAA,EACE,MAAK,UACL,kBAAgB9C,GAChB,SAAS,MAAMwW,EAASxW,CAAK,GAAE,GAAA+C,EAAAC,EAAA7B,QACvB5B,EAAO2L,MAAMuM,KAAYlY,EAAO6W,UAAU,GAClD,gBAAcqB,IAAW,SAAShQ,QAEjC5E,UAAAA,EAAAA,CACH;AAEJ;AAEO,MAAM6U,KAAU;AAAA,EAAA,MACrB3O;AAAAA,EACAmO,OAAAA;AAAAA,EACAxI,MAAAA;AACF,GCnKanP,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAhB,OAAA;AAAA,EAAA;AAAA,EAAAwV,SAAA;AAAA,IAAA7V,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAsV,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA7V,OAAA;AAAA,EAAA;AAAA,EAAA4B,IAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAI,OAAA;AAAA,EAAA;AAAA,EAAA6B,IAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAI,OAAA;AAAA,EAAA;AAAA,EAAA8V,IAAA;AAAA,IAAA7S,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAI,OAAA;AAAA,EAAA;AAAA,EAAA+V,QAAA;AAAA,IAAAlR,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAkR,QAAA;AAAA,IAAAhW,OAAA;AAAA,EAAA;AAAA,GCEb2B,KAAU;AAAA,EACdC,IAAIxE,EAAOwE;AAAAA,EACXC,IAAIzE,EAAOyE;AAAAA,EACXiU,IAAI1Y,EAAO0Y;AACb;AAEO,SAASG,GAAQ;AAAA,EAAClU,MAAAA,IAAO;AAAA,EAAM5C,OAAAA,IAAQ;AAAuB,GAAG;AACtE,SACE,gBAAAkF,EAAA,OAAA,EAAU,MAAK,UAAQ,GAAAzD,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACxC,UAAA;AAAA,IAAA,gBAAA3D,cAAAC,EAAAC,EAAA5B,KAAkB7B,EAAOoY,SAAS7T,GAAQI,CAAI,CAAC,GAAG,eAAW,GAAA,CAAA;AAAA,IAC7D,gBAAApB,EAAA,UAAA,GAAAC,EAAAC,EAAAvB,MAAkBlC,EAAO2Y,MAAM,GAAG5W,UAAAA,EAAAA,CAAM;AAAA,EAAA,GAC1C;AAEJ;ACnBO,MAAM/B,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiD,QAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAG,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,SAAA;AAAA,IAAAD,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAM,SAAA;AAAA,IAAAF,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAkW,OAAA;AAAA,IAAA9V,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,GCGbmW,KAA2C;AAAA,EAC/C,YACE,gBAAA9R,EAAAiI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA3L,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,gBAAA0D,EAAAiI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA3L,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,YAAA,EAAS,QAAO,mBAAA,CAAkB;AAAA,EAAA,GACrC;AAAA,EAEF,cACE,gBAAA0D,EAAAiI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA3L,EAAC,QAAA,EAAK,GAAE,qCAAA,CAAoC;AAAA,IAC5C,gBAAAA,EAAC,YAAA,EAAS,QAAO,wBAAA,CAAuB;AAAA,EAAA,GAC1C;AAAA,EAEFyV,OACE,gBAAA/R,EAAAiI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA3L,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,YAAA,EAAS,QAAO,mBAAA,CAAkB;AAAA,EAAA,GACrC;AAAA,EAEF0V,WACE,gBAAAhS,EAAAiI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA3L,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAAA,EAAC,UAAK,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAA,CAAO;AAAA,EAAA,EAAA,CACjD;AAEJ;AAQO,SAAS2V,GAAW;AAAA,EAACtR,MAAAA;AAAAA,EAAMjD,MAAAA,IAAO;AAAA,EAAItB,SAAAA,IAAU;AAAwB,GAAG;AAChF,SACE,gBAAAE,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAkB7B,GAAOkH,MAAMlH,GAAOqD,CAAO,CAAC,GAC5C,UAAA,gBAAAE,EAAC,SACC,SAAQ,aACR,MAAK,QACL,QAAO,gBACP,aAAa,GACb,eAAc,SACd,gBAAe,SACf,OAAOoB,GACP,QAAQA,GAEPoU,UAAAA,GAAMnR,CAAI,GACb,GACF;AAEJ;AC7DiE,MAAAuR,KAAA;AAAA,EAAAC,QAAA;AAAA,EAAA,OAAA;AAAA,GAEpDpZ,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAA1E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAA5E,QAAA;AAAA,IAAAe,QAAA;AAAA,IAAAb,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgE,QAAA;AAAA,IAAA9D,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAyW,KAAA;AAAA,IAAA3V,QAAA;AAAA,IAAA4V,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA5W,OAAA;AAAA,EAAA;AAAA,EAAA6W,cAAA;AAAA,IAAAH,QAAA;AAAA,IAAA1W,OAAA;AAAA,EAAA;AAAA,EAAA8W,SAAA;AAAA,IAAA5W,QAAA;AAAA,IAAAgC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA+W,YAAA;AAAA,IAAA7V,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAA6F,QAAA;AAAA,IAAAjG,OAAA;AAAA,EAAA;AAAA,EAAAgX,MAAA;AAAA,IAAA5W,QAAA;AAAA,IAAAU,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAf,OAAA;AAAA,EAAA;AAAA,EAAAiX,QAAA;AAAA,IAAA5V,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAAkX,QAAA;AAAA,IAAA7V,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAAmX,aAAA;AAAA,IAAAjX,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAoX,cAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAvX,OAAA;AAAA,EAAA;AAAA,EAAAwX,kBAAA;AAAA,IAAAH,QAAA;AAAA,IAAArX,OAAA;AAAA,EAAA;AAAA,EAAAyX,aAAAA,CAwFHC,OAAenB,IAAA;AAAA,IAAA,2BACN,UAAUmB,CAAO,mBAAjB,UAAUA,CAAO,WAAQpS;AAAAA,EAAAA,CAAA;AAAA,GC5E5CqS,KAAenR,EAAwC,IAAI;AAEjE,SAASoR,KAAW;AAClB,QAAM5Q,IAAMN,EAAWiR,EAAY;AACnC,MAAI,CAAC3Q,EAAK,OAAM,IAAIO,MAAM,0DAA0D;AACpF,SAAOP;AACT;AAIA,MAAM6Q,KAAgBrR,EAAc,EAAK;AAWzC,SAASI,GAAK;AAAA,EAAClG,UAAAA;AAAAA,EAAUD,SAAAA,IAAU;AAAA,EAAWsB,MAAAA,IAAO;AAAA,EAAM2V,SAAAA;AAAkB,GAAG;AAC9E,SACE,gBAAA/W,EAACgX,GAAa,UAAb,EAAsB,OAAO;AAAA,IAAClX,SAAAA;AAAAA,IAASsB,MAAAA;AAAAA,IAAM2V,SAAAA;AAAAA,IAASI,UAAU;AAAA,EAAA,GAC/D,UAAA,gBAAAnX,EAAA,OAAA,EAAU,MAAK,SAAO,GAAAC,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACtC5D,UAAAA,GACH,EAAA,CACF;AAEJ;AAIA,SAASqX,GAAO;AAAA,EAACrX,UAAAA;AAA+B,GAAG;AACjD,2BACGmX,GAAc,UAAd,EAAuB,OAAO,IAC7B,4BAAA,OAAA,EAAU,MAAK,YAAU,GAAAjX,EAAAC,EAAA5B,KAAQ7B,EAAO4G,MAAM,GAC3CtD,UAAAA,GACH,GACF;AAEJ;AAIA,SAASsX,GAAK;AAAA,EAACtX,UAAAA;AAA+B,GAAG;AAC/C,QAAM;AAAA,IAACD,SAAAA;AAAAA,EAAAA,IAAWmX,GAAAA,GACZK,IAAaC,GAASC,QAAQzX,CAAQ;AAE5C,2BACGmX,GAAc,UAAd,EAAuB,OAAO,IAC7B,4BAAA,OAAA,EAAU,MAAK,eAAUjX,EAAAC,EAAA5B,GAAA,GACtBgZ,YAAWrN,IAAI,CAACwN,GAAOC,MAClB5X,MAAY,8BAEX6X,GAAgB,UAAhB,EAAqC,OAAOD,GAC1CD,eAD4BC,CAE/B,IAGGD,CACR,GACH,GACF;AAEJ;AAGA,MAAME,KAAkB9R,EAAsB,EAAE;AAIhD,SAAS+R,GAAI;AAAA,EAAC7X,UAAAA;AAA+B,GAAG;AAC9C,QAAM;AAAA,IAACD,SAAAA;AAAAA,IAASiX,SAAAA;AAAAA,EAAAA,IAAWE,GAAAA,GACrBE,IAAWpR,EAAWmR,EAAa,GACnCW,IAAW9R,EAAW4R,EAAe,GACrCG,IAAYD,KAAY,KAAKA,IAAW,MAAM,GAC9CP,IAAaC,GAASC,QAAQzX,CAAQ;AAG5C,oCAEI,MAAK,OAAK,GAAAE,EAAAC,EAAA5B,KAER7B,EAAOqZ,KACPrZ,EAAOqa,YAAYC,CAAO,GAC1B,CAACI,KAAY1a,EAAO0Z,SACpB,CAACgB,KAAYrX,MAAY,aAAagY,KAAarb,EAAO+Z,WAAW,GAGtE1W,UAAAA,MAAY,aACTwX,EAAWrN,IAAI,CAACwN,GAAOC,wBACpBK,GAAiB,UAAjB,EAAsC,OAAO;AAAA,IAACL,OAAAA;AAAAA,IAAOM,OAAOV,EAAWzN;AAAAA,EAAAA,GACrE4N,UAAAA,EAAAA,GAD6BC,CAEhC,CACD,IACD3X,EAAAA,CACN;AAEJ;AAGA,MAAMgY,KAAmBlS,EAA8C;AAAA,EACrE6R,OAAO;AAAA,EACPM,OAAO;AACT,CAAC;AAID,SAASC,GAAW;AAAA,EAAClY,UAAAA;AAA+B,GAAG;AACrD,QAAM;AAAA,IAACqB,MAAAA;AAAAA,IAAMtB,SAAAA;AAAAA,EAAAA,IAAWmX,GAAAA,GAClB;AAAA,IAACS,OAAAA;AAAAA,IAAOM,OAAAA;AAAAA,EAAAA,IAASjS,EAAWgS,EAAgB,GAC5CG,IAASpY,MAAY,cAAc4X,MAAUM,IAAQ;AAE3D,SACE,gBAAAhY,WACE,MAAK,gBAAc,GAAAC,EAAAC,EAAA5B,KAEjB7B,EAAO2Z,YACPhV,MAAS,OAAO3E,EAAO6Z,SAAS7Z,EAAO8Z,QACvCzW,MAAY,cAAcrD,EAAOga,cACjCyB,KAAUzb,EAAOoa,gBAAgB,GAGlC9W,UAAAA,EAAAA,CACH;AAEJ;AAIA,SAASoY,GAAK;AAAA,EAACpY,UAAAA;AAA+B,GAAG;AAC/C,QAAM;AAAA,IAACqB,MAAAA;AAAAA,IAAMtB,SAAAA;AAAAA,EAAAA,IAAWmX,GAAAA,GAClB;AAAA,IAACS,OAAAA;AAAAA,IAAOM,OAAAA;AAAAA,EAAAA,IAASjS,EAAWgS,EAAgB,GAC5CG,IAASpY,MAAY,cAAc4X,MAAUM,IAAQ;AAE3D,SACE,gBAAAhY,WACE,MAAK,QAAM,GAAAC,EAAAC,EAAA5B,KAET7B,EAAO4Z,MACPjV,MAAS,OAAO3E,EAAO6Z,SAAS7Z,EAAO8Z,QACvCzW,MAAY,cAAcrD,EAAOga,cACjCyB,KAAUzb,EAAOoa,gBAAgB,GAGlC9W,UAAAA,EAAAA,CACH;AAEJ;AAIO,MAAMqY,KAAQ;AAAA,EAAA,MACnBnS;AAAAA,EACAmR,QAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAO,KAAAA;AAAAA,EACAK,YAAAA;AAAAA,EACAE,MAAAA;AACF,GC7Ka1b,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAkF,QAAA;AAAA,IAAAhG,OAAA;AAAA,EAAA;AAAA,EAAAgZ,cAAA;AAAA,IAAAhT,QAAA;AAAA,IAAAhG,OAAA;AAAA,EAAA;AAAA,EAAAiZ,MAAA;AAAA,IAAAnY,QAAA;AAAA,IAAAkF,QAAA;AAAA,IAAA0Q,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA5U,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAAkZ,cAAA;AAAA,IAAAlT,QAAA;AAAA,IAAA0Q,QAAA;AAAA,IAAAW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAvV,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAAmZ,KAAA;AAAA,IAAArY,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAA8W,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3U,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAAoZ,aAAA;AAAA,IAAApY,QAAA;AAAA,IAAA0V,QAAA;AAAA,IAAAW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAvX,OAAA;AAAA,EAAA;AAAA,EAAAqZ,qBAAA;AAAA,IAAAjZ,QAAA;AAAA,IAAAwW,QAAA;AAAA,IAAA5W,OAAA;AAAA,EAAA;AAAA,EAAAsZ,mBAAA;AAAA,IAAAlZ,QAAA;AAAA,IAAAmX,QAAA;AAAA,IAAAvX,OAAA;AAAA,EAAA;AAAA,EAAAuZ,aAAA;AAAA,IAAApW,QAAA;AAAA,IAAAlB,QAAA;AAAA,IAAA7B,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAwZ,OAAA;AAAA,IAAAnY,QAAA;AAAA,IAAArB,OAAA;AAAA,EAAA;AAAA,EAAAyZ,eAAA;AAAA,IAAApY,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAvB,OAAA;AAAA,EAAA;AAAA,GCQN0Z,KAAclT,EAAuC,IAAI;AAE/D,SAASmT,KAAU;AACxB,QAAM3S,IAAMN,EAAWgT,EAAW;AAClC,MAAI,CAAC1S,EAAK,OAAM,IAAIO,MAAM,wDAAwD;AAClF,SAAOP;AACT;ACRO,SAAS4S,GAAY;AAAA,EAC1B/b,OAAOuU;AAAAA,EACPrK,cAAAA;AAAAA,EACA2K,eAAAA;AAAAA,EACArC,aAAAA,IAAc;AACI,GAAqB;AACvC,QAAM,CAAC+D,GAAaC,CAAQ,IAAIlC,GAC9BC,GACArK,KAAgB,MAChB2K,IACKF,CAAAA,MAAM;AACL,IAAIA,MAAM,QAAME,EAAcF,CAAC;AAAA,EACjC,IACAlN,MACN,GACMuU,IAAUlQ,EAAO,oBAAIG,KAAsB,GAC3CC,IAAWJ,EAAiB,EAAE,GAE9BmQ,IAAclU,EAAY,CAAC/H,GAAeqF,OAC9C2W,EAAQ3P,QAAQS,IAAI9M,GAAOqF,CAAQ,GAC9B6G,EAASG,QAAQ2K,SAAShX,CAAK,KAClCkM,EAASG,QAAQ4K,KAAKjX,CAAK,GAEtB,MAAM;AACXgc,IAAAA,EAAQ3P,QAAQqB,OAAO1N,CAAK,GAC5BkM,EAASG,UAAUH,EAASG,QAAQsB,OAAQgH,CAAAA,MAAMA,MAAM3U,CAAK;AAAA,EAC/D,IACC,CAAA,CAAE;AAEL,SAAO;AAAA,IAACuW,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUhE,aAAAA;AAAAA,IAAayJ,aAAAA;AAAAA,IAAaD,SAAAA;AAAAA,IAAS9P,UAAAA;AAAAA,EAAAA;AACpE;ACzBA,SAASnD,GAAK;AAAA,EACZlG,UAAAA;AAAAA,EACA7C,OAAAA;AAAAA,EACAkK,cAAAA;AAAAA,EACA2K,eAAAA;AAAAA,EACArC,aAAAA,IAAc;AACL,GAAG;AACZ,QAAMrJ,IAAM4S,GAAY;AAAA,IAAC/b,OAAAA;AAAAA,IAAOkK,cAAAA;AAAAA,IAAc2K,eAAAA;AAAAA,IAAerC,aAAAA;AAAAA,EAAAA,CAAY;AAEzE,SACE,gBAAA1P,EAAC+Y,GAAY,UAAZ,EAAqB,OAAO1S,GAC3B,UAAA,gBAAArG,cAAAC,EAAAC,EAAA5B,KAAkB7B,EAAOkH,MAAM+L,MAAgB,cAAcjT,EAAO4b,YAAY,GAC7EtY,UAAAA,GACH,GACF;AAEJ;AAQA,SAASqZ,GAAK;AAAA,EAACrZ,UAAAA;AAAmB,GAAG;AACnC,QAAM;AAAA,IAAC2P,aAAAA;AAAAA,IAAa+D,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUwF,SAAAA;AAAAA,IAAS9P,UAAAA;AAAAA,EAAAA,IAAY4P,GAAAA,GAC1DK,IAAUrQ,EAAuB,IAAI;AAE3CW,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKsN,EAAQ9P;AACnB,QAAI,CAACwC,EAAI;AAET,aAASjB,EAAiC5F,GAAkB;AAC1D,YAAM0E,IAAQR,EAASG,SACjB+P,IAAOJ,EAAQ3P;AACrB,UAAIK,EAAMC,WAAW,EAAG;AACxB,YAAM0P,IAAS,MAETC,IAAU9J,MAAgB,eAAe,cAAc,WACvD+J,IAAU/J,MAAgB,eAAe,eAAe;AAE9D,UAAIgK,IAA6B;AAEjC,cAAQxU,EAAE6F,KAAAA;AAAAA,QACR,KAAK0O,GAAS;AACZvU,UAAAA,EAAE8F,eAAAA;AACF,gBAAM2O,IAAalG,IAAc7J,EAAMsB,QAAQuI,CAAW,IAAI;AAC9D,mBAAS/W,IAAI,GAAGA,KAAKkN,EAAMC,QAAQnN,KAAK;AACtC,kBAAMuO,KAAO0O,IAAajd,KAAKkN,EAAMC,QAC/BwD,IAAMzD,EAAMqB,CAAG;AACrB,gBAAI,CAACqO,EAAK/O,IAAI8C,CAAG,GAAG;AAClBqM,cAAAA,IAAcrM;AACd;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAKmM,GAAS;AACZtU,UAAAA,EAAE8F,eAAAA;AACF,gBAAM2O,IAAalG,IAAc7J,EAAMsB,QAAQuI,CAAW,IAAI;AAC9D,mBAAS/W,IAAI,GAAGA,KAAKkN,EAAMC,QAAQnN,KAAK;AACtC,kBAAMuO,KAAO0O,IAAajd,IAAIkN,EAAMC,UAAUD,EAAMC,QAC9CwD,IAAMzD,EAAMqB,CAAG;AACrB,gBAAI,CAACqO,EAAK/O,IAAI8C,CAAG,GAAG;AAClBqM,cAAAA,IAAcrM;AACd;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACXnI,UAAAA,EAAE8F,eAAAA;AACF,qBAAWqC,KAAOzD;AAChB,gBAAI,CAAC0P,EAAK/O,IAAI8C,CAAG,GAAG;AAClBqM,cAAAA,IAAcrM;AACd;AAAA,YACF;AAEF;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACVnI,UAAAA,EAAE8F,eAAAA;AACF,mBAAStO,IAAIkN,EAAMC,SAAS,GAAGnN,KAAK,GAAGA;AACrC,gBAAI,CAAC4c,EAAK/O,IAAIX,EAAMlN,CAAC,CAAC,GAAG;AACvBgd,cAAAA,IAAc9P,EAAMlN,CAAC;AACrB;AAAA,YACF;AAEF;AAAA,QACF;AAAA,MAAA;AAGF,MAAIgd,MACFhG,EAASgG,CAAW,GAENH,EAAO9E,cACnB,oBAAoBiF,CAAW,IACjC,GACOlQ,MAAAA;AAAAA,IAEX;AAEAuC,WAAAA,EAAGV,iBAAiB,WAAWP,CAAa,GACrC,MAAMiB,EAAGT,oBAAoB,WAAWR,CAAa;AAAA,EAC9D,GAAG,CAAC4E,GAAa+D,GAAaC,GAAUwF,GAAS9P,CAAQ,CAAC,qBAGxD,OAAA,EACE,KAAKiQ,GACL,MAAK,WACL,oBAAkB3J,GAAY,GAAAzP,EAAAC,EAAA5B,KACtB7B,EAAO6b,MAAM5I,MAAgB,cAAcjT,EAAO8b,YAAY,GAErExY,UAAAA,GACH;AAEJ;AAUA,SAAS6Z,GAAI;AAAA,EAAC1c,OAAAA;AAAAA,EAAOqF,UAAAA,IAAW;AAAA,EAAOxC,UAAAA;AAAkB,GAAG;AAC1D,QAAM;AAAA,IAAC0T,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUhE,aAAAA;AAAAA,IAAayJ,aAAAA;AAAAA,EAAAA,IAAeH,GAAAA,GACpDrE,IAAWlB,MAAgBvW,GAC3B2c,IAAQzT,EAAAA,GACR0T,IAAU,GAAGD,CAAK;AAExBlQ,SAAAA,EAAU,MACDwP,EAAYjc,GAAOqF,CAAQ,GACjC,CAACrF,GAAOqF,GAAU4W,CAAW,CAAC,GAS/B,gBAAAnZ,EAAA,YACE,MAAK,UACL,MAAK,OACL,IAAI6Z,GACJ,iBAAelF,GACf,iBAAemF,GACf,iBAAevX,KAAYoC,QAC3B,kBAAgBzH,GAChB,UAAUyX,IAAW,IAAI,IACzB,SAhBgB3I,MAAM;AACxB,IAAKzJ,KACHmR,EAASxW,CAAK;AAAA,EAElB,GAYyB,GAAA+C,EAAAC,EAAA7B,QAEnB5B,EAAO+b,KACP9I,MAAgB,cAAcjT,EAAOgc,aACrC9D,MACGjF,MAAgB,aAAajT,EAAOkc,oBAAoBlc,EAAOic,sBAClEnW,KAAY9F,EAAOmc,WAAW,GAG/B7Y,UAAAA,GACH;AAEJ;AASA,SAASga,GAAM;AAAA,EAAC7c,OAAAA;AAAAA,EAAO6C,UAAAA;AAAoB,GAAG;AAC5C,QAAM;AAAA,IAAC0T,aAAAA;AAAAA,IAAa/D,aAAAA;AAAAA,EAAAA,IAAesJ,GAAAA;AAEnC,SAAIvF,MAAgBvW,IAAc,OAGhC,gBAAA8C,EAAA,OAAA,EACE,MAAK,eAAUC,EAAAC,EAAA5B,KACP7B,EAAOoc,OAAOnJ,MAAgB,cAAcjT,EAAOqc,aAAa,GAEvE/Y,UAAAA,GACH;AAEJ;AAEO,MAAMia,KAAO;AAAA,EAAA,MAClB/T;AAAAA,EACAmT,MAAAA;AAAAA,EACAQ,KAAAA;AAAAA,EACAG,OAAAA;AACF,GC5Matd,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAwD,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAib,QAAA;AAAA,IAAA1Y,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAA0B,SAAA;AAAA,IAAAvB,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAE,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA;ACaZ,SAAS6a,GAAS;AAAA,EACvBpa,SAAAA,IAAU;AAAA,EACVuE,MAAAA;AAAAA,EACA0C,aAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAmT,MAAAA,IAAO;AAAA,EACPjd,OAAAA;AAAAA,EACAkK,cAAAA;AAAAA,EACA7E,UAAAA;AAAAA,EACAkC,UAAAA;AACa,GAAG;AAChB,QAAM4B,IAAMP,EAAAA;AAEZ,SACE,gBAAA9F,EAAA,cACE,IAAIqG,GAAKE,WACT,MAAAlC,GACA,aAAA0C,GACA,UAAAC,GACA,MAAAmT,GACA,OAAAjd,GACA,cAAAkK,GACA,UAAA7E,GACA,oBACE8D,IAAM,GAAGA,EAAIG,aAAa,IAAIH,EAAIH,UAAUG,EAAII,UAAU,EAAE,GAAGa,KAAAA,IAAS3C,QAE1E,gBAAc0B,GAAKH,WAAWpG,MAAY,WAAW6E,QACrD,UAAAF,GAAmB,GAAAxE,EAAAC,EAAAtB,UACXnC,GAAOqC,MAAMrC,GAAOqD,CAAO,CAAC,GAAA,KAAA,QAAA;AAG1C;AC/CO,MAAMsa,KAAS;AAAA,EACpBC,IAAI;AAAA,EACJC,QAAQ;AAAA,EACRC,aAAa;AAAA,EACb5H,MAAM;AAAA,EACN6H,WAAW;AAAA,EACXC,QAAQ;AAAA,EACRC,aAAa;AAAA,EACbC,gBAAgB;AAAA,EAChBC,QAAQ;AAAA,EACRtb,OAAO;AAAA,EACPub,YAAY;AAAA,EACZC,SAAS;AAAA,EACTC,aAAa;AAAA,EACbC,WAAW;AAAA,EACXC,eAAe;AAAA,EACfvb,SAAS;AAAA,EACTwb,WAAW;AAAA,EACXC,eAAe;AAAA,EACfC,aAAa;AAAA,EACbzb,SAAS;AAAA,EACT0b,WAAW;AAAA,EACXC,eAAe;AAAA,EACfC,aAAa;AAAA,EACbC,QAAQ;AAAA,EACRC,YAAY;AAAA,EACZC,UAAU;AAAA,EACVC,kBAAkB;AACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCnBMC,KAA0F;AAAA,EAC9FC,OAAO,CAACC,IAAYC,EAAY;AAAA,EAChC,iBAAiB,CAACC,IAAmBC,EAAmB;AAC1D,GAEMxf,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA;AAUL,SAAS6c,GAAc;AAAA,EAACC,OAAAA,IAAQ;AAAA,EAAQpc,UAAAA;AAA4B,GAAG;AAC5E,QAAMqc,IAAYR,GAASO,CAAK,GAC1BE,IAAc,CAACD,IAAY,CAAC,GAAGA,IAAY,CAAC,GAAG3f,GAAOkH,IAAI;AAEhE,SAAO,gBAAA3D,EAAA,SAAA,GAAAC,EAAAC,EAAA5B,KAAiB+d,CAAW,GAAGtc,UAAAA,GAAS;AACjD;ACzBO,MAAMtD,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,EAAA4I,OAAA;AAAA,IAAA/D,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAAtH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAtB,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAa,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAsD,QAAA;AAAA,IAAAtC,QAAA;AAAA,IAAA8b,QAAA;AAAA,IAAAjd,OAAA;AAAA,EAAA;AAAA,EAAAkd,KAAA;AAAA,IAAAxU,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA3E,QAAA;AAAA,IAAAI,QAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAmd,QAAA;AAAA,IAAA5U,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3E,QAAA;AAAA,IAAAuC,QAAA;AAAA,IAAApG,OAAA;AAAA,EAAA;AAAA,EAAAod,MAAA;AAAA,IAAA3U,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA1E,QAAA;AAAA,IAAAwZ,QAAA;AAAA,IAAArd,OAAA;AAAA,EAAA;AAAA,EAAAsd,OAAA;AAAA,IAAA9U,QAAA;AAAA,IAAAD,QAAA;AAAA,IAAA1E,QAAA;AAAA,IAAA0Z,QAAA;AAAA,IAAAvd,OAAA;AAAA,EAAA;AAAA,GCkBbwd,KAAiBhX,EAA0C,IAAI;AAErE,SAASiX,KAAa;AACpB,QAAMzW,IAAMN,EAAW8W,EAAc;AACrC,MAAI,CAACxW,EAAK,OAAM,IAAIO,MAAM,8DAA8D;AACxF,SAAOP;AACT;AAWA,SAASJ,GAAK;AAAA,EAAClG,UAAAA;AAAAA,EAAUwM,SAAAA;AAAAA,EAASwQ,WAAAA,IAAY;AAAA,EAAOC,OAAAA,IAAQ;AAAc,GAAG;AAC5E,QAAM,CAACtU,GAAMC,CAAO,IAAI7D,EAAS,EAAK,GAChCmY,IAAY7W,EAAAA,GACZ8W,IAAWlU,EAA6C,IAAI,GAE5DmU,IAAOlY,EAAY,MAAM;AAC7B,IAAIiY,EAAS3T,WAASyF,aAAakO,EAAS3T,OAAO,GACnD2T,EAAS3T,UAAU0F,WAAW,MAAMtG,EAAQ,EAAI,GAAGqU,CAAK;AAAA,EAC1D,GAAG,CAACA,CAAK,CAAC,GAEJI,IAAOnY,EAAY,MAAM;AAC7B,IAAIiY,EAAS3T,WAASyF,aAAakO,EAAS3T,OAAO,GACnD2T,EAAS3T,UAAU,MACnBZ,EAAQ,EAAK;AAAA,EACf,GAAG,CAAA,CAAE;AAEL,SACE,gBAAA3I,EAAC6c,GAAe,UAAf,EAAwB,OAAO;AAAA,IAACnU,MAAAA;AAAAA,IAAMyU,MAAAA;AAAAA,IAAMC,MAAAA;AAAAA,IAAMH,WAAAA;AAAAA,IAAWF,WAAAA;AAAAA,EAAAA,GAC5D,4BAAA,OAAA,EAAA,GAAA9c,EAAAC,EAAA5B,KAAiB7B,GAAOkH,IAAI,GACzB5D,UAAAA;AAAAA,IAAAA;AAAAA,IACA2I,KACC,gBAAA1I,EAAA,OAAA,EAAU,IAAIid,GAAW,MAAK,WAAS,GAAAhd,EAAAC,EAAA5B,KAAS7B,GAAOwL,OAAOxL,GAAOsgB,CAAS,CAAC,GAC5ExQ,UAAAA,EAAAA,CACH;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;AAQA,SAAShB,GAAQ;AAAA,EAACxL,UAAAA;AAAsB,GAAG;AACzC,QAAM;AAAA,IAAC2I,MAAAA;AAAAA,IAAMyU,MAAAA;AAAAA,IAAMC,MAAAA;AAAAA,IAAMH,WAAAA;AAAAA,EAAAA,IAAaH,GAAAA;AAEtC,oCAEI,gBAAgBK,GAChB,gBAAgBC,GAChB,SAASD,GACT,QAAQC,GACR,oBAAkB1U,IAAOuU,IAAYtY,QAAU,GAAA1E,EAAAC,EAAA5B,GAAA,GAE9CyB,UAAAA,GACH;AAEJ;AAEO,MAAMsd,KAAU;AAAA,EACrBpX,MAAAA;AAAAA,EACAsF,SAAAA;AACF;","x_google_ignoreList":[0]}
|