@uni-design-system/uni-angular 7.3.0 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uni-design-system-uni-angular.mjs","sources":["../../src/lib/cdk/a11y/a11y.ts","../../src/lib/cdk/position/anchor.ts","../../src/lib/cdk/datasource/base-datasource.ts","../../src/lib/cdk/datasource/record-datasource.ts","../../src/lib/cdk/datasource/server-side-datasource.ts","../../src/lib/cdk/helpers/memoize.helper.ts","../../src/lib/cdk/local-storage/local-storage.service.ts","../../src/lib/cdk/notification/notification.service.ts","../../src/lib/cdk/timer/timer.ts","../../src/lib/cdk/file/file.helper.ts","../../src/lib/theming/theme.token.ts","../../src/lib/cdk/helpers/number.helper.ts","../../src/lib/theming/theme.service.ts","../../src/lib/components/base/base.component.ts","../../src/lib/components/app-bar/app-bar.component.ts","../../src/lib/components/symbol/symbol.component.ts","../../src/lib/components/avatar/avatar.component.ts","../../src/lib/components/avatar/avatar-group.component.ts","../../src/lib/components/background/background.component.ts","../../src/lib/components/background/index.ts","../../src/lib/components/badge/badge.component.ts","../../src/lib/components/breadcrumb/breadcrumb.component.ts","../../src/lib/components/icon/icon.component.ts","../../src/lib/components/layout/box/box.component.ts","../../src/lib/components/layout/center/center.component.ts","../../src/lib/components/layout/grid/grid-area/grid-area.component.ts","../../src/lib/components/layout/grid/grid.component.ts","../../src/lib/components/layout/row/row.component.ts","../../src/lib/components/layout/stack/stack.component.ts","../../src/lib/components/layout/wrap/wrap.component.ts","../../src/lib/directives/ripple/ripple.directive.ts","../../src/lib/components/button/button.component.ts","../../src/lib/components/button-group/button-group.component.ts","../../src/lib/components/button-group/index.ts","../../src/lib/components/card/card-content/card-content.component.ts","../../src/lib/components/card/card-content/card-content.component.html","../../src/lib/components/text/text.component.ts","../../src/lib/components/card/card.component.ts","../../src/lib/components/card/card.component.html","../../src/lib/components/card/card-header/card-header.component.ts","../../src/lib/components/card/card-header/card-header.component.html","../../src/lib/components/checkbox/checkbox.component.ts","../../src/lib/components/checkbox/checkbox.component.html","../../src/lib/directives/body-render/body-render.directive.ts","../../src/lib/directives/drag-and-drop/drag-and-drop.directive.ts","../../src/lib/components/icon-button/icon-button.component.ts","../../src/lib/components/data-search/data-search.component.ts","../../src/lib/components/data-search/data-search.component.html","../../src/lib/components/data-search/index.ts","../../src/lib/components/scroll-area/scroll-area.component.ts","../../src/lib/components/sort-header/sort-header.component.ts","../../src/lib/components/sort-header/sort-header.component.html","../../src/lib/components/data-table/data-table.component.ts","../../src/lib/components/data-table/data-table.component.html","../../src/lib/components/data-table/index.ts","../../src/lib/components/dialog/dialog.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.html","../../src/lib/components/dialog/dialog-header/dialog-header.component.ts","../../src/lib/components/dialog/dialog-header/dialog-header.component.html","../../src/lib/components/divider/divider.component.ts","../../src/lib/components/drawer/drawer.component.ts","../../src/lib/components/dropdown/dropdown.component.ts","../../src/lib/components/expand/expand.component.ts","../../src/lib/components/expand/index.ts","../../src/lib/components/expand-toggle/expand-toggle.component.ts","../../src/lib/components/expand-area/expand-area.component.ts","../../src/lib/components/expand-area/index.ts","../../src/lib/components/expand-toggle/index.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.html","../../src/lib/components/file-drop-zone/index.ts","../../src/lib/components/input-box/input-box.component.ts","../../src/lib/components/input-box/input-box.component.html","../../src/lib/components/forms/debounce-input/debounce-input.component.ts","../../src/lib/components/forms/debounce-input/debounce-input.component.html","../../src/lib/components/input/input.component.ts","../../src/lib/components/input/input.component.html","../../src/lib/components/json-view/json-view.component.ts","../../src/lib/components/json-view/json-view.component.html","../../src/lib/components/json-view/index.ts","../../src/lib/components/menu/menu-item/menu-item.model.ts","../../src/lib/components/menu/menu-item/menu-item.component.ts","../../src/lib/components/menu/menu-item/menu-item.component.html","../../src/lib/components/menu/menu.component.ts","../../src/lib/components/multi-select/multi-select.component.ts","../../src/lib/components/multi-select/multi-select.component.html","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.ts","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.html","../../src/lib/components/notification-badge/notification-badge.ts","../../src/lib/components/notification-badge/notification-badge.html","../../src/lib/components/notifications/alert/alert.component.ts","../../src/lib/components/notifications/alert/alert.component.html","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.ts","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.html","../../src/lib/components/notifications/snackbar/snackbar.component.ts","../../src/lib/components/notifications/snackbar/snackbar.component.html","../../src/lib/components/notifications/notifications/notifications.component.ts","../../src/lib/components/notifications/notifications/notifications.component.html","../../src/lib/components/paginator/paginator.component.ts","../../src/lib/components/paginator/paginator.component.html","../../src/lib/components/paginator/index.ts","../../src/lib/components/popover/popover.component.ts","../../src/lib/components/popover/popover.component.html","../../src/lib/components/popover/index.ts","../../src/lib/components/progress-bar/progress-bar.component.ts","../../src/lib/components/progress-bar/progress-bar.component.html","../../src/lib/components/progress-bar/index.ts","../../src/lib/components/progress-gauge/progress-gauge.component.ts","../../src/lib/components/progress-gauge/progress-gauge.component.html","../../src/lib/components/progress-gauge/index.ts","../../src/lib/components/radio/radio.component.ts","../../src/lib/components/radio/radio.component.html","../../src/lib/components/scroll-area/index.ts","../../src/lib/components/search-input/search-input.component.ts","../../src/lib/components/search-input/search-input.component.html","../../src/lib/components/search-input/index.ts","../../src/lib/components/select-input/select-input.component.ts","../../src/lib/components/select-input/select-input.component.html","../../src/lib/components/skeleton/skeleton.component.ts","../../src/lib/components/slider/slider.component.ts","../../src/lib/components/stat/stat.component.ts","../../src/lib/components/tabs/tab.component.ts","../../src/lib/components/tabs/tabs.component.ts","../../src/lib/components/textarea/textarea.component.ts","../../src/lib/components/textarea/textarea.component.html","../../src/lib/components/sort-header/index.ts","../../src/lib/components/tag/tag.component.ts","../../src/lib/components/tag/tag.component.html","../../src/lib/components/tag/index.ts","../../src/lib/components/theme-builder/theme-builder.component.ts","../../src/lib/components/theme-switch/theme-switch.component.ts","../../src/lib/components/toggle/toggle.component.ts","../../src/lib/components/toggle/toggle.component.html","../../src/lib/components/tooltip/tooltip.component.ts","../../src/uni-design-system-uni-angular.ts"],"sourcesContent":["let nextUniqueId = 0;\n\n/**\n * Returns a document-unique id for wiring ARIA relationships\n * (aria-controls, aria-describedby, aria-labelledby, ...).\n */\nexport function uniqueId(prefix = 'uni'): string {\n return `${prefix}-${nextUniqueId++}`;\n}\n\n/**\n * Selector matching natively focusable elements. Used to locate the\n * interactive element inside a projected trigger so ARIA attributes land\n * on the element that actually receives focus.\n */\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Resolves the element that should carry ARIA state for a trigger:\n * the element itself when focusable, otherwise its first focusable descendant.\n */\nexport function resolveFocusTarget(element: HTMLElement): HTMLElement {\n if (element.matches(FOCUSABLE_SELECTOR)) return element;\n return element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? element;\n}\n\n/**\n * Visually hides content while keeping it available to screen readers.\n * Use for text alternatives (e.g. badge counts, icon-only affordances).\n */\nexport const visuallyHidden = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n border: 0,\n} as const;\n\n/**\n * Wraps animation/transition styles so they only apply when the user has\n * not requested reduced motion (WCAG 2.3.3).\n */\nexport function motionSafe<T extends object>(styles: T) {\n return { '@media (prefers-reduced-motion: no-preference)': styles };\n}\n","import { uniqueId } from '../a11y/a11y';\n\n/**\n * Native CSS Anchor Positioning helpers (Baseline 2026). These replace the\n * former @floating-ui/dom dependency: the browser tracks the anchor natively\n * (no scroll/resize listeners), and `position-try-fallbacks` flips the panel\n * at viewport edges where supported (Chrome 125+, Firefox 147+, Safari 26+;\n * older Baseline browsers still position correctly but do not auto-flip).\n */\n\nexport type Placement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'right-start'\n | 'bottom-start'\n | 'left-start'\n | 'top-end'\n | 'right-end'\n | 'bottom-end'\n | 'left-end';\n\n/** Distances between the anchor and the positioned panel, in px. */\nexport interface AnchorOffset {\n /** Gap along the placement axis (anchor → panel). */\n mainAxis?: number;\n /** Shift along the cross axis, from the aligned edge. */\n alignmentAxis?: number;\n}\n\n/** Returns a document-unique dashed-ident usable as a CSS `anchor-name`. */\nexport function newAnchorName(): string {\n return `--${uniqueId('uni-anchor')}`;\n}\n\nconst POSITION_AREA: Record<Placement, string> = {\n top: 'top',\n bottom: 'bottom',\n left: 'left',\n right: 'right',\n 'top-start': 'top span-right',\n 'top-end': 'top span-left',\n 'bottom-start': 'bottom span-right',\n 'bottom-end': 'bottom span-left',\n 'left-start': 'left span-bottom',\n 'left-end': 'left span-top',\n 'right-start': 'right span-bottom',\n 'right-end': 'right span-top',\n};\n\nconst MAIN_MARGIN: Record<string, string> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft',\n};\n\n/**\n * Emotion style object anchoring a panel to `anchor` at `placement`.\n * Spread into the panel's `css()` styles. The trigger element must carry\n * `anchor-name: <anchor>` (see `newAnchorName`).\n */\nexport function anchorStyles(\n anchor: string,\n placement: Placement,\n offset: AnchorOffset = {}\n): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n\n const styles: Record<string, string | number> = {\n position: 'fixed',\n positionAnchor: anchor,\n positionArea: POSITION_AREA[placement],\n positionTryFallbacks: 'flip-block, flip-inline, flip-block flip-inline',\n // Popover UA styles set inset:0 + margin:auto; anchored elements must not\n inset: 'auto',\n margin: 0,\n };\n\n styles[MAIN_MARGIN[side]] = offset.mainAxis ?? 0;\n\n const cross = offset.alignmentAxis ?? 0;\n if (align && cross) {\n const horizontal = side === 'top' || side === 'bottom';\n const crossMargin = horizontal\n ? align === 'start'\n ? 'marginLeft'\n : 'marginRight'\n : align === 'start'\n ? 'marginTop'\n : 'marginBottom';\n styles[crossMargin] = cross;\n }\n\n return styles;\n}\n\n/**\n * Absolute positioning for a rotated-square arrow sitting on the panel edge\n * that faces the anchor. Static per placement: if the browser flips the panel\n * via position-try, the arrow stays on the configured side (cosmetic-only\n * degradation, matching the flip-support caveat above).\n */\nexport function anchorArrowStyles(placement: Placement, size = 8): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n const overlap = -(size / 2);\n const styles: Record<string, string | number> = {\n position: 'absolute',\n width: size,\n height: size,\n transform: 'rotate(45deg)',\n };\n\n // Edge facing the anchor\n const facing: Record<string, string> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n styles[facing[side]] = overlap;\n\n // Cross-axis position along that edge\n const horizontal = side === 'top' || side === 'bottom';\n const crossProp = horizontal ? 'left' : 'top';\n const crossPropEnd = horizontal ? 'right' : 'bottom';\n if (!align) {\n styles[crossProp] = `calc(50% - ${size / 2}px)`;\n } else if (align === 'start') {\n styles[crossProp] = size * 1.5;\n } else {\n styles[crossPropEnd] = size * 1.5;\n }\n\n return styles;\n}\n","import { computed, signal, Signal, WritableSignal } from '@angular/core';\n\nexport type SortDirection = 'asc' | 'desc' | 'indet';\n\nexport interface Sort<T> {\n column?: keyof T;\n direction: SortDirection;\n}\n\nexport abstract class UniBaseDatasource<T> {\n abstract records: Signal<T[]>;\n abstract recordCount: Signal<number>;\n\n selections = signal<T[]>([]);\n\n sort: WritableSignal<Sort<T>> = signal({\n column: undefined,\n direction: 'indet',\n });\n\n sortColumn = computed(() => this.sort().column);\n sortDirection = computed(() => this.sort().direction);\n\n abstract pageIndex: Signal<number>;\n abstract pageSize: Signal<number>;\n abstract pageCount: Signal<number>;\n\n pages = computed(() => Array.from({ length: this.pageCount() }, (_, index) => index + 1));\n\n startIndex = computed(() => {\n const pageSize = this.pageSize();\n const pageIndex = this.pageIndex();\n return pageSize > 0 ? pageIndex * pageSize : 0;\n });\n\n endIndex = computed(() => {\n const pageSize = this.pageSize();\n const total = this.recordCount();\n\n // If unpaginated (pageSize = 0), return total count\n if (pageSize === 0) {\n return total;\n }\n\n const start = this.startIndex();\n return Math.min(start + pageSize, total);\n });\n\n disablePrevious = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() === 0;\n });\n\n disableNext = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() + 1 >= this.pageCount();\n });\n\n truncatedPages = computed(() => {\n const currentPage = this.pageIndex() + 1;\n const displayRange = 3;\n const totalPages = this.pageCount();\n\n const pages: (number | string)[] = [];\n const startPage = Math.max(1, currentPage - displayRange);\n const endPage = Math.min(totalPages, currentPage + displayRange);\n\n if (startPage > 1) {\n pages.push(1);\n if (startPage > 2) {\n pages.push('...');\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(i);\n }\n\n if (endPage < totalPages) {\n if (endPage < totalPages - 1) {\n pages.push('...');\n }\n pages.push(totalPages);\n }\n return pages;\n });\n\n isSelected(row: T): boolean {\n return this.selections().some((selection) => selection === row);\n }\n\n toggleSelection(row: T) {\n this.selections.update((selections) => {\n return selections.includes(row) ? selections.filter((i) => i !== row) : [...selections, row];\n });\n }\n\n clearSelections() {\n this.selections.set([]);\n }\n\n selectAll() {\n this.selections.set([...this.records()]);\n }\n\n abstract sortRecords(sort: Sort<T>): void;\n abstract firstPage(): void;\n abstract nextPage(): void;\n abstract previousPage(): void;\n abstract lastPage(): void;\n abstract jumpToPage(page: number): void;\n abstract setPageSize(size: number): void;\n}\n","import { computed, signal } from '@angular/core';\nimport { UniBaseDatasource, Sort } from './base-datasource';\n\nexport class UniRecordDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal<number>(0); // 0 = unpaginated (show all)\n\n initialRecords = signal<T[]>([]);\n override recordCount = computed((): number => this.initialRecords().filter(this.filter()).length);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n filter = signal<(value: T) => boolean>((value) => true);\n\n override pageIndex = signal<number>(0);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const pageSize = this.pageSize();\n return pageSize > 0 ? Math.ceil(this.recordCount() / pageSize) : 1;\n });\n\n override records = computed(() => {\n const { column, direction } = this.sort();\n const filter = this.filter();\n const pageSize = this.pageSize();\n\n let filteredRecords = this.initialRecords().filter(filter);\n\n // Apply sorting if specified\n if (column && direction !== 'indet') {\n filteredRecords = [...filteredRecords].sort((a, b) => {\n const valueA = a[column];\n const valueB = b[column];\n\n const isString = typeof valueA === 'string';\n const isAsc = direction === 'asc';\n\n return isString\n ? stringCompare(valueA as string, valueB as string, isAsc)\n : numberCompare(valueA as number, valueB as number, isAsc);\n });\n }\n\n // Apply pagination only if pageSize > 0\n if (pageSize > 0) {\n return filteredRecords.slice(this.startIndex(), this.endIndex());\n }\n\n // Return all records (unpaginated)\n return filteredRecords;\n });\n\n constructor(data: T[]) {\n super();\n this.initialRecords.set(data);\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n }\n\n override firstPage() {\n this.pageIndex.set(0);\n }\n\n override nextPage() {\n if (this.pageIndex() < this.pageCount() - 1) {\n this.pageIndex.update((i) => i + 1);\n }\n }\n\n override previousPage() {\n this.pageIndex.update((i) => (i > 1 ? i - 1 : 0));\n }\n\n override lastPage() {\n this.pageIndex.set(this.pageCount() - 1);\n }\n\n override jumpToPage(page: number) {\n const i = page - 1;\n if (i >= 0 && i < this.pageCount()) {\n this.pageIndex.set(i);\n }\n }\n\n override setPageSize(size: number) {\n this._pageSize.set(size);\n if (size > 0) {\n this._pageNumber.set(1);\n this.pageIndex.set(0);\n }\n }\n\n setFilter(filter: (value: T) => boolean) {\n this.filter.set(filter);\n }\n\n clearFilter() {\n this.filter.set(() => true);\n }\n}\n\nfunction stringCompare(a = 'zzz', b = 'zzz', isAsc: boolean): number {\n a = a.toString();\n b = b.toString();\n\n return isAsc\n ? a.localeCompare(b, undefined, { sensitivity: 'base' })\n : b.localeCompare(a, undefined, { sensitivity: 'base' });\n}\n\nfunction numberCompare(a = 0, b = 0, isAsc: boolean): number {\n return isAsc ? a - b : b - a;\n}\n","import {\n computed,\n linkedSignal,\n resource,\n ResourceLoaderParams,\n ResourceRef,\n type ResourceStatus,\n signal,\n} from '@angular/core';\nimport { UniBaseDatasource, Sort, SortDirection } from './base-datasource';\n\nexport interface PageRequest {\n pageNumber: number;\n pageSize: number;\n sortColumn?: string;\n sortDirection?: SortDirection;\n filter?: Record<string, any>;\n}\n\nexport interface PageResponse<T> {\n data: T[];\n totalRecords: number;\n pageNumber: number;\n pageSize: number;\n}\n\nexport type DataLoader<T> = (request: PageRequest) => Promise<PageResponse<T>>;\n\nexport class UniServerSideDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal(10);\n private _sortColumn = signal<keyof T | undefined>(undefined);\n private _sortDirection = signal<SortDirection>('indet');\n private filter = signal<Record<string, any>>({});\n\n override sortColumn = computed(() => this._sortColumn());\n override sortDirection = computed(() => this._sortDirection());\n\n private totalRecords = signal(0);\n\n private dataResource: ResourceRef<PageResponse<T> | undefined>;\n\n override pageIndex = computed(() => this._pageNumber() - 1);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const total = this.totalRecords();\n const size = this.pageSize();\n return total > 0 ? Math.ceil(total / size) : 0;\n });\n\n private readonly _records = linkedSignal<\n {\n val: PageResponse<T> | undefined;\n status: ResourceStatus;\n },\n T[]\n >({\n source: () => ({\n val: this.dataResource.value(),\n status: this.dataResource.status(),\n }),\n computation: (source, previous) => {\n if (source.status === 'loading' && previous) {\n return previous.value;\n }\n return source.val?.data ?? [];\n },\n });\n\n override records = this._records.asReadonly();\n\n override recordCount = computed(() => this.totalRecords());\n\n isLoading = computed(() => this.dataResource.isLoading());\n\n error = computed(() => this.dataResource.error());\n\n hasError = computed(() => this.dataResource.hasValue() === false && this.error() !== undefined);\n\n constructor(\n private dataLoader: DataLoader<T>,\n initialPageSize = 10\n ) {\n super();\n this._pageSize.set(initialPageSize);\n\n this.dataResource = resource({\n params: () => ({\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n }),\n loader: async (params: ResourceLoaderParams<PageRequest>) => {\n const request = params.params;\n const response = await this.dataLoader(request);\n\n if (request.pageNumber === 1 || this.totalRecords() === 0) {\n this.totalRecords.set(response.totalRecords);\n }\n\n return response;\n },\n });\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n this._sortColumn.set(sort.column);\n this._sortDirection.set(sort.direction);\n this._pageNumber.set(1);\n }\n\n override firstPage() {\n this._pageNumber.set(1);\n }\n\n override nextPage() {\n if (this._pageNumber() < this.pageCount()) {\n this._pageNumber.update((n) => n + 1);\n }\n }\n\n override previousPage() {\n if (this._pageNumber() > 1) {\n this._pageNumber.update((n) => n - 1);\n }\n }\n\n override lastPage() {\n this._pageNumber.set(this.pageCount());\n }\n\n override jumpToPage(page: number) {\n if (page >= 1 && page <= this.pageCount()) {\n this._pageNumber.set(page);\n }\n }\n\n override setPageSize(size: number) {\n if (size > 0) {\n this._pageSize.set(size);\n this._pageNumber.set(1);\n }\n }\n\n setFilter(filterValues: Record<string, any>) {\n this.filter.set(filterValues);\n this._pageNumber.set(1);\n }\n\n clearFilter() {\n this.filter.set({});\n this._pageNumber.set(1);\n }\n\n refresh() {\n this.dataResource.reload();\n }\n\n getPageRequest(): PageRequest {\n return {\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n };\n }\n}\n","export function memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n const key = JSON.stringify(args);\n\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n","import { Injectable } from '@angular/core';\nimport { memoize } from '../helpers/memoize.helper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService {\n private isLocalStorageAvailable = memoize((): boolean => {\n try {\n const test = '__localStorage_test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n });\n\n setItem<T>(key: string, value: T): boolean {\n if (!this.isLocalStorageAvailable()) {\n console.warn('LocalStorage is not available');\n return false;\n }\n\n try {\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n localStorage.setItem(key, stringValue);\n return true;\n } catch (error) {\n console.error('Error saving to localStorage:', error);\n return false;\n }\n }\n\n getItem<T>(key: string): T | null {\n if (!this.isLocalStorageAvailable()) {\n return null;\n }\n\n try {\n const item = localStorage.getItem(key);\n if (item === null) {\n return null;\n }\n\n try {\n return JSON.parse(item) as T;\n } catch {\n return item as T;\n }\n } catch (error) {\n console.error('Error reading from localStorage:', error);\n return null;\n }\n }\n\n removeItem(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.removeItem(key);\n return true;\n } catch (error) {\n console.error('Error removing from localStorage:', error);\n return false;\n }\n }\n\n clear(): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.clear();\n return true;\n } catch (error) {\n console.error('Error clearing localStorage:', error);\n return false;\n }\n }\n\n hasKey(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n return localStorage.getItem(key) !== null;\n }\n\n getAllKeys(): string[] {\n if (!this.isLocalStorageAvailable()) {\n return [];\n }\n\n try {\n return Object.keys(localStorage);\n } catch (error) {\n console.error('Error getting localStorage keys:', error);\n return [];\n }\n }\n\n getSize(): number {\n if (!this.isLocalStorageAvailable()) {\n return 0;\n }\n\n try {\n let total = 0;\n for (const key in localStorage) {\n if (Object.prototype.hasOwnProperty.call(localStorage, key)) {\n total += localStorage[key].length + key.length;\n }\n }\n return total;\n } catch (error) {\n console.error('Error calculating localStorage size:', error);\n return 0;\n }\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { Alert, Confirmation, Snackbar } from './notification.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n /* Alert */\n alert = signal<Alert | undefined>(undefined);\n showAlert = (alert: Alert) => this.alert.set(alert);\n hideAlert = () => this.alert.set(undefined);\n\n /* Snackbar */\n snackbar = signal<Snackbar | undefined>(undefined);\n showSnackbar = (snackbar: Snackbar) => this.snackbar.set(snackbar);\n hideSnackbar = () => this.snackbar.set(undefined);\n\n /* Confirmation */\n confirmation = signal<Confirmation | undefined>(undefined);\n showConfirmation = (confirmation: Confirmation) => this.confirmation.set(confirmation);\n hideConfirmation = () => this.confirmation.set(undefined);\n}\n","import { computed, DestroyRef, inject, signal } from '@angular/core';\n\nexport function useTimer() {\n const destroyRef = inject(DestroyRef);\n\n const msRemaining = signal<number>(0);\n const isPaused = signal<boolean>(false);\n const isActive = computed(() => msRemaining() > 0);\n\n let intervalId: any = null;\n let endTime = 0;\n let onCompleteCallback: (() => void) | undefined;\n\n const stop = () => {\n if (intervalId) clearInterval(intervalId);\n intervalId = null;\n };\n\n const tick = () => {\n const remaining = Math.max(0, endTime - Date.now());\n msRemaining.set(remaining);\n\n if (remaining <= 0) {\n stop();\n if (onCompleteCallback) onCompleteCallback();\n }\n };\n\n const start = (durationMs: number, onComplete?: () => void) => {\n stop();\n onCompleteCallback = onComplete;\n isPaused.set(false);\n msRemaining.set(durationMs);\n endTime = Date.now() + durationMs;\n intervalId = setInterval(tick, 100);\n };\n\n const pause = () => {\n if (!isActive() || isPaused()) return;\n stop();\n isPaused.set(true);\n };\n\n const resume = () => {\n if (!isActive() || !isPaused()) return;\n isPaused.set(false);\n endTime = Date.now() + msRemaining();\n intervalId = setInterval(tick, 100);\n };\n\n destroyRef.onDestroy(() => stop());\n\n return {\n start,\n pause,\n resume,\n stop: () => {\n stop();\n msRemaining.set(0);\n },\n msRemaining,\n isPaused,\n isActive,\n secondsRemaining: computed(() => Math.ceil(msRemaining() / 1000)),\n };\n}\n","export const acceptableFile = (\n file: File,\n acceptedFileExtensions: string[] | undefined\n): boolean => {\n if (!acceptedFileExtensions || acceptedFileExtensions.length < 1) return true;\n return acceptedFileExtensions.includes(getFileExtension(file));\n};\n\nexport const getFileExtension = (file: File): string => '.' + file.name.split('.').pop();\n","import { InjectionToken } from '@angular/core';\nimport { type UniTheme, UniThemes } from '@uni-design-system/uni-core';\n\nexport const UNI_THEMES = new InjectionToken<Record<string, UniTheme>>('', {\n providedIn: 'root',\n factory: () => UniThemes,\n});\n","export const safeParseInt = (n: string | number) => (typeof n === 'number' ? n : parseInt(n));\n","// noinspection JSUnusedGlobalSymbols\n\nimport { computed, inject, Injectable, linkedSignal, Signal, signal } from '@angular/core';\nimport { css, injectGlobal } from '@emotion/css';\nimport { LocalStorageService, Options } from '../cdk';\nimport {\n LightTheme,\n type NullableSize,\n type ThemeName,\n type Typeface,\n type UniTheme,\n Z_INDEX,\n type ZIndexableElements,\n ColorToken,\n ComponentName,\n ComponentTheme,\n ContainerColorToken,\n ContentColorToken,\n NullableStyleExpression,\n OptionalSize,\n Size,\n TextRole,\n Thickness,\n Variant,\n toTypefaces,\n createThemeFromPalette,\n type GenerateColorsConfig,\n type PaletteConfig,\n type Radii,\n type ColorKey,\n type Radius,\n type Border,\n type Shadow,\n} from '@uni-design-system/uni-core';\n\nimport { UNI_THEMES } from './theme.token';\nimport { safeParseInt } from '../cdk/helpers/number.helper';\n\n/**\n * The editable shape a theme builder manipulates: a seed + scheme + category\n * (plus optional saturation floor, brand colors, and light/dark mode).\n * Everything else in a theme is derived from this. Brand colors come in two\n * strengths: `brand` pins are emitted verbatim (may fail contrast), `targets`\n * are brand-faithful but the WCAG guard-rail may adjust their lightness.\n */\nexport type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> &\n Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'> & {\n /** Radii override (e.g. a `ShapeRadii` shape-language preset). */\n radii?: Radii;\n };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n /** localStorage key marking the custom brand theme as active. */\n static readonly CUSTOM_KEY = 'CustomTheme';\n /** localStorage key holding the serialized brand palette config. */\n static readonly PALETTE_KEY = 'uni-custom-palette';\n\n private themes = inject(UNI_THEMES);\n private localStorage = inject(LocalStorageService);\n\n theme = signal<UniTheme>(LightTheme);\n themeOptions = signal<Options<ThemeName>>([]);\n\n components = computed(() => this.theme().components);\n component = <T>(componentName: ComponentName): Signal<ComponentTheme<T>> =>\n computed(() => (this.components()[componentName] as ComponentTheme<T>) || {});\n colors = computed(() => this.theme().colors);\n // CSS-ready typefaces are derived from the theme's numeric type scale,\n // never stored twice on the theme.\n typeFaces = computed(() => toTypefaces(this.theme().typography));\n spacing = computed(() => this.theme().spacing);\n thicknesses = computed(() => this.theme().thicknesses);\n radii = computed(() => this.theme().radii);\n borders = computed(() => this.theme().borders);\n shadows = computed(() => this.theme().shadows);\n icons = computed(() => this.theme().icons);\n\n constructor() {\n // Honor the user's reduced-motion preference across every component\n // (WCAG 2.3.3): collapse all animations/transitions to a single frame.\n injectGlobal`\n @media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n }\n `;\n\n this.themeOptions.set(\n Object.keys(this.themes).map((key) => {\n return { label: this.themes[key].name, value: key };\n })\n );\n\n // Rehydrate a custom brand theme if one is active — this is what lets a\n // palette built in one story reskin every other story: each story spins up\n // a fresh ThemeService, and it reads the persisted config here on init.\n const savedTheme = this.localStorage.getItem<string>('theme');\n const savedPalette = this.localStorage.getItem<BrandPaletteConfig>(ThemeService.PALETTE_KEY);\n if (savedTheme === ThemeService.CUSTOM_KEY && savedPalette) {\n this.applyPalette(savedPalette, false);\n } else {\n this.selectTheme(savedTheme || Object.keys(this.themes)[0] || 'base');\n }\n }\n\n public selectTheme(themeName: ThemeName): void {\n this.selectedThemeKey.set(themeName);\n if (this.themes[themeName]) this.theme.set(this.themes[themeName]);\n this.localStorage.setItem('theme', themeName);\n }\n\n /** The live brand palette config, when a custom theme is active. */\n public customPalette = signal<BrandPaletteConfig | null>(null);\n public isCustomTheme = computed(() => this.selectedThemeKey() === ThemeService.CUSTOM_KEY);\n\n /**\n * Generate a full theme from a brand palette config and make it active. When\n * `persist` is true the config is saved so every subsequent story (and\n * reload) renders with the same brand.\n */\n public applyPalette(config: BrandPaletteConfig, persist = true): void {\n this.customPalette.set(config);\n this.theme.set(\n createThemeFromPalette({ ...config, id: ThemeService.CUSTOM_KEY, name: 'Your Brand' })\n );\n this.selectedThemeKey.set(ThemeService.CUSTOM_KEY);\n if (persist) {\n this.localStorage.setItem(ThemeService.PALETTE_KEY, config);\n this.localStorage.setItem('theme', ThemeService.CUSTOM_KEY);\n }\n }\n\n /** Drop the custom brand theme and fall back to the first built-in theme. */\n public clearCustomPalette(): void {\n this.customPalette.set(null);\n this.localStorage.removeItem(ThemeService.PALETTE_KEY);\n this.selectTheme(Object.keys(this.themes)[0] || 'base');\n }\n\n public selectedThemeName = computed(() => this.theme().name);\n public selectedThemeKey = signal<string>('');\n\n textClass = (textRole: TextRole, textColor?: ContentColorToken) => {\n return css([\n {\n ...this.typeFaces()[textRole],\n },\n textColor && {\n color: this.colors()[textColor],\n },\n ]);\n };\n\n componentStyle = (componentName: ComponentName, variant: Variant, size: Size) =>\n computed(() => {\n const component = this.component(componentName)();\n const { fixed, variants, sizes } = component;\n const variantStyle = variants && variants[variant];\n const sizeStyle = sizes && sizes[size];\n return { ...fixed, ...variantStyle, ...sizeStyle };\n });\n\n getSpacing = (size: NullableSize) => {\n return size === 'none' ? 'none' : this.spacing()[size];\n };\n\n getThickness = (thickness: Thickness) => this.theme().thicknesses[thickness];\n\n getContentColor = (token: ContainerColorToken, useVariant?: boolean) =>\n useVariant\n ? this.colors()[`on-${token}-variant` as ColorToken]\n : this.colors()[`on-${token}` as ColorToken];\n\n colorPair = (token?: ContainerColorToken, colorVariant?: boolean): NullableStyleExpression => {\n if (!token) return;\n const backgroundColor = this.colors()[token];\n const color = this.getContentColor(token, colorVariant);\n return { color, backgroundColor };\n };\n\n backgroundColor = (token?: ColorKey): NullableStyleExpression => {\n return !token ? undefined : { backgroundColor: this.colors()[token] };\n };\n\n backgroundImage = (url?: string): NullableStyleExpression => {\n return !url ? undefined : { backgroundImage: `url(${url})` };\n };\n\n getContainerColors = (color: Variant, useVariant?: boolean) => {\n const token = (color + '-container') as ContainerColorToken;\n return this.colorPair(token, useVariant);\n };\n\n /**\n * Shared keyboard-focus indicator (WCAG 2.4.7). Spread into a component's\n * Emotion styles: `...this.theme.focusRing()` or `focusRing('primary')`.\n */\n focusRing = (token?: ColorToken) => ({\n '&:focus-visible': {\n outline: `2px solid ${token ? this.colors()[token] : 'currentColor'}`,\n outlineOffset: '2px',\n },\n });\n\n typeface = (typeface?: Typeface) => {\n const typefaces = this.typeFaces();\n return typeface && typefaces[typeface];\n };\n\n colorPalette = () => this.colors();\n\n color(color?: ColorKey): NullableStyleExpression {\n return !color ? undefined : { color: this.colors()[color] };\n }\n\n getDashedBorder(\n color: ColorKey | undefined,\n radius: Radius | undefined\n ): NullableStyleExpression {\n if (!color) return;\n\n const r = radius && this.radii()[radius];\n const borderRadius = r ? safeParseInt(r) : 0;\n const colors = this.colors()[color];\n const strokeColor = colors?.replace('#', '%23');\n\n return {\n backgroundImage: `url(\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='${borderRadius}' ry='${borderRadius}' stroke='${strokeColor}' stroke-width='4' stroke-dasharray='6%2c 14' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e\")`,\n borderRadius,\n };\n }\n\n radius(size: Radius | undefined): NullableStyleExpression {\n return !size ? undefined : { borderRadius: this.radii()[size] };\n }\n\n getRadiusLeft(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderTopLeftRadius: this.radii()[size],\n };\n }\n\n getRadiusRight(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomRightRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusTop(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderTopLeftRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusBottom(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderBottomRightRadius: this.radii()[size],\n };\n }\n\n padding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { padding: this.spacing()[size] };\n }\n\n horizontalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingInline: this.spacing()[size] };\n }\n\n verticalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBlock: this.spacing()[size] };\n }\n\n paddingLeft(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingLeft: this.spacing()[size] };\n }\n\n paddingRight(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingRight: this.spacing()[size] };\n }\n\n paddingTop(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingTop: this.spacing()[size] };\n }\n\n paddingBottom(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBottom: this.spacing()[size] };\n }\n\n border(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { border: this.borders()[border] };\n }\n\n borderTop(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderTop: this.borders()[border] };\n }\n\n borderBottom(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderBottom: this.borders()[border] };\n }\n\n borderLeft(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderLeft: this.borders()[border] };\n }\n\n borderRight(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderRight: this.borders()[border] };\n }\n\n boxShadow(shadow: Shadow | undefined) {\n return !shadow ? undefined : { boxShadow: this.shadows()[shadow] };\n }\n\n gap(gap: OptionalSize): NullableStyleExpression {\n return !gap || gap === 'none' ? undefined : { gap: this.spacing()[gap] };\n }\n\n zIndex(element: ZIndexableElements | undefined): NullableStyleExpression {\n return !element ? undefined : { zIndex: Z_INDEX[element] };\n }\n\n borderColor(borderColor: ColorToken): NullableStyleExpression {\n return { borderColor: this.colors()[borderColor] };\n }\n\n getComponentTheme<T>(componentName: ComponentName) {\n return this.component<T>(componentName);\n }\n\n // Used to get an \"always-defined\" options object from a component theme.\n getComponentOptions = <T>(componentName: ComponentName) =>\n linkedSignal({\n source: this.getComponentTheme<T>(componentName),\n computation: () => {\n return this.getComponentTheme<T>(componentName)().options || ({} as T);\n },\n });\n\n componentOptions = (componentName: ComponentName) =>\n computed(() => this.component(componentName)().options || {});\n\n style(prop: string, value: string | number | undefined): NullableStyleExpression {\n return !value ? undefined : { [prop]: value };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n} from '@angular/core';\nimport type { ComponentName, Size, Variant } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\nexport const COMPONENT_NAME = new InjectionToken<ComponentName>('');\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n template: ``,\n})\nexport class BaseComponent<T = unknown> {\n protected componentName = inject(COMPONENT_NAME);\n theme = inject(ThemeService);\n\n variant = input<Variant>('primary'); // TODO: Make Variant support undefined\n size = input<Size>('lg');\n\n componentTheme = computed(() => this.theme.getComponentTheme<T>(this.componentName)());\n\n componentOptions = computed(() => this.theme.getComponentOptions<T>(this.componentName)());\n\n style = computed(() =>\n this.theme.componentStyle(this.componentName, this.variant(), this.size())()\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniAppBarOptions } from './app-bar.model';\n\n/**\n * Horizontal application bar: project leading controls (menu button, logo)\n * with the `leading` attribute, actions with `trailing` (pushed to the far\n * edge), and either pass `title` or project custom center content. Surface,\n * divider, height, typography and spacing all resolve from `appBar` tokens.\n * Place it inside your page's `<header>` landmark.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-app-bar',\n providers: [{ provide: COMPONENT_NAME, useValue: 'appBar' }],\n host: { '[class]': 'className()' },\n template: `\n <ng-content select=\"[leading]\" />\n @if (title()) {\n <span class=\"uni-app-bar-title\">{{ title() }}</span>\n }\n <ng-content />\n <span class=\"uni-app-bar-spacer\"></span>\n <ng-content select=\"[trailing]\" />\n `,\n})\nexport class UniAppBarComponent extends BaseComponent<UniAppBarOptions> {\n /** Bar title; alternatively project your own center content. */\n title = input<string>();\n /** Stick the bar to the top of its scroll container. */\n sticky = input(false);\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n width: '100%',\n height: options.height ?? 56,\n flex: 'none',\n ...this.theme.colorPair(options.color),\n ...this.theme.gap(options.gap),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.borderBottom(options.divider),\n ...this.theme.boxShadow(options.elevation),\n '& .uni-app-bar-title': {\n ...this.theme.typeface(options.typeface),\n whiteSpace: 'nowrap',\n },\n '& .uni-app-bar-spacer': { flexGrow: 1 },\n ...(this.sticky() && { position: 'sticky', top: 0, zIndex: 10 }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport type { SymbolFill, SymbolGrade, SymbolOptions, SymbolWeight } from './symbol.model';\nimport { COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-symbol',\n imports: [],\n template: `{{ name() }}`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'symbol' }],\n // Icons are decorative: hide the ligature text (e.g. \"chevron_left\") from\n // screen readers. Meaningful icons get their name from the parent control.\n host: {\n '[class]': 'className()',\n 'aria-hidden': 'true',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSymbolComponent extends BaseComponent<SymbolOptions> {\n name = input.required<string>();\n\n fill = input<SymbolFill>();\n weight = input<SymbolWeight>();\n grade = input<SymbolGrade>();\n opticalSize = input<number>();\n\n protected readonly className = computed(() => {\n const settings =\n `'FILL' ${this.fill() || this.componentOptions().fill || 0}, ` +\n `'wght' ${this.weight() || this.componentOptions().weight || 400}, ` +\n `'GRAD' ${this.grade() || this.componentOptions().grade || 0}, ` +\n `'opsz' ${this.opticalSize() || this.componentOptions().opticalSize || 24}`;\n\n return (\n 'material-symbols-rounded ' +\n css({\n fontVariationSettings: settings,\n fontSize: `${this.opticalSize() || this.componentOptions().opticalSize || 24}px`,\n })\n );\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniAvatarOptions } from './avatar.model';\n\n/**\n * Identity avatar with a graceful fallback chain: image → initials from\n * `name` → themed symbol. Coloring, radius, typeface and sizes all resolve\n * from `avatar` theme tokens; `variant` picks the container palette.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatar' }],\n host: {\n '[class]': 'className()',\n '[attr.role]': \"label() ? 'img' : null\",\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': \"label() ? null : 'true'\",\n },\n template: `\n @if (showImage()) {\n <img [src]=\"src()\" alt=\"\" (error)=\"imageFailed.set(true)\" />\n } @else if (text()) {\n <span>{{ text() }}</span>\n } @else if (initials()) {\n <span>{{ initials() }}</span>\n } @else {\n <uni-symbol [name]=\"componentOptions().fallbackSymbol ?? 'person'\" />\n }\n `,\n})\nexport class UniAvatarComponent extends BaseComponent<UniAvatarOptions> {\n /** Image URL; on load error the avatar falls back to initials/symbol. */\n src = input<string>();\n /** Person's name: drives the initials and the accessible label. */\n name = input<string>();\n /** Verbatim text instead of derived initials (e.g. a group's “+3”). */\n text = input<string>();\n\n protected readonly imageFailed = signal(false);\n\n protected readonly showImage = computed(() => !!this.src() && !this.imageFailed());\n\n protected readonly initials = computed(() => {\n const name = this.name()?.trim();\n if (!name) return '';\n const words = name.split(/\\s+/);\n const first = words[0]?.[0] ?? '';\n const last = words.length > 1 ? (words[words.length - 1][0] ?? '') : '';\n return (first + last).toUpperCase();\n });\n\n protected readonly label = computed(() => this.name() ?? this.text());\n\n protected readonly className = computed(() =>\n css([\n // Typeface (family/weight) before the merged theme style, so the size\n // record's fontSize wins over the typeface's.\n {\n ...this.theme.typeface(this.componentOptions().typeface),\n ...this.theme.radius(this.componentOptions().borderRadius),\n },\n this.style(),\n {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 'none',\n overflow: 'hidden',\n userSelect: 'none',\n lineHeight: 1,\n '& img': { width: '100%', height: '100%', objectFit: 'cover' },\n '& symbol': { fontSize: '1.4em' },\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniAvatarComponent } from './avatar.component';\nimport type { UniAvatarGroupOptions } from './avatar.model';\n\n/**\n * Overlapping stack of avatars. `max` collapses the overflow into a themed\n * “+N” chip (itself a `uni-avatar`). Overlap and separator ring resolve from\n * `avatarGroup` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar-group',\n imports: [UniAvatarComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatarGroup' }],\n host: { '[class]': 'className()', role: 'group' },\n template: `\n <ng-content />\n @if (surplus() > 0) {\n <uni-avatar\n class=\"uni-surplus\"\n [text]=\"'+' + surplus()\"\n variant=\"quaternary\"\n [size]=\"size()\"\n />\n }\n `,\n})\nexport class UniAvatarGroupComponent extends BaseComponent<UniAvatarGroupOptions> {\n /** Show at most this many avatars; the rest collapse into a “+N” chip. */\n max = input<number | undefined>(undefined);\n\n private readonly avatars = contentChildren(UniAvatarComponent);\n\n protected readonly surplus = computed(() => {\n const max = this.max();\n if (max === undefined) return 0;\n return Math.max(0, this.avatars().length - max);\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const overlap = this.theme.spacing()[options.overlap ?? 'sm'] ?? '8px';\n const ring = `${options.ringWidth ?? 2}px solid ${\n this.theme.colors()[options.ringColor ?? 'surface'] ?? 'transparent'\n }`;\n const max = this.max();\n return css({\n display: 'inline-flex',\n alignItems: 'center',\n '& uni-avatar': {\n border: ring,\n marginLeft: `calc(-1 * ${overlap})`,\n '&:first-child': { marginLeft: 0 },\n },\n // Collapse the overflow: hide projected avatars past `max`, but never\n // the surplus chip this component renders itself.\n ...(max !== undefined && {\n [`& uni-avatar:nth-of-type(n + ${max + 1}):not(.uni-surplus)`]: { display: 'none' },\n }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\nexport type ImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | string;\n\n@Component({\n selector: 'uni-background',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBackgroundComponent {\n theme = inject(ThemeService);\n\n image = input<string>();\n imagePosition = input<ImagePosition>();\n imageSize = input<'cover' | 'contain' | number | string>();\n height = input<number | string>('100%');\n width = input<number | string>();\n\n protected readonly className = computed(() => {\n return css([\n {\n backgroundRepeat: 'no-repeat',\n display: 'block',\n ...this.theme.backgroundImage(this.image()),\n },\n this.theme.style('backgroundPosition', this.imagePosition()),\n this.theme.style('backgroundSize', this.imageSize()),\n this.theme.style('height', this.height()),\n this.theme.style('width', this.width()),\n ]);\n });\n}\n","/**\n * Background Component Barrel File\n *\n * This file exports all public-facing elements of the background component.\n */\n\nexport { UniBackgroundComponent } from './background.component';\nexport type { ImagePosition } from './background.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniBadgeOptions } from './badge.model';\nimport type { Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-badge]',\n imports: [],\n template: `<ng-content></ng-content>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'badge' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {\n color = input<Variant | undefined>(undefined);\n useVariant = input<boolean>(false);\n width = input<number>();\n\n protected readonly className = computed(() => {\n const width = this.width();\n\n return css([\n {\n ...this.theme.getContainerColors(this.color() || 'primary', this.useVariant()),\n ...this.theme.typeface('badge'),\n display: 'inline-block',\n padding: '0 16px',\n ...this.theme.radius(this.componentOptions().borderRadius),\n textAlign: 'center',\n letterSpacing: 1,\n },\n width !== undefined && {\n minWidth: width - 32,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { BreadcrumbItem, UniBreadcrumbOptions } from './breadcrumb.model';\n\n/**\n * WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last\n * item is the current page (`aria-current=\"page\"`), separators are decorative.\n * Items with `href` render as real links; without one they render as\n * link-styled buttons emitting `itemClicked` — wire that to your router.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-breadcrumb',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'breadcrumb' }],\n template: `\n <nav [attr.aria-label]=\"ariaLabel()\" [class]=\"className()\">\n <ol>\n @for (item of items(); track item.label; let last = $last; let i = $index) {\n <li>\n @if (last) {\n <span aria-current=\"page\">{{ item.label }}</span>\n } @else if (item.href) {\n <a [href]=\"item.href\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</a>\n } @else {\n <button type=\"button\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</button>\n }\n @if (!last) {\n <uni-symbol\n aria-hidden=\"true\"\n [name]=\"componentOptions().separatorSymbol ?? 'chevron_right'\"\n />\n }\n </li>\n }\n </ol>\n </nav>\n `,\n})\nexport class UniBreadcrumbComponent extends BaseComponent<UniBreadcrumbOptions> {\n /** The trail, root first; the last item is the current page. */\n items = input.required<BreadcrumbItem[]>();\n /** Landmark label distinguishing this nav from others on the page. */\n ariaLabel = input('Breadcrumb');\n\n /** Emits the clicked ancestor item (also fires for `href` links). */\n itemClicked = output<BreadcrumbItem>();\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const linkColor = this.theme.colors()[options.color ?? 'on-background-variant'];\n return css({\n '& ol': {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n ...this.theme.typeface(options.typeface),\n },\n '& li': {\n display: 'inline-flex',\n alignItems: 'center',\n ...this.theme.gap(options.gap),\n },\n '& a, & button': {\n background: 'none',\n border: 0,\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n textDecoration: 'none',\n color: linkColor,\n '&:hover': { textDecoration: 'underline' },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()['primary']}`,\n outlineOffset: 2,\n },\n },\n '& [aria-current]': {\n ...this.theme.color(options.currentColor),\n },\n '& symbol': { fontSize: '1.1em', ...this.theme.color(options.color) },\n ...this.theme.gap(options.gap),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { ThemeService } from '../../theming/theme.service';\nimport type { ColorToken, CssLength, IconName } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-icon',\n imports: [],\n template: '',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Icons are decorative; meaningful icons get their name from the parent control\n host: {\n 'aria-hidden': 'true',\n '[class]': 'className()',\n '[style.mask-image]': 'path()',\n '[style.-webkit-mask-image]': 'path()',\n // Inline styles, so an explicit size always beats the fill-the-container\n // rule in the stylesheet regardless of style injection order.\n '[style.width]': 'sizeValue()',\n '[style.height]': 'sizeValue()',\n },\n})\nexport class UniIconComponent {\n private themeService = inject(ThemeService);\n\n color = input<ColorToken>();\n name = input.required<IconName>();\n\n /**\n * Explicit square size. Bare numbers are px; strings pass through, so any CSS\n * length works (`'1.25rem'`, `'1em'`, `'clamp(…)'`).\n *\n * Leave it unset to keep the default behaviour — the icon fills its\n * container, which is what lets a themed control size its own glyph through\n * padding. Set it at call sites that would otherwise need a width/height\n * rule just to size one icon.\n */\n size = input<CssLength>();\n\n /** Resolved from the theme's icon primitives; unknown names render nothing. */\n protected readonly path = computed(() => {\n const icon = this.themeService.theme().icons[this.name()];\n return icon ? `url(\"${icon}\")` : 'none';\n });\n\n /** `null` leaves the styles off entirely, falling back to the stylesheet. */\n protected readonly sizeValue = computed(() => {\n const size = this.size();\n if (size === undefined || size === null || size === '') return null;\n if (typeof size === 'number') return `${size}px`;\n\n // A static attribute (`size=\"24\"`) arrives as a string, so a bare number\n // has to mean px here too — otherwise it emits the invalid `width: 24`,\n // which the browser drops, silently falling back to filling the container.\n const trimmed = size.trim();\n return /^-?\\d*\\.?\\d+$/.test(trimmed) ? `${trimmed}px` : trimmed;\n });\n\n protected readonly className = computed(() =>\n css([{ ...this.themeService.color(this.color()) }])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ContainerColorToken,\n OptionalAlignContent,\n OptionalAlignItems,\n OptionalAlignSelf,\n OptionalBorder,\n OptionalColor,\n OptionalDisplay,\n OptionalFlexDirection,\n OptionalJustifyContent,\n OptionalOverflow,\n OptionalPosition,\n OptionalRadius,\n OptionalSize,\n OptionalTextAlign,\n OptionalWrap,\n Shadow,\n Variant,\n ZIndexableElements,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService } from '../../../theming';\n\n/**\n * The base layout primitive, applied as an attribute to any element so\n * semantics stay yours: `<main box-layout [grow]=\"1\" padding=\"md\">`.\n * Exception: other components' host elements (`<uni-card box-layout>` would\n * put two components on one element) — wrap those in a `<div box-layout>`.\n *\n * Sizing convention (height/width/min/max/inset): a **number is px and needs\n * a binding** — `[height]=\"420\"`; a **plain attribute is a CSS length\n * string** — `height=\"420px\"`. Spacing/radius/color inputs take theme tokens.\n */\n@Component({\n selector: '[uni-box-layout], [box-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'boxClassName()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBoxComponent {\n theme = inject(ThemeService);\n\n color = input<ContainerColorToken>();\n backgroundColor = input<OptionalColor>();\n borderRadius = input<OptionalRadius>();\n borderRadiusLeft = input<OptionalRadius>();\n borderRadiusRight = input<OptionalRadius>();\n borderRadiusTop = input<OptionalRadius>();\n borderRadiusBottom = input<OptionalRadius>();\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<OptionalBorder>();\n borderTop = input<OptionalBorder>();\n borderBottom = input<OptionalBorder>();\n borderLeft = input<OptionalBorder>();\n borderRight = input<OptionalBorder>();\n dashBorder = input<boolean>(false);\n alignSelf = input<OptionalAlignSelf>();\n alignItems = input<OptionalAlignItems>();\n alignContent = input<OptionalAlignContent>();\n justifyContent = input<OptionalJustifyContent>();\n grow = input<number>();\n display = input<OptionalDisplay>();\n position = input<OptionalPosition>();\n inset = input<number | string>();\n /** Number = px via binding (`[height]=\"420\"`); string = CSS length (`height=\"420px\"`). */\n height = input<number | string>();\n minHeight = input<number | string>();\n maxHeight = input<number | string>();\n /** Number = px via binding (`[width]=\"420\"`); string = CSS length (`width=\"50%\"`). */\n width = input<number | string>();\n minWidth = input<number | string>();\n maxWidth = input<number | string>();\n ignoreDir = input(true);\n gridArea = input<string>();\n gridColumn = input<string>();\n gridRow = input<string>();\n overflow = input<OptionalOverflow>();\n elevation = input<Shadow>(); // Deprecated, use shadow instead\n shadow = input<Shadow>();\n gap = input<OptionalSize>();\n fullWidth = input<boolean>();\n fullHeight = input<boolean>();\n flexDirection = input<OptionalFlexDirection>();\n textAlign = input<OptionalTextAlign>();\n wrapItems = input<OptionalWrap>(undefined);\n zIndex = input<ZIndexableElements>();\n\n protected readonly boxClassName = computed(() => {\n return css([\n {\n ...this.theme.colorPair(this.color()),\n ...this.theme.backgroundColor(this.backgroundColor()),\n display: this.alignSelf() ? 'flex' : 'block',\n position: this.position(),\n inset: this.inset(),\n boxSizing: 'border-box',\n height: this.height(),\n minHeight: this.minHeight(),\n maxHeight: this.maxHeight(),\n width: this.width(),\n minWidth: this.minWidth(),\n maxWidth: this.maxWidth(),\n flexWrap: this.wrapItems(),\n overflow: this.overflow(),\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n ...this.theme.boxShadow(this.elevation()),\n ...this.theme.boxShadow(this.shadow()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.getRadiusLeft(this.borderRadiusLeft()),\n ...this.theme.getRadiusRight(this.borderRadiusRight()),\n ...this.theme.getRadiusTop(this.borderRadiusTop()),\n ...this.theme.getRadiusBottom(this.borderRadiusBottom()),\n ...this.theme.borderTop(this.borderTop()),\n ...this.theme.borderBottom(this.borderBottom()),\n ...this.theme.borderLeft(this.borderLeft()),\n ...this.theme.borderRight(this.borderRight()),\n ...this.theme.gap(this.gap()),\n ...this.theme.style('display', this.display()),\n ...this.theme.style('alignSelf', this.alignSelf()),\n ...this.theme.style('alignItems', this.alignItems()),\n ...this.theme.style('justifyContent', this.justifyContent()),\n ...this.theme.style('alignContent', this.alignContent()),\n ...this.theme.style('flexGrow', this.grow()),\n ...this.theme.style('flexDirection', this.flexDirection()),\n ...this.theme.style('gridArea', this.gridArea()),\n ...this.theme.style('gridColumn', this.gridColumn()),\n ...this.theme.style('gridRow', this.gridRow()),\n ...this.theme.style('textAlign', this.textAlign()),\n ...this.theme.zIndex(this.zIndex()),\n },\n this.border() &&\n !this.dashBorder() && {\n ...this.theme.border(this.border()),\n },\n this.border() &&\n this.dashBorder() && {\n ...this.theme.getDashedBorder(this.border() as Variant, this.borderRadius()),\n },\n\n this.fullWidth() && {\n width: '100%',\n },\n this.fullHeight() && {\n height: '100%',\n },\n\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row' && {\n '&:dir(rtl)': {\n flexDirection: 'row-reverse',\n },\n },\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row-reverse' && {\n '&:dir(rtl)': {\n flexDirection: 'row',\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type {\n OptionalAlignItems,\n OptionalDisplay,\n OptionalJustifyContent,\n} from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-center-layout], [center-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniCenterComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override justifyContent = input<OptionalJustifyContent>('center');\n override alignItems = input<OptionalAlignItems>('center');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Component({\n selector: '[uni-grid-area-layout], [grid-area-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniGridAreaComponent {\n area = input.required<string>();\n\n protected readonly className = computed(() => css({ gridArea: this.area() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, Thickness, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-grid-layout], [grid-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'gridClassName()' },\n})\nexport class UniGridComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('grid');\n\n templateAreas = input<string>();\n templateColumns = input<string>();\n templateRows = input<string>();\n outline = input<Thickness>();\n outlineColor = input<Variant>();\n\n protected readonly gridClassName = computed(() =>\n css([\n this.templateAreas() && {\n gridTemplateAreas: this.templateAreas(),\n },\n this.templateColumns() && {\n gridTemplateColumns: this.templateColumns(),\n },\n this.templateRows() && {\n gridTemplateRows: this.templateRows(),\n },\n this.outline() && {\n gap: this.theme.getThickness(this.outline()!),\n },\n this.outlineColor() && {\n backgroundColor: this.theme.colorPalette()[this.outlineColor()!],\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-row-layout], [row-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniRowComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('row');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minWidth]=\"0\"`\n * when the row must shrink inside a constrained flex parent (scroll or\n * text truncation containment).\n */\n override minWidth = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-stack-layout], [stack-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniStackComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('column');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minHeight]=\"0\"`\n * when the stack must shrink inside a constrained flex parent (scroll\n * containment).\n */\n override minHeight = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalWrap } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-wrap-layout], [wrap-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniWrapComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override wrapItems = input<OptionalWrap>('wrap');\n\n constructor() {\n super();\n }\n}\n","// https://css-tricks.com/how-to-recreate-the-ripple-effect-of-material-design-buttons/\nimport { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Directive({\n selector: '[uniRipple]',\n host: {\n '(click)': 'onClick($event)',\n },\n})\nexport class RippleDirective {\n private renderer = inject(Renderer2);\n el = inject(ElementRef);\n\n hostEl;\n\n constructor() {\n this.hostEl = this.el.nativeElement;\n }\n\n onClick(e: MouseEvent) {\n if (!e) return;\n let ripple, d;\n if (this.hostEl.querySelector(`.${this.rippleClass}`) === null) {\n ripple = this.renderer.createElement('span');\n this.renderer.addClass(ripple, this.rippleClass);\n this.renderer.appendChild(this.hostEl, ripple);\n }\n\n ripple = this.hostEl.querySelector(`.${this.rippleClass}`);\n this.renderer.appendChild(this.hostEl, ripple);\n this.renderer.removeClass(ripple, this.animateClass);\n\n if (!ripple.offsetHeight && !ripple.offsetWidth) {\n d = Math.max(this.hostEl.offsetWidth, this.hostEl.offsetHeight);\n this.renderer.setStyle(ripple, 'width', d + 'px');\n this.renderer.setStyle(ripple, 'height', d + 'px');\n }\n\n const x = e.pageX - this.hostEl.offsetLeft - ripple.offsetWidth / 2;\n const y = e.pageY - this.hostEl.offsetTop - ripple.offsetHeight / 2;\n\n this.renderer.setStyle(ripple, 'top', y + 'px');\n this.renderer.setStyle(ripple, 'left', x + 'px');\n this.renderer.addClass(ripple, this.animateClass);\n }\n\n rippleClass = css({\n display: 'block',\n position: 'absolute',\n background: 'rgba(255, 255, 255, 0.3)',\n borderRadius: '100%',\n transform: 'scale(0)',\n });\n\n animateClass = css({\n animation: 'ripple 0.65s linear',\n\n '@keyframes ripple': {\n '100%': {\n opacity: 0,\n transform: 'scale(2.5)',\n },\n },\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniButtonOptions } from './button.model';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent } from '../layout';\nimport { UniSymbolComponent } from '../symbol';\nimport { RippleDirective } from '../../directives/ripple';\n\n@Component({\n selector: 'button[uni-text-button], button[text-button]',\n template: `@if (loading()) {\n <div box-layout [class]=\"spinnerBox\"><uni-icon name=\"spinner\" /></div>\n }\n @if (symbolLeft()) {\n <uni-symbol [name]=\"symbolLeft()!\" class=\"symbolLeft\" />\n }\n <span><ng-content></ng-content></span>\n @if (symbolRight()) {\n <uni-symbol [name]=\"symbolRight()!\" class=\"symbolRight\" />\n } `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'button' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RippleDirective, // Keep this import\n UniIconComponent,\n UniBoxComponent,\n UniSymbolComponent,\n ],\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniButtonComponent extends BaseComponent<UniButtonOptions> {\n readonly disable = input<boolean | undefined>(false);\n readonly loading = input<boolean | undefined>(false);\n readonly fullWidth = input<boolean>(false);\n\n readonly symbolLeft = input<string>();\n readonly symbolRight = input<string>();\n\n spinnerBox = css({\n position: 'absolute',\n left: 0,\n width: '100%',\n height: '100%',\n paddingTop: '6%',\n paddingBottom: '6%',\n });\n\n protected readonly className = computed(() =>\n css([\n // Token-driven radius + typeface from component options. Applied before\n // `style()` so theme `sizes`/`fixed` (per-size fontSize, or hand-set\n // radii/families in older themes) keep winning.\n this.theme.radius(this.componentOptions().borderRadius),\n { ...this.theme.typeface(this.componentOptions().typeface) },\n this.style() && {\n ...this.style(), // TODO: Set priority on theme-defined styles\n },\n {\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n '& .symbolLeft': {\n marginLeft: -6,\n marginRight: 4,\n fontSize: this.symbolSize(),\n },\n '& span': {\n alignContent: 'center',\n flexGrow: 1,\n whiteSpace: 'nowrap',\n },\n '& .symbolRight': {\n marginRight: -6,\n marginLeft: 4,\n fontSize: this.symbolSize(),\n },\n },\n // Hover/pressed styling now lives in the theme's button variants\n // (solid vs. hollow, per-variant states). Only the keyboard-focus\n // indicator (WCAG 2.4.7) stays component-owned.\n {\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.variant()]}`,\n outlineOffset: '2px',\n },\n },\n this.fullWidth() && {\n width: '100%',\n },\n !this.loading() && {\n '&:disabled': {\n ...this.componentTheme().variants?.disabled,\n },\n },\n this.loading() && {\n '&:disabled symbol': {\n opacity: 0,\n },\n '&:disabled span': {\n opacity: 0,\n },\n },\n ])\n );\n\n symbolSize = computed(() => {\n const fontSize = parseFloat(String(this.style()['fontSize'] ?? ''));\n // Fall back to the default icon size when the theme defines no fontSize\n return (Number.isNaN(fontSize) ? 16 : fontSize) + 4;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-button-group',\n imports: [],\n template: ` <ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniButtonGroupComponent {\n private themeService = inject(ThemeService);\n\n protected readonly className = computed(() => {\n return css({\n display: 'inline-flex',\n\n '& button': {\n ...this.themeService.border('quaternary'),\n marginRight: -1,\n },\n\n '& button:first-child': {\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:not(:first-child):not(:last-child)': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 4,\n borderBottomRightRadius: 4,\n marginRight: 0,\n },\n });\n });\n}\n","/**\n * UniButtonGroupComponent Barrel File\n *\n * This file exports all public-facing elements of the button-group component.\n */\n\nexport { UniButtonGroupComponent } from './button-group.component';\nexport type { ButtonGroupConfig, ButtonGroupItem } from './button-group.model';\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-content',\n imports: [],\n templateUrl: './card-content.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardContent' }],\n styleUrls: ['./card-content.component.scss'],\n})\nexport class UniCardContentComponent extends BaseComponent {}\n","<div [style]=\"style()\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ColorKey,\n OptionalDisplay,\n OptionalTextAlign,\n Typeface,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\n/**\n * Typeface defaults by host element, so semantic HTML and the type scale\n * reinforce each other: `<h1 uni-text>` is already headline-large.\n */\nconst TagTypefaces: Record<string, Typeface> = {\n h1: 'headline-large',\n h2: 'headline-medium',\n h3: 'headline-small',\n h4: 'title-large',\n h5: 'title-medium',\n h6: 'title-small',\n p: 'body-1-long',\n small: 'caption',\n figcaption: 'caption',\n blockquote: 'quote',\n label: 'label',\n};\n\n/**\n * The typography primitive, applied as an attribute to any element so\n * semantics stay yours. The attribute value is the typeface:\n * `<h1 uni-text=\"display-small\">`, `<span uni-text=\"caption\">`, dynamic via\n * `[uni-text]=\"role()\"`. With no value, the typeface is inferred from the\n * host element (h1 → headline-large, p → body-1-long, …), falling back to\n * `title-small`; the `typeface` input remains as an explicit override.\n */\n@Component({\n selector: '[uni-text]',\n imports: [],\n template: '<ng-content></ng-content>',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniTextComponent {\n theme = inject(ThemeService);\n private readonly tag = (inject(ElementRef).nativeElement as HTMLElement).tagName.toLowerCase();\n\n /** Typeface via the selector attribute: `uni-text=\"headline-large\"`. */\n readonly uniText = input<Typeface | ''>('', { alias: 'uni-text' });\n /** Explicit typeface; the attribute value wins when both are set. */\n typeface = input<Typeface | undefined>(undefined);\n color = input<ColorKey>();\n display = input<OptionalDisplay>();\n align = input<OptionalTextAlign>();\n nowrap = input<boolean>();\n maxWidth = input<number>();\n ellipsis = input<boolean>(false);\n\n protected readonly resolvedTypeface = computed<Typeface>(\n () => this.uniText() || this.typeface() || TagTypefaces[this.tag] || 'title-small'\n );\n\n protected readonly className = computed(() => {\n return css([\n {\n ...this.theme.typeface(this.resolvedTypeface()),\n ...this.theme.color(this.color()),\n display: this.display(),\n },\n this.align() && {\n textAlign: this.align(),\n },\n this.nowrap() && {\n whiteSpace: 'nowrap',\n },\n this.maxWidth() && {\n maxWidth: this.maxWidth(),\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'inline-block',\n },\n this.ellipsis() && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCardOptions } from './card.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card',\n imports: [],\n templateUrl: './card.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'card' }],\n})\nexport class UniCardComponent extends BaseComponent<UniCardOptions> {\n /**\n * Token-resolved frame (variant-named border primitive, radii, elevation)\n * under the merged theme style, so hand-authored fixed/variant styles from\n * older themes keep winning.\n */\n protected readonly cardStyle = computed(() => ({\n ...this.theme.border(this.componentOptions().border ?? this.variant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.style(),\n }));\n}\n","<div [style]=\"cardStyle()\">\n <ng-content></ng-content>\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniTextComponent } from '../../text';\nimport { UniCardComponent } from '../card.component';\nimport type { Typeface } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-header',\n imports: [UniTextComponent, NgClass],\n templateUrl: './card-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardHeader' }],\n styleUrls: ['./card-header.component.scss'],\n})\nexport class UniCardHeaderComponent extends BaseComponent {\n private card = inject(UniCardComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n title = input<string>('');\n titleTextRole = input<Typeface>('title-large');\n\n constructor() {\n super();\n\n // this.variant = this.card?.variant;\n }\n\n className = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n });\n}\n","<div [style]=\"style()\" [ngClass]=\"className\">\n <span uni-text [typeface]=\"titleTextRole()\">{{ title() }}</span>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniCheckboxOptions } from './checkbox.model';\n\n@Component({\n selector: 'uni-checkbox',\n imports: [UniTextComponent],\n templateUrl: './checkbox.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'checkbox' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniCheckboxComponent\n extends BaseComponent<UniCheckboxOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n /**\n * Mixed state for \"select all\"-style parent checkboxes. Cleared\n * automatically on the next user interaction, matching native behavior.\n */\n readonly indeterminate = model<boolean>(false);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.indeterminate.set(false);\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n protected readonly checkboxLabel = computed(() =>\n css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '&:hover .checkbox svg path': this.disabled()\n ? {}\n : {\n strokeDashoffset: 0,\n },\n\n '& .checkbox': {\n height: this.componentOptions().size,\n width: this.componentOptions().size,\n },\n\n '& .checkbox svg': {\n display: 'block',\n },\n\n '& .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.componentOptions().boxColor ?? 'surface'),\n stroke: this.getThemeColor(this.variant()),\n strokeWidth: 2,\n rx: this.componentOptions().borderRadius || 2,\n ry: this.componentOptions().borderRadius || 2,\n transition: 'all 0.2s ease',\n },\n\n // Check/dash draw on the variant-filled box, so they wear its on-color.\n '& .checkbox svg .checkbox-check': {\n fill: 'none',\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n strokeDasharray: 18,\n strokeDashoffset: 18,\n transition: 'all 0.5s ease',\n },\n\n '& .checkbox svg .checkbox-dash': {\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n opacity: 0,\n transition: 'opacity 0.2s ease',\n },\n })\n );\n\n protected readonly checkboxInput = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .checkbox': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-check': {\n strokeDashoffset: 0,\n },\n\n '&:indeterminate + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:indeterminate + .checkbox svg .checkbox-dash': {\n opacity: 1,\n },\n\n '&:disabled + .checkbox': {\n cursor: 'not-allowed',\n },\n\n '&:focus + .checkbox': {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '-4px',\n left: '-4px',\n right: '-4px',\n bottom: '-4px',\n border: `2px solid ${this.getThemeColor(this.variant())}`,\n borderRadius: `${(Number(this.componentOptions().borderRadius) || 2) + 4}px`,\n pointerEvents: 'none',\n },\n },\n })\n );\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n\n /** The content color paired with a variant fill (on-primary, on-warn, …). */\n getOnColor(variant: ColorToken) {\n const colors = this.theme.colors();\n return colors[`on-${variant}`] ?? colors['on-primary'];\n }\n}\n","<label [class]=\"checkboxLabel()\">\n <input\n type=\"checkbox\"\n [class]=\"checkboxInput()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"checkbox\">\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <rect class=\"checkbox-box\" x=\"1\" y=\"1\" width=\"18\" height=\"18\"></rect>\n <polyline class=\"checkbox-check\" points=\"4 11 8 15 16 6\"></polyline>\n <line class=\"checkbox-dash\" x1=\"5\" y1=\"10\" x2=\"15\" y2=\"10\"></line>\n </svg>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import { Directive, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[uniBodyRender]',\n})\nexport class BodyRenderDirective implements OnInit {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngOnInit() {\n const element = this.el.nativeElement;\n this.renderer.appendChild(document.body, element);\n }\n}\n","import { Directive, output, signal } from '@angular/core';\n\n@Directive({\n selector: '[uni-drag-n-drop], [dragAndDrop]',\n host: {\n '[style.opacity]': 'workspaceOpacity()',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class DragAndDropDirective {\n // TODO(v4): rename to fileDropped — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onFileDropped = output<FileList>();\n\n protected workspaceOpacity = signal('1');\n\n // Dragover listener, when files are dragged over our host element\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('0.5');\n }\n\n // Dragleave listener, when files are dragged away from our host element\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n }\n\n // Drop listener, when files are dropped on our host element\n onDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n const files = event.dataTransfer?.files;\n if (files && files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { type IconName } from '../icon/icon.record';\nimport { RippleDirective } from '../../directives';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniIconComponent } from '../icon';\nimport { ThemeService } from '../../theming/theme.service';\nimport { visuallyHidden } from '../../cdk';\nimport type { RadiiSize, Size, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'button[uni-icon-button], button[icon-button]',\n imports: [UniSymbolComponent, UniIconComponent],\n template: `\n @if (loading()) {\n <uni-icon name=\"spinner\" />\n } @else if (symbolName()) {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"opticalSize()\" />\n } @else if (iconName()) {\n <uni-icon [name]=\"iconName()!\" [size]=\"glyphSize()\" />\n }\n <!-- Projected text is the button's accessible name (visually hidden) -->\n <span [class]=\"srOnlyClass\"><ng-content /></span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[attr.aria-label]': 'ariaLabel() || null',\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniIconButtonComponent {\n private theme = inject(ThemeService);\n config = this.theme.component<{ borderRadius?: RadiiSize }>('iconButton');\n\n /**\n * Accessible name for the button. Alternative to projecting text content\n * (`<button icon-button>Close</button>`); one of the two is required for\n * an icon-only button to be announced correctly.\n */\n ariaLabel = input<string>();\n\n iconName = input<IconName>();\n symbolName = input<string>();\n variant = input<Variant>('ghost');\n size = input<Size>('lg');\n disable = input<boolean>();\n loading = input<boolean>();\n opticalSize = input(24);\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n /**\n * Sizes `iconName` from the size token's `fontSize`, the same value that sizes\n * a `symbolName` ligature — so the two paths render the same glyph size and\n * `symbolName` → `iconName` is a like-for-like swap. Without it a masked icon\n * fills the whole button box, since the base size tokens carry no padding.\n * Themes that do use padding (Carbon) set a matching `fontSize`, so they land\n * on the same glyph either way.\n */\n protected readonly glyphSize = computed(() => {\n // Size tokens are Emotion style objects, so `fontSize` is typed wider than\n // a CSS length; anything exotic falls back to filling the button as before.\n const fontSize = this.config().sizes?.[this.size()]?.fontSize;\n return typeof fontSize === 'number' || typeof fontSize === 'string' ? fontSize : undefined;\n });\n\n protected readonly className = computed(() => {\n const { sizes, variants } = this.config();\n const sizeConfig = sizes && sizes[this.size()];\n const colorConfig = variants && variants[this.variant()];\n\n return css([\n {\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n // Token-driven radius (`max` = circle) with the legacy 999 fallback\n // for hand-authored themes that predate iconButton options.\n ...(this.theme.radius(this.config().options?.borderRadius) ?? { borderRadius: 999 }),\n // Block-level, but centring: the size tokens make the box bigger than\n // the glyph (an `sm` button is 22px around an 18px icon), so a plain\n // `display: block` parks the glyph in the top-left corner. Flex is\n // still block-level, so nothing about the button's own layout changes.\n // The accessible-name span is absolutely positioned and so stays out\n // of the flex flow.\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '& symbol': {\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n },\n sizeConfig && {\n ...sizeConfig,\n },\n colorConfig && {\n ...colorConfig,\n },\n this.symbolName() &&\n !this.loading() && {\n padding: 0,\n },\n this.variant() !== 'ghost' && {\n '&:hover': {\n ...this.theme.boxShadow('raised'),\n },\n },\n this.variant() === 'ghost' && {\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n },\n !this.loading() && {\n '&:disabled': {\n ...this.config().variants?.disabled,\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniRecordDatasource, UniServerSideDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniCenterComponent, UniRowComponent } from '../layout';\nimport type { UniDataSearchOptions } from './data-search.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-data-search',\n imports: [UniRowComponent, UniIconButtonComponent, UniIconComponent, UniCenterComponent],\n templateUrl: './data-search.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataSearch' }],\n})\nexport class UniDataSearchComponent<T> extends BaseComponent<UniDataSearchOptions> {\n datasource = input<UniDatasource<T>>();\n placeholder = input<string>('Search');\n fields = input<string[]>();\n\n searchValue = signal('');\n\n inputClassName!: string;\n\n constructor() {\n super();\n\n effect(() => {\n this.inputClassName = css({\n border: 'none',\n padding: 0,\n fontSize: 16,\n flexGrow: 1,\n height: 18,\n\n '&:focus-visible': {\n outline: 'none',\n },\n\n '&::placeholder': {\n ...this.theme.color(this.componentOptions().placeholderColor),\n },\n });\n });\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchValue.set(value);\n this.filterData(value);\n }\n\n filterData(value: string) {\n const datasource = this.datasource();\n if (!datasource) return;\n\n const fields = this.fields();\n\n if (datasource instanceof UniRecordDatasource) {\n // Client-side filtering with predicate function\n datasource.setFilter((object) => {\n let searchObject = object;\n if (fields && fields.length > 0) {\n searchObject = pick(object as Record<string, unknown>, fields) as T;\n }\n\n return Object.values(searchObject as object)\n .join(' ')\n .toLowerCase()\n .includes(value.toLowerCase());\n });\n } else if (datasource instanceof UniServerSideDatasource) {\n // Server-side filtering with filter object\n const filterObject: Record<string, unknown> = {};\n\n if (fields && fields.length > 0) {\n // Apply search to specific fields\n fields.forEach((field) => {\n filterObject[field] = value;\n });\n } else {\n // Generic search filter\n filterObject['search'] = value;\n }\n\n datasource.setFilter(filterObject);\n }\n }\n\n clearFilter() {\n const datasource = this.datasource();\n if (!datasource) return;\n\n if (datasource instanceof UniRecordDatasource) {\n datasource.setFilter(() => true);\n } else if (datasource instanceof UniServerSideDatasource) {\n datasource.clearFilter();\n }\n\n this.searchValue.set('');\n }\n}\n\nfunction pick(obj: Record<string, unknown>, keys: string[]) {\n return keys.reduce<Record<string, unknown>>((acc, key) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\n","<div\n row-layout\n alignItems=\"center\"\n [border]=\"componentOptions().border\"\n [height]=\"26\"\n [borderRadius]=\"componentOptions().borderRadius\"\n paddingLeft=\"xs\"\n>\n <div center-layout [height]=\"18\" [width]=\"18\" paddingRight=\"xs\">\n <uni-icon name=\"search\" />\n </div>\n <input\n type=\"text\"\n (input)=\"onInput($event)\"\n [class]=\"inputClassName\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchValue()\"\n />\n <div row-layout alignItems=\"center\" [width]=\"22\">\n @if (!!searchValue()) {\n <button icon-button (click)=\"clearFilter()\" symbolName=\"close\" size=\"sm\">Clear Search</button>\n }\n </div>\n</div>\n","/**\n * UniDataSearchComponent Barrel File\n *\n * This file exports all public-facing elements of the data-search component.\n */\n\nexport { UniDataSearchComponent } from './data-search.component';\nexport type { UniDataSearchOptions } from './data-search.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport type {\n ContainerColorToken,\n OptionalSize,\n Radius,\n Variant,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport type { ScrollbarAppearance } from './scroll-area.types';\n\ntype OptionalValue = string | number | undefined;\n\n/**\n * Native scroll area with theme-driven scrollbar styling.\n *\n * Scrollbars are styled entirely through Emotion-generated CSS:\n * `::-webkit-scrollbar` rules cover Chromium/Safari, with a\n * `scrollbar-width`/`scrollbar-color` fallback for Firefox.\n */\n@Component({\n selector: '[uni-scroll-area], [scroll-area]',\n imports: [],\n template: `<div #viewport [class]=\"viewportClassName()\">\n <div\n #content\n [class]=\"contentClassName()\"\n [class.isVerticallyScrollable]=\"isVerticallyScrollable()\"\n >\n <ng-content></ng-content>\n </div>\n </div>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniScrollAreaComponent {\n theme = inject(ThemeService);\n\n isVerticallyScrollable = signal<boolean>(false);\n\n viewport = viewChild.required<ElementRef<HTMLDivElement>>('viewport');\n content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n color = input<ContainerColorToken>();\n borderRadius = input<Radius>('sm');\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<Variant>();\n height = input<OptionalValue>();\n width = input<OptionalValue>();\n appearance = input<ScrollbarAppearance>('compact');\n autoHeightDisabled = input<boolean>(false);\n verticalScrollPadding = input<number>(29);\n\n scrollable = output<boolean>();\n\n public scrollToBottom() {\n const viewport = this.viewport().nativeElement;\n viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' });\n }\n\n public scrollToTop() {\n this.viewport().nativeElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n overflow: 'hidden',\n height: this.height(),\n width: this.width(),\n\n ...this.theme.colorPair(this.color()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.border(this.border()),\n });\n });\n\n protected viewportClassName = computed(() => {\n const palette = this.theme.colors();\n const thumbColor = palette['on-primary-surface'];\n const trackColor = palette['primary-surface'];\n const thickness = this.appearance() === 'standard' ? 13 : 8;\n\n return css([\n {\n height: '100%',\n width: '100%',\n overflow: 'auto',\n\n '&::-webkit-scrollbar': {\n width: thickness,\n height: thickness,\n },\n\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: thumbColor,\n borderRadius: 7,\n border: `3px solid ${trackColor}`,\n boxSizing: 'border-box',\n },\n\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n },\n\n // Firefox has no ::-webkit-scrollbar support; fall back to the\n // standard scrollbar properties there.\n '@supports not selector(::-webkit-scrollbar)': {\n scrollbarWidth: this.appearance() === 'standard' ? 'auto' : 'thin',\n scrollbarColor: `${thumbColor} ${trackColor}`,\n },\n },\n this.appearance() === 'standard' && {\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n ...this.theme.border('quaternary'),\n },\n },\n ]);\n });\n\n protected contentClassName = computed(() =>\n css({\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n\n '&.isVerticallyScrollable': {\n paddingRight: this.verticalScrollPadding(),\n },\n })\n );\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const viewport = this.viewport().nativeElement;\n const content = this.content().nativeElement;\n\n const updateScrollable = () => {\n const scrollable = viewport.scrollHeight > viewport.clientHeight;\n if (scrollable !== this.isVerticallyScrollable()) {\n this.isVerticallyScrollable.set(scrollable);\n this.scrollable.emit(scrollable);\n }\n };\n\n const observer = new ResizeObserver(updateScrollable);\n observer.observe(viewport);\n observer.observe(content);\n destroyRef.onDestroy(() => observer.disconnect());\n\n updateScrollable();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource, SortDirection } from '../../cdk';\nimport { UniSymbolComponent } from '../symbol/symbol.component';\n\n@Component({\n selector: 'uni-sort-header',\n imports: [UniSymbolComponent],\n templateUrl: './sort-header.component.html',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSortHeaderComponent<T> {\n column = input<keyof T>();\n datasource = input<UniDatasource<T>>();\n\n // A real <button> makes sorting keyboard-operable (Enter/Space) for free\n protected readonly buttonClass = css({\n all: 'unset',\n cursor: 'pointer',\n display: 'inline-block',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 2,\n },\n });\n\n direction = computed(() => {\n const ds = this.datasource();\n if (!ds) return 'indet';\n\n return ds.sortColumn() === this.column() ? ds.sortDirection() : 'indet';\n });\n\n protected readonly className = computed(() => {\n return css({\n cursor: 'pointer',\n position: 'relative',\n height: 24,\n\n '& .sort-icon': {\n position: 'absolute',\n right: -24,\n top: -4,\n height: 24,\n width: 24,\n\n transition: 'all 350ms ease-in-out',\n transform: 'rotate(0)',\n },\n\n '& .sort-icon.asc': {\n transform: 'rotate(-180deg)',\n },\n\n '& .sort-icon.indet': {\n opacity: 0,\n transform: 'rotate(0)',\n },\n });\n });\n\n cycleSort() {\n const cycle: SortDirection[] = ['asc', 'desc', 'indet'];\n this.sortDatasource(cycle[cycle.indexOf(this.direction()) + 1] || cycle[0]);\n }\n\n sortDatasource(direction: SortDirection) {\n this.datasource()?.sortRecords({\n column: this.column(),\n direction,\n });\n }\n}\n","<button type=\"button\" [class]=\"buttonClass\" (click)=\"cycleSort()\">\n <ng-content></ng-content>\n <div class=\"sort-icon\" [class]=\"direction()\">\n <uni-symbol name=\"arrow_upward\" />\n </div>\n</button>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n output,\n signal,\n type TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniServerSideDatasource } from '../../cdk';\nimport { fadeIn, Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent, UniCenterComponent } from '../layout';\nimport { UniScrollAreaComponent } from '../scroll-area/scroll-area.component';\nimport { UniSortHeaderComponent } from '../sort-header/sort-header.component';\nimport { UniTextComponent } from '../text/text.component';\nimport { ColumnDefinition, type UniDataTableOptions } from './data-table.models';\n\n@Component({\n selector: 'uni-data-table',\n imports: [\n NgTemplateOutlet,\n UniBoxComponent,\n UniScrollAreaComponent,\n UniTextComponent,\n UniSortHeaderComponent,\n UniIconComponent,\n UniCenterComponent,\n ],\n templateUrl: './data-table.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataTable' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions> {\n datasource = input.required<UniDatasource<T>>();\n columns = input.required<ColumnDefinition<T>[]>();\n\n detailRowTemplate = input<TemplateRef<{ $implicit: T; index: number }>>();\n expandedIndex = signal<number | null>(null);\n\n useMultiSelect = input<boolean>(false);\n useRowClick = input<boolean>(true);\n highlight? = input<(row: T) => boolean>();\n\n height = input<string>();\n scrollable = signal(false);\n\n loadingOverlayClass = css({\n animation: 'fadeIn 350ms ease-in-out',\n '@keyframes fadeIn': { ...fadeIn },\n });\n\n rowSelect = output<T>();\n rowClick = output<T>();\n\n protected readonly tableClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n width: '100%',\n borderSpacing: 0,\n })\n );\n\n protected readonly headerClass = computed(() =>\n css({\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly footerClass = computed(() =>\n css({\n borderTop: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly thClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().thColor),\n\n position: 'sticky',\n top: 0,\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n\n ...this.theme.padding(this.componentOptions().thPadding),\n\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().thVerticalBorder),\n },\n '&:last-child.scrollable': {\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n },\n })\n );\n\n protected readonly tdClass = computed(() =>\n css([\n {\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().tdVerticalBorder),\n },\n '&:last-child.scrollable': {\n // The last scrollable column allows space for the scrollbar.\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n ...this.theme.colorPair(this.componentOptions().tdStickyColor),\n },\n '&:not(.template)': {\n // Allow templates to define their own styles\n ...this.theme.padding(this.componentOptions().tdPadding),\n },\n },\n ])\n );\n\n protected readonly trClass = computed(() =>\n css(\n {\n '& td': {\n ...this.theme.backgroundColor('transparent'),\n transition: 'all 0.28s ease',\n },\n ':not(:last-child) td': {\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n },\n this.useRowClick() && {\n '&:hover td': {\n ...this.theme.backgroundColor(this.componentOptions().rowHoverColor),\n cursor: 'pointer',\n },\n }\n )\n );\n\n protected readonly detailRowClass = computed(() =>\n css({\n display: 'table-row',\n visibility: 'hidden',\n '&.expanded': {\n visibility: 'visible',\n },\n '& td': {\n padding: 0,\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n '& td .detail-content-wrapper': {\n display: 'grid',\n gridTemplateRows: '0fr',\n transition: 'grid-template-rows 0.3s ease',\n overflow: 'hidden',\n\n '& .detail-inner': {\n minHeight: 0,\n },\n },\n '&.expanded td .detail-content-wrapper': {\n gridTemplateRows: '1fr',\n },\n })\n );\n\n // Loading state detection\n isLoading = linkedSignal(() => {\n const datasource = this.datasource();\n if (datasource && datasource instanceof UniServerSideDatasource) {\n // For server-side datasource, use the built-in loading state\n return datasource.isLoading();\n } else {\n // For client-side datasource, no loading state needed\n return false;\n }\n });\n\n toggleRow(index: number) {\n this.expandedIndex.update((current) => (current === index ? null : index));\n }\n\n handleRowClick(row: T, index: number) {\n this.rowClick.emit(row);\n\n this.toggleRow(index);\n }\n\n /** aria-sort value for a column header, or null when the column is unsorted. */\n protected ariaSort(column: ColumnDefinition<T>): 'ascending' | 'descending' | null {\n const ds = this.datasource();\n if (!ds || ds.sortColumn() !== column.columnDef) return null;\n const direction = ds.sortDirection();\n return direction === 'asc' ? 'ascending' : direction === 'desc' ? 'descending' : null;\n }\n\n isHighlighted(row: T) {\n const callback = this.highlight && this.highlight();\n if (!callback) return false;\n return callback(row);\n }\n\n protected readonly String = String;\n\n handleScrollable(scrollable: boolean) {\n this.scrollable.set(scrollable);\n }\n\n getBorder(name: string | undefined) {\n return name ? this.theme.theme().borders[name] : undefined;\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div\n box-layout\n [color]=\"componentOptions().color\"\n [border]=\"componentOptions().border\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [elevation]=\"componentOptions().elevation\"\n overflow=\"hidden\"\n >\n <div\n box-layout\n [padding]=\"componentOptions().headerPadding\"\n [color]=\"componentOptions().headerColor\"\n [class]=\"headerClass()\"\n >\n <ng-content select=\"data-table-header\"></ng-content>\n </div>\n\n <div box-layout [height]=\"height()\" position=\"relative\" [attr.aria-busy]=\"isLoading()\">\n <div scroll-area [verticalScrollPadding]=\"0\" (scrollable)=\"handleScrollable($event)\">\n <table [class]=\"tableClass()\">\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th\n scope=\"col\"\n [attr.aria-sort]=\"ariaSort(column)\"\n [class]=\"thClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [style.text-align]=\"column.textAlign\"\n >\n <uni-sort-header [datasource]=\"datasource()\" [column]=\"column.columnDef\">\n <span uni-text [typeface]=\"componentOptions().thTextRole\">{{ column.header }}</span>\n </uni-sort-header>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (record of ds.records(); track record; let i = $index) {\n <tr\n [class]=\"trClass()\"\n [attr.tabindex]=\"useRowClick() ? 0 : null\"\n (click)=\"handleRowClick(record, $index)\"\n (keydown.enter)=\"useRowClick() && handleRowClick(record, $index)\"\n (keydown.space)=\"\n useRowClick() && handleRowClick(record, $index);\n useRowClick() && $event.preventDefault()\n \"\n >\n @for (column of columns(); track column) {\n <td\n [class]=\"tdClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [class.template]=\"!!column.template\"\n [style.text-align]=\"column.textAlign\"\n >\n @if (column.template) {\n <ng-container\n [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"record\"\n ></ng-container>\n } @else {\n <span uni-text [typeface]=\"componentOptions().tdTextRole\">\n @if (!column.cell) {\n {{ record[column.columnDef] }}\n } @else {\n {{ column.cell(record) }}\n }\n </span>\n }\n </td>\n }\n </tr>\n @if (detailRowTemplate()) {\n <!-- Collapsed detail rows are inert: invisible to screen\n readers and unreachable by keyboard until expanded -->\n <tr\n [class]=\"detailRowClass()\"\n [class.expanded]=\"expandedIndex() === $index\"\n [attr.inert]=\"expandedIndex() === $index ? null : ''\"\n >\n <td [attr.colspan]=\"columns().length\">\n <div class=\"detail-content-wrapper\">\n <div class=\"detail-inner\">\n <ng-container\n [ngTemplateOutlet]=\"detailRowTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: record,\n index: i,\n }\"\n ></ng-container>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Loading Overlay -->\n @if (isLoading()) {\n <div\n uni-center-layout\n role=\"status\"\n aria-label=\"Loading\"\n position=\"absolute\"\n [inset]=\"0\"\n [backgroundColor]=\"componentOptions().loadingOverlayColor\"\n [class]=\"loadingOverlayClass\"\n zIndex=\"overlay\"\n >\n <!-- Loading Spinner -->\n <div\n uni-box-layout\n [height]=\"componentOptions().loadingSpinnerSize\"\n [width]=\"componentOptions().loadingSpinnerSize\"\n >\n <uni-icon name=\"spinner\" [color]=\"componentOptions().loadingSpinnerColor\" />\n </div>\n </div>\n }\n </div>\n\n <div\n box-layout\n [padding]=\"componentOptions().footerPadding\"\n [color]=\"componentOptions().footerColor\"\n [class]=\"footerClass()\"\n >\n <ng-content select=\"data-table-footer\"></ng-content>\n </div>\n </div>\n}\n","/**\n * UniDataTableComponent Barrel File\n *\n * This file exports all public-facing elements of the data-table component.\n */\n\nexport { UniDataTableComponent } from './data-table.component';\nexport type { ColumnDefinition, UniDataTableOptions } from './data-table.models';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button';\nimport type { UniDialogOptions } from './dialog.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'dialog[uni-dialog]',\n imports: [UniIconButtonComponent, CommonModule],\n template: `\n @if (defaultCloseButton()) {\n <button\n icon-button\n iconName=\"close\"\n variant=\"ghost\"\n (click)=\"close()\"\n [class]=\"closeButton\"\n size=\"md\"\n >\n Close\n </button>\n }\n <ng-content></ng-content>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialog' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-labelledby]': 'hasTitle() ? titleId : null',\n '[attr.aria-label]': 'ariaLabel() ?? null',\n '[class]': 'className()',\n '(click)': 'backdropClick($event)',\n '(cancel)': 'escapeCancel($event)',\n '(animationend)': 'closingAnimation($event)',\n },\n})\nexport class UniDialogComponent extends BaseComponent<UniDialogOptions> {\n private elem = inject(ElementRef);\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>(false);\n\n /**\n * Accessible name for dialogs without a DialogHeader. When a DialogHeader\n * is present it labels the dialog automatically via aria-labelledby.\n */\n ariaLabel = input<string>();\n\n /**\n * CSS selector for the element to focus when the dialog opens. Defaults to\n * the browser's native behavior (first focusable element).\n */\n initialFocus = input<string>();\n\n defaultCloseButton = input<boolean>();\n\n /** Id referenced by aria-labelledby; DialogHeader attaches it to the title. */\n readonly titleId = uniqueId('uni-dialog-title');\n readonly hasTitle = signal(false);\n\n /** Emits true once opened and false once the closing animation finishes. */\n showing = output<boolean>();\n\n constructor() {\n super();\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n private get _dialog(): HTMLDialogElement {\n return this.elem.nativeElement;\n }\n\n protected readonly className = computed(() =>\n css([\n {\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.border(this.componentOptions().border),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.theme.padding(this.componentOptions().padding || 'none'),\n\n '&::backdrop': {\n ...this.componentOptions().backdrop,\n },\n\n '&[open], &::backdrop': {\n animation: `${this.dialogFadeIn} ease-in 350ms`,\n },\n\n '&[closing], &[closing]::backdrop': {\n animation: `${this.dialogFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected backdropClick(event: Event) {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') {\n this.close();\n }\n }\n\n /**\n * Escape fires the native 'cancel' event, which would close the dialog\n * instantly and leave our show-state out of sync. Route it through the\n * animated close() instead.\n */\n protected escapeCancel(event: Event) {\n event.preventDefault();\n this.close();\n }\n\n protected closingAnimation(e: AnimationEvent) {\n // Close the dialog if the animation is finished\n if (e.animationName.includes(this.dialogFadeOut)) {\n this._dialog.close();\n this._dialog.removeAttribute('closing');\n this.showing.emit(false);\n }\n }\n\n closeButton = css({\n position: 'absolute',\n right: 12,\n top: 12,\n });\n\n private dialogFadeIn = keyframes({ ...fadeIn });\n private dialogFadeOut = keyframes({ ...fadeOut });\n\n open() {\n if (this._dialog.open) return;\n\n this._dialog.removeAttribute('closing');\n this._dialog.showModal();\n\n // Native showModal focuses the first focusable element; allow consumers\n // to direct initial focus somewhere more useful (e.g. past the close\n // button, onto a primary action or first form field).\n const selector = this.initialFocus();\n if (selector) {\n this._dialog.querySelector<HTMLElement>(selector)?.focus();\n }\n\n this.show.set(true);\n this.showing.emit(true);\n }\n\n close() {\n // Strict check: outside a real <dialog> host (e.g. unit tests) `open`\n // is undefined and close() should still run.\n if (this._dialog.open === false) return;\n\n this._dialog.setAttribute('closing', 'true');\n this.show.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniButtonComponent } from '../../button';\nimport { UniRowComponent } from '../../layout';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { JustifyContent, NullableSize, Size, Variant } from '@uni-design-system/uni-core';\nimport type { UniDialogButtonsOptions } from './dialog-buttons.model';\n\n@Component({\n selector: '[uni-dialog-buttons], [dialog-buttons]',\n imports: [UniRowComponent, UniButtonComponent],\n templateUrl: './dialog-buttons.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogButtons' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDialogButtonsComponent extends BaseComponent<UniDialogButtonsOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n confirmButtonText = input<string>();\n confirmButtonVariant = input<Variant>();\n cancelButtonText = input<string>();\n cancelButtonVariant = input<Variant>();\n disableConfirm = input<boolean>();\n padding = input<NullableSize>();\n paddingBottom = input<NullableSize>();\n justifyContent = input<JustifyContent>();\n\n confirmed = output();\n\n // Inputs win over theme options; the trailing literal is the legacy default.\n protected confirmVariant = computed(\n () => this.confirmButtonVariant() ?? this.componentOptions().confirmButtonVariant ?? 'primary'\n );\n protected cancelVariant = computed(\n () => this.cancelButtonVariant() ?? this.componentOptions().cancelButtonVariant ?? 'warn'\n );\n protected paddingValue = computed(() => this.padding() ?? this.componentOptions().padding ?? 'md');\n protected paddingBottomValue = computed(\n () => this.paddingBottom() ?? this.componentOptions().paddingBottom ?? 'lg'\n );\n protected justifyContentValue = computed(\n () => this.justifyContent() ?? this.componentOptions().justifyContent ?? 'center'\n );\n protected gapValue = computed(() => this.componentOptions().gap ?? 'md');\n protected buttonSize = computed<Size>(() => this.componentOptions().buttonSize ?? 'lg');\n\n protected readonly className = computed(() =>\n css([\n this.componentTheme().fixed,\n this.componentOptions().stretch && {\n width: '100%',\n minWidth: '100%',\n '& > button': { flex: '1 1 50%', maxWidth: '50%' },\n },\n ])\n );\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [gap]=\"gapValue()\"\n [padding]=\"paddingValue()\"\n [paddingBottom]=\"paddingBottomValue()\"\n [justifyContent]=\"justifyContentValue()\"\n [flexDirection]=\"componentOptions().reverseOrder ? 'row-reverse' : 'row'\"\n [class]=\"className()\"\n>\n <button\n text-button\n [variant]=\"confirmVariant()\"\n [size]=\"buttonSize()\"\n (click)=\"confirmed.emit(); closeDialog()\"\n [disable]=\"disableConfirm()\"\n >\n {{ confirmButtonText() || 'Confirm' }}\n </button>\n <button text-button [variant]=\"cancelVariant()\" [size]=\"buttonSize()\" (click)=\"closeDialog()\">\n {{ cancelButtonText() || 'Cancel' }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { UniDialogHeaderOptions } from './dialog-header.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-dialog-header]',\n imports: [UniBoxComponent, UniIconButtonComponent, UniTextComponent, UniRowComponent],\n templateUrl: './dialog-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogHeader' }],\n})\nexport class UniDialogHeaderComponent extends BaseComponent<UniDialogHeaderOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n /** Attached to the title element so the parent dialog is labelled by it. */\n protected readonly titleId = this.dialog?.titleId ?? null;\n\n constructor() {\n super();\n this.dialog?.hasTitle.set(true);\n }\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [color]=\"componentOptions().color\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [height]=\"componentOptions().height\"\n alignItems=\"center\"\n [paddingHorizontal]=\"componentOptions().paddingHorizontal ?? 'sm'\"\n>\n <!-- Balance spacer: only centered titles need to offset the close button. -->\n @if ((componentOptions().textAlign || 'center') === 'center') {\n <div box-layout [width]=\"26\"></div>\n }\n <div box-layout [grow]=\"1\" [attr.id]=\"titleId\">\n <span uni-text\n [typeface]=\"componentOptions().textRole\"\n [color]=\"componentOptions().textColor\"\n display=\"block\"\n [align]=\"componentOptions().textAlign || 'center'\"\n ><ng-content></ng-content\n ></span>\n </div>\n <button\n icon-button\n [iconName]=\"componentOptions().closeButtonIcon\"\n [symbolName]=\"componentOptions().closeButtonSymbol\"\n variant=\"ghost\"\n (click)=\"closeDialog()\"\n [size]=\"componentOptions().closeButtonSize || 'md'\"\n >\n Close\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport type { Border, Orientation } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-divider',\n imports: [],\n template: ``,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDividerComponent {\n themeService = inject(ThemeService);\n\n orientation = input<Orientation>('horizontal');\n border = input<Border>('primary');\n\n protected readonly className = computed(() => {\n return css([\n {\n display: 'block',\n },\n this.orientation() === 'horizontal' && {\n ...this.themeService.borderBottom(this.border()),\n width: '100%',\n },\n this.orientation() === 'vertical' && {\n ...this.themeService.borderLeft(this.border()),\n height: '100%',\n },\n ]);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { DrawerMode, DrawerPosition, UniDrawerOptions } from './drawer.model';\n\n/**\n * Navigation drawer with two modes sharing one content slot:\n *\n * - `side` — an in-flow `<aside>` that pushes content (dashboard sidenav);\n * opening/closing animates its width, and the divider border primitive\n * separates it from the page.\n * - `over` — a native `<dialog>` in the top layer: focus trap, Escape and\n * scrim backdrop come from the platform (same machinery as `uni-dialog`),\n * sliding in from its edge.\n *\n * Surface, width, divider, elevation, padding and backdrop all resolve from\n * `drawer` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-drawer',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'drawer' }],\n template: `\n <ng-template #content><ng-content /></ng-template>\n @if (mode() === 'side') {\n <aside [class]=\"sideClass()\" [attr.aria-hidden]=\"open() ? null : 'true'\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </aside>\n } @else {\n <!-- Click handles the ::backdrop only (target check); keyboard closing\n is the native dialog cancel event, and focus is trapped by\n showModal — the element needs no tabindex of its own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #overlay\n [class]=\"overClass()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onBackdropClick($event)\"\n (cancel)=\"onCancel($event)\"\n (animationend)=\"onAnimationEnd($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </dialog>\n }\n `,\n})\nexport class UniDrawerComponent extends BaseComponent<UniDrawerOptions> {\n /** Two-way bindable open state: [(open)]. */\n readonly open = model(false);\n\n mode = input<DrawerMode>('side');\n position = input<DrawerPosition>('start');\n /** Accessible name for the overlay mode's dialog. */\n ariaLabel = input('Navigation');\n\n protected readonly contentTemplate = viewChild.required<TemplateRef<unknown>>('content');\n private readonly overlay = viewChild<ElementRef<HTMLDialogElement>>('overlay');\n\n constructor() {\n super();\n effect(() => {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n if (!dialog.open) {\n dialog.removeAttribute('closing');\n dialog.showModal();\n }\n } else if (dialog.open) {\n // Slide out first; the dialog closes when the animation reports done.\n dialog.setAttribute('closing', 'true');\n }\n });\n }\n\n protected onBackdropClick(event: Event): void {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') this.open.set(false);\n }\n\n /** Route Escape through the animated close, keeping `open` in sync. */\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onAnimationEnd(event: AnimationEvent): void {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog || !dialog.hasAttribute('closing')) return;\n if (event.animationName.includes(this.slideOut())) {\n dialog.close();\n dialog.removeAttribute('closing');\n }\n }\n\n private readonly edge = computed(() => (this.position() === 'start' ? '-100%' : '100%'));\n\n private readonly slideIn = computed(() =>\n keyframes({ from: { transform: `translateX(${this.edge()})` }, to: { transform: 'translateX(0)' } })\n );\n private readonly slideOut = computed(() =>\n keyframes({ from: { transform: 'translateX(0)' }, to: { transform: `translateX(${this.edge()})` } })\n );\n\n protected readonly sideClass = computed(() => {\n const options = this.componentOptions();\n const width = options.width ?? 280;\n const start = this.position() === 'start';\n return css({\n display: 'block',\n boxSizing: 'border-box',\n height: '100%',\n flex: 'none',\n overflowX: 'hidden',\n overflowY: 'auto',\n transition: 'width 0.25s ease, visibility 0.25s',\n ...this.theme.colorPair(options.color),\n ...(start\n ? this.theme.borderRight(options.divider)\n : this.theme.borderLeft(options.divider)),\n ...(this.open()\n ? { width, visibility: 'visible', ...this.theme.padding(options.padding) }\n : { width: 0, visibility: 'hidden', padding: 0, border: 'none' }),\n });\n });\n\n protected readonly overClass = computed(() => {\n const options = this.componentOptions();\n const start = this.position() === 'start';\n return css({\n boxSizing: 'border-box',\n width: options.width ?? 280,\n maxWidth: '90vw',\n height: '100dvh',\n maxHeight: '100dvh',\n border: 'none',\n margin: start ? '0 auto 0 0' : '0 0 0 auto',\n overflowY: 'auto',\n ...this.theme.colorPair(options.color),\n ...this.theme.padding(options.padding),\n ...this.theme.boxShadow(options.elevation),\n '&::backdrop': { ...options.backdrop },\n '&[open]': { animation: `${this.slideIn()} 250ms ease-out` },\n '&[closing]': { animation: `${this.slideOut()} 250ms ease-in` },\n });\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniBoxComponent } from '../layout';\nimport type { UniDropdownOptions } from './dropdown.model';\nimport type {\n Border,\n ContainerColorToken,\n NullableSize,\n Radius,\n Shadow,\n} from '@uni-design-system/uni-core';\nimport {\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type AnchorOffset,\n type Placement,\n} from '../../cdk';\n\nexport type AriaHasPopup = 'menu' | 'listbox' | 'dialog' | 'grid' | 'tree' | 'true';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-dropdown',\n imports: [UniBoxComponent],\n template: `\n <!-- 1. The native 'popover' attribute brings it to the top layer with native light-dismiss -->\n <div #dropdown popover=\"auto\" [id]=\"popoverId\" [class]=\"dropdownClass()\">\n <div\n box-layout\n [border]=\"border() ?? componentOptions().border\"\n [borderRadius]=\"borderRadius() ?? componentOptions().borderRadius\"\n [paddingVertical]=\"paddingVertical()\"\n [paddingHorizontal]=\"paddingHorizontal()\"\n [color]=\"color() ?? componentOptions().color\"\n [shadow]=\"shadow() ?? componentOptions().shadow\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dropdown' }],\n})\nexport class UniDropdownComponent\n extends BaseComponent<UniDropdownOptions>\n implements OnInit, OnDestroy\n{\n private renderer = inject(Renderer2);\n private delay = 100;\n\n // Reactively track visibility status using Signals\n showing = signal<boolean>(false);\n\n trigger = input.required<HTMLElement>();\n placement = input<Placement>('bottom-start');\n offset = input<AnchorOffset>({ mainAxis: 4, alignmentAxis: 12 });\n\n /** CSS anchor-name linking the trigger to the popover panel. */\n private readonly anchorName = newAnchorName();\n\n /**\n * Value for aria-haspopup on the trigger, describing what the popover\n * contains (e.g. 'menu' for Menu, 'dialog' for rich content). When unset,\n * only aria-expanded/aria-controls are managed.\n */\n ariaHasPopup = input<AriaHasPopup | null>(null);\n\n /** Document-unique id of the popover element, for aria-controls wiring. */\n readonly popoverId = uniqueId('uni-dropdown');\n\n paddingVertical = input<NullableSize>();\n paddingHorizontal = input<NullableSize>();\n\n // Per-instance panel-chrome overrides; undefined falls back to the theme's\n // `dropdown` options, so hosts like uni-menu can restyle their panel\n // without forking the shared dropdown entry.\n border = input<Border | undefined>();\n borderRadius = input<Radius | undefined>();\n shadow = input<Shadow | undefined>();\n color = input<ContainerColorToken | undefined>();\n\n dropdownShowing = output<boolean>();\n dropdownHiding = output<boolean>();\n\n @ViewChild('dropdown', { static: true })\n dropdownRef!: ElementRef<HTMLDivElement>;\n\n private get _trigger(): HTMLElement {\n return this.trigger();\n }\n private get _dropdown(): HTMLDivElement {\n return this.dropdownRef.nativeElement;\n }\n\n private transformOriginMap: Record<Placement, string> = {\n top: 'bottom center',\n right: 'center left',\n bottom: 'top center',\n left: 'center right',\n 'top-start': 'bottom left',\n 'top-end': 'bottom right',\n 'right-start': 'top left',\n 'right-end': 'bottom left',\n 'bottom-start': 'top left',\n 'bottom-end': 'top right',\n 'left-start': 'top right',\n 'left-end': 'bottom right',\n };\n\n dropdownClass = computed(() => {\n const currentPlacement = this.placement();\n\n return css([\n {\n // Reset browser agent default popover styles\n border: 'none',\n background: 'transparent',\n padding: 0,\n overflow: 'visible',\n width: 'max-content',\n\n // Native anchor positioning: the browser keeps the panel attached to\n // the trigger (no scroll/resize listeners needed)\n ...anchorStyles(this.anchorName, currentPlacement, this.offset()),\n\n // 2. Animate discrete properties across top layer layout contexts\n transitionProperty: 'transform, opacity, display, overlay',\n transitionDuration: `${this.delay}ms`,\n transitionTimingFunction: 'linear',\n transitionBehavior: 'allow-discrete',\n\n // Hidden State (Closed)\n opacity: 0,\n transform: 'scale(0.8)',\n transformOrigin: this.transformOriginMap[currentPlacement],\n\n // 3. Active state styling controlled via the native browser pseudo-class\n ['&:popover-open']: {\n opacity: 1,\n transform: 'scale(1)',\n },\n\n // 4. Starting-style rules what properties animate *from* when transitioning in\n ['@starting-style']: {\n ['&:popover-open']: {\n opacity: 0,\n transform: 'scale(0.8)',\n },\n },\n },\n ]);\n });\n\n /** The element that receives focus and carries the ARIA popup state. */\n private get _focusTarget(): HTMLElement {\n return resolveFocusTarget(this._trigger);\n }\n\n ngOnInit(): void {\n // Single native click binding to manage open/close commands\n this.renderer.listen(this._trigger, 'click', (e: Event) => {\n e.stopPropagation();\n this.toggleDropdown();\n });\n\n // Anchor the popover panel to the trigger element\n this.renderer.setStyle(this._trigger, 'anchor-name', this.anchorName);\n\n // Wire the ARIA popup contract onto the focusable trigger element\n const focusTarget = this._focusTarget;\n this.renderer.setAttribute(focusTarget, 'aria-expanded', 'false');\n this.renderer.setAttribute(focusTarget, 'aria-controls', this.popoverId);\n if (this.ariaHasPopup()) {\n this.renderer.setAttribute(focusTarget, 'aria-haspopup', this.ariaHasPopup()!);\n }\n\n // Sync state if user invokes light-dismiss via outside click or Escape key\n this.renderer.listen(this._dropdown, 'toggle', (event: any) => {\n const isOpened = event.newState === 'open';\n this.showing.set(isOpened);\n this.renderer.setAttribute(this._focusTarget, 'aria-expanded', `${isOpened}`);\n\n if (isOpened) {\n this.dropdownShowing.emit(true);\n } else {\n this.dropdownHiding.emit(true);\n this.restoreFocus();\n }\n });\n }\n\n /**\n * Returns focus to the trigger when the popover closes while focus was\n * inside it (or was dropped on <body> by the top layer closing), so\n * keyboard users are never stranded (WCAG 2.4.3).\n */\n private restoreFocus() {\n const active = document.activeElement;\n if (active === document.body || (active && this._dropdown.contains(active))) {\n this._focusTarget.focus();\n }\n }\n\n toggleDropdown() {\n if (this.showing()) {\n this._dropdown.hidePopover();\n } else {\n this._dropdown.showPopover();\n }\n }\n\n hideDropdown() {\n this._dropdown.hidePopover();\n }\n\n ngOnDestroy() {\n try {\n this._dropdown.hidePopover();\n } catch {\n // popover was already closed or detached\n }\n }\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport {\n collapseFadeOut,\n EXPAND_DEFAULT_SPEED,\n expandDuration,\n expandFadeIn,\n} from '@uni-design-system/uni-core';\nimport { motionSafe, uniqueId } from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniExpandOptions } from './expand.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand',\n imports: [],\n providers: [{ provide: COMPONENT_NAME, useValue: 'expand' }],\n template: `@if (!collapsed()) {\n <div\n [animate.enter]=\"ready() ? expandAnimation : ''\"\n [animate.leave]=\"collapseAnimation\"\n [class]=\"expandClassName\"\n [style.animation-duration]=\"cssDuration()\"\n >\n <div #content [class]=\"contentClassName\">\n <ng-content></ng-content>\n </div>\n </div>\n }`,\n host: {\n '[attr.id]': 'regionId',\n '[class]': 'hostClassName',\n },\n})\nexport class UniExpandComponent extends BaseComponent<UniExpandOptions> {\n collapsed = model(true);\n\n /**\n * Exact per-instance duration in seconds. Bypasses size-aware scaling —\n * an explicit number means the consumer wants that number. Omitted, the\n * duration derives from the `expand` theme options' `transitionSpeed`\n * scaled by content height (see `duration`).\n */\n transitionSpeed = input<number>();\n\n /** Referenced by the controlling toggle's aria-controls. */\n readonly regionId = uniqueId('uni-expand');\n\n /**\n * animate.enter has no initial-render guard, so an expand initialized with\n * collapsed = false would play the enter animation on load. Enable\n * animations only after the first render, i.e. on real state changes.\n */\n protected readonly ready = signal(false);\n\n private readonly contentRef = viewChild<ElementRef<HTMLElement>>('content');\n\n /**\n * Last observed content height. Retained after collapse (the observer\n * disconnects but the signal keeps its value) so the leave animation and\n * the next reveal are timed to the real size. Until the first measurement\n * lands — one frame into the very first reveal — the duration falls back\n * to the unscaled token; CSS remaps animation progress when\n * `animation-duration` updates, so the retime is imperceptible that early.\n */\n private readonly contentHeight = signal<number | undefined>(undefined);\n\n constructor() {\n super();\n afterNextRender(() => this.ready.set(true));\n afterRenderEffect((onCleanup) => {\n const content = this.contentRef()?.nativeElement;\n if (!content) return;\n const observer = new ResizeObserver(() => this.contentHeight.set(content.scrollHeight));\n observer.observe(content);\n onCleanup(() => observer.disconnect());\n });\n }\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n\n /**\n * The resolved duration in seconds: the `transitionSpeed` input verbatim,\n * or the `expand` theme options' `transitionSpeed` scaled by content height\n * (`expandDuration` — √-of-height, clamped) so short regions stay snappy\n * and tall ones aren't rushed. The public sync hook: Expand Area binds this\n * to its toggle so the chevron rotates on the region's clock, and consumers\n * can bind adjacent styling the same way\n * (`[style.transition-duration]=\"expand.duration() + 's'\"`).\n */\n readonly duration = computed(() => {\n const override = this.transitionSpeed();\n if (override !== undefined) return override;\n const speed = this.componentOptions().transitionSpeed ?? EXPAND_DEFAULT_SPEED;\n const height = this.contentHeight();\n return height === undefined ? speed : expandDuration(height, speed);\n });\n\n protected readonly cssDuration = computed(() => `${this.duration()}s`);\n\n /**\n * A custom element is `display: inline` by default, which would lay the\n * animated grid out as a block-in-inline box and distort the revealed\n * content's spacing. Every consumer would otherwise have to write\n * `uni-expand { display: block }` themselves.\n */\n protected readonly hostClassName = css({\n display: 'block',\n });\n\n expandClassName = css({\n display: 'grid',\n });\n\n contentClassName = css({\n minHeight: 0,\n });\n\n private expand = keyframes({ ...expandFadeIn });\n private collapse = keyframes({ ...collapseFadeOut });\n\n /**\n * Reveal is motion-safe (WCAG 2.3.3): under `prefers-reduced-motion` these\n * classes are empty, so the region appears and disappears instantly.\n * `overflow: hidden` rides inside the guard deliberately — it exists to clip\n * the growing box mid-animation, and leaving it applied at rest would crop\n * decorations that legitimately paint outside the region (focus rings,\n * offset outlines). Angular removes a leaving node on the next frame when it\n * detects no animation, so nothing hangs when the guard strips them.\n *\n * The classes carry the default duration; the animated div's\n * `[style.animation-duration]` binding overrides it with the resolved\n * `duration`, so the classes stay static while timing tracks the theme and\n * the content's size through signals alone.\n */\n expandAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.expand} ease-in-out ${EXPAND_DEFAULT_SPEED}s`,\n }),\n );\n\n collapseAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.collapse} ease-in-out ${EXPAND_DEFAULT_SPEED}s`,\n }),\n );\n}\n","/**\n * UniExpandComponent Barrel File\n *\n * This file exports all public-facing elements of the expand component.\n */\n\nexport { UniExpandComponent } from './expand.component';\nexport type { UniExpandOptions } from './expand.model';\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { EXPAND_DEFAULT_SPEED } from '@uni-design-system/uni-core';\nimport { motionSafe } from '../../cdk';\nimport { ThemeService } from '../../theming';\nimport type { UniExpandOptions } from '../expand/expand.model';\nimport { UniIconComponent } from '../icon/icon.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniTextComponent } from '../text/text.component';\n\n/**\n * Trigger for a {@link UniExpandComponent} region.\n *\n * Two shapes, chosen by whether `label` is set:\n * - **Icon only** (default) — the bare chevron, sized for a Card Header.\n * - **Labelled** — chevron plus a label and optional muted sublabel, as a\n * single full-width button. Most real disclosures need a name for the\n * section, and building that row by hand is the thing this saves; it also\n * makes the label the button's accessible name rather than adjacent text.\n */\n@Component({\n selector: 'uni-expand-toggle',\n imports: [UniIconComponent, UniIconButtonComponent, UniTextComponent],\n template: `\n @if (label()) {\n <button\n type=\"button\"\n [class]=\"triggerClassName\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n <uni-icon name=\"chevronUp\" size=\"1em\" />\n <span [class]=\"labelClassName\">\n <span uni-text=\"label\">{{ label() }}</span>\n @if (sublabel()) {\n <span uni-text=\"caption\" color=\"on-background-variant\">{{ sublabel() }}</span>\n }\n </span>\n </button>\n } @else {\n <button\n icon-button\n iconName=\"chevronUp\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n {{ collapsed() ? 'Expand' : 'Collapse' }}\n </button>\n }\n `,\n host: {\n '[class]': 'className()',\n '[attr.toggled]': 'collapsed() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniExpandToggleComponent {\n collapsed = model(true);\n\n /** Id of the Expand region this toggle controls (see UniExpandComponent.regionId). */\n ariaControls = input<string>();\n\n /** Names the region. Setting it switches the toggle to its labelled shape. */\n label = input<string>();\n\n /** Muted qualifier beside the label (\"for POs & custom orders\"). Needs `label`. */\n sublabel = input<string>();\n\n /**\n * Rotation duration in seconds. Expand Area binds the region's resolved\n * `duration` here so chevron and reveal share one clock even when the\n * region is size-scaled or overridden per instance.\n */\n transitionSpeed = input<number>();\n\n /** Fallback clock when no `transitionSpeed` is bound: the `expand` theme options' `transitionSpeed`. */\n private readonly expandOptions = inject(ThemeService).getComponentOptions<UniExpandOptions>('expand');\n\n private readonly speed = computed(\n () => this.transitionSpeed() ?? this.expandOptions().transitionSpeed ?? EXPAND_DEFAULT_SPEED,\n );\n\n /**\n * The glyph rotates, never the host.\n *\n * The host is taller than the glyph (an inline-level box reserves baseline\n * descender space), so spinning it about its own centre walks the glyph\n * off-centre. `uni-icon` is a centred square sized to the glyph, which makes\n * it the only box here that rotates symmetrically. It also keeps a label\n * from turning upside down with the chevron.\n */\n private readonly glyphStyles = computed(() => ({\n '& uni-icon': {\n flexShrink: 0,\n ...motionSafe({\n transition: `transform ${this.speed()}s ease-in-out`,\n }),\n transform: this.collapsed() ? 'rotate(-180deg)' : 'rotate(0)',\n },\n }));\n\n protected readonly className = computed(() => {\n if (this.label()) {\n return css({ display: 'block', ...this.glyphStyles() });\n }\n\n return css({\n display: 'inline-flex',\n cursor: 'pointer',\n ...this.glyphStyles(),\n });\n });\n\n protected readonly triggerClassName = css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n width: '100%',\n padding: 0,\n border: 0,\n background: 'none',\n font: 'inherit',\n color: 'inherit',\n textAlign: 'left',\n cursor: 'pointer',\n });\n\n protected readonly labelClassName = css({\n display: 'flex',\n alignItems: 'baseline',\n gap: 6,\n minWidth: 0,\n });\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, output, viewChild } from '@angular/core';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniExpandToggleComponent } from '../expand-toggle/expand-toggle.component';\nimport { UniExpandComponent } from '../expand/expand.component';\nimport { UniBoxComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand-area',\n imports: [UniBoxComponent, UniTextComponent, UniExpandToggleComponent, UniExpandComponent],\n template: `\n <div box-layout color=\"tertiary-surface\" borderRadius=\"sm\" border=\"quaternary\" overflow=\"hidden\">\n <div box-layout\n border=\"quaternary\"\n borderRadius=\"sm\"\n color=\"primary-surface\"\n style=\"margin-top: -1px; margin-left: -1px; margin-right: -1px\"\n [style.margin-bottom]=\"toggle.collapsed() ? '-1px' : 0\"\n justifyContent=\"space-between\"\n display=\"flex\"\n alignItems=\"center\"\n >\n <div box-layout [width]=\"36\"></div>\n <div box-layout paddingHorizontal=\"md\">\n <span uni-text=\"title-small\" display=\"block\">\n {{ title() }}\n </span>\n </div>\n\n <uni-expand-toggle\n #toggle\n style=\"display: inline-flex; margin: -2px\"\n [collapsed]=\"initCollapsed()\"\n [ariaControls]=\"expand.regionId\"\n [transitionSpeed]=\"expand.duration()\"\n />\n </div>\n\n <uni-expand #expand [collapsed]=\"toggle.collapsed()\">\n <div box-layout [padding]=\"padding()\">\n <ng-content></ng-content>\n </div>\n </uni-expand>\n </div>\n `,\n})\nexport class UniExpandAreaComponent {\n title = input.required<string>();\n initCollapsed = input(false, { transform: booleanAttribute });\n padding = input<NullableSize>('md');\n\n collapsed = output<boolean>();\n\n toggleRef = viewChild.required<UniExpandToggleComponent>('toggle');\n\n public toggleExpand() {\n this.toggleRef().toggle();\n }\n}\n","/**\n * UniExpandAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-area component.\n */\n\nexport { UniExpandAreaComponent } from './expand-area.component';\n","/**\n * UniExpandToggleComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-toggle component.\n */\n\nexport { UniExpandToggleComponent } from './expand-toggle.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { acceptableFile } from '../../cdk';\nimport { DragAndDropDirective } from '../../directives/drag-and-drop/drag-and-drop.directive';\nimport type { NullableSize, Radius, Variant } from '@uni-design-system/uni-core';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniBoxComponent, UniStackComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-file-drop-zone',\n imports: [\n DragAndDropDirective,\n UniBoxComponent,\n UniButtonComponent,\n UniStackComponent,\n UniTextComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './file-drop-zone.component.html',\n})\nexport class UniFileDropZoneComponent {\n selectedFile = signal<File | undefined>(undefined);\n selectedFileName = computed(() => this.selectedFile()?.name);\n attachmentState = signal<'upload' | undefined>(undefined);\n\n fileSelectorRef = viewChild.required<ElementRef<HTMLInputElement>>('fileSelector');\n\n get fileSelectorElement() {\n return this.fileSelectorRef().nativeElement;\n }\n\n height = input<number | string>();\n borderRadius = input<Radius>('md');\n border = input<Variant>('light');\n padding = input<NullableSize>('lg');\n useBrowseButton = input<boolean>(false);\n browseButtonText = input<string>('Browse for file');\n allowedFileExtensions = input<string[]>([]);\n label = input<string>();\n\n helpTemplate = input<TemplateRef<unknown> | null>(null);\n helpTemplateContext = input<unknown | null>(null);\n\n fileAttached = output<File | undefined>();\n fileRemoved = output();\n\n /**\n * The zone acts as the keyboard-reachable file picker only when no browse\n * button is rendered (nesting a button inside a button-role zone would be\n * invalid ARIA) and no file is attached yet.\n */\n zoneIsInteractive = computed(() => !this.useBrowseButton() && !this.attachmentState());\n\n sanitizedFileExtensions = computed(() =>\n this.allowedFileExtensions().map((ext) => (ext.includes('.') ? ext : '.' + ext))\n );\n\n helpText = computed(() => {\n const extensions = this.sanitizedFileExtensions();\n let text = '';\n\n if (extensions.length === 1) {\n text = `${extensions[0]} format allowed`;\n }\n\n if (extensions.length > 1) {\n text = extensions.join(', ') + ' formats allowed';\n }\n\n return text;\n });\n\n constructor() {\n effect(() => {\n const files = this.selectedFile();\n\n if (files) {\n this.attachmentState.set('upload');\n } else {\n this.attachmentState.set(undefined);\n }\n });\n }\n\n openFileSelector() {\n this.fileSelectorElement.click();\n }\n\n selectFiles(fileList: FileList | null): void {\n if (!fileList) return;\n if (!acceptableFile(fileList[0], this.sanitizedFileExtensions())) return;\n this.selectedFile.set(fileList[0]);\n this.fileAttached.emit(fileList[0]);\n }\n\n onFileInputChange() {\n this.selectFiles(this.fileSelectorElement.files);\n this.fileSelectorElement.value = '';\n }\n\n cancelUpload() {\n this.selectedFile.set(undefined);\n this.fileAttached.emit(undefined);\n this.fileRemoved.emit();\n }\n\n removeAttachment() {\n this.selectedFile.set(undefined);\n }\n}\n","<!-- Without a browse button the zone itself is the keyboard path to the\n native file picker; with one, the button already provides it -->\n<div\n box-layout\n [border]=\"border()\"\n [borderRadius]=\"borderRadius()\"\n [dashBorder]=\"[undefined, 'replace'].includes(attachmentState())\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n [padding]=\"padding()\"\n dragAndDrop\n (onFileDropped)=\"selectFiles($event)\"\n [height]=\"height()\"\n [attr.role]=\"zoneIsInteractive() ? 'button' : null\"\n [attr.tabindex]=\"zoneIsInteractive() ? 0 : null\"\n [attr.aria-label]=\"zoneIsInteractive() ? label() || 'Choose a file' : null\"\n (keydown.enter)=\"zoneIsInteractive() && openFileSelector()\"\n (keydown.space)=\"\n zoneIsInteractive() && openFileSelector(); zoneIsInteractive() && $event.preventDefault()\n \"\n>\n <div stack-layout gap=\"md\" alignItems=\"center\">\n @switch (attachmentState()) {\n @case ('upload') {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">{{ label() }}</span>\n <span uni-text=\"title-small\">{{ selectedFileName() }}</span>\n </div>\n <button text-button (click)=\"removeAttachment()\" variant=\"warn\">Cancel</button>\n }\n\n @default {\n @if (useBrowseButton()) {\n <button text-button (click)=\"openFileSelector()\">\n {{ browseButtonText() }}\n </button>\n <span uni-text>OR</span>\n }\n\n @if (!helpTemplate()) {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">Drag and drop the file here</span>\n @if (helpText()) {\n <span uni-text=\"title-small\">{{ helpText() }}</span>\n }\n </div>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"helpTemplate()\"\n [ngTemplateOutletContext]=\"helpTemplateContext()\"\n ></ng-container>\n }\n }\n }\n </div>\n\n <input\n #fileSelector\n type=\"file\"\n style=\"display: none\"\n (change)=\"onFileInputChange()\"\n [accept]=\"sanitizedFileExtensions().join(',')\"\n [multiple]=\"false\"\n />\n</div>\n","/**\n * UniFileDropZoneComponent Barrel File\n *\n * This file exports all public-facing elements of the file-drop-zone component.\n */\n\nexport { UniFileDropZoneComponent } from './file-drop-zone.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniRowComponent } from '../layout';\nimport type { UniInputBoxOptions } from './input-box.model';\n\n@Component({\n selector: 'uni-input-box',\n imports: [UniRowComponent],\n templateUrl: './input-box.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'input' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniInputBoxComponent extends BaseComponent<UniInputBoxOptions> {\n protected readonly className = css({ display: 'contents' });\n\n disabled = input<boolean>(false);\n error = input<boolean>(false);\n minWidth = input<string>('0');\n /** Override the themed field height, e.g. `'auto'` for multi-line fields. */\n height = input<string | number | undefined>(undefined);\n\n protected readonly color = computed(() =>\n this.error() ? this.componentOptions().errorColor : this.componentOptions().color\n );\n\n protected readonly border = computed(() =>\n this.error() ? this.componentOptions().errorBorder : this.componentOptions().border\n );\n\n protected readonly shadow = computed(() =>\n this.error() ? this.componentOptions().errorShadow : this.componentOptions().shadow\n );\n\n protected readonly inputBoxClass = computed(() =>\n css([\n this.disabled() && {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n cursor: 'not-allowed !important',\n },\n {\n '& input, select, textarea': {\n ...removeInputPlatformStyling,\n height: '100%',\n ...this.theme.paddingLeft(this.componentOptions().paddingLeft),\n ...this.theme.color(this.componentOptions().textColor),\n ...this.theme.typeface(this.componentOptions().typeFace),\n },\n\n // Multi-line fields size themselves (rows/resize), not from the box.\n '& textarea': {\n height: 'auto',\n ...this.theme.paddingTop('xs'),\n ...this.theme.paddingBottom('xs'),\n },\n\n '&:has(input:disabled, select:disabled, textarea:disabled)': {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n },\n\n '& input:disabled, select:disabled, textarea:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '&:has(input:focus, select:focus, textarea:focus)': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n },\n ])\n );\n}\n","<div\n row-layout\n alignItems=\"center\"\n [height]=\"height() ?? componentOptions().height\"\n [color]=\"color()\"\n [border]=\"border()\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [shadow]=\"shadow()\"\n [minWidth]=\"minWidth()\"\n [class]=\"inputBoxClass()\"\n position=\"relative\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../../input-box/input-box.component';\n\n/**\n * Text input that emits `change` only after the user pauses typing. Wears the\n * shared input chrome (themed color, border, typeface, focus ring) via\n * `uni-input-box`; project adornments with the `pre-input` / `post-input`\n * slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a\n * wrapping composite (e.g. SearchInput's combobox) annotate the real input\n * element.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-debounce-input',\n imports: [UniInputBoxComponent],\n templateUrl: './debounce-input.component.html',\n})\nexport class UniDebounceInputComponent {\n inputName = input<string>();\n inputId = input<string>();\n debounceTime = input<number>(400);\n /** Accessible name for the input. */\n label = input<string>();\n placeholder = input('');\n disabled = input(false);\n\n // ARIA passthroughs for composite widgets (combobox etc.).\n role = input<string>();\n ariaExpanded = input<boolean | undefined>(undefined);\n ariaControls = input<string>();\n ariaActivedescendant = input<string>();\n\n // TODO(v4): rename to valueChange — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n\n value = signal<string | undefined>(undefined);\n\n private readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private lastEmitted: string | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n });\n }\n\n handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.value.set(value);\n\n // Debounce, emitting only when the value actually changed.\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => {\n if (value !== this.lastEmitted) {\n this.lastEmitted = value;\n this.change.emit(value);\n }\n }, this.debounceTime());\n }\n\n /** Empty the field immediately, cancelling any pending emit. */\n clear() {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.value.set('');\n if (this.lastEmitted !== '') {\n this.lastEmitted = '';\n this.change.emit('');\n }\n }\n\n focus() {\n this.inputElement().nativeElement.focus();\n }\n\n inputClass = css({\n flexGrow: 1,\n width: '100%',\n minWidth: 0,\n });\n}\n","<uni-input-box>\n <ng-content select=\"[pre-input]\" />\n <input\n #field\n [class]=\"inputClass\"\n type=\"text\"\n [name]=\"inputName()\"\n [id]=\"inputId()\"\n [value]=\"value() ?? ''\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label() || null\"\n [attr.role]=\"role() || null\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() || null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() || null\"\n [attr.aria-autocomplete]=\"role() === 'combobox' ? 'list' : null\"\n />\n <ng-content select=\"[post-input]\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-input',\n imports: [UniInputBoxComponent],\n templateUrl: './input.component.html',\n})\nexport class UniInputComponent implements FormValueControl<string> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLInputElement).value);\n }\n\n inputClass = css({});\n}\n","<uni-input-box [error]=\"showError()\">\n <ng-content select=\"pre-input\" />\n <input\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [class]=\"inputClass\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <ng-content select=\"post-input\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { AbsoluteSize } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-json-view',\n imports: [],\n templateUrl: './json-view.component.html',\n})\nexport class UniJsonViewComponent {\n json = input<unknown>();\n rows = input<number>(6);\n fontSize = input<AbsoluteSize | string>('medium');\n width = input<string | number>('100%');\n selectOnClick = input<boolean>(true);\n\n jsonString = computed(() => JSON.stringify(this.json(), null, 2));\n\n className = computed(() =>\n css({\n fontSize: this.fontSize(),\n width: this.width(),\n })\n );\n\n selectContents(jsonArea: HTMLTextAreaElement) {\n if (!this.selectOnClick()) return;\n jsonArea.select();\n }\n}\n","<textarea #jsonArea (click)=\"selectContents(jsonArea)\" [class]=\"className()\" [rows]=\"rows()\">{{\n jsonString()\n}}</textarea>\n","/**\n * UniJsonViewComponent Barrel File\n *\n * This file exports all public-facing elements of the json-view component.\n */\n\nexport { UniJsonViewComponent } from './json-view.component';\n","import { TemplateRef } from '@angular/core';\nimport type {\n ColorKey,\n ContainerColorToken,\n NullableSize,\n Radius,\n Typeface,\n Variant,\n} from '@uni-design-system/uni-core';\n\ninterface BaseMenuItem {\n symbolName?: string;\n action?: () => void;\n /** Tone routed through the theme's `menuItem.variants` (e.g. 'warn' for destructive actions). */\n variant?: Variant;\n disabled?: boolean;\n}\n\nexport interface MenuItemWithLabel extends BaseMenuItem {\n label: string;\n template?: never;\n context?: never;\n divider?: never;\n}\n\nexport interface MenuItemWithTemplate<T = any> extends BaseMenuItem {\n label?: never;\n template: TemplateRef<T>;\n context: T;\n divider?: never;\n}\n\n/** A non-interactive separator between item groups; styled by the theme's `menu` options. */\nexport interface MenuDivider {\n divider: true;\n}\n\nexport type MenuItem<T = any> = MenuDivider | MenuItemWithLabel | MenuItemWithTemplate<T>;\n\nexport const isDivider = (item: MenuItem): item is MenuDivider => 'divider' in item;\n\n/** Theme options for the `menuItem` component entry. */\nexport interface UniMenuItemOptions {\n height?: number;\n paddingHorizontal?: NullableSize;\n gap?: NullableSize;\n borderRadius?: Radius;\n typeface?: Typeface;\n /** Resting text color; undefined inherits the panel's on-color. */\n textColor?: ColorKey;\n hoverColor?: ContainerColorToken;\n /** Trailing symbol marking the active item; undefined/'' renders none. */\n activeSymbol?: string;\n /** Hover/focus transition in seconds; 0 switches instantly. */\n transitionSpeed?: number;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { ThemeService } from '../../../theming';\nimport type { ContainerColorToken, Variant } from '@uni-design-system/uni-core';\nimport type { UniMenuItemOptions } from './menu-item.model';\n\n@Component({\n selector: '[uni-menu-item], [menu-item]',\n imports: [UniSymbolComponent, UniBoxComponent, NgTemplateOutlet],\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.aria-current]': \"active() ? 'true' : null\",\n '[class]': 'menuItemClassName()',\n },\n})\nexport class UniMenuItemComponent<T = any> {\n theme = inject(ThemeService);\n private _elementRef = inject(ElementRef);\n\n label = input<string>();\n template = input<TemplateRef<T>>();\n context = input<T>();\n symbolName = input<string>();\n active = input<boolean>();\n /** Tone routed through the theme's `menuItem` variants (e.g. 'warn'). */\n variant = input<Variant | undefined>();\n /** Per-instance override of the theme's `menuItem.hoverColor`. */\n hoverColor = input<ContainerColorToken | undefined>();\n disabled = input<boolean>(false);\n\n protected readonly options = computed(() =>\n this.theme.getComponentOptions<UniMenuItemOptions>('menuItem')()\n );\n\n protected readonly activeSymbol = computed(() => this.options().activeSymbol);\n\n /** Typography comes from the host's themed typeface; the span only lays out. */\n protected readonly LabelClassName = css({ display: 'block', whiteSpace: 'nowrap' });\n\n protected readonly menuItemClassName = computed(() => {\n const options = this.options();\n const variant = this.variant();\n const variantStyle = variant\n ? this.theme.component('menuItem')().variants?.[variant]\n : undefined;\n const transitionSpeed = options.transitionSpeed ?? 0;\n\n return css([\n {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n boxSizing: 'border-box',\n cursor: 'pointer',\n height: options.height,\n ...this.theme.horizontalPadding(options.paddingHorizontal),\n ...this.theme.gap(options.gap),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n\n // Roving focus highlights items the same way hover does\n '&:hover, &:focus': {\n ...this.theme.colorPair(this.hoverColor() ?? options.hoverColor),\n outline: 'none',\n },\n\n '&[aria-disabled=\"true\"]': {\n color: this.theme.colors()['on-disabled-surface'],\n pointerEvents: 'none',\n },\n },\n transitionSpeed > 0 && { transition: `all ${transitionSpeed}s ease` },\n // Variant tones override the base look; a same-key '&:hover, &:focus'\n // in the variant replaces the default hover pair outright.\n { ...variantStyle },\n ]);\n });\n\n /** Host element, used by Menu for roving-focus bookkeeping. */\n get host(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\n","@let tpl = template();\n@let symbol = symbolName();\n@if (symbol) {\n <uni-symbol [name]=\"symbol\"></uni-symbol>\n}\n<div box-layout [grow]=\"1\">\n @if (tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"context()\"></ng-container>\n } @else {\n <span [class]=\"LabelClassName\">{{ label() }}</span>\n }\n</div>\n@let activeSym = activeSymbol();\n@if (active() && activeSym) {\n <uni-symbol [name]=\"activeSym\"></uni-symbol>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type Placement } from '../../cdk';\n\nimport { UniMenuItemComponent } from './menu-item/menu-item.component';\nimport { isDivider, MenuItem } from './menu-item/menu-item.model';\nimport type { UniMenuOptions } from './menu.model';\nimport { UniDropdownComponent } from '../dropdown';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-menu',\n imports: [UniMenuItemComponent, UniDropdownComponent],\n changeDetection: ChangeDetectionStrategy.OnPush, // Crucial for zoneless\n template: `\n <!-- Keydown listens for arrow keys bubbling from the projected (focusable)\n trigger; the wrapper itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #trigger [class]=\"TriggerClassName\" (keydown)=\"onTriggerKeydown($event)\">\n <ng-content></ng-content>\n </div>\n\n @if (menuItems()) {\n <uni-dropdown\n [trigger]=\"trigger\"\n [placement]=\"placement()\"\n ariaHasPopup=\"menu\"\n [color]=\"menuOptions().color\"\n [border]=\"menuOptions().border\"\n [borderRadius]=\"menuOptions().borderRadius\"\n [shadow]=\"menuOptions().shadow\"\n [paddingVertical]=\"menuOptions().paddingVertical\"\n [paddingHorizontal]=\"menuOptions().paddingHorizontal\"\n #dropdown\n (dropdownShowing)=\"onOpened()\"\n >\n <!-- Roving-focus composite: the container handles keys bubbling from\n the focused item (menu-item hosts carry tabindex=\"-1\"), and\n Enter/Space activation is dispatched from onMenuKeydown. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"menu\" [class]=\"menuClassName()\" (keydown)=\"onMenuKeydown($event, dropdown)\">\n @for (item of menuItems(); track item) {\n @if (isDivider(item)) {\n <div role=\"separator\" [class]=\"dividerClassName()\"></div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n menu-item\n [label]=\"item.label\"\n [symbolName]=\"item.symbolName\"\n [active]=\"activeItem() === item\"\n [template]=\"item.template\"\n [context]=\"item.context\"\n [variant]=\"item.variant\"\n [disabled]=\"item.disabled ?? false\"\n (click)=\"handleMenuItemClick(item, dropdown)\"\n ></div>\n }\n }\n </div>\n </uni-dropdown>\n }\n `,\n host: { '[class]': 'className()' },\n})\nexport class UniMenuComponent {\n private theme = inject(ThemeService);\n\n // Modern Signal Inputs for perfect Zoneless tracking\n menuItems = input.required<MenuItem[]>();\n activeItem = input<MenuItem>();\n placement = input<Placement>('bottom-start');\n\n // Modern Signal Output\n menuItemClicked = output<MenuItem>();\n\n TriggerClassName = css({ display: 'inline-block' });\n\n /** Type guard for the template: dividers render as separators, not items. */\n protected readonly isDivider = isDivider;\n\n protected readonly menuOptions = computed(() =>\n this.theme.getComponentOptions<UniMenuOptions>('menu')()\n );\n\n protected readonly menuClassName = computed(() =>\n css({ minWidth: this.menuOptions().minWidth })\n );\n\n protected readonly dividerClassName = computed(() => {\n const { dividerBorder, dividerSpacing } = this.menuOptions();\n // Read spacing directly: getSpacing('none') yields the string 'none',\n // which is invalid as a margin and must resolve to 0 instead.\n const spacing = this.theme.spacing()[dividerSpacing ?? 'none'];\n return css({\n ...this.theme.borderTop(dividerBorder),\n marginBlock: spacing,\n marginInline: spacing,\n });\n });\n\n private itemComponents = viewChildren(UniMenuItemComponent);\n private dropdownComponent = viewChild(UniDropdownComponent);\n\n /** Which item receives focus when the menu opens (ArrowUp opens onto the last item). */\n private pendingFocus: 'first' | 'last' = 'first';\n\n protected readonly className = computed(() => {\n return css({\n margin: 'unset',\n padding: 'unset',\n });\n });\n\n handleMenuItemClick(item: MenuItem, dropdown: UniDropdownComponent) {\n if (!isDivider(item) && item.action) {\n item.action();\n }\n\n this.menuItemClicked.emit(item);\n dropdown.hideDropdown();\n }\n\n /** Enabled items participating in keyboard navigation. */\n private get navigableItems(): UniMenuItemComponent[] {\n return this.itemComponents().filter((item) => !item.disabled());\n }\n\n onOpened() {\n const items = this.navigableItems;\n if (items.length === 0) return;\n const target = this.pendingFocus === 'last' ? items[items.length - 1] : items[0];\n this.pendingFocus = 'first';\n target.focus();\n }\n\n onTriggerKeydown(event: KeyboardEvent) {\n const dropdown = this.dropdownComponent();\n if (!dropdown || (event.key !== 'ArrowDown' && event.key !== 'ArrowUp')) return;\n event.preventDefault();\n\n this.pendingFocus = event.key === 'ArrowUp' ? 'last' : 'first';\n if (dropdown.showing()) {\n this.onOpened();\n } else {\n dropdown.toggleDropdown();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent, dropdown: UniDropdownComponent) {\n const items = this.navigableItems;\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.host === event.target);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n items[(currentIndex + 1) % items.length].focus();\n break;\n case 'ArrowUp':\n event.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n case 'Home':\n event.preventDefault();\n items[0].focus();\n break;\n case 'End':\n event.preventDefault();\n items[items.length - 1].focus();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n (event.target as HTMLElement).click();\n break;\n case 'Tab':\n // A menu is not part of the page tab sequence: close and let focus\n // return to the trigger, then continue tabbing naturally.\n dropdown.hideDropdown();\n break;\n default:\n this.typeahead(event, items, currentIndex);\n }\n }\n\n /** First-character matching, starting after the focused item and wrapping. */\n private typeahead(event: KeyboardEvent, items: UniMenuItemComponent[], currentIndex: number) {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n const char = event.key.toLowerCase();\n if (char === ' ') return;\n\n for (let i = 1; i <= items.length; i++) {\n const item = items[(currentIndex + i) % items.length];\n if (item.label()?.toLowerCase().startsWith(char)) {\n event.preventDefault();\n item.focus();\n return;\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { Option } from '../../cdk';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniBoxComponent } from '../layout';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'uni-multi-select',\n imports: [UniCheckboxComponent, UniBoxComponent],\n templateUrl: './multi-select.component.html',\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectComponent<T = unknown> {\n // Data Inputs\n options = input<Option<T>[]>([]);\n selections = input<T[] | null | undefined>(undefined);\n updates = output<T[] | undefined>();\n\n // Styling Inputs\n flexDirection = input<'row' | 'row-reverse' | 'column' | 'column-reverse'>('column');\n checkboxGap = input<NullableSize | undefined>('sm');\n\n protected readonly values = computed<unknown[]>(() => this.selections() || []);\n\n protected readonly optionsWithSelections = computed<Option<T>[]>(() =>\n this.options().map((option) => ({\n ...option,\n selected: this.values().includes(option.value),\n }))\n );\n\n protected readonly className = css({ display: 'contents' });\n\n handleCheck(checked: boolean, value: T) {\n const selections = this.selections();\n\n if (!selections && !checked) return;\n\n if (selections && !checked) {\n const filteredSelections = selections.filter((item) => item != value);\n const isEmpty = filteredSelections.length === 0;\n this.updates.emit(isEmpty ? undefined : filteredSelections);\n return;\n }\n\n if (checked) {\n this.updates.emit([...(selections || []), value]);\n return;\n }\n }\n\n selectAll() {\n const allValues = this.options().map((option) => option.value);\n this.updates.emit(allValues);\n }\n\n deselectAll() {\n this.updates.emit(undefined);\n }\n\n optionWrapper = css({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n });\n}\n","<div box-layout display=\"flex\" [flexDirection]=\"flexDirection()\" [gap]=\"checkboxGap()\">\n @for (option of options(); track option) {\n <div [class]=\"optionWrapper\">\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"values().indexOf(option.value) > -1\"\n (checkedChange)=\"handleCheck($event, option.value)\"\n variant=\"primary\"\n >\n </uni-checkbox>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { Option, type Options } from '../../cdk';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { UniBoxComponent, UniRowComponent, UniStackComponent } from '../layout';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniDividerComponent } from '../divider';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniTextComponent } from '../text/text.component';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniMultiSelectDropdownOptions } from './multi-select-dropdown.model';\n\n@Component({\n selector: 'uni-multi-select-dropdown',\n imports: [\n UniCheckboxComponent,\n UniBoxComponent,\n UniDropdownComponent,\n UniStackComponent,\n UniDividerComponent,\n UniButtonComponent,\n UniTextComponent,\n UniSymbolComponent,\n UniRowComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './multi-select-dropdown.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'multiSelectDropdown' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectDropdownComponent<T = unknown>\n extends BaseComponent<UniMultiSelectDropdownOptions>\n implements FormValueControl<T[]>\n{\n protected readonly className = css({ display: 'contents' });\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T[]>([]);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input.required<Options<T>>();\n readonly placeholder = input<string>('');\n\n protected readonly query = signal('');\n\n protected readonly filteredOptions = computed<Options<T>>(() => {\n const filterText = this.query().toLowerCase();\n return this.options().filter((opt) => opt.label.toLowerCase().includes(filterText));\n });\n\n // Derived display string\n readonly selectedLabelsText = computed(() => {\n const selections = this.value();\n const allOptions = this.options();\n\n // Find labels for each selected ID\n const labels = selections\n .map((value) => allOptions.find((opt) => opt.value === value)?.label)\n .filter((label) => !!label); // Remove undefined if an ID isn't found\n\n return labels.length > 0 ? labels.join(', ') : this.placeholder();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textColor = computed(() => {\n return this.selectedLabelsText() === this.placeholder()\n ? this.componentOptions().placeholderTextColor\n : this.componentOptions().textColor;\n });\n\n triggerClass = css({\n all: 'unset',\n display: 'block',\n cursor: 'pointer',\n width: '100%',\n\n '&:focus > :first-child > :first-child': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n });\n\n protected readonly searchInputClass = computed(() =>\n css({\n ...removeInputPlatformStyling,\n ...this.theme.border(this.componentOptions().searchInputBorder),\n ...this.theme.radius(this.componentOptions().searchInputBorderRadius),\n paddingBlock: 4,\n paddingInline: 8,\n width: 'auto',\n\n '&:focus': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n })\n );\n\n protected handleQueryInput(event: Event) {\n this.query.set((event.target as HTMLInputElement).value);\n }\n\n selectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const allValues = this.options().map((option) => option.value);\n this.value.set(allValues);\n }\n\n deselectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n this.value.set([]);\n }\n\n protected isOptionSelected(option: Option<T>) {\n return computed(() => this.value().includes(option.value));\n }\n\n toggleOption(option: Option<T>, checked: boolean) {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const { value } = option;\n this.value.update((current) => {\n if (checked) {\n // Add selection if not already present\n return current.includes(value) ? current : [...current, value];\n } else {\n // Remove selection\n return current.filter((item) => item !== value);\n }\n });\n }\n}\n","<button\n [class]=\"triggerClass\"\n #trigger\n [style.cursor]=\"disabled() ? 'default' : 'pointer'\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n (click)=\"!disabled() && touched.set(true)\"\n>\n <uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div\n row-layout\n alignItems=\"center\"\n justifyContent=\"space-between\"\n [fullWidth]=\"true\"\n [minWidth]=\"0\"\n paddingLeft=\"sm\"\n >\n <span uni-text\n display=\"block\"\n [typeface]=\"componentOptions().textRole\"\n [color]=\"textColor()\"\n [ellipsis]=\"true\"\n [style.flex-grow]=\"1\"\n >{{ selectedLabelsText() }}</span>\n <uni-symbol name=\"keyboard_arrow_down\" [style.flex-shrink]=\"0\"></uni-symbol>\n </div>\n </uni-input-box>\n</button>\n<uni-dropdown\n #dropdown\n [trigger]=\"trigger\"\n ariaHasPopup=\"dialog\"\n (dropdownShowing)=\"$event && searchInput.focus()\"\n (dropdownHiding)=\"$event && trigger.focus()\"\n>\n <div box-layout gap=\"xs\" padding=\"xs\">\n <input\n #searchInput\n type=\"text\"\n [class]=\"searchInputClass()\"\n [value]=\"query()\"\n (input)=\"handleQueryInput($event)\"\n placeholder=\"Search...\"\n aria-label=\"Filter options\"\n (click)=\"$event.stopPropagation()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div stack-layout gap=\"xs\" padding=\"xs\">\n @for (option of filteredOptions(); track option.value) {\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"isOptionSelected(option)()\"\n (checkedChange)=\"toggleOption(option, $event)\"\n variant=\"primary\"\n [disabled]=\"disabled()\"\n >\n </uni-checkbox>\n }\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div row-layout gap=\"xs\" justifyContent=\"space-around\" padding=\"xs\">\n <button text-button (click)=\"dropdown.hideDropdown()\" size=\"sm\" variant=\"ghost\">Done</button>\n </div>\n</uni-dropdown>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { Variant } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniNotificationBadgeOptions } from './notification-badge.model';\n\n@Component({\n selector: 'uni-notification-badge',\n imports: [UniTextComponent],\n templateUrl: './notification-badge.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'notificationBadge' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniNotificationBadgeComponent extends BaseComponent<UniNotificationBadgeOptions> {\n count = input<number | undefined>(undefined);\n maxCount = input<number>(99);\n badgeVariant = input<'dot' | 'count' | 'pill'>('count');\n color = input<Variant | undefined>(undefined);\n position = input<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>('top-right');\n show = input<boolean>(true);\n\n /**\n * Screen-reader text for the badge (e.g. \"5 unread messages\"). Without it\n * a sensible default is announced; a bare number or dot carries no meaning.\n */\n ariaLabel = input<string>();\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n protected readonly announcement = computed(() => {\n const label = this.ariaLabel();\n if (label) return label;\n if (this.badgeVariant() === 'dot') return 'New notifications';\n return `${this.displayValue()} notifications`;\n });\n\n displayValue = computed(() => {\n const count = this.count();\n const maxCount = this.maxCount();\n const variant = this.badgeVariant();\n\n if (variant === 'dot') {\n return '';\n }\n\n if (count === undefined || count <= 0) {\n return '';\n }\n\n if (count > maxCount) {\n return `${maxCount}+`;\n }\n\n return count.toString();\n });\n\n shouldShow = computed(() => {\n const show = this.show();\n const count = this.count();\n const variant = this.badgeVariant();\n\n if (!show) return false;\n\n if (variant === 'dot') return true;\n\n return count !== undefined && count > 0;\n });\n\n protected readonly className = computed(() => {\n const variant = this.badgeVariant();\n const color = this.color();\n const position = this.position();\n const offset = this.componentOptions().offset + 'px';\n\n const positionStyles = {\n 'top-right': { top: offset, right: offset },\n 'top-left': { top: offset, left: offset },\n 'bottom-right': { bottom: offset, right: offset },\n 'bottom-left': { bottom: offset, left: offset },\n }[position];\n\n const variantStyles = {\n dot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n minWidth: 'unset',\n },\n count: {\n width: 20,\n height: 20,\n borderRadius: 10,\n },\n pill: {\n minWidth: '24px',\n height: '20px',\n borderRadius: '10px',\n padding: '0 8px',\n },\n }[variant];\n\n return css({\n position: 'relative',\n display: 'inline-block',\n\n '& .notification-badge-indicator': {\n position: 'absolute',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.getContainerColors(color || 'warn'),\n zIndex: 1,\n\n ...positionStyles,\n ...variantStyles,\n },\n });\n });\n}\n","<ng-content></ng-content>\n@if (shouldShow()) {\n<div class=\"notification-badge-indicator\" aria-hidden=\"true\">\n <span uni-text\n typeface=\"overline\"\n align=\"center\"\n [style.max-width]=\"badgeVariant() !== 'pill' ? (displayValue().length * 5 + 'px') : ''\"\n >{{ displayValue() }}</span>\n</div>\n<span [class]=\"srOnlyClass\">{{ announcement() }}</span>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { fadeOut, type Variant } from '@uni-design-system/uni-core';\n\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniAlertOptions } from './alert.model';\n\n@Component({\n selector: 'uni-alert',\n imports: [\n UniRowComponent,\n UniIconButtonComponent,\n UniTextComponent,\n UniBoxComponent,\n UniIconComponent,\n UniSymbolComponent,\n ],\n templateUrl: './alert.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'alert' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniAlertComponent extends BaseComponent<UniAlertOptions> implements AfterViewInit {\n show = model<boolean>();\n iconName = input<IconName | undefined>(undefined);\n symbolName = input<string | undefined>(undefined);\n useVariant = input<boolean>(false);\n\n showing = output<boolean>();\n\n @ViewChild('alert') alertRef?: ElementRef<HTMLDialogElement>;\n\n private readonly alertState = signal<'open' | 'closing' | 'closed'>('closed');\n\n private readonly effectiveVariant = computed<Variant>(\n () => this.variant() || this.componentOptions().defaultVariant\n );\n\n protected readonly alertClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.effectiveVariant(), this.useVariant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.border(this.effectiveVariant()),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n\n transition: `all ${this.componentOptions().transitionSpeed}s ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n top: this.componentOptions().topPosition,\n\n '&[open]': {\n '@starting-style': {\n top: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n private readonly fadeOut = keyframes({ ...fadeOut });\n\n constructor() {\n super();\n effect(() => {\n if (this.show() === true) {\n this.open();\n } else if (this.show() === false) {\n this.close();\n }\n });\n }\n\n ngAfterViewInit() {\n this.alertRef?.nativeElement.addEventListener('animationend', (e) => {\n if (e.animationName === this.fadeOut.toString()) {\n this.alertRef?.nativeElement.close();\n this.showing.emit(false);\n this.alertState.set('closed');\n }\n });\n }\n\n open() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.removeAttribute('closing');\n this.alertRef.nativeElement.show();\n this.alertState.set('open');\n this.showing.emit(true);\n }\n\n close() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.setAttribute('closing', 'true');\n this.alertState.set('closing');\n this.show.set(false);\n }\n\n protected readonly effectiveIconName = computed<IconName | undefined>(() => this.iconName());\n}\n","<!-- role=\"alert\" makes the message announce immediately when shown -->\n<dialog #alert [class]=\"alertClass()\" role=\"alert\">\n <div row-layout gap=\"md\">\n @if (iconName() || symbolName()) {\n <div box-layout [height]=\"26\" [width]=\"26\">\n @if (effectiveIconName()) {\n <uni-icon [name]=\"effectiveIconName()!\" />\n } @else {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"26\" />\n }\n </div>\n }\n <span uni-text>\n <ng-content></ng-content>\n </span>\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">close</button>\n </div>\n</dialog>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport {\n UniDialogButtonsComponent,\n UniDialogComponent,\n UniDialogHeaderComponent,\n} from '../../dialog';\nimport { UniBoxComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport type { Confirmation } from '../../../cdk/notification';\n\n@Component({\n selector: 'uni-confirmation-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n UniDialogComponent,\n UniDialogHeaderComponent,\n UniBoxComponent,\n UniTextComponent,\n UniDialogButtonsComponent,\n ],\n templateUrl: './confirmation-dialog.component.html',\n})\nexport class ConfirmationDialogComponent {\n show = input(false);\n confirmation = input<Confirmation>();\n showing = output<boolean>();\n}\n","<dialog uni-dialog [show]=\"show()\" (showing)=\"showing.emit($event)\">\n <div uni-dialog-header>\n {{ confirmation()?.title }}\n </div>\n <div box-layout padding=\"md\">\n <span uni-text>\n {{ confirmation()?.message }}\n </span>\n </div>\n <div\n dialog-buttons\n [confirmButtonText]=\"confirmation()?.actionLabel\"\n (confirmed)=\"confirmation()?.action()\"\n [cancelButtonText]=\"confirmation()?.dismissLabel\"\n ></div>\n</dialog>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { useTimer } from '../../../cdk';\nimport { Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniButtonComponent } from '../../button';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniSnackbarOptions } from './snackbar.model';\n\n@Component({\n selector: 'uni-snackbar',\n imports: [\n UniRowComponent,\n UniBoxComponent,\n UniTextComponent,\n UniIconButtonComponent,\n UniSymbolComponent,\n UniIconComponent,\n UniButtonComponent,\n ],\n templateUrl: './snackbar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'snackbar' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSnackbarComponent\n extends BaseComponent<UniSnackbarOptions>\n implements AfterViewInit\n{\n timer = useTimer();\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>();\n iconName = input<IconName>();\n symbolName = input<string>();\n timeout = input<number | string | 'disabled'>();\n actionLabel = input<string>();\n\n useVariant = input<boolean>(false);\n\n action = output();\n showing = output<boolean>();\n\n snackbarRef = viewChild<ElementRef>('snackbar');\n\n private get _snackbar(): HTMLDialogElement | undefined {\n return this.snackbarRef()?.nativeElement;\n }\n\n constructor() {\n super();\n\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n protected readonly snackbarClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.variant() || 'primary', this.useVariant()),\n ...this.theme.radius('sm'),\n ...this.theme.border(this.variant() || 'primary'),\n ...this.theme.boxShadow('dialog'),\n padding: 0,\n transition: `all ${this.componentOptions().transitionDelay} ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n bottom: this.componentOptions().bottomPosition,\n zIndex: Z_INDEX.dialog,\n position: 'fixed',\n\n '&[open]': {\n '@starting-style': {\n bottom: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n fadeOut = keyframes({\n '0% ': {\n opacity: 1,\n },\n '100%': {\n opacity: 0,\n },\n });\n\n ngAfterViewInit() {\n this._snackbar?.addEventListener('animationend', (e) => {\n if (e.animationName == this.fadeOut) {\n this._snackbar?.close();\n this.showing.emit(false);\n }\n });\n }\n\n private get _timeout(): number | undefined {\n const timeout = this.timeout();\n if (timeout === 'disabled') return undefined;\n\n return typeof timeout === 'string'\n ? parseFloat(timeout)\n : timeout || this.componentOptions().autoCloseDelay;\n }\n\n open() {\n this._snackbar?.removeAttribute('closing');\n this._snackbar?.show();\n this.show.set(true);\n this.showing.emit(true);\n\n if (this._timeout) this.timer.start(this._timeout, () => this.close());\n }\n\n close() {\n this._snackbar?.setAttribute('closing', 'true');\n this.show.set(false);\n }\n\n protected pauseTimer() {\n this.timer.pause();\n }\n\n protected resumeTimer() {\n this.timer.resume();\n }\n}\n","@let icon = iconName();\n@let symbol = symbolName();\n<!-- role=\"status\" announces the message politely without stealing focus -->\n<dialog\n #snackbar\n [class]=\"snackbarClass()\"\n role=\"status\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\"\n (focusin)=\"pauseTimer()\"\n (focusout)=\"resumeTimer()\"\n>\n <div row-layout alignItems=\"center\">\n @if (icon || symbol) {\n <div box-layout [height]=\"26\" [width]=\"26\" paddingLeft=\"sm\">\n @if (icon) {\n <uni-icon [name]=\"icon\"></uni-icon>\n } @else if (symbol) {\n <uni-symbol [name]=\"symbol\" [opticalSize]=\"26\"></uni-symbol>\n }\n </div>\n }\n <div box-layout padding=\"sm\">\n <span uni-text>\n <ng-content></ng-content>\n </span>\n </div>\n <div box-layout paddingRight=\"sm\">\n @if (!actionLabel()) {\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">Close</button>\n } @else {\n <button text-button variant=\"ghost\" (click)=\"this.action.emit(); close()\">\n {{ actionLabel() }}\n </button>\n }\n </div>\n </div>\n</dialog>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { Alert, Confirmation, NotificationService, Snackbar } from '../../../cdk';\nimport { UniAlertComponent } from '../alert/alert.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { UniSnackbarComponent } from '../snackbar/snackbar.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-notifications',\n imports: [UniAlertComponent, UniSnackbarComponent, ConfirmationDialogComponent],\n templateUrl: './notifications.component.html',\n})\nexport class NotificationsComponent {\n notifications = inject(NotificationService);\n\n private readonly alertState = signal<Alert | undefined>(undefined);\n private readonly snackbarState = signal<Snackbar | undefined>(undefined);\n private readonly confirmationState = signal<Confirmation | undefined>(undefined);\n\n // Computed values for the show states\n protected readonly showAlert = computed(() => !!this.alertState());\n protected readonly showSnackbar = computed(() => !!this.snackbarState());\n protected readonly showConfirmation = computed(() => !!this.confirmationState());\n\n // Expose the alert state\n protected readonly alert = computed(() => this.alertState());\n protected readonly snackbar = computed(() => this.snackbarState());\n protected readonly confirmation = computed(() => this.confirmationState());\n\n constructor() {\n effect(() => {\n this.alertState.set(this.notifications.alert());\n });\n effect(() => {\n this.snackbarState.set(this.notifications.snackbar());\n });\n effect(() => {\n this.confirmationState.set(this.notifications.confirmation());\n });\n }\n\n handleConfirmationShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideConfirmation();\n }\n\n handleSnackbarShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideSnackbar();\n }\n\n handleAlertShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideAlert();\n }\n}\n","<uni-alert\n [show]=\"showAlert()\"\n (showing)=\"handleAlertShowingEvent($event)\"\n [variant]=\"alert()?.variant || 'primary'\"\n [iconName]=\"alert()?.iconName\"\n [symbolName]=\"alert()?.symbolName\"\n >{{ alert()?.message }}</uni-alert>\n\n<uni-snackbar\n [show]=\"showSnackbar()\"\n (showing)=\"handleSnackbarShowingEvent($event)\"\n [variant]=\"snackbar()?.variant || 'primary'\"\n [actionLabel]=\"snackbar()?.actionLabel\"\n (action)=\"snackbar()?.action?.()\"\n [timeout]=\"snackbar()?.timeout\"\n [iconName]=\"snackbar()?.iconName\"\n [symbolName]=\"snackbar()?.symbolName\"\n >{{ snackbar()?.message }}</uni-snackbar>\n\n<uni-confirmation-dialog\n [show]=\"showConfirmation()\"\n (showing)=\"handleConfirmationShowingEvent($event)\"\n [confirmation]=\"confirmation()\"\n></uni-confirmation-dialog>\n","import { ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniRowComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniPaginatorOptions } from './paginator.model';\n\n@Component({\n selector: 'uni-paginator',\n imports: [UniRowComponent, UniIconButtonComponent, UniTextComponent],\n templateUrl: './paginator.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'paginator' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'navigation',\n 'aria-label': 'Pagination',\n },\n})\nexport class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions> {\n datasource = input<UniDatasource<T>>();\n initPageSize = input<number>();\n\n showPageSize = input<boolean>(true);\n showPageJumper = input<boolean>(true);\n showPageNumbers = input<boolean>(true);\n\n constructor() {\n super();\n effect(() => {\n const pageSize = this.initPageSize();\n if (!pageSize) return;\n const ds = this.datasource();\n if (ds) ds.setPageSize(pageSize);\n });\n }\n\n protected readonly inputClass = computed(() =>\n css({\n textAlign: 'center',\n ...this.theme.border(this.componentOptions().inputBorder),\n ...this.theme.radius(this.componentOptions().inputBorderRadius),\n height: 22,\n fontSize: 16,\n padding: '2px 0 0 2px',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n })\n );\n\n protected readonly pageClass = computed(() =>\n css({\n all: 'unset',\n boxSizing: 'border-box',\n ...this.theme.radius(this.componentOptions().pageBorderRadius),\n padding: 2,\n width: 20,\n display: 'flex',\n justifyContent: 'center',\n cursor: 'pointer',\n border: 'solid 1px transparent',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n\n '&.current': {\n ...this.theme.border(this.componentOptions().currentPageBorder),\n ...this.theme.radius(this.componentOptions().currentPageBorderRadius),\n cursor: 'unset',\n },\n\n '&:hover:not(.current)': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n })\n );\n\n updatePageSize(event: Event) {\n const ds = this.datasource();\n const pageSize = (event.target as HTMLInputElement).value;\n if (ds) ds.setPageSize(parseInt(pageSize));\n }\n\n jumpToPage(event: Event) {\n const ds = this.datasource();\n const page = (event.target as HTMLInputElement).value;\n if (ds) ds.jumpToPage(parseInt(page));\n }\n\n isNumber(page: unknown) {\n return typeof page === 'number';\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div row-layout alignItems=\"center\" [gap]=\"componentOptions().gap\">\n @if (showPageSize()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingRight=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Show</span>\n <input\n type=\"number\"\n aria-label=\"Items per page\"\n [class]=\"inputClass()\"\n (change)=\"updatePageSize($event)\"\n min=\"1\"\n [max]=\"ds.recordCount()\"\n [value]=\"ds.pageSize()\"\n />\n </div>\n }\n\n @if (showPageNumbers()) {\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_left\"\n (click)=\"ds.firstPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n First Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_left\"\n (click)=\"ds.previousPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n Previous Page\n </button>\n\n @for (page of ds.truncatedPages(); track page) {\n @if (isNumber(page)) {\n <button\n type=\"button\"\n [class]=\"pageClass()\"\n [class.current]=\"page === ds.pageIndex() + 1\"\n [attr.aria-label]=\"'Page ' + page\"\n [attr.aria-current]=\"page === ds.pageIndex() + 1 ? 'page' : null\"\n (click)=\"ds.jumpToPage(page)\"\n >\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </button>\n } @else {\n <div>\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </div>\n }\n }\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_right\"\n (click)=\"ds.nextPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Next Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_right\"\n (click)=\"ds.lastPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Last Page\n </button>\n }\n\n @if (showPageJumper()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingLeft=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Jump to</span>\n <input\n type=\"number\"\n aria-label=\"Jump to page\"\n [class]=\"inputClass()\"\n (change)=\"jumpToPage($event)\"\n min=\"1\"\n [max]=\"ds.pageCount()\"\n [value]=\"ds.pageIndex() + 1\"\n />\n </div>\n }\n </div>\n}\n","/**\n * UniPaginatorComponent Barrel File\n *\n * This file exports all public-facing elements of the paginator component.\n */\n\nexport { UniPaginatorComponent } from './paginator.component';\nexport type { UniPaginatorOptions } from './paginator.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type Placement,\n} from '../../cdk';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-popover',\n imports: [],\n templateUrl: './popover.component.html',\n})\nexport class UniPopoverComponent {\n private renderer = inject(Renderer2);\n private theme = inject(ThemeService);\n\n placement = input<Placement>('bottom');\n\n /** Light-dismiss on outside click / Escape (native popover=\"auto\"). */\n autoClose = input(true);\n\n readonly panelId = uniqueId('uni-popover');\n private readonly anchorName = newAnchorName();\n private readonly showing = signal(false);\n\n private triggerRef = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');\n\n constructor() {\n // Wire the ARIA disclosure contract onto the focusable trigger element\n afterNextRender(() => {\n const target = resolveFocusTarget(this.triggerRef().nativeElement);\n this.renderer.setAttribute(target, 'aria-expanded', 'false');\n this.renderer.setAttribute(target, 'aria-controls', this.panelId);\n });\n }\n\n protected onToggle(event: Event) {\n const open = (event as ToggleEvent).newState === 'open';\n this.showing.set(open);\n this.renderer.setAttribute(\n resolveFocusTarget(this.triggerRef().nativeElement),\n 'aria-expanded',\n `${open}`\n );\n }\n\n showPopover() {\n this.panelRef().nativeElement.showPopover();\n }\n\n hidePopover() {\n this.panelRef().nativeElement.hidePopover();\n }\n\n togglePopover(event: MouseEvent) {\n if (this.showing()) {\n this.hidePopover();\n } else {\n this.showPopover();\n }\n event.stopPropagation();\n }\n\n protected readonly triggerClassName = css({\n display: 'inline-block',\n anchorName: this.anchorName,\n });\n\n protected readonly popoverClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair('primary-surface'),\n ...this.theme.radius('xs'),\n ...this.theme.boxShadow('raised'),\n ...this.theme.typeface('label'),\n ...this.theme.border('quaternary'),\n padding: '6px 12px',\n width: 'max-content',\n overflow: 'visible',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 7 }),\n\n // Fade via discrete transitions across the top layer\n transitionProperty: 'opacity, display, overlay',\n transitionDuration: '250ms',\n transitionBehavior: 'allow-discrete',\n opacity: 0,\n\n '&:popover-open': {\n opacity: 1,\n },\n\n '@starting-style': {\n '&:popover-open': {\n opacity: 0,\n },\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() => {\n const side = this.placement().split('-')[0];\n // Border on the two edges of the rotated square that face outward\n const borders: Record<string, object> = {\n top: { ...this.theme.borderRight('quaternary'), ...this.theme.borderBottom('quaternary') },\n bottom: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderTop('quaternary') },\n left: { ...this.theme.borderRight('quaternary'), ...this.theme.borderTop('quaternary') },\n right: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderBottom('quaternary') },\n };\n return css({\n ...this.theme.colorPair('primary-surface'),\n ...anchorArrowStyles(this.placement()),\n ...borders[side],\n });\n });\n}\n","<!-- Click bubbles up from the projected [trigger] content, which is expected\n to be focusable (a button); keyboard activation arrives as a click. -->\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<span #trigger (click)=\"togglePopover($event)\" [class]=\"triggerClassName\">\n <ng-content select=\"[trigger]\"></ng-content>\n</span>\n<div\n #panel\n [id]=\"panelId\"\n [attr.popover]=\"autoClose() ? 'auto' : 'manual'\"\n [class]=\"popoverClassName()\"\n (toggle)=\"onToggle($event)\"\n>\n <ng-content></ng-content>\n <span [class]=\"arrowClassName()\"></span>\n</div>\n","/**\n * UniPopoverComponent Barrel File\n *\n * This file exports all public-facing elements of the popover component.\n */\n\nexport { UniPopoverComponent } from './popover.component';\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-progress-bar',\n imports: [],\n templateUrl: './progress-bar.component.html',\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressBarComponent {\n theme = inject(ThemeService);\n\n palette = this.theme.colors;\n\n width = input<number>(560);\n height = input<number>(24);\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing (e.g. \"Upload progress\"). */\n ariaLabel = input<string>();\n\n stroke = 1;\n\n protected readonly className = computed(() => {\n return css([{ display: 'block' }]);\n });\n\n protected readonly Math = Math;\n}\n","<svg aria-hidden=\"true\" [attr.width]=\"width()\" [attr.height]=\"height()\">\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"width() - stroke * 2\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"palette()['primary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"Math.max(height() - stroke * 2, (percent() / 100) * width() - stroke * 2)\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"percent() === 100 ? palette()['secondary'] : palette()['secondary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n</svg>\n","/**\n * UniProgressBarComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-bar component.\n */\n\nexport { UniProgressBarComponent } from './progress-bar.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-progress-gauge',\n imports: [],\n templateUrl: './progress-gauge.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'progressGauge' }],\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressGaugeComponent extends BaseComponent {\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing. */\n ariaLabel = input<string>();\n\n textStyle = computed(() => {\n const theme = this.componentTheme();\n return theme.fixed && theme.fixed['textFill'];\n });\n\n private progress = keyframes({\n '0%': { strokeDasharray: '0 100' },\n });\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n\n '& .circular-chart': {\n display: 'block',\n },\n\n '& .circle-bg': {\n fill: 'none',\n strokeWidth: 3.8,\n },\n\n '& .circle': {\n fill: 'none',\n strokeWidth: 3.8,\n animation: `${this.progress} 1s ease-out forwards`,\n },\n\n '& .percentage': {\n fontFamily: 'sans-serif',\n fontSize: '0.5em',\n textAnchor: 'middle',\n },\n });\n });\n}\n","<svg\n viewBox=\"0 0 36 36\"\n class=\"circular-chart\"\n aria-hidden=\"true\"\n [style.height]=\"style()['height']\"\n>\n <path\n class=\"circle-bg\"\n [attr.stroke]=\"style()['backgroundColor']\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <path\n class=\"circle\"\n [attr.stroke]=\"style()['color']\"\n [attr.stroke-dasharray]=\"percent() + ', 100'\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <text x=\"18.5\" y=\"20.82\" class=\"percentage\" [style.fill]=\"textStyle()\">{{ percent() }}%</text>\n</svg>\n","/**\n * UniProgressGaugeComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-gauge component.\n */\n\nexport { UniProgressGaugeComponent } from './progress-gauge.component';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniRadioOption, UniRadioOptions } from './radio.model';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'uni-radio',\n imports: [UniTextComponent],\n templateUrl: './radio.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'radio' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniRadioComponent\n extends BaseComponent<UniRadioOptions>\n implements FormValueControl<string>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<UniRadioOption[]>([]);\n readonly label = input<string>();\n // Unique default so multiple radio groups on a page never share a name\n readonly name = input<string>(uniqueId('uni-radio-group'));\n\n /** Links the group label to the radiogroup container. */\n protected readonly groupLabelId = uniqueId('uni-radio-label');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n private readonly metrics = computed(() => {\n const radioSize = (this.componentOptions().size as number) || 20;\n const innerCircleSize = radioSize * 0.6;\n return {\n outerCircleSize: radioSize,\n innerCircleSize,\n innerCircleOffset: (radioSize - innerCircleSize) / 2,\n };\n });\n\n protected readonly radioGroupClass = css({\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n });\n\n protected readonly radioOptionClass = computed(() => {\n const { outerCircleSize, innerCircleSize, innerCircleOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .radio-button': {\n width: outerCircleSize,\n height: outerCircleSize,\n borderRadius: '50%',\n border: `2px solid ${\n this.disabled()\n ? this.getThemeColor('on-disabled')\n : this.getThemeColor(this.componentOptions().ringColor ?? 'outline')\n }`,\n position: 'relative',\n transition: 'all 0.3s ease',\n backgroundColor: this.getThemeColor(this.componentOptions().fillColor ?? 'surface'),\n flexShrink: 0,\n },\n\n '& .radio-inner': {\n width: innerCircleSize,\n height: innerCircleSize,\n borderRadius: '50%',\n backgroundColor: this.getThemeColor(this.variant()),\n position: 'absolute',\n top: innerCircleOffset,\n left: innerCircleOffset,\n transform: 'scale(0)',\n transition: 'all 0.3s ease',\n },\n\n '&:hover .radio-button': this.disabled()\n ? {}\n : {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&.disabled': {\n cursor: 'not-allowed',\n opacity: 0.6,\n\n '& .radio-button': {\n borderColor: this.getThemeColor('on-disabled'),\n },\n },\n });\n });\n\n protected readonly radioInputClass = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .radio-button': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .radio-button .radio-inner': {\n transform: 'scale(1)',\n },\n\n '&:focus + .radio-button': {\n outline: `2px solid ${this.getThemeColor(this.variant())}`,\n outlineOffset: '2px',\n },\n })\n );\n\n handleRadioChange(optionValue: string) {\n this.value.set(optionValue);\n this.markAsTouched();\n }\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<div\n [class]=\"radioGroupClass\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"label() ? groupLabelId : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n>\n @if (label()) {\n <span uni-text=\"label\" [attr.id]=\"groupLabelId\">{{ label() }}</span>\n }\n\n @for (option of options(); track option.value) {\n <label [class]=\"radioOptionClass()\" [class.disabled]=\"disabled() || option.disabled\">\n <input\n type=\"radio\"\n [class]=\"radioInputClass()\"\n [value]=\"option.value\"\n [name]=\"name()\"\n [checked]=\"value() === option.value\"\n [disabled]=\"disabled() || option.disabled\"\n (change)=\"handleRadioChange(option.value)\"\n />\n <div class=\"radio-button\">\n <div class=\"radio-inner\"></div>\n </div>\n <span uni-text=\"label\">{{ option.label }}</span>\n </label>\n }\n</div>\n","/**\n * UniScrollAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the scroll-area component.\n */\n\nexport { UniScrollAreaComponent } from './scroll-area.component';\nexport type { ScrollbarAppearance } from './scroll-area.types';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { uniqueId } from '../../cdk';\nimport { UniDebounceInputComponent } from '../forms/debounce-input/debounce-input.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniSearchInputOptions } from './search-input.model';\n\n/**\n * Generic search field: shared input chrome with a leading magnifier, a clear\n * button while there's a query, Enter to submit, and optional type-ahead —\n * pass `suggestions` (refresh them from `change`) and the field becomes an\n * ARIA combobox with a keyboard-navigable listbox. Escape closes the list\n * first, then clears the query.\n */\n@Component({\n selector: 'uni-search-input',\n imports: [UniDebounceInputComponent, UniIconButtonComponent, UniSymbolComponent],\n templateUrl: './search-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'searchInput' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSearchInputComponent extends BaseComponent<UniSearchInputOptions> {\n /** Accessible name for the field, also the placeholder fallback. */\n label = input.required<string>();\n placeholder = input<string>();\n width = input<string | number>('100%');\n debounceTime = input(400);\n /**\n * Type-ahead entries. Keep them fresh from `change` emissions; the list\n * shows while the field has focus and entries exist.\n */\n suggestions = input<string[]>([]);\n\n // TODO(v4): rename to searchChange/searchSubmit — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n search = output<string>();\n suggestionSelected = output<string>();\n\n protected readonly field = viewChild.required(UniDebounceInputComponent);\n\n readonly listboxId = uniqueId('uni-search-listbox');\n protected readonly listOpen = signal(false);\n protected readonly activeIndex = signal(-1);\n\n protected readonly visibleSuggestions = computed(() =>\n this.suggestions().slice(0, this.componentOptions().maxSuggestions ?? 8)\n );\n\n protected readonly showList = computed(\n () => this.listOpen() && this.visibleSuggestions().length > 0\n );\n\n protected readonly activeOptionId = computed(() =>\n this.activeIndex() >= 0 ? `${this.listboxId}-${this.activeIndex()}` : undefined\n );\n\n protected readonly hasQuery = computed(() => !!this.field()?.value());\n\n protected handleChange(value: string) {\n this.listOpen.set(true);\n this.activeIndex.set(-1);\n this.change.emit(value);\n }\n\n protected submit() {\n const active = this.activeIndex();\n if (this.showList() && active >= 0) {\n this.select(this.visibleSuggestions()[active]);\n return;\n }\n this.listOpen.set(false);\n this.search.emit(this.field().value() ?? '');\n }\n\n protected select(suggestion: string) {\n this.field().value.set(suggestion);\n this.listOpen.set(false);\n this.activeIndex.set(-1);\n this.suggestionSelected.emit(suggestion);\n this.search.emit(suggestion);\n }\n\n protected clear() {\n this.field().clear();\n this.listOpen.set(false);\n this.activeIndex.set(-1);\n this.field().focus();\n }\n\n protected onKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.submit();\n break;\n case 'ArrowDown':\n case 'ArrowUp': {\n const count = this.visibleSuggestions().length;\n if (count === 0) return;\n event.preventDefault();\n this.listOpen.set(true);\n const delta = event.key === 'ArrowDown' ? 1 : -1;\n this.activeIndex.set((this.activeIndex() + delta + count) % count);\n break;\n }\n case 'Escape':\n if (this.showList()) this.listOpen.set(false);\n else if (this.hasQuery()) this.clear();\n break;\n }\n }\n\n protected onFocusOut(event: FocusEvent) {\n // Close unless focus moved somewhere inside the component.\n const next = event.relatedTarget as Node | null;\n if (!next || !(event.currentTarget as HTMLElement).contains(next)) {\n this.listOpen.set(false);\n }\n }\n\n protected readonly className = computed(() =>\n css({\n display: 'block',\n position: 'relative',\n width: this.width(),\n '& .uni-search-lead': {\n fontSize: 20,\n ...this.theme.color('on-background-variant'),\n ...this.theme.paddingLeft('sm'),\n },\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: 280,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Keydown/focusout ride the bubbling events from the inner input; the\n wrapper itself stays out of the tab order. -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div (keydown)=\"onKeydown($event)\" (focusout)=\"onFocusOut($event)\">\n <uni-debounce-input\n #searchField\n [label]=\"label()\"\n [placeholder]=\"placeholder() ?? label()\"\n [debounceTime]=\"debounceTime()\"\n role=\"combobox\"\n [ariaExpanded]=\"showList()\"\n [ariaControls]=\"listboxId\"\n [ariaActivedescendant]=\"activeOptionId()\"\n (change)=\"handleChange($event)\"\n >\n <uni-symbol pre-input class=\"uni-search-lead\" name=\"{{ componentOptions().searchSymbol ?? 'search' }}\" aria-hidden=\"true\" />\n @if (hasQuery()) {\n <button\n post-input\n icon-button\n [iconName]=\"componentOptions().clearSymbol ?? 'close'\"\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"clear()\"\n >\n Clear search\n </button>\n }\n </uni-debounce-input>\n\n @if (showList()) {\n <ul [id]=\"listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (suggestion of visibleSuggestions(); track suggestion; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"listboxId + '-' + i\"\n [class.active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"select(suggestion)\"\n >\n {{ suggestion }}\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * UniSearchInputComponent Barrel File\n *\n * This file exports all public-facing elements of the search-input component.\n */\n\nexport { UniSearchInputComponent } from './search-input.component';\nexport type { UniSearchInputOptions } from './search-input.model';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Options } from '../../cdk';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniSymbolComponent } from '../symbol';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-select',\n imports: [UniInputBoxComponent, UniSymbolComponent],\n templateUrl: './select-input.component.html',\n})\nexport class UniSelectComponent<T> implements FormValueControl<T | null> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T | null>(null);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<Options<T>>([]);\n readonly placeholder = input<string>();\n\n /** Accessible name for the select; a placeholder is not a label. */\n readonly ariaLabel = input<string>();\n\n protected readonly UNSELECTED = -1;\n\n /**\n * We use the index as the HTML value to avoid issues with\n * stringifying complex objects or duplicate labels.\n */\n protected readonly currentSelectedIndex = computed(() => {\n const currentVal = this.value();\n if (currentVal === null || currentVal === undefined) return this.UNSELECTED;\n\n // Find the index of the option that contains our current value\n const index = this.options().findIndex((opt) => opt.value === currentVal);\n return index.toString();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected handleSelectChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const index = parseInt(select.value, 10);\n\n if (index === this.UNSELECTED) {\n this.value.set(null);\n } else {\n const selectedOption = this.options()[index];\n // Update the model with the 'value' property of the Option interface\n this.value.set(selectedOption.value);\n }\n }\n\n selectClass = css({\n '& select': {\n paddingRight: 24, // Prevent arrow from overlapping\n cursor: 'pointer',\n '&::-ms-expand': { display: 'none' },\n },\n\n [`& select:has(option[value=\"${this.UNSELECTED}\"]:checked)`]: {\n color: 'color-mix(in srgb, currentColor 50%, transparent)',\n },\n });\n\n arrowClass = css({\n position: 'absolute',\n right: 0,\n pointerEvents: 'none' /* Crucial for clicking through */,\n });\n}\n","<uni-input-box [error]=\"showError()\" [class]=\"selectClass\">\n <select\n [disabled]=\"disabled()\"\n [value]=\"currentSelectedIndex()\"\n (change)=\"handleSelectChange($event)\"\n (blur)=\"touched.set(true)\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n >\n @if (placeholder()) {\n <option [value]=\"UNSELECTED\" disabled selected>\n {{ placeholder() }}\n </option>\n }\n\n @for (opt of options(); track opt.label; let i = $index) {\n <option [value]=\"i\">\n {{ opt.label }}\n </option>\n }\n </select>\n <uni-symbol name=\"keyboard_arrow_down\" [class]=\"arrowClass\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport type { SkeletonShape, UniSkeletonOptions } from './skeleton.model';\n\n/**\n * Loading placeholder painted with surface tokens. `text` renders one or more\n * lines (the last line shortened, as real text would be), `rect` and `circle`\n * render fixed shapes. The shimmer only animates when the user allows motion;\n * it degrades to static blocks under `prefers-reduced-motion`.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-skeleton',\n providers: [{ provide: COMPONENT_NAME, useValue: 'skeleton' }],\n host: { '[class]': 'className()', 'aria-hidden': 'true' },\n template: `\n @for (line of lineWidths(); track $index) {\n <div class=\"uni-skeleton-block\" [style.width]=\"line\"></div>\n }\n `,\n})\nexport class UniSkeletonComponent extends BaseComponent<UniSkeletonOptions> {\n shape = input<SkeletonShape>('text');\n /** CSS width; defaults to 100% for text/rect and `height` for circles. */\n width = input<string | number | undefined>(undefined);\n /** CSS height per block; defaults to 1em (text), 96px (rect), 40px (circle). */\n height = input<string | number | undefined>(undefined);\n /** Number of text lines (text shape only). */\n lines = input(1);\n\n private readonly cssSize = (value: string | number): string =>\n typeof value === 'number' ? `${value}px` : value;\n\n protected readonly resolvedHeight = computed(() => {\n const height = this.height();\n if (height !== undefined) return this.cssSize(height);\n return { text: '1em', rect: '96px', circle: '40px' }[this.shape()];\n });\n\n protected readonly lineWidths = computed(() => {\n const width = this.width() !== undefined ? this.cssSize(this.width()!) : undefined;\n if (this.shape() === 'circle') return [width ?? this.resolvedHeight()];\n if (this.shape() === 'rect') return [width ?? '100%'];\n const lines = Math.max(1, this.lines());\n // Multi-line text blocks end on a short line, like real paragraphs do.\n return Array.from({ length: lines }, (_, i) =>\n lines > 1 && i === lines - 1 ? (width ?? '60%') : (width ?? '100%')\n );\n });\n\n private readonly sweep = keyframes({\n from: { backgroundPosition: '200% 0' },\n to: { backgroundPosition: '-200% 0' },\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const base = this.theme.colors()[options.color ?? 'surface-variant'];\n const highlight = this.theme.colors()[options.highlightColor ?? 'surface'];\n const animated = (options.animation ?? 'shimmer') === 'shimmer';\n return css({\n display: 'flex',\n flexDirection: 'column',\n ...this.theme.gap(options.gap),\n '& .uni-skeleton-block': {\n height: this.resolvedHeight(),\n backgroundColor: base,\n ...(this.shape() === 'circle'\n ? { borderRadius: '50%', flex: 'none' }\n : this.theme.radius(options.borderRadius)),\n ...(animated &&\n motionSafe({\n backgroundImage: `linear-gradient(90deg, ${base} 40%, ${highlight} 50%, ${base} 60%)`,\n backgroundSize: '200% 100%',\n animation: `${this.sweep} ${options.duration ?? 1.4}s ease-in-out infinite`,\n })),\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniSliderOptions } from './slider.model';\n\n/**\n * Range slider on a native `<input type=\"range\">` — keyboard interaction and\n * the ARIA slider contract come from the platform. Fill, track, thumb and\n * radii resolve from `slider` theme tokens; the fill percentage rides a CSS\n * custom property so dragging never regenerates styles.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-slider',\n providers: [{ provide: COMPONENT_NAME, useValue: 'slider' }],\n template: `\n <input\n type=\"range\"\n [class]=\"inputClass()\"\n [style.--uni-slider-fill]=\"fillPercent()\"\n [min]=\"resolvedMin()\"\n [max]=\"resolvedMax()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"handleInput($event)\"\n (blur)=\"markAsTouched()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n `,\n})\nexport class UniSliderComponent\n extends BaseComponent<UniSliderOptions>\n implements FormValueControl<number>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<number>(0);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered value or error text — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n // `min`/`max` are part of the FormValueControl contract (synced from\n // min()/max() validators), so their type must admit undefined.\n min = input<number | undefined>(0);\n max = input<number | undefined>(100);\n step = input(1);\n\n protected readonly resolvedMin = computed(() => this.min() ?? 0);\n protected readonly resolvedMax = computed(() => this.max() ?? 100);\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set(Number((event.target as HTMLInputElement).value));\n }\n\n protected readonly fillPercent = computed(() => {\n const min = this.resolvedMin();\n const range = this.resolvedMax() - min;\n if (range <= 0) return '0%';\n const ratio = (this.value() - min) / range;\n return `${Math.min(100, Math.max(0, ratio * 100))}%`;\n });\n\n protected readonly inputClass = computed(() => {\n const options = this.componentOptions();\n const fill = this.theme.colors()[options.color ?? 'primary'];\n const track = this.theme.colors()[options.trackColor ?? 'surface-variant'];\n const radius = this.theme.radii()[options.borderRadius ?? 'max'];\n const trackHeight = options.trackHeight ?? 4;\n const thumbSize = options.thumbSize ?? 16;\n // Webkit paints the fill via a gradient stopped at the custom property;\n // Firefox has a real ::-moz-range-progress.\n const trackFill = `linear-gradient(to right, ${fill} var(--uni-slider-fill), ${track} var(--uni-slider-fill))`;\n const thumb = {\n appearance: 'none' as const,\n width: thumbSize,\n height: thumbSize,\n borderRadius: radius,\n border: 'none',\n background: fill,\n cursor: 'pointer',\n };\n return css({\n appearance: 'none',\n width: '100%',\n height: thumbSize,\n margin: 0,\n background: 'transparent',\n cursor: 'pointer',\n '&::-webkit-slider-runnable-track': {\n height: trackHeight,\n borderRadius: radius,\n background: trackFill,\n },\n '&::-webkit-slider-thumb': {\n ...thumb,\n marginTop: (trackHeight - thumbSize) / 2,\n },\n '&::-moz-range-track': { height: trackHeight, borderRadius: radius, background: track },\n '&::-moz-range-progress': { height: trackHeight, borderRadius: radius, background: fill },\n '&::-moz-range-thumb': thumb,\n '&:focus-visible': { outline: `2px solid ${fill}`, outlineOffset: 2 },\n '&:disabled': {\n cursor: 'not-allowed',\n opacity: 0.5,\n '&::-webkit-slider-thumb': { cursor: 'not-allowed' },\n '&::-moz-range-thumb': { cursor: 'not-allowed' },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniStatOptions } from './stat.model';\n\nconst SPARK_WIDTH = 96;\nconst SPARK_HEIGHT = 28;\n\n/**\n * KPI stat tile: muted label, large value (numbers auto-compact: 48234 →\n * \"48.2K\"), an optional delta whose ink is decided by *direction × whether up\n * is good* (never direction alone — churn going down is good news), and an\n * optional decorative sparkline. Frame, typography and inks are all `stat`\n * theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-stat',\n providers: [{ provide: COMPONENT_NAME, useValue: 'stat' }],\n host: { '[class]': 'className()' },\n template: `\n <span class=\"uni-stat-label\">{{ label() }}</span>\n <span class=\"uni-stat-value\">{{ displayValue() }}</span>\n @if (delta()) {\n <span class=\"uni-stat-meta\">\n <span class=\"uni-stat-delta\" [class.good]=\"deltaIsGood()\">\n <span aria-hidden=\"true\">{{ deltaIsUp() ? '▴' : '▾' }}</span>\n <span [class]=\"srOnly\">{{ deltaIsUp() ? 'up' : 'down' }}</span>\n {{ deltaMagnitude() }}\n </span>\n @if (caption()) {\n <span class=\"uni-stat-caption\">{{ caption() }}</span>\n }\n </span>\n }\n @if (sparkline(); as spark) {\n <svg\n class=\"uni-stat-trend\"\n aria-hidden=\"true\"\n [attr.width]=\"spark.width\"\n [attr.height]=\"spark.height\"\n [attr.viewBox]=\"'0 0 ' + spark.width + ' ' + spark.height\"\n >\n <path\n [attr.d]=\"spark.path\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle [attr.cx]=\"spark.endX\" [attr.cy]=\"spark.endY\" r=\"3.5\" />\n </svg>\n }\n `,\n})\nexport class UniStatComponent extends BaseComponent<UniStatOptions> {\n /** What is being measured, sentence case. */\n label = input.required<string>();\n /** The headline number: strings render verbatim, numbers auto-compact. */\n value = input.required<string | number>();\n /** Signed change, e.g. \"+12.4%\" or \"-0.4%\". The sign drives the arrow. */\n delta = input<string>();\n /** Whether an upward movement is good news. Flip for churn, errors, cost. */\n upIsGood = input(true);\n /** Names the comparison period, e.g. \"vs last month\". */\n caption = input<string>();\n /** Recent values for the decorative sparkline (12 points reads best). */\n trend = input<number[] | undefined>(undefined);\n\n protected readonly srOnly = css(visuallyHidden);\n\n protected readonly displayValue = computed(() => {\n const value = this.value();\n if (typeof value !== 'number') return value;\n return new Intl.NumberFormat(undefined, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value);\n });\n\n protected readonly deltaIsUp = computed(() => !this.delta()?.trim().startsWith('-'));\n protected readonly deltaIsGood = computed(() => this.deltaIsUp() === this.upIsGood());\n protected readonly deltaMagnitude = computed(() => this.delta()?.trim().replace(/^[-+]/, '') ?? '');\n\n protected readonly sparkline = computed(() => {\n const points = this.trend();\n if (!points || points.length < 2) return undefined;\n const min = Math.min(...points);\n const range = Math.max(...points) - min || 1;\n const step = SPARK_WIDTH / (points.length - 1);\n const xy = points.map((p, i): [number, number] => [\n i * step,\n SPARK_HEIGHT - 3 - ((p - min) / range) * (SPARK_HEIGHT - 6),\n ]);\n const [endX, endY] = xy[xy.length - 1];\n return {\n width: SPARK_WIDTH,\n height: SPARK_HEIGHT,\n path: xy.map(([x, y], i) => `${i ? 'L' : 'M'}${x.toFixed(1)},${y.toFixed(1)}`).join(' '),\n endX: endX.toFixed(1),\n endY: endY.toFixed(1),\n };\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box',\n ...this.theme.gap(options.gap),\n ...this.theme.colorPair(options.color),\n ...this.theme.border(options.border),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.padding(options.padding),\n '& .uni-stat-label': {\n ...this.theme.typeface(options.labelTypeface),\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-value': {\n ...this.theme.typeface(options.valueTypeface),\n ...this.theme.color('on-background'),\n },\n '& .uni-stat-meta': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n columnGap: 8,\n },\n '& .uni-stat-delta': {\n fontSize: 13,\n fontWeight: 600,\n ...this.theme.color(options.negativeColor),\n '&.good': this.theme.color(options.positiveColor),\n },\n '& .uni-stat-caption': {\n fontSize: 11.5,\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-trend': {\n position: 'absolute',\n right: 16,\n bottom: 14,\n '& path': { stroke: this.theme.colors()[options.trendColor ?? 'outline'] },\n '& circle': { fill: this.theme.colors()[options.trendAccent ?? 'primary'] },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, input, viewChild, TemplateRef } from '@angular/core';\nimport { uniqueId } from '../../cdk';\n\n/**\n * One tab inside `uni-tabs`: a label for the tablist plus projected panel\n * content. Content is captured in a template and only instantiated while the\n * tab is selected, so inactive panels cost nothing.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tab',\n template: `<ng-template #content><ng-content /></ng-template>`,\n})\nexport class UniTabComponent {\n label = input.required<string>();\n disabled = input(false);\n\n /** Stable ids wiring tab ↔ panel ARIA relationships. */\n readonly id = uniqueId('uni-tab');\n readonly panelId = `${this.id}-panel`;\n\n readonly content = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n model,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport { UniTabComponent } from './tab.component';\nimport type { UniTabsOptions } from './tabs.model';\n\n/**\n * WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus\n * and select), Home/End, disabled tabs skipped. Only the selected panel is\n * instantiated. All styling resolves from `tabs` theme option tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tabs',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'tabs' }],\n template: `\n <!-- Roving-tabindex composite: focus lives on the tab buttons; keydown\n bubbles to the tablist, which itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"tablist\" [class]=\"tablistClass()\" (keydown)=\"onKeydown($event)\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"tabClass()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n [class.active]=\"i === activeIndex()\"\n (click)=\"select(i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n @if (activeTab(); as tab) {\n <div\n role=\"tabpanel\"\n [id]=\"tab.panelId\"\n [attr.aria-labelledby]=\"tab.id\"\n tabindex=\"0\"\n [class]=\"panelClass()\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.content()\" />\n </div>\n }\n `,\n})\nexport class UniTabsComponent extends BaseComponent<UniTabsOptions> {\n /** Index of the selected tab; two-way bindable. */\n readonly selectedIndex = model(0);\n\n protected readonly tabs = contentChildren(UniTabComponent);\n private readonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n /** The selection, snapped to the nearest enabled tab. */\n protected readonly activeIndex = computed(() => {\n const tabs = this.tabs();\n const wanted = this.selectedIndex();\n if (tabs[wanted] && !tabs[wanted].disabled()) return wanted;\n const firstEnabled = tabs.findIndex((tab) => !tab.disabled());\n return firstEnabled === -1 ? 0 : firstEnabled;\n });\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n\n protected select(index: number): void {\n if (this.tabs()[index]?.disabled()) return;\n this.selectedIndex.set(index);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const enabled = this.tabs()\n .map((tab, index) => ({ tab, index }))\n .filter(({ tab }) => !tab.disabled())\n .map(({ index }) => index);\n if (enabled.length === 0) return;\n\n const position = enabled.indexOf(this.activeIndex());\n let next: number | undefined;\n switch (event.key) {\n case 'ArrowRight':\n next = enabled[(position + 1) % enabled.length];\n break;\n case 'ArrowLeft':\n next = enabled[(position - 1 + enabled.length) % enabled.length];\n break;\n case 'Home':\n next = enabled[0];\n break;\n case 'End':\n next = enabled[enabled.length - 1];\n break;\n default:\n return;\n }\n event.preventDefault();\n this.select(next);\n this.tabButtons()[next]?.nativeElement.focus();\n }\n\n protected readonly tablistClass = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'stretch',\n ...this.theme.gap(options.gap),\n ...this.theme.borderBottom(options.divider),\n });\n });\n\n protected readonly tabClass = computed(() => {\n const options = this.componentOptions();\n const thickness = options.indicatorThickness\n ? this.theme.getThickness(options.indicatorThickness)\n : 2;\n return css({\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n // The indicator overlays the divider: reserve its thickness on every\n // tab so labels don't shift when selection moves.\n borderBottom: `${thickness}px solid transparent`,\n marginBottom: -1,\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.paddingTop('sm'),\n ...this.theme.paddingBottom('sm'),\n ...this.theme.radius(options.borderRadius),\n ...motionSafe({ transition: 'color 0.15s ease, border-color 0.15s ease' }),\n '&.active': {\n ...this.theme.color(options.activeTextColor),\n ...this.theme.backgroundColor(options.activeColor),\n borderBottomColor: this.theme.colors()[options.indicatorColor ?? 'primary'],\n },\n '&:disabled': {\n ...this.theme.color('on-disabled'),\n cursor: 'not-allowed',\n },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[options.indicatorColor ?? 'primary']}`,\n outlineOffset: -2,\n },\n });\n });\n\n protected readonly panelClass = computed(() =>\n css({\n ...this.theme.paddingTop('md'),\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.componentOptions().indicatorColor ?? 'primary']}`,\n outlineOffset: 2,\n },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTextareaOptions } from './textarea.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-textarea',\n imports: [UniInputBoxComponent],\n templateUrl: './textarea.component.html',\n})\nexport class UniTextareaComponent implements FormValueControl<string> {\n private theme = inject(ThemeService);\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n /** Visible text rows. Defaults to the theme's `textarea` options. */\n rows = input<number | undefined>(undefined);\n\n private options = this.theme.getComponentOptions<UniTextareaOptions>('textarea');\n\n protected readonly resolvedRows = computed(() => this.rows() ?? this.options().rows ?? 3);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textareaClass = computed(() =>\n css({\n width: '100%',\n resize: this.options().resize ?? 'vertical',\n })\n );\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLTextAreaElement).value);\n }\n}\n","<uni-input-box [error]=\"showError()\" height=\"auto\">\n <textarea\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [rows]=\"resolvedRows()\"\n [class]=\"textareaClass()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n ></textarea>\n</uni-input-box>\n","/**\n * UniSortHeaderComponent Barrel File\n *\n * This file exports all public-facing elements of the sort-header component.\n */\n\nexport { UniSortHeaderComponent } from './sort-header.component';\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniBoxComponent, UniRowComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tag',\n imports: [UniBoxComponent, UniIconButtonComponent, UniTextComponent, UniRowComponent],\n templateUrl: './tag.component.html',\n})\nexport class UniTagComponent {\n label = input<string>();\n value = input<string | number>();\n\n // TODO(v4): rename to closed — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n close = output<string | number>();\n\n handleClose() {\n const v = this.value();\n if (v) this.close.emit(v);\n }\n}\n","<div box-layout color=\"primary\" borderRadius=\"max\" display=\"inline-block\">\n <div row-layout paddingLeft=\"sm\" gap=\"xs\">\n <span uni-text display=\"block\" typeface=\"tag\">{{ label() }}</span>\n <button icon-button symbolName=\"close\" size=\"sm\" (click)=\"handleClose()\">\n Remove {{ label() }}\n </button>\n </div>\n</div>\n","/**\n * UniTagComponent Barrel File\n *\n * This file exports all public-facing elements of the tag component.\n */\n\nexport { UniTagComponent } from './tag.component';\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport {\n emitDtcgTokens,\n emitThemeFile,\n generatePalette,\n ShapeRadii,\n type ColorCategory,\n type ColorScheme,\n type Colors,\n type ColorToken,\n type ContrastCheck,\n type GenerationInput,\n type ThemeShape,\n type Variant,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService, type BrandPaletteConfig } from '../../theming';\nimport { UniButtonComponent } from '../button';\n\nconst SCHEMES: ColorScheme[] = [\n 'monochromatic',\n 'analogous',\n 'complimentary',\n 'splitComplimentary',\n 'triadic',\n];\nconst CATEGORIES: ColorCategory[] = ['jewel', 'pastel', 'earth', 'neutral', 'florescent', 'shades'];\nconst SHAPES: ThemeShape[] = ['sharp', 'modern', 'playful'];\nconst VARIANTS: Variant[] = ['primary', 'secondary', 'tertiary', 'warn', 'ghost'];\n\n// Representative tokens shown as swatches in each mode panel.\nconst SWATCHES: { label: string; token: ColorToken; on: ColorToken }[] = [\n { label: 'primary', token: 'primary', on: 'on-primary' },\n { label: 'secondary', token: 'secondary', on: 'on-secondary' },\n { label: 'tertiary', token: 'tertiary', on: 'on-tertiary' },\n { label: 'container', token: 'primary-container', on: 'on-primary-container' },\n { label: 'error', token: 'error', on: 'on-error' },\n { label: 'warn', token: 'warn', on: 'on-warn' },\n { label: 'success', token: 'success', on: 'on-success' },\n { label: 'surface', token: 'surface', on: 'on-surface' },\n];\n\ninterface Preset {\n label: string;\n config: BrandPaletteConfig;\n}\n\n// Curated presets for the OKLCH engine. Brand colors ride as soft `targets`:\n// emitted exactly where they already meet WCAG AA, lightness-adjusted (never\n// hue) where they don't — so every preset is AA-clean in both modes.\nconst PRESETS: Preset[] = [\n {\n label: 'Indigo',\n config: { seed: '#4F46E5', scheme: 'analogous', category: 'jewel', targets: { primary: '#4F46E5' } },\n },\n {\n label: 'Ocean',\n config: { seed: '#0066B2', scheme: 'complimentary', category: 'jewel', targets: { primary: '#0066B2' } },\n },\n {\n label: 'Emerald',\n config: { seed: '#047857', scheme: 'analogous', category: 'jewel', targets: { primary: '#047857' } },\n },\n {\n label: 'Sunset',\n config: { seed: '#DC2626', scheme: 'splitComplimentary', category: 'jewel', targets: { primary: '#DC2626' } },\n },\n {\n label: 'Berry',\n config: { seed: '#C2185B', scheme: 'triadic', category: 'jewel', targets: { primary: '#C2185B' } },\n },\n {\n label: 'Heritage',\n config: {\n seed: '#2C3E35',\n scheme: 'complimentary',\n category: 'earth',\n targets: { primary: '#2C3E35', secondary: '#D4A373' },\n },\n },\n {\n label: 'Sage & Clay',\n config: {\n seed: '#6B8F71',\n scheme: 'analogous',\n category: 'earth',\n targets: { primary: '#6B8F71', secondary: '#B3593C' },\n },\n },\n {\n label: 'Pastel',\n config: { seed: '#A78BFA', scheme: 'analogous', category: 'pastel', targets: { primary: '#A78BFA' } },\n },\n {\n label: 'Graphite',\n config: {\n seed: '#475569',\n scheme: 'monochromatic',\n category: 'neutral',\n accentSaturationFloor: 10,\n targets: { primary: '#475569' },\n },\n },\n];\n\n@Component({\n selector: 'uni-theme-builder',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UniButtonComponent],\n host: { '[class]': 'shell()' },\n template: `\n <aside [class]=\"controls()\">\n <header class=\"tb-head\">\n <span class=\"tb-eyebrow\">Theme builder · Playground</span>\n <h2 class=\"tb-title\">Make Uni your brand</h2>\n <p class=\"tb-lede\">\n Every token is derived in OKLCH from a seed color, a scheme and a category — or bring\n exact brand colors. Presets are WCAG AA in light and dark. Changes apply to\n <b>every</b> component in this Storybook, live.\n </p>\n </header>\n\n <div class=\"tb-presets\">\n @for (p of presets; track p.label) {\n <button type=\"button\" class=\"tb-preset\" (click)=\"applyPreset(p.config)\">\n <span\n class=\"tb-dot\"\n [style.background]=\"p.config.targets?.primary ?? p.config.brand?.primary ?? p.config.seed\"\n ></span>\n {{ p.label }}\n </button>\n }\n </div>\n\n <label class=\"tb-field\">\n <span>Seed color</span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" />\n <input type=\"text\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field\">\n <span>Scheme</span>\n <select (change)=\"setScheme($any($event.target).value)\">\n @for (s of schemes; track s) {\n <option [value]=\"s\" [selected]=\"s === scheme()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Category</span>\n <select (change)=\"setCategory($any($event.target).value)\">\n @for (c of categories; track c) {\n <option [value]=\"c\" [selected]=\"c === category()\">{{ c }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Shape</span>\n <select (change)=\"setShape($any($event.target).value)\">\n @for (s of shapes; track s) {\n <option [value]=\"s\" [selected]=\"s === shape()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Accent saturation floor · {{ floor() }}</span>\n <input type=\"range\" min=\"0\" max=\"45\" [value]=\"floor()\" (input)=\"setFloor($any($event.target).value)\" />\n </label>\n\n <div class=\"tb-field\">\n <span>Storybook mode</span>\n <div class=\"tb-toggle\">\n <button type=\"button\" [class.on]=\"mode() === 'light'\" (click)=\"setMode('light')\">Light</button>\n <button type=\"button\" [class.on]=\"mode() === 'dark'\" (click)=\"setMode('dark')\">Dark</button>\n </div>\n </div>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinPrimary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinPrimary()\" (change)=\"setPinPrimary($any($event.target).checked)\" />\n Pin primary <em>{{ pinPrimary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinSecondary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinSecondary()\" (change)=\"setPinSecondary($any($event.target).checked)\" />\n Pin secondary <em>{{ pinSecondary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <div class=\"tb-field\">\n <span>Export</span>\n <div class=\"tb-exports\">\n <button type=\"button\" (click)=\"copyThemeFile()\">\n {{ copied() === 'file' ? 'Copied ✓' : 'Copy uni-theme.ts' }}\n </button>\n <button type=\"button\" (click)=\"copyNgAdd()\">\n {{ copied() === 'ngadd' ? 'Copied ✓' : 'Copy ng add command' }}\n </button>\n <button type=\"button\" (click)=\"copyDtcg()\">\n {{ copied() === 'dtcg' ? 'Copied ✓' : 'Copy DTCG JSON' }}\n </button>\n </div>\n </div>\n\n <div class=\"tb-actions\">\n <button type=\"button\" class=\"tb-reset\" (click)=\"reset()\">Reset to default</button>\n </div>\n <code class=\"tb-snippet\">{{ snippet() }}</code>\n </aside>\n\n <section [class]=\"preview()\">\n <p class=\"tb-group\">Light & dark — generated together, side by side</p>\n <div class=\"tb-modes\">\n @for (m of modePanels(); track m.label) {\n <div class=\"tb-panel\" [style.background]=\"m.colors['background']\" [style.borderColor]=\"m.colors['outline']\">\n <span class=\"tb-panel-tag\" [style.color]=\"m.colors['on-background-variant']\">{{ m.label }}</span>\n <div class=\"tb-mode-swatches\">\n @for (s of swatches; track s.label) {\n <div class=\"tb-swatch\" [style.background]=\"m.colors[s.token]\" [style.color]=\"m.colors[s.on]\">\n <span>{{ s.label }}</span>\n <code>{{ m.colors[s.token] }}</code>\n </div>\n }\n </div>\n <div class=\"tb-mini-card\" [style.background]=\"m.colors['surface']\" [style.borderColor]=\"m.colors['outline']\">\n <div class=\"tb-mini-head\" [style.background]=\"m.colors['primary']\" [style.color]=\"m.colors['on-primary']\">\n Card header\n </div>\n <div class=\"tb-mini-body\" [style.color]=\"m.colors['on-surface']\">\n Semantic inks stay legible:\n <b [style.color]=\"m.colors['error']\">error</b> ·\n <b [style.color]=\"m.colors['warn']\">warn</b> ·\n <b [style.color]=\"m.colors['success']\">success</b>.\n </div>\n </div>\n </div>\n }\n </div>\n\n <p class=\"tb-group\">Real components — your brand, live ({{ mode() }})</p>\n <div class=\"tb-buttons\">\n @for (v of variants; track v) {\n <button text-button [variant]=\"v\" size=\"lg\">{{ v }}</button>\n }\n </div>\n <div class=\"tb-buttons\">\n @for (sz of sizes; track sz) {\n <button text-button variant=\"primary\" [size]=\"sz\">{{ sz }}</button>\n }\n </div>\n\n <p class=\"tb-group\">\n Contrast report — {{ report().checks.length }} pairs ·\n worst {{ report().worst }}:1 ·\n @if (report().failing.length === 0) {\n <span class=\"tb-pass\">all AA</span>\n } @else {\n <span class=\"tb-fail\">{{ report().failing.length }} failing</span>\n }\n <button type=\"button\" class=\"tb-link\" (click)=\"showAllPairs.set(!showAllPairs())\">\n {{ showAllPairs() ? 'hide detail' : 'show all pairs' }}\n </button>\n </p>\n @if (report().failing.length > 0 || showAllPairs()) {\n <div class=\"tb-matrix\">\n <table>\n <thead>\n <tr><th>mode</th><th>foreground</th><th>on</th><th>ratio</th><th>needs</th><th>level</th></tr>\n </thead>\n <tbody>\n @for (c of visibleChecks(); track $index) {\n <tr [class.bad]=\"!c.pass\">\n <td>{{ c.mode }}</td>\n <td><code>{{ c.foreground }}</code></td>\n <td><code>{{ c.background }}</code></td>\n <td>{{ c.ratio }}</td>\n <td>{{ c.required }}</td>\n <td>{{ c.level }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n @if (report().failing.length > 0) {\n <p class=\"tb-hint\">\n Failing pairs come from hard-pinned brand colors (pins are emitted verbatim). Un-pin, or\n use a preset — soft targets keep brand hue while the guard-rail restores AA.\n </p>\n }\n\n <p class=\"tb-hint\">Tip: browse to any component story in the sidebar — it's wearing your brand now.</p>\n </section>\n `,\n})\nexport class UniThemeBuilderComponent {\n protected theme = inject(ThemeService);\n\n protected readonly schemes = SCHEMES;\n protected readonly categories = CATEGORIES;\n protected readonly shapes = SHAPES;\n protected readonly variants = VARIANTS;\n protected readonly sizes = ['sm', 'md', 'lg', 'xl'] as const;\n protected readonly swatches = SWATCHES;\n protected readonly presets = PRESETS;\n\n protected seed = signal('#4F46E5');\n protected scheme = signal<ColorScheme>('triadic');\n protected category = signal<ColorCategory>('neutral');\n protected shape = signal<ThemeShape>('modern');\n protected floor = signal(18);\n protected mode = signal<'light' | 'dark'>('light');\n protected pinPrimary = signal(false);\n protected primaryHex = signal('#2C3E35');\n protected pinSecondary = signal(false);\n protected secondaryHex = signal('#D4A373');\n /** Soft brand targets carried by the active preset (cleared on seed edits). */\n protected targets = signal<BrandPaletteConfig['targets']>(undefined);\n\n protected copied = signal<'file' | 'ngadd' | 'dtcg' | null>(null);\n protected showAllPairs = signal(false);\n\n constructor() {\n // Seed the controls from an already-active custom palette, if any.\n const existing = this.theme.customPalette();\n if (existing) {\n this.seed.set(existing.seed);\n this.scheme.set(existing.scheme);\n this.category.set(existing.category);\n this.floor.set(existing.accentSaturationFloor ?? 18);\n this.mode.set(existing.mode ?? 'light');\n if (existing.brand?.primary) {\n this.pinPrimary.set(true);\n this.primaryHex.set(existing.brand.primary);\n }\n if (existing.brand?.secondary) {\n this.pinSecondary.set(true);\n this.secondaryHex.set(existing.brand.secondary);\n }\n this.targets.set(existing.targets);\n }\n }\n\n protected config = computed<BrandPaletteConfig>(() => ({\n seed: this.seed(),\n scheme: this.scheme(),\n category: this.category(),\n mode: this.mode(),\n accentSaturationFloor: this.floor(),\n radii: ShapeRadii[this.shape()],\n ...(this.targets() ? { targets: this.targets() } : {}),\n brand: {\n ...(this.pinPrimary() ? { primary: this.primaryHex() } : {}),\n ...(this.pinSecondary() ? { secondary: this.secondaryHex() } : {}),\n },\n }));\n\n /**\n * Both modes generated on every input change (< 15 ms each), independent of\n * the storybook-wide theme — the side-by-side preview and the contrast\n * report always show the full light+dark picture.\n */\n protected palettes = computed(() => {\n const base = { ...this.config() };\n const checks: ContrastCheck[] = [];\n const light = generatePalette({ ...base, mode: 'light', checks });\n const dark = generatePalette({ ...base, mode: 'dark', checks });\n return { light, dark, checks };\n });\n\n protected modePanels = computed((): { label: 'light' | 'dark'; colors: Colors }[] => [\n { label: 'light', colors: this.palettes().light },\n { label: 'dark', colors: this.palettes().dark },\n ]);\n\n protected report = computed(() => {\n const { checks } = this.palettes();\n return {\n checks,\n failing: checks.filter((c) => !c.pass),\n worst: checks.reduce((worst, c) => Math.min(worst, c.ratio), 21),\n };\n });\n\n protected visibleChecks = computed(() =>\n this.showAllPairs() ? this.report().checks : this.report().failing\n );\n\n protected snippet = computed(() => {\n const { radii: _radii, ...rest } = this.config();\n return JSON.stringify(rest);\n });\n\n /** The builder state expressed as engine input — drives all three exports. */\n protected generationInput = computed<GenerationInput>(() => {\n const targets = this.targets();\n const seeds = [this.pinPrimary() ? this.primaryHex() : (targets?.primary ?? this.seed())];\n const secondary = this.pinSecondary() ? this.secondaryHex() : targets?.secondary;\n if (secondary) seeds.push(secondary);\n if (targets?.tertiary) seeds.push(targets.tertiary);\n return {\n seed: seeds.length === 1 ? seeds[0] : seeds,\n scheme: this.scheme(),\n vibe: this.category(),\n shape: this.shape(),\n name: 'Brand',\n };\n });\n\n protected color(token: ColorToken): string {\n return this.theme.colors()[token] ?? 'transparent';\n }\n\n private apply(): void {\n this.theme.applyPalette(this.config());\n }\n\n private copyToClipboard(kind: 'file' | 'ngadd' | 'dtcg', text: string): void {\n void navigator.clipboard?.writeText(text).then(() => {\n this.copied.set(kind);\n setTimeout(() => this.copied.set(null), 1600);\n });\n }\n\n protected copyThemeFile(): void {\n this.copyToClipboard('file', emitThemeFile(this.generationInput()).content);\n }\n\n protected copyNgAdd(): void {\n const input = this.generationInput();\n const seeds = Array.isArray(input.seed) ? input.seed.join(',') : input.seed;\n this.copyToClipboard(\n 'ngadd',\n `ng add @uni-design-system/uni-angular --brand=${seeds} --shape=${input.shape}`\n );\n }\n\n protected copyDtcg(): void {\n const { light, dark } = this.palettes();\n const radii = ShapeRadii[this.shape()];\n const spacing = this.theme.spacing();\n this.copyToClipboard(\n 'dtcg',\n JSON.stringify(\n {\n light: emitDtcgTokens({ colors: light, radii, spacing }),\n dark: emitDtcgTokens({ colors: dark, radii, spacing }),\n },\n null,\n 2\n )\n );\n }\n\n protected setSeed(v: string) {\n if (/^#?[0-9a-fA-F]{6}$/.test(v.replace('#', ''))) {\n this.seed.set(v.startsWith('#') ? v : `#${v}`);\n // A hand-edited seed takes over from any preset's soft brand targets.\n this.targets.set(undefined);\n this.apply();\n }\n }\n protected setScheme(v: ColorScheme) {\n this.scheme.set(v);\n this.apply();\n }\n protected setCategory(v: ColorCategory) {\n this.category.set(v);\n this.apply();\n }\n protected setShape(v: ThemeShape) {\n this.shape.set(v);\n this.apply();\n }\n protected setFloor(v: string) {\n this.floor.set(Number(v));\n this.apply();\n }\n protected setMode(v: 'light' | 'dark') {\n this.mode.set(v);\n this.apply();\n }\n protected setPinPrimary(v: boolean) {\n this.pinPrimary.set(v);\n this.apply();\n }\n protected setPrimaryHex(v: string) {\n this.primaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinPrimary()) this.apply();\n }\n protected setPinSecondary(v: boolean) {\n this.pinSecondary.set(v);\n this.apply();\n }\n protected setSecondaryHex(v: string) {\n this.secondaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinSecondary()) this.apply();\n }\n\n protected applyPreset(config: BrandPaletteConfig) {\n this.seed.set(config.seed);\n this.scheme.set(config.scheme);\n this.category.set(config.category);\n this.floor.set(config.accentSaturationFloor ?? 18);\n this.targets.set(config.targets);\n this.pinPrimary.set(!!config.brand?.primary);\n if (config.brand?.primary) this.primaryHex.set(config.brand.primary);\n this.pinSecondary.set(!!config.brand?.secondary);\n if (config.brand?.secondary) this.secondaryHex.set(config.brand.secondary);\n this.apply();\n }\n\n protected reset() {\n this.theme.clearCustomPalette();\n this.seed.set('#4F46E5');\n this.scheme.set('triadic');\n this.category.set('neutral');\n this.shape.set('modern');\n this.floor.set(18);\n this.mode.set('light');\n this.targets.set(undefined);\n this.pinPrimary.set(false);\n this.pinSecondary.set(false);\n }\n\n // ── Styling (reads live theme tokens so the builder wears the brand too) ──\n private c = (token: ColorToken) => this.theme.colors()[token] ?? 'transparent';\n\n protected shell = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'minmax(280px, 340px) 1fr',\n gap: 24,\n alignItems: 'start',\n padding: 24,\n background: this.c('background'),\n color: this.c('on-background'),\n minHeight: '100vh',\n fontFamily: 'Red Hat Display, system-ui, sans-serif',\n '@media (max-width: 820px)': { gridTemplateColumns: '1fr' },\n '& .tb-eyebrow': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.6,\n },\n '& .tb-title': { fontSize: 26, margin: '6px 0 8px', letterSpacing: '-0.02em' },\n '& .tb-lede': { fontSize: 14, lineHeight: 1.5, opacity: 0.8, margin: 0 },\n '& .tb-group': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.55,\n margin: '4px 0 12px',\n },\n })\n );\n\n protected controls = computed(() =>\n css({\n position: 'sticky',\n top: 16,\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n padding: 20,\n borderRadius: 14,\n background: this.c('surface'),\n border: `1px solid ${this.c('outline')}`,\n '& .tb-head': { display: 'flex', flexDirection: 'column' },\n '& .tb-presets': { display: 'flex', flexWrap: 'wrap', gap: 8 },\n '& .tb-preset': {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 7,\n cursor: 'pointer',\n borderRadius: 999,\n padding: '5px 11px 5px 6px',\n fontSize: 12.5,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('surface'),\n color: this.c('on-surface'),\n },\n '& .tb-dot': { width: 13, height: 13, borderRadius: '50%' },\n '& .tb-field': { display: 'flex', flexDirection: 'column', gap: 6, fontSize: 13 },\n '& .tb-field > span': { fontSize: 12, opacity: 0.7 },\n '& .tb-row': { display: 'flex', gap: 8, alignItems: 'center' },\n '& input[type=color]': {\n width: 40,\n height: 34,\n padding: 0,\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 8,\n background: 'none',\n cursor: 'pointer',\n },\n '& input[type=text], & select': {\n width: '100%',\n height: 34,\n padding: '0 10px',\n borderRadius: 8,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& input[type=range]': { width: '100%', accentColor: this.c('primary') },\n '& .tb-toggle': { display: 'flex', gap: 6 },\n '& .tb-toggle button': {\n flex: 1,\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n },\n '& .tb-toggle button.on': {\n background: this.c('primary'),\n color: this.c('on-primary'),\n borderColor: this.c('primary'),\n },\n '& .tb-exports': { display: 'flex', flexDirection: 'column', gap: 6 },\n '& .tb-exports button': {\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 12.5,\n border: `1px solid ${this.c('primary')}`,\n background: this.c('primary-surface'),\n color: this.c('on-primary-surface'),\n },\n '& .tb-pin.dim input[type=color], & .tb-pin.dim input[type=text]': { opacity: 0.45 },\n '& .tb-pin em': {\n fontStyle: 'normal',\n fontSize: 10,\n padding: '1px 6px',\n borderRadius: 5,\n marginLeft: 4,\n background: this.c('primary-container'),\n color: this.c('on-primary-container'),\n },\n '& .tb-reset': {\n cursor: 'pointer',\n borderRadius: 8,\n padding: '8px 14px',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& .tb-snippet': {\n display: 'block',\n fontFamily: 'monospace',\n fontSize: 10.5,\n lineHeight: 1.5,\n wordBreak: 'break-all',\n opacity: 0.6,\n },\n })\n );\n\n protected preview = computed(() =>\n css({\n display: 'flex',\n flexDirection: 'column',\n gap: 10,\n '& .tb-modes': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gap: 14,\n marginBottom: 20,\n },\n '& .tb-panel': {\n border: '1px solid',\n borderRadius: 14,\n padding: 14,\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n },\n '& .tb-panel-tag': {\n fontSize: 10.5,\n letterSpacing: '0.12em',\n textTransform: 'uppercase',\n },\n '& .tb-mode-swatches': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(110px, 1fr))',\n gap: 8,\n },\n '& .tb-swatch': {\n borderRadius: 10,\n padding: '12px 12px',\n minHeight: 60,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n '& .tb-swatch span': { fontSize: 12.5, fontWeight: 600 },\n '& .tb-swatch code': { fontFamily: 'monospace', fontSize: 10.5, opacity: 0.85 },\n '& .tb-mini-card': { borderRadius: 10, overflow: 'hidden', border: '1px solid' },\n '& .tb-mini-head': { padding: '8px 14px', fontWeight: 600, fontSize: 13 },\n '& .tb-mini-body': { padding: '10px 14px', fontSize: 12.5, lineHeight: 1.5 },\n '& .tb-buttons': { display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center', marginBottom: 14 },\n '& .tb-pass': { color: this.c('success'), fontWeight: 700 },\n '& .tb-fail': { color: this.c('error'), fontWeight: 700 },\n '& .tb-link': {\n marginLeft: 10,\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n color: this.c('primary'),\n fontSize: 11,\n textTransform: 'none',\n letterSpacing: 'normal',\n textDecoration: 'underline',\n },\n '& .tb-matrix': {\n maxHeight: 320,\n overflow: 'auto',\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 10,\n marginBottom: 12,\n '& table': { width: '100%', borderCollapse: 'collapse', fontSize: 12 },\n '& th': {\n position: 'sticky',\n top: 0,\n textAlign: 'left',\n padding: '8px 10px',\n background: this.c('surface-variant'),\n color: this.c('on-surface-variant'),\n fontSize: 10.5,\n textTransform: 'uppercase',\n letterSpacing: '0.08em',\n },\n '& td': { padding: '6px 10px', borderTop: `1px solid ${this.c('outline')}` },\n '& td code': { fontFamily: 'monospace', fontSize: 11.5 },\n '& tr.bad td': { background: this.c('error-container'), color: this.c('on-error-container') },\n },\n '& .tb-hint': { fontSize: 12.5, opacity: 0.6, marginTop: 8 },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport type { ThemeName } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport { UniSelectComponent } from '../select-input';\n\n/**\n * Drop-in switcher for the themes registered via `UNI_THEMES`: a select over\n * `ThemeService.themeOptions` that applies the choice through `selectTheme`\n * (so it persists across reloads like any other theme selection).\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-theme-switch',\n imports: [UniSelectComponent],\n template: `\n <uni-select\n [options]=\"theme.themeOptions()\"\n [value]=\"selected()\"\n (valueChange)=\"select($event)\"\n [ariaLabel]=\"ariaLabel()\"\n />\n `,\n})\nexport class UniThemeSwitchComponent {\n protected theme = inject(ThemeService);\n\n /** Accessible name for the underlying select. */\n ariaLabel = input('Theme');\n\n /** Emits the selected theme key after it has been applied. */\n themeChanged = output<ThemeName>();\n\n protected selected = computed<ThemeName | null>(() => this.theme.selectedThemeKey() || null);\n\n protected select(themeName: ThemeName | null): void {\n if (!themeName) return;\n this.theme.selectTheme(themeName);\n this.themeChanged.emit(themeName);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniToggleOptions } from './toggle.model';\n\n@Component({\n selector: 'uni-toggle',\n imports: [UniTextComponent],\n templateUrl: './toggle.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'toggle' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniToggleComponent\n extends BaseComponent<UniToggleOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n private readonly metrics = computed(() => {\n const toggleSize = (this.componentOptions().size as number) || 20;\n const sliderSize = toggleSize * 0.8;\n return {\n toggleSize,\n toggleWidth: toggleSize * 2,\n sliderSize,\n sliderOffset: (toggleSize - sliderSize) / 2,\n };\n });\n\n protected readonly toggleLabel = computed(() => {\n const { toggleSize, toggleWidth, sliderSize, sliderOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .toggle-switch': {\n width: toggleWidth,\n height: toggleSize,\n backgroundColor: this.disabled()\n ? this.getThemeColor('disabled')\n : this.getThemeColor(this.componentOptions().trackColor ?? 'surface-variant'),\n borderRadius: toggleSize / 2,\n position: 'relative',\n transition: 'all 0.3s ease',\n },\n\n '& .toggle-slider': {\n width: sliderSize,\n height: sliderSize,\n backgroundColor: this.getThemeColor(this.componentOptions().knobColor ?? 'surface'),\n borderRadius: '50%',\n position: 'absolute',\n top: sliderOffset,\n left: sliderOffset,\n transition: 'all 0.3s ease',\n ...this.theme.boxShadow('raised'),\n },\n\n // Hover darkens whatever the token resolves to — the button convention.\n '&:hover .toggle-switch': this.disabled()\n ? {}\n : {\n filter: 'brightness(0.95)',\n },\n });\n });\n\n protected readonly toggleInput = computed(() => {\n const { toggleSize } = this.metrics();\n return css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .toggle-switch': {\n backgroundColor: this.getThemeColor(this.variant()),\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .toggle-switch .toggle-slider': {\n transform: `translateX(${toggleSize}px)`,\n },\n\n '&:disabled + .toggle-switch': {\n cursor: 'not-allowed',\n },\n\n '&:focus + .toggle-switch': {\n outline: `2px solid ${this.getThemeColor(this.variant())}`,\n outlineOffset: '2px',\n },\n });\n });\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<label [class]=\"toggleLabel()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [class]=\"toggleInput()\"\n [checked]=\"checked()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"toggle-switch\">\n <div class=\"toggle-slider\"></div>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniTooltipOptions } from './tooltip.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n useTimer,\n FOCUSABLE_SELECTOR,\n type Placement,\n} from '../../cdk';\n\n@Component({\n selector: 'uni-tooltip',\n imports: [],\n // The bubble lives declaratively in the template as a manual popover: the\n // top layer escapes any overflow context (which made appendToBody obsolete)\n // and native CSS anchor positioning keeps it attached to the host.\n template: `<ng-content></ng-content\n ><span\n #tip\n popover=\"manual\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [class]=\"tooltipClassName()\"\n (mouseenter)=\"isMouseInside.set(true)\"\n (mouseleave)=\"isMouseInside.set(false)\"\n (animationend)=\"onAnimationEnd($event)\"\n >{{ label() }}<span [class]=\"arrowClassName()\"></span\n ></span>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'tooltip' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'className()',\n '(click)': 'onClick($event)',\n '(mouseenter)': 'mouseenter()',\n '(mouseleave)': 'mouseleave()',\n '(focusin)': 'onFocusIn($event)',\n '(focusout)': 'onFocusOut()',\n '(keydown.escape)': 'onEscape($event)',\n },\n})\nexport class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n private timer = useTimer();\n isMouseInside = signal(false);\n\n /** Whether the bubble is currently shown (or fading out). */\n private readonly visible = signal(false);\n\n /**\n * Set when the wrapped control is activated: clicking a button is not a\n * request to toggle the bubble, and re-showing it right away makes a\n * state-flipping label (\"Expand\" → \"Collapse\") blink back mid-interaction.\n * Re-arms when the pointer leaves or focus moves away.\n */\n private readonly suppressed = signal(false);\n\n readonly tooltipId = uniqueId('uni-tooltip');\n private readonly anchorName = newAnchorName();\n\n hoverDelay = input<number>(500);\n label = input.required<string>();\n placement = input<Placement>('top');\n inlineText = input<boolean>(false);\n\n /** @deprecated The tooltip renders in the native top layer; ignored. */\n appendToBody = input<boolean>(false);\n\n private tipRef = viewChild.required<ElementRef<HTMLElement>>('tip');\n\n constructor() {\n super();\n\n effect(() => {\n const timerActive = this.timer.isActive();\n const mouseInside = this.isMouseInside();\n\n // If the timer finished and the mouse is still inside, show tooltip\n if (!timerActive && mouseInside && !this.suppressed()) {\n this.showTooltip();\n }\n // If the mouse left and the timer is not running, hide tooltip\n else if (!mouseInside) {\n this.hideTooltip();\n }\n });\n\n // A tooltip must be reachable by keyboard (WCAG 1.4.13): when the\n // projected content has no focusable element, the host itself joins\n // the tab sequence. The bubble is always in the DOM, so the describedby\n // relationship is wired once, on the element that receives focus.\n afterNextRender(() => {\n const host = this.elRef.nativeElement as HTMLElement;\n if (!host.querySelector(FOCUSABLE_SELECTOR) && !host.matches(FOCUSABLE_SELECTOR)) {\n this.renderer.setAttribute(host, 'tabindex', '0');\n }\n this.renderer.setAttribute(resolveFocusTarget(host), 'aria-describedby', this.tooltipId);\n });\n }\n\n onFocusIn(event: FocusEvent) {\n // Only keyboard-driven focus shows the tooltip immediately; mouse\n // interaction keeps the hover-delay behavior.\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.showTooltip();\n }\n }\n\n onFocusOut() {\n this.suppressed.set(false);\n if (!this.isMouseInside()) {\n this.hideTooltip();\n }\n }\n\n onEscape(event: Event) {\n if (this.visible()) {\n // Dismiss only the tooltip, not an enclosing dialog/popover\n event.stopPropagation();\n this.hideTooltip();\n }\n }\n\n /**\n * A click on an interactive element inside the host is an activation of\n * that control — hide the bubble and stay suppressed until re-arm. A click\n * anywhere else (inline-text tooltips, tap on a non-interactive host)\n * keeps the tap-to-toggle behavior.\n */\n protected onClick(event: Event) {\n const host = this.elRef.nativeElement as HTMLElement;\n const control = (event.target as HTMLElement).closest(FOCUSABLE_SELECTOR);\n if (control && control !== host && host.contains(control)) {\n this.suppressed.set(true);\n this.hideTooltip();\n } else {\n this.toggleTooltip();\n }\n }\n\n toggleTooltip() {\n if (this.visible()) {\n this.hideTooltip();\n } else {\n this.showTooltip();\n }\n }\n\n mouseenter() {\n this.isMouseInside.set(true);\n this.timer.start(this.hoverDelay());\n }\n\n mouseleave() {\n this.isMouseInside.set(false);\n this.suppressed.set(false);\n this.timer.stop();\n }\n\n showTooltip() {\n if (this.visible()) return;\n const tip = this.tipRef().nativeElement;\n tip.showPopover();\n this.renderer.setAttribute(tip, 'fade', 'in');\n this.visible.set(true);\n }\n\n hideTooltip() {\n if (!this.visible()) return;\n this.renderer.setAttribute(this.tipRef().nativeElement, 'fade', 'out');\n }\n\n protected onAnimationEnd(event: AnimationEvent) {\n if (event.animationName.includes(this.tooltipFadeOut)) {\n this.tipRef().nativeElement.hidePopover();\n this.visible.set(false);\n }\n }\n\n protected readonly className = computed(() =>\n css(\n {\n display: 'inline-flex',\n anchorName: this.anchorName,\n },\n this.inlineText() && {\n cursor: 'help',\n textDecoration: 'underline',\n textDecorationStyle: 'dotted',\n }\n )\n );\n\n private tooltipFadeIn = keyframes({ ...fadeIn });\n private tooltipFadeOut = keyframes({ ...fadeOut });\n\n protected readonly tooltipClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().shadow),\n ...this.theme.typeface(this.componentOptions().typeface),\n border: 'none',\n padding: 5,\n width: 'max-content',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 6 }),\n\n '&[fade=\"in\"]': {\n animation: `${this.tooltipFadeIn} ease-in 350ms`,\n },\n\n '&[fade=\"out\"]': {\n animation: `${this.tooltipFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n ...anchorArrowStyles(this.placement()),\n })\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RippleDirective"],"mappings":";;;;;;AAAA,IAAI,YAAY,GAAG,CAAC;AAEpB;;;AAGG;AACG,SAAU,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAA;AACrC,IAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,YAAY,EAAE,EAAE;AACtC;AAEA;;;;AAIG;AACI,MAAM,kBAAkB,GAC7B;AAEF;;;AAGG;AACG,SAAU,kBAAkB,CAAC,OAAoB,EAAA;AACrD,IAAA,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAAE,QAAA,OAAO,OAAO;IACvD,OAAO,OAAO,CAAC,aAAa,CAAc,kBAAkB,CAAC,IAAI,OAAO;AAC1E;AAEA;;;AAGG;AACI,MAAM,cAAc,GAAG;AAC5B,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC,CAAC;AACV,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,MAAM,EAAE,CAAC;;AAGX;;;AAGG;AACG,SAAU,UAAU,CAAmB,MAAS,EAAA;AACpD,IAAA,OAAO,EAAE,gDAAgD,EAAE,MAAM,EAAE;AACrE;;ACjBA;SACgB,aAAa,GAAA;AAC3B,IAAA,OAAO,KAAK,QAAQ,CAAC,YAAY,CAAC,EAAE;AACtC;AAEA,MAAM,aAAa,GAA8B;AAC/C,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,cAAc,EAAE,mBAAmB;AACnC,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,WAAW,EAAE,gBAAgB;CAC9B;AAED,MAAM,WAAW,GAA2B;AAC1C,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,KAAK,EAAE,YAAY;CACpB;AAED;;;;AAIG;AACG,SAAU,YAAY,CAC1B,MAAc,EACd,SAAoB,EACpB,SAAuB,EAAE,EAAA;AAEzB,IAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAiC;AAE1E,IAAA,MAAM,MAAM,GAAoC;AAC9C,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,cAAc,EAAE,MAAM;AACtB,QAAA,YAAY,EAAE,aAAa,CAAC,SAAS,CAAC;AACtC,QAAA,oBAAoB,EAAE,iDAAiD;;AAEvE,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,CAAC;KACV;AAED,IAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC;AAEhD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC;AACvC,IAAA,IAAI,KAAK,IAAI,KAAK,EAAE;QAClB,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ;QACtD,MAAM,WAAW,GAAG;cAChB,KAAK,KAAK;AACV,kBAAE;AACF,kBAAE;cACF,KAAK,KAAK;AACV,kBAAE;kBACA,cAAc;AACpB,QAAA,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK;IAC7B;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;AAKG;SACa,iBAAiB,CAAC,SAAoB,EAAE,IAAI,GAAG,CAAC,EAAA;AAC9D,IAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAiC;IAC1E,MAAM,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;AAC3B,IAAA,MAAM,MAAM,GAAoC;AAC9C,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,SAAS,EAAE,eAAe;KAC3B;;AAGD,IAAA,MAAM,MAAM,GAA2B;AACrC,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,MAAM;KACd;IACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO;;IAG9B,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ;IACtD,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK;IAC7C,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ;IACpD,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,CAAC,SAAS,CAAC,GAAG,cAAc,IAAI,GAAG,CAAC,CAAA,GAAA,CAAK;IACjD;AAAO,SAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AAC5B,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,GAAG;IAChC;SAAO;AACL,QAAA,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,GAAG;IACnC;AAEA,IAAA,OAAO,MAAM;AACf;;MChIsB,iBAAiB,CAAA;AAIrC,IAAA,UAAU,GAAG,MAAM,CAAM,EAAE,iFAAC;IAE5B,IAAI,GAA4B,MAAM,CAAC;AACrC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,SAAS,EAAE,OAAO;AACnB,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,iFAAC;AAC/C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,oFAAC;AAMrD,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,4EAAC;AAEzF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC;AAChD,IAAA,CAAC,iFAAC;AAEF,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;;AAGhC,QAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC;AAC1C,IAAA,CAAC,+EAAC;AAEF,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,OAAO,QAAQ,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AACvD,IAAA,CAAC,sFAAC;AAEF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,QAAQ,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AACzE,IAAA,CAAC,kFAAC;AAEF,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;QACxC,MAAM,YAAY,GAAG,CAAC;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;QAEnC,MAAM,KAAK,GAAwB,EAAE;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,YAAY,CAAC;AAEhE,QAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACb,YAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACnB;QACF;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACf;AAEA,QAAA,IAAI,OAAO,GAAG,UAAU,EAAE;AACxB,YAAA,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,EAAE;AAC5B,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACnB;AACA,YAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,qFAAC;AAEF,IAAA,UAAU,CAAC,GAAM,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,GAAG,CAAC;IACjE;AAEA,IAAA,eAAe,CAAC,GAAM,EAAA;QACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,KAAI;AACpC,YAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC;AAC9F,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACzB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C;AASD;;AC7GK,MAAO,mBAAuB,SAAQ,iBAAoB,CAAA;AACtD,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,kFAAC;AACvB,IAAA,SAAS,GAAG,MAAM,CAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC,CAAC;AAEtC,IAAA,cAAc,GAAG,MAAM,CAAM,EAAE,qFAAC;IACvB,WAAW,GAAG,QAAQ,CAAC,MAAc,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAGjG,MAAM,GAAG,MAAM,CAAwB,CAAC,KAAK,KAAK,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE9C,IAAA,SAAS,GAAG,MAAM,CAAS,CAAC,gFAAC;IAC7B,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC;AACpE,IAAA,CAAC,gFAAC;AAEO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEhC,IAAI,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;;AAG1D,QAAA,IAAI,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE;AACnC,YAAA,eAAe,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnD,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACxB,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAExB,gBAAA,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ;AAC3C,gBAAA,MAAM,KAAK,GAAG,SAAS,KAAK,KAAK;AAEjC,gBAAA,OAAO;sBACH,aAAa,CAAC,MAAgB,EAAE,MAAgB,EAAE,KAAK;sBACvD,aAAa,CAAC,MAAgB,EAAE,MAAgB,EAAE,KAAK,CAAC;AAC9D,YAAA,CAAC,CAAC;QACJ;;AAGA,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClE;;AAGA,QAAA,OAAO,eAAe;AACxB,IAAA,CAAC,8EAAC;AAEF,IAAA,WAAA,CAAY,IAAS,EAAA;AACnB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/B;AAES,IAAA,WAAW,CAAC,IAAa,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACrB;IAES,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB;IAES,QAAQ,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC;IACF;IAES,YAAY,GAAA;QACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD;IAES,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1C;AAES,IAAA,UAAU,CAAC,IAAY,EAAA;AAC9B,QAAA,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB;IACF;AAES,IAAA,WAAW,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB;IACF;AAEA,IAAA,SAAS,CAAC,MAA6B,EAAA;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC;IAC7B;AACD;AAED,SAAS,aAAa,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,KAAc,EAAA;AACzD,IAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAChB,IAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAEhB,IAAA,OAAO;AACL,UAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;AACvD,UAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC5D;AAEA,SAAS,aAAa,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAc,EAAA;AACjD,IAAA,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B;;ACtFM,MAAO,uBAA2B,SAAQ,iBAAoB,CAAA;AAqDxD,IAAA,UAAA;AApDF,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,kFAAC;AACvB,IAAA,SAAS,GAAG,MAAM,CAAC,EAAE,gFAAC;AACtB,IAAA,WAAW,GAAG,MAAM,CAAsB,SAAS,kFAAC;AACpD,IAAA,cAAc,GAAG,MAAM,CAAgB,OAAO,qFAAC;AAC/C,IAAA,MAAM,GAAG,MAAM,CAAsB,EAAE,6EAAC;IAEvC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAC/C,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEtD,IAAA,YAAY,GAAG,MAAM,CAAC,CAAC,mFAAC;AAExB,IAAA,YAAY;AAEX,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,gFAAC;IAClD,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,OAAO,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAChD,IAAA,CAAC,gFAAC;IAEe,QAAQ,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAOtC,MAAM,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC9B,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;SACnC,CAAC;AACF,QAAA,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAI;YAChC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,EAAE;gBAC3C,OAAO,QAAQ,CAAC,KAAK;YACvB;AACA,YAAA,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE;AAC/B,QAAA,CAAC,GACD;AAEO,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;IAEpC,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE1D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,gFAAC;AAEzD,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,4EAAC;IAEjD,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE/F,IAAA,WAAA,CACU,UAAyB,EACjC,eAAe,GAAG,EAAE,EAAA;AAEpB,QAAA,KAAK,EAAE;QAHC,IAAA,CAAA,UAAU,GAAV,UAAU;AAIlB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAC1B,MAAM,EAAE,OAAO;AACb,gBAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;AAC1B,gBAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAwB;AACpD,gBAAA,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE;AACpC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACtB,CAAC;AACF,YAAA,MAAM,EAAE,OAAO,MAAyC,KAAI;AAC1D,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;gBAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAE/C,gBAAA,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;oBACzD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC9C;AAEA,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,GACD;IACJ;AAES,IAAA,WAAW,CAAC,IAAa,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB;IAES,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB;IAES,QAAQ,GAAA;QACf,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC;IACF;IAES,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC;IACF;IAES,QAAQ,GAAA;QACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACxC;AAES,IAAA,UAAU,CAAC,IAAY,EAAA;QAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;IACF;AAES,IAAA,WAAW,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB;IACF;AAEA,IAAA,SAAS,CAAC,YAAiC,EAAA;AACzC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;IAC5B;IAEA,cAAc,GAAA;QACZ,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAwB;AACpD,YAAA,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE;AACpC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACtB;IACH;AACD;;AC3KK,SAAU,OAAO,CAAoC,EAAK,EAAA;AAC9D,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB;AAE9C,IAAA,QAAQ,CAAC,GAAG,IAAmB,KAAmB;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAEhC,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE;QACxB;AAEA,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;AAC1B,QAAA,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACtB,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AACH;;MCRa,mBAAmB,CAAA;AACtB,IAAA,uBAAuB,GAAG,OAAO,CAAC,MAAc;AACtD,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,uBAAuB;AACpC,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AAChC,YAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,YAAA,OAAO,IAAI;QACb;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,KAAK;QACd;AACF,IAAA,CAAC,CAAC;IAEF,OAAO,CAAI,GAAW,EAAE,KAAQ,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC;AAC7C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC7E,YAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC;AACtC,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;AACrD,YAAA,OAAO,KAAK;QACd;IACF;AAEA,IAAA,OAAO,CAAI,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACtC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI;AACF,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM;YAC9B;AAAE,YAAA,MAAM;AACN,gBAAA,OAAO,IAAS;YAClB;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;AACxD,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI;AACF,YAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;AAC5B,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC;AACzD,YAAA,OAAO,KAAK;QACd;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI;YACF,YAAY,CAAC,KAAK,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AACpD,YAAA,OAAO,KAAK;QACd;IACF;AAEA,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;IAC3C;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAClC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;AACxD,YAAA,OAAO,EAAE;QACX;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACnC,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,IAAI;YACF,IAAI,KAAK,GAAG,CAAC;AACb,YAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAC9B,gBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;oBAC3D,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;gBAChD;YACF;AACA,YAAA,OAAO,KAAK;QACd;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC;AAC5D,YAAA,OAAO,CAAC;QACV;IACF;wGApHW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,mBAAmB,CAAA;;AAE9B,IAAA,KAAK,GAAG,MAAM,CAAoB,SAAS,4EAAC;AAC5C,IAAA,SAAS,GAAG,CAAC,KAAY,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACnD,IAAA,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;;AAG3C,IAAA,QAAQ,GAAG,MAAM,CAAuB,SAAS,+EAAC;AAClD,IAAA,YAAY,GAAG,CAAC,QAAkB,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClE,IAAA,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGjD,IAAA,YAAY,GAAG,MAAM,CAA2B,SAAS,mFAAC;AAC1D,IAAA,gBAAgB,GAAG,CAAC,YAA0B,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACtF,IAAA,gBAAgB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;wGAd9C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;SCHe,QAAQ,GAAA;AACtB,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAS,CAAC,kFAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AACvC,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAElD,IAAI,UAAU,GAAQ,IAAI;IAC1B,IAAI,OAAO,GAAG,CAAC;AACf,IAAA,IAAI,kBAA4C;IAEhD,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,IAAI,UAAU;YAAE,aAAa,CAAC,UAAU,CAAC;QACzC,UAAU,GAAG,IAAI;AACnB,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnD,QAAA,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAE1B,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;AAClB,YAAA,IAAI,EAAE;AACN,YAAA,IAAI,kBAAkB;AAAE,gBAAA,kBAAkB,EAAE;QAC9C;AACF,IAAA,CAAC;AAED,IAAA,MAAM,KAAK,GAAG,CAAC,UAAkB,EAAE,UAAuB,KAAI;AAC5D,QAAA,IAAI,EAAE;QACN,kBAAkB,GAAG,UAAU;AAC/B,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,QAAA,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3B,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU;AACjC,QAAA,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;AACrC,IAAA,CAAC;IAED,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE;YAAE;AAC/B,QAAA,IAAI,EAAE;AACN,QAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YAAE;AAChC,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE;AACpC,QAAA,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;AACrC,IAAA,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;IAElC,OAAO;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,IAAI,EAAE,MAAK;AACT,YAAA,IAAI,EAAE;AACN,YAAA,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,WAAW;QACX,QAAQ;QACR,QAAQ;AACR,QAAA,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;KAClE;AACH;;MCjEa,cAAc,GAAG,CAC5B,IAAU,EACV,sBAA4C,KACjC;AACX,IAAA,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,IAAI;IAC7E,OAAO,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChE;MAEa,gBAAgB,GAAG,CAAC,IAAU,KAAa,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG;;MCLzE,UAAU,GAAG,IAAI,cAAc,CAA2B,EAAE,EAAE;AACzE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,SAAS;AACzB,CAAA;;ACNM,MAAM,YAAY,GAAG,CAAC,CAAkB,MAAM,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;;ACA7F;MAsDa,YAAY,CAAA;;AAEvB,IAAA,OAAgB,UAAU,GAAG,aAAa;;AAE1C,IAAA,OAAgB,WAAW,GAAG,oBAAoB;AAE1C,IAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElD,IAAA,KAAK,GAAG,MAAM,CAAW,UAAU,4EAAC;AACpC,IAAA,YAAY,GAAG,MAAM,CAAqB,EAAE,mFAAC;AAE7C,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,iFAAC;IACpD,SAAS,GAAG,CAAI,aAA4B,KAC1C,QAAQ,CAAC,MAAO,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAuB,IAAI,EAAE,CAAC;AAC/E,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,6EAAC;;;AAG5C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,gFAAC;AAChE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,8EAAC;AAC9C,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,kFAAC;AACtD,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,4EAAC;AAC1C,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,8EAAC;AAC9C,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,8EAAC;AAC9C,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,4EAAC;AAE1C,IAAA,WAAA,GAAA;;;AAGE,QAAA,YAAY,CAAA;;;;;;;;;KASX;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACnC,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;QACrD,CAAC,CAAC,CACH;;;;QAKD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAS,OAAO,CAAC;AAC7D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAqB,YAAY,CAAC,WAAW,CAAC;QAC5F,IAAI,UAAU,KAAK,YAAY,CAAC,UAAU,IAAI,YAAY,EAAE;AAC1D,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC;QACxC;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACvE;IACF;AAEO,IAAA,WAAW,CAAC,SAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;IAC/C;;AAGO,IAAA,aAAa,GAAG,MAAM,CAA4B,IAAI,oFAAC;AACvD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,KAAK,YAAY,CAAC,UAAU,oFAAC;AAE1F;;;;AAIG;AACI,IAAA,YAAY,CAAC,MAA0B,EAAE,OAAO,GAAG,IAAI,EAAA;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,sBAAsB,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CACvF;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC;QAClD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC;QAC7D;IACF;;IAGO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;AACtD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACzD;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,wFAAC;AACrD,IAAA,gBAAgB,GAAG,MAAM,CAAS,EAAE,uFAAC;AAE5C,IAAA,SAAS,GAAG,CAAC,QAAkB,EAAE,SAA6B,KAAI;AAChE,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;AAC9B,aAAA;AACD,YAAA,SAAS,IAAI;AACX,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC;AAChC,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,cAAc,GAAG,CAAC,aAA4B,EAAE,OAAgB,EAAE,IAAU,KAC1E,QAAQ,CAAC,MAAK;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;QACjD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS;QAC5C,MAAM,YAAY,GAAG,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE;AACpD,IAAA,CAAC,CAAC;AAEJ,IAAA,UAAU,GAAG,CAAC,IAAkB,KAAI;AAClC,QAAA,OAAO,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;AACxD,IAAA,CAAC;AAED,IAAA,YAAY,GAAG,CAAC,SAAoB,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;IAE5E,eAAe,GAAG,CAAC,KAA0B,EAAE,UAAoB,KACjE;UACI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,QAAA,CAAwB;UACjD,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA,GAAA,EAAM,KAAK,CAAA,CAAgB,CAAC;AAEhD,IAAA,SAAS,GAAG,CAAC,KAA2B,EAAE,YAAsB,KAA6B;AAC3F,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;AACvD,QAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE;AACnC,IAAA,CAAC;AAED,IAAA,eAAe,GAAG,CAAC,KAAgB,KAA6B;QAC9D,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;AACvE,IAAA,CAAC;AAED,IAAA,eAAe,GAAG,CAAC,GAAY,KAA6B;AAC1D,QAAA,OAAO,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,eAAe,EAAE,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,CAAG,EAAE;AAC9D,IAAA,CAAC;AAED,IAAA,kBAAkB,GAAG,CAAC,KAAc,EAAE,UAAoB,KAAI;AAC5D,QAAA,MAAM,KAAK,IAAI,KAAK,GAAG,YAAY,CAAwB;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;AAC1C,IAAA,CAAC;AAED;;;AAGG;AACH,IAAA,SAAS,GAAG,CAAC,KAAkB,MAAM;AACnC,QAAA,iBAAiB,EAAE;AACjB,YAAA,OAAO,EAAE,CAAA,UAAA,EAAa,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,cAAc,CAAA,CAAE;AACrE,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA;AACF,KAAA,CAAC;AAEF,IAAA,QAAQ,GAAG,CAAC,QAAmB,KAAI;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC;AACxC,IAAA,CAAC;IAED,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;AAElC,IAAA,KAAK,CAAC,KAAgB,EAAA;QACpB,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;IAC7D;IAEA,eAAe,CACb,KAA2B,EAC3B,MAA0B,EAAA;AAE1B,QAAA,IAAI,CAAC,KAAK;YAAE;QAEZ,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AACxC,QAAA,MAAM,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QACnC,MAAM,WAAW,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAE/C,OAAO;AACL,YAAA,eAAe,EAAE,CAAA,0JAAA,EAA6J,YAAY,SAAS,YAAY,CAAA,UAAA,EAAa,WAAW,CAAA,2GAAA,CAA6G;YACpV,YAAY;SACb;IACH;AAEA,IAAA,MAAM,CAAC,IAAwB,EAAA;QAC7B,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;IACjE;AAEA,IAAA,aAAa,CAAC,IAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,OAAO;AACL,YAAA,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAC1C,YAAA,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;SACxC;IACH;AAEA,IAAA,cAAc,CAAC,IAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,OAAO;AACL,YAAA,uBAAuB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAC3C,YAAA,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;SACzC;IACH;AAEA,IAAA,YAAY,CAAC,IAAwB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,OAAO;AACL,YAAA,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AACvC,YAAA,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;SACzC;IACH;AAEA,IAAA,eAAe,CAAC,IAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,OAAO;AACL,YAAA,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAC1C,YAAA,uBAAuB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;SAC5C;IACH;AAEA,IAAA,OAAO,CAAC,IAAkB,EAAA;QACxB,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9D;AAEA,IAAA,iBAAiB,CAAC,IAAkB,EAAA;QAClC,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACpE;AAEA,IAAA,eAAe,CAAC,IAAkB,EAAA;QAChC,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACnE;AAEA,IAAA,WAAW,CAAC,IAAkB,EAAA;QAC5B,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAClE;AAEA,IAAA,YAAY,CAAC,IAAkB,EAAA;QAC7B,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACnE;AAEA,IAAA,UAAU,CAAC,IAAkB,EAAA;QAC3B,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACjE;AAEA,IAAA,aAAa,CAAC,IAAkB,EAAA;QAC9B,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACpE;AAEA,IAAA,MAAM,CAAC,MAA0B,EAAA;QAC/B,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IACjE;AAEA,IAAA,SAAS,CAAC,MAA0B,EAAA;QAClC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IACpE;AAEA,IAAA,YAAY,CAAC,MAA0B,EAAA;QACrC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IACvE;AAEA,IAAA,UAAU,CAAC,MAA0B,EAAA;QACnC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IACrE;AAEA,IAAA,WAAW,CAAC,MAA0B,EAAA;QACpC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IACtE;AAEA,IAAA,SAAS,CAAC,MAA0B,EAAA;QAClC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IACpE;AAEA,IAAA,GAAG,CAAC,GAAiB,EAAA;QACnB,OAAO,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;IAC1E;AAEA,IAAA,MAAM,CAAC,OAAuC,EAAA;AAC5C,QAAA,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;IAC5D;AAEA,IAAA,WAAW,CAAC,WAAuB,EAAA;QACjC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE;IACpD;AAEA,IAAA,iBAAiB,CAAI,aAA4B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAI,aAAa,CAAC;IACzC;;AAGA,IAAA,mBAAmB,GAAG,CAAI,aAA4B,KACpD,YAAY,CAAC;AACX,QAAA,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAI,aAAa,CAAC;QAChD,WAAW,EAAE,MAAK;YAChB,OAAO,IAAI,CAAC,iBAAiB,CAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAK,EAAQ;QACxE,CAAC;AACF,KAAA,CAAC;IAEJ,gBAAgB,GAAG,CAAC,aAA4B,KAC9C,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;IAE/D,KAAK,CAAC,IAAY,EAAE,KAAkC,EAAA;AACpD,QAAA,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE;IAC/C;wGA/SW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;AC1CM,MAAM,cAAc,GAAG,IAAI,cAAc,CAAgB,EAAE,CAAC;MAOtD,aAAa,CAAA;AACd,IAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AAChD,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,IAAA,OAAO,GAAG,KAAK,CAAU,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC,CAAC;AACpC,IAAA,IAAI,GAAG,KAAK,CAAO,IAAI,2EAAC;AAExB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAI,IAAI,CAAC,aAAa,CAAC,EAAE,qFAAC;AAEtF,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAI,IAAI,CAAC,aAAa,CAAC,EAAE,uFAAC;AAE1F,IAAA,KAAK,GAAG,QAAQ,CAAC,MACf,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC7E;wGAbU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,uUAFd,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAED,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,CAAE;AACb,iBAAA;;;ACZD;;;;;;AAMG;AAgBG,MAAO,kBAAmB,SAAQ,aAA+B,CAAA;;IAErE,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAEvB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AAEF,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;AAC5B,YAAA,IAAI,EAAE,MAAM;YACZ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YACtC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;YAC9B,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;YAC1C,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1C,YAAA,sBAAsB,EAAE;gBACtB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;AACxC,gBAAA,UAAU,EAAE,QAAQ;AACrB,aAAA;AACD,YAAA,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;AACxC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACjE,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGA5BS,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAZlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAElD;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5D,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AAClC,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACF,iBAAA;;;ACPK,MAAO,kBAAmB,SAAQ,aAA4B,CAAA;AAClE,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;IAE/B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;IAC1B,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAC9B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAe;IAC5B,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEV,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,QAAQ,GACZ,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,IAAI,CAAC,CAAA,EAAA,CAAI;AAC9D,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,IAAI,GAAG,CAAA,EAAA,CAAI;AACpE,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA,EAAA,CAAI;AAChE,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,IAAI,EAAE,EAAE;AAE7E,QAAA,QACE,2BAA2B;AAC3B,YAAA,GAAG,CAAC;AACF,gBAAA,qBAAqB,EAAE,QAAQ;AAC/B,gBAAA,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,IAAI,EAAE,CAAA,EAAA,CAAI;AACjF,aAAA,CAAC;AAEN,IAAA,CAAC,gFAAC;wGAtBS,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EATlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,iDADlD,CAAA,YAAA,CAAc,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUb,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,YAAA,CAAc;oBACxB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;;;AAG5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACZD;;;;AAIG;AAwBG,MAAO,kBAAmB,SAAQ,aAA+B,CAAA;;IAErE,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAErB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAEtB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEH,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAE3B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gFAAC;AAE/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AAChC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACjC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE;QACvE,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,WAAW,EAAE;AACrC,IAAA,CAAC,+EAAC;AAEiB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,4EAAC;AAElD,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC;;;AAGF,QAAA;AACE,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;AACxD,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;AAC3D,SAAA;QACD,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;AAC9D,YAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;AAClC,SAAA;AACF,KAAA,CAAC,gFACH;wGA5CU,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,SAAA,EAnBlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAOlD;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlBS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoBjB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAvB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,aAAa,EAAE,wBAAwB;AACvC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,oBAAoB,EAAE,yBAAyB;AAChD,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;;AC3BD;;;;AAIG;AAmBG,MAAO,uBAAwB,SAAQ,aAAoC,CAAA;;AAE/E,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,0EAAC;AAEzB,IAAA,OAAO,GAAG,eAAe,CAAC,kBAAkB,8EAAC;AAE3C,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC;AACjD,IAAA,CAAC,8EAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK;QACtE,MAAM,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA,SAAA,EACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,aACzD,CAAA,CAAE;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,CAAG;AACnC,gBAAA,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;AACnC,aAAA;;;AAGD,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI;gBACvB,CAAC,CAAA,6BAAA,EAAgC,GAAG,GAAG,CAAC,CAAA,mBAAA,CAAqB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;aACpF,CAAC;AACH,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAjCS,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAdvB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAkBtB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBnD;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAejB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAlBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;oBACjE,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;qLAK4C,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCpBlD,sBAAsB,CAAA;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;IAE5B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACvB,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;IACtC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAyC;AAC1D,IAAA,MAAM,GAAG,KAAK,CAAkB,MAAM,6EAAC;IACvC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;AAEb,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,gBAAgB,EAAE,WAAW;AAC7B,gBAAA,OAAO,EAAE,OAAO;gBAChB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5C,aAAA;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACxC,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGArBS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,uwBAJvB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACZD;;;;AAIG;;ACYG,MAAO,iBAAkB,SAAQ,aAA8B,CAAA;AACnE,IAAA,KAAK,GAAG,KAAK,CAAsB,SAAS,4EAAC;AAC7C,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;IAClC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEJ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAE1B,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9E,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;AAC1D,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,aAAa,EAAE,CAAC;AACjB,aAAA;YACD,KAAK,KAAK,SAAS,IAAI;gBACrB,QAAQ,EAAE,KAAK,GAAG,EAAE;AACrB,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAtBS,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAJjB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,iDADjD,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAK1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAC3D,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AACnC,iBAAA;;;ACTD;;;;;AAKG;AA8BG,MAAO,sBAAuB,SAAQ,aAAmC,CAAA;;AAE7E,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAoB;;AAE1C,IAAA,SAAS,GAAG,KAAK,CAAC,YAAY,gFAAC;;IAG/B,WAAW,GAAG,MAAM,EAAkB;AAEnB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,uBAAuB,CAAC;AAC/E,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE,CAAC;gBACV,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;AACzC,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,UAAU,EAAE,QAAQ;gBACpB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/B,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,UAAU,EAAE,MAAM;AAClB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,SAAS,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;AAC1C,gBAAA,iBAAiB,EAAE;oBACjB,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA,CAAE;AACtD,oBAAA,aAAa,EAAE,CAAC;AACjB,iBAAA;AACF,aAAA;AACD,YAAA,kBAAkB,EAAE;gBAClB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAC1C,aAAA;AACD,YAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/B,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGA/CS,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAzBtB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACtD;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxBS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA0BjB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA7BlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAChE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACF,iBAAA;;;MChBY,gBAAgB,CAAA;AACnB,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAE3C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAY;AAEjC;;;;;;;;AAQG;IACH,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAa;;AAGN,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,IAAI,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAA,EAAA,CAAI,GAAG,MAAM;AACzC,IAAA,CAAC,2EAAC;;AAGiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;QACnE,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI;;;;AAKhD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA,EAAG,OAAO,CAAA,EAAA,CAAI,GAAG,OAAO;AACjE,IAAA,CAAC,gFAAC;IAEiB,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACpD;wGAtCU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,2oBAfjB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAeD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,EAAE,EAAA,QAAA,EACD,EAAE,mBAEK,uBAAuB,CAAC,MAAM,EAAA,IAAA,EAEzC;AACJ,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,oBAAoB,EAAE,QAAQ;AAC9B,wBAAA,4BAA4B,EAAE,QAAQ;;;AAGtC,wBAAA,eAAe,EAAE,aAAa;AAC9B,wBAAA,gBAAgB,EAAE,aAAa;AAChC,qBAAA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA;;;ACIH;;;;;;;;;AASG;MAQU,eAAe,CAAA;AAC1B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;IAE5B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;IACpC,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;IACxC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IACtC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IAC1C,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IAC3C,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IACzC,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IAC5C,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAC/B,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACzC,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACvC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACnC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACpC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAClC,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACrC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IAChC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IACnC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IACtC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IACpC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;AACrC,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;IAClC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqB;IACtC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;IACxC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwB;IAC5C,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA0B;IAChD,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACtB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;IAClC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;IACpC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;;IAEhC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;IACjC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;IACpC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;;IAEpC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;IAChC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;IACnC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;AACnC,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,gFAAC;IACvB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC1B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC5B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACzB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;AACpC,IAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU,CAAC;IAC5B,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACxB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAC3B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IAC5B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IAC7B,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAyB;IAC9C,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqB;AACtC,IAAA,SAAS,GAAG,KAAK,CAAe,SAAS,gFAAC;IAC1C,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AAEjB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;gBACE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACrD,gBAAA,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,GAAG,OAAO;AAC5C,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;AAC1B,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACzB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzD,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrD,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC7C,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/C,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3C,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjD,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpD,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACtD,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClD,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxD,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/C,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3C,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC7C,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7B,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9C,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAClD,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpD,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5D,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACxD,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5C,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1D,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChD,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpD,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9C,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpC,aAAA;YACD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI;gBACpB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpC,aAAA;YACH,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,UAAU,EAAE,IAAI;AACnB,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7E,aAAA;YAEH,IAAI,CAAC,SAAS,EAAE,IAAI;AAClB,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;YACD,IAAI,CAAC,UAAU,EAAE,IAAI;AACnB,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;YAED,IAAI,CAAC,SAAS,EAAE;gBACd,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM,KAAK,IAAI;AAC3C,gBAAA,YAAY,EAAE;AACZ,oBAAA,aAAa,EAAE,aAAa;AAC7B,iBAAA;AACF,aAAA;YACH,IAAI,CAAC,SAAS,EAAE;gBACd,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM,aAAa,IAAI;AACnD,gBAAA,YAAY,EAAE;AACZ,oBAAA,aAAa,EAAE,KAAK;AACrB,iBAAA;AACF,aAAA;AACJ,SAAA,CAAC;AACJ,IAAA,CAAC,mFAAC;wGApIS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,g9MAJhB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AC5BK,MAAO,kBAAmB,SAAQ,eAAe,CAAA;AAC5C,IAAA,OAAO,GAAG,KAAK,CAAkB,MAAM,8EAAC;AACxC,IAAA,cAAc,GAAG,KAAK,CAAyB,QAAQ,qFAAC;AACxD,IAAA,UAAU,GAAG,KAAK,CAAqB,QAAQ,iFAAC;AAEzD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;wGAPW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2hBAFnB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE1B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACtC,iBAAA;;;MCHY,oBAAoB,CAAA;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;AAEZ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,gFAAC;wGAHlE,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wRAJrB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AACnC,iBAAA;;;ACIK,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AAC1C,IAAA,OAAO,GAAG,KAAK,CAAkB,MAAM,8EAAC;IAEjD,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC/B,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACjC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC9B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAa;IAC5B,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAEZ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,IAAI;AACtB,YAAA,iBAAiB,EAAE,IAAI,CAAC,aAAa,EAAE;AACxC,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,IAAI;AACxB,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE;AAC5C,SAAA;QACD,IAAI,CAAC,YAAY,EAAE,IAAI;AACrB,YAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE;AACtC,SAAA;QACD,IAAI,CAAC,OAAO,EAAE,IAAI;YAChB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC;AAC9C,SAAA;QACD,IAAI,CAAC,YAAY,EAAE,IAAI;AACrB,YAAA,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,EAAG,CAAC;AACjE,SAAA;AACF,KAAA,CAAC,oFACH;wGA3BU,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,i/BAJjB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACvC,iBAAA;;;ACHK,MAAO,eAAgB,SAAQ,eAAe,CAAA;AACzC,IAAA,OAAO,GAAG,KAAK,CAAkB,MAAM,8EAAC;AACxC,IAAA,aAAa,GAAG,KAAK,CAAwB,KAAK,oFAAC;AAC5D;;;;AAIG;AACM,IAAA,QAAQ,GAAG,KAAK,CAA8B,aAAa,+EAAC;AAErE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;wGAZW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,4gBAFhB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACtC,iBAAA;;;ACCK,MAAO,iBAAkB,SAAQ,eAAe,CAAA;AAC3C,IAAA,OAAO,GAAG,KAAK,CAAkB,MAAM,8EAAC;AACxC,IAAA,aAAa,GAAG,KAAK,CAAwB,QAAQ,oFAAC;AAC/D;;;;AAIG;AACM,IAAA,SAAS,GAAG,KAAK,CAA8B,aAAa,gFAAC;AAEtE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;wGAZW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mhBAFlB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACtC,iBAAA;;;ACGK,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AAC1C,IAAA,OAAO,GAAG,KAAK,CAAkB,MAAM,8EAAC;AACxC,IAAA,SAAS,GAAG,KAAK,CAAe,MAAM,gFAAC;AAEhD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;wGANW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,iYAFjB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACtC,iBAAA;;;ACVD;MAUa,eAAe,CAAA;AAClB,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB,IAAA,MAAM;AAEN,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;IACrC;AAEA,IAAA,OAAO,CAAC,CAAa,EAAA;AACnB,QAAA,IAAI,CAAC,CAAC;YAAE;QACR,IAAI,MAAM,EAAE,CAAC;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC,KAAK,IAAI,EAAE;YAC9D,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;QAChD;AAEA,QAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC/C,YAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;AACjD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;QACpD;AAEA,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC;AACnE,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC;AAEnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;IACnD;IAEA,WAAW,GAAG,GAAG,CAAC;AAChB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,UAAU,EAAE,0BAA0B;AACtC,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,SAAS,EAAE,UAAU;AACtB,KAAA,CAAC;IAEF,YAAY,GAAG,GAAG,CAAC;AACjB,QAAA,SAAS,EAAE,qBAAqB;AAEhC,QAAA,mBAAmB,EAAE;AACnB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,SAAS,EAAE,YAAY;AACxB,aAAA;AACF,SAAA;AACF,KAAA,CAAC;wGAtDS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;AC4BK,MAAO,kBAAmB,SAAQ,aAA+B,CAAA;AAC5D,IAAA,OAAO,GAAG,KAAK,CAAsB,KAAK,8EAAC;AAC3C,IAAA,OAAO,GAAG,KAAK,CAAsB,KAAK,8EAAC;AAC3C,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;IAEjC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC5B,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAEtC,UAAU,GAAG,GAAG,CAAC;AACf,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,aAAa,EAAE,IAAI;AACpB,KAAA,CAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC;;;;QAIF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;AACvD,QAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,EAAE;QAC5D,IAAI,CAAC,KAAK,EAAE,IAAI;AACd,YAAA,GAAG,IAAI,CAAC,KAAK,EAAE;AAChB,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,UAAU,EAAE,gBAAgB;AAE5B,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA;AACD,YAAA,eAAe,EAAE;gBACf,UAAU,EAAE,CAAC,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;AAC5B,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,YAAY,EAAE,QAAQ;AACtB,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,UAAU,EAAE,QAAQ;AACrB,aAAA;AACD,YAAA,gBAAgB,EAAE;gBAChB,WAAW,EAAE,CAAC,CAAC;AACf,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;AAC5B,aAAA;AACF,SAAA;;;;AAID,QAAA;AACE,YAAA,iBAAiB,EAAE;AACjB,gBAAA,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AAC3D,gBAAA,aAAa,EAAE,KAAK;AACrB,aAAA;AACF,SAAA;QACD,IAAI,CAAC,SAAS,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,MAAM;AACd,SAAA;AACD,QAAA,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;AACjB,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ;AAC5C,aAAA;AACF,SAAA;QACD,IAAI,CAAC,OAAO,EAAE,IAAI;AAChB,YAAA,mBAAmB,EAAE;AACnB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;AACF,KAAA,CAAC,gFACH;AAED,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;;AAEnE,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC;AACrD,IAAA,CAAC,iFAAC;wGAxFS,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAflB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVlD,CAAA;;;;;;;;;AASL,MAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;gBAKH,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAST,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA3B9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AASL,MAAA,CAAA;oBACL,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBAC5D,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE;AACP,wBAAA,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,kBAAkB;AACnB,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,gCAAgC;AACnD,wBAAA,kBAAkB,EAAE,2BAA2B;AAC/C,wBAAA,SAAS,EAAE,aAAa;AACzB,qBAAA;AACD,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AACjD,iBAAA;;;MCzBY,uBAAuB,CAAA;AAC1B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAExB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,aAAa;AAEtB,YAAA,UAAU,EAAE;AACV,gBAAA,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC;gBACzC,WAAW,EAAE,CAAC,CAAC;AAChB,aAAA;AAED,YAAA,sBAAsB,EAAE;AACtB,gBAAA,mBAAmB,EAAE,CAAC;AACtB,gBAAA,sBAAsB,EAAE,CAAC;AACzB,gBAAA,oBAAoB,EAAE,CAAC;AACvB,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA;AAED,YAAA,6CAA6C,EAAE;AAC7C,gBAAA,mBAAmB,EAAE,CAAC;AACtB,gBAAA,sBAAsB,EAAE,CAAC;AACzB,gBAAA,oBAAoB,EAAE,CAAC;AACvB,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA;AAED,YAAA,qBAAqB,EAAE;AACrB,gBAAA,mBAAmB,EAAE,CAAC;AACtB,gBAAA,sBAAsB,EAAE,CAAC;AACzB,gBAAA,oBAAoB,EAAE,CAAC;AACvB,gBAAA,uBAAuB,EAAE,CAAC;AAC1B,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAlCS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,8HAJxB,CAAA,0BAAA,CAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI3B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,0BAAA,CAA4B;AACtC,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACVD;;;;AAIG;;ACOG,MAAO,uBAAwB,SAAQ,aAAa,CAAA;wGAA7C,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAHvB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,iDCRnE,kEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDQa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,kBAAkB,EAAA,OAAA,EACnB,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,QAAA,EAAA,kEAAA,EAAA;;;AEGnE;;;AAGG;AACH,MAAM,YAAY,GAA6B;AAC7C,IAAA,EAAE,EAAE,gBAAgB;AACpB,IAAA,EAAE,EAAE,iBAAiB;AACrB,IAAA,EAAE,EAAE,gBAAgB;AACpB,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,EAAE,EAAE,cAAc;AAClB,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,CAAC,EAAE,aAAa;AAChB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,KAAK,EAAE,OAAO;CACf;AAED;;;;;;;AAOG;MAQU,gBAAgB,CAAA;AAC3B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AACX,IAAA,GAAG,GAAI,MAAM,CAAC,UAAU,CAAC,CAAC,aAA6B,CAAC,OAAO,CAAC,WAAW,EAAE;;IAGrF,OAAO,GAAG,KAAK,CAAgB,EAAE,+EAAI,KAAK,EAAE,UAAU,EAAA,CAAG;;AAElE,IAAA,QAAQ,GAAG,KAAK,CAAuB,SAAS,+EAAC;IACjD,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAY;IACzB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;IAClC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqB;IAClC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACzB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;IAEb,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACnF;AAEkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;gBACE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC/C,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACjC,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,aAAA;YACD,IAAI,CAAC,KAAK,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;AACxB,aAAA;YACD,IAAI,CAAC,MAAM,EAAE,IAAI;AACf,gBAAA,UAAU,EAAE,QAAQ;AACrB,aAAA;YACD,IAAI,CAAC,QAAQ,EAAE,IAAI;AACjB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,OAAO,EAAE,cAAc;AACxB,aAAA;YACD,IAAI,CAAC,QAAQ,EAAE,IAAI;AACjB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,QAAQ,EAAE,CAAC;AACZ,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGA9CS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,+mCAJjB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AChCK,MAAO,gBAAiB,SAAQ,aAA6B,CAAA;AACjE;;;;AAIG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAC,OAAO;AAC7C,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACtE,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;AAC1D,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC;QAC1D,GAAG,IAAI,CAAC,KAAK,EAAE;AAChB,KAAA,CAAC,gFAAC;wGAXQ,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAFhB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,iDCT5D,sEAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDQa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,UAAU,EAAA,OAAA,EACX,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAA,QAAA,EAAA,sEAAA,EAAA;;;AEOtD,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAC/C,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACtC,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,aAAa,GAAG,KAAK,CAAW,aAAa,oFAAC;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;IAGT;IAEA,SAAS,GAAG,GAAG,CAAC;AACd,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,cAAc,EAAE,eAAe;AAC/B,QAAA,UAAU,EAAE,QAAQ;AACrB,KAAA,CAAC;wGApBS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,kVAHtB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblE,gKAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOY,gBAAgB,wJAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKxB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,iBAAiB,WAClB,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAEzB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAA,QAAA,EAAA,gKAAA,EAAA;;;AEG5D,MAAO,oBACX,SAAQ,aAAiC,CAAA;;AAIhC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGjC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEhC;;;AAGG;AACM,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;;IAG3B,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEjG,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAC5D,IAAI,CAAC,aAAa,EAAE;IACtB;AAEmB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC;AACF,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,SAAS;AACnD,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC;AAElC,QAAA,4BAA4B,EAAE,IAAI,CAAC,QAAQ;AACzC,cAAE;AACF,cAAE;AACE,gBAAA,gBAAgB,EAAE,CAAC;AACpB,aAAA;AAEL,QAAA,aAAa,EAAE;AACb,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI;AACpC,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI;AACpC,SAAA;AAED,QAAA,iBAAiB,EAAE;AACjB,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA;AAED,QAAA,+BAA+B,EAAE;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,IAAI,SAAS,CAAC;YACvE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1C,YAAA,WAAW,EAAE,CAAC;YACd,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,IAAI,CAAC;YAC7C,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,IAAI,CAAC;AAC7C,YAAA,UAAU,EAAE,eAAe;AAC5B,SAAA;;AAGD,QAAA,iCAAiC,EAAE;AACjC,YAAA,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACvC,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,aAAa,EAAE,OAAO;AACtB,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,UAAU,EAAE,eAAe;AAC5B,SAAA;AAED,QAAA,gCAAgC,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACvC,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,aAAa,EAAE,OAAO;AACtB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,UAAU,EAAE,mBAAmB;AAChC,SAAA;AACF,KAAA,CAAC,oFACH;AAEkB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC;AACF,QAAA,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,CAAC,CAAC;AACV,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,OAAO,EAAE,CAAC;AAEV,QAAA,uBAAuB,EAAE;YACvB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,SAAA;AAED,QAAA,yCAAyC,EAAE;YACzC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACzC,SAAA;AAED,QAAA,2CAA2C,EAAE;AAC3C,YAAA,gBAAgB,EAAE,CAAC;AACpB,SAAA;AAED,QAAA,+CAA+C,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACzC,SAAA;AAED,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,wBAAwB,EAAE;AACxB,YAAA,MAAM,EAAE,aAAa;AACtB,SAAA;AAED,QAAA,qBAAqB,EAAE;AACrB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AACzD,gBAAA,YAAY,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AAC5E,gBAAA,aAAa,EAAE,MAAM;AACtB,aAAA;AACF,SAAA;AACF,KAAA,CAAC,oFACH;AAED,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAClC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1D;;AAGA,IAAA,UAAU,CAAC,OAAmB,EAAA;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QAClC,OAAO,MAAM,CAAC,CAAA,GAAA,EAAM,OAAO,CAAA,CAAE,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;IACxD;wGA5JW,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbhE,41BAuBA,4CDZY,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAEhB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,eAAA,EAC7C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,41BAAA,EAAA;;;METpC,mBAAmB,CAAA;AACtB,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAEpC,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACnD;wGAPW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA;;;MCOY,oBAAoB,CAAA;;;IAG/B,aAAa,GAAG,MAAM,EAAY;AAExB,IAAA,gBAAgB,GAAG,MAAM,CAAC,GAAG,uFAAC;;AAGxC,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;IAClC;;AAGA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC;;AAGA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC;IACF;wGA9BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,aAAa,EAAE,qBAAqB;AACpC,wBAAA,QAAQ,EAAE,gBAAgB;AAC3B,qBAAA;AACF,iBAAA;;;MCwBY,sBAAsB,CAAA;AACzB,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;IACpC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA+B,YAAY,CAAC;AAEzE;;;;AAIG;IACH,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAE3B,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAY;IAC5B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAC5B,IAAA,OAAO,GAAG,KAAK,CAAU,OAAO,8EAAC;AACjC,IAAA,IAAI,GAAG,KAAK,CAAO,IAAI,2EAAC;IACxB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IAC1B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC1B,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,kFAAC;AAEJ,IAAA,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC;AAEpD;;;;;;;AAOG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;;;AAG3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ;AAC7D,QAAA,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS;AAC5F,IAAA,CAAC,gFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACzC,MAAM,UAAU,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAExD,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,UAAU,EAAE,gBAAgB;;;gBAG5B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;;;;;;;AAOpF,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,cAAc,EAAE,QAAQ;AAExB,gBAAA,YAAY,EAAE;AACZ,oBAAA,MAAM,EAAE,wBAAwB;AACjC,iBAAA;AAED,gBAAA,UAAU,EAAE;AACV,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,SAAS;AACtB,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,IAAI;AACZ,gBAAA,GAAG,UAAU;AACd,aAAA;AACD,YAAA,WAAW,IAAI;AACb,gBAAA,GAAG,WAAW;AACf,aAAA;YACD,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI;AAC5B,gBAAA,SAAS,EAAE;AACT,oBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAClC,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI;AAC5B,gBAAA,SAAS,EAAE;AACT,oBAAA,eAAe,EAAE,iBAAiB;AACnC,iBAAA;AACF,aAAA;AACD,YAAA,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;AACjB,gBAAA,YAAY,EAAE;AACZ,oBAAA,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ;AACpC,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAjGS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBvB;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAXS,kBAAkB,mHAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqBnC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,gCAAgC;AACnD,wBAAA,kBAAkB,EAAE,2BAA2B;AAC/C,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,SAAS,EAAE,aAAa;AACzB,qBAAA;AACD,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AACjD,iBAAA;;;AChBK,MAAO,sBAA0B,SAAQ,aAAmC,CAAA;IAChF,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;AACtC,IAAA,WAAW,GAAG,KAAK,CAAS,QAAQ,kFAAC;IACrC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAY;AAE1B,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,kFAAC;AAExB,IAAA,cAAc;AAEd,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AACxB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,EAAE;AAEV,gBAAA,iBAAiB,EAAE;AACjB,oBAAA,OAAO,EAAE,MAAM;AAChB,iBAAA;AAED,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;AAC9D,iBAAA;AACF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAE5B,QAAA,IAAI,UAAU,YAAY,mBAAmB,EAAE;;AAE7C,YAAA,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;gBAC9B,IAAI,YAAY,GAAG,MAAM;gBACzB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAiC,EAAE,MAAM,CAAM;gBACrE;AAEA,gBAAA,OAAO,MAAM,CAAC,MAAM,CAAC,YAAsB;qBACxC,IAAI,CAAC,GAAG;AACR,qBAAA,WAAW;AACX,qBAAA,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;AAAO,aAAA,IAAI,UAAU,YAAY,uBAAuB,EAAE;;YAExD,MAAM,YAAY,GAA4B,EAAE;YAEhD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE/B,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvB,oBAAA,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK;AAC7B,gBAAA,CAAC,CAAC;YACJ;iBAAO;;AAEL,gBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK;YAChC;AAEA,YAAA,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC;QACpC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,IAAI,UAAU,YAAY,mBAAmB,EAAE;YAC7C,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;QAClC;AAAO,aAAA,IAAI,UAAU,YAAY,uBAAuB,EAAE;YACxD,UAAU,CAAC,WAAW,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B;wGArFW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFtB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECflE,orBAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXY,eAAe,6HAAE,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI5E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,iBAAiB,EAAA,OAAA,EAClB,CAAC,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAA,SAAA,EAE7E,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAA,QAAA,EAAA,orBAAA,EAAA;;AA0FlE,SAAS,IAAI,CAAC,GAA4B,EAAE,IAAc,EAAA;IACxD,OAAO,IAAI,CAAC,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,KAAI;AACvD,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YAClD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;QACrB;AACA,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,EAAE,CAAC;AACR;;AEhHA;;;;AAIG;;ACqBH;;;;;;AAMG;MAgBU,sBAAsB,CAAA;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,IAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,6FAAC;AAE/C,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA6B,UAAU,CAAC;AACrE,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAA6B,SAAS,CAAC;IAEnE,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;AACpC,IAAA,YAAY,GAAG,KAAK,CAAS,IAAI,mFAAC;IAClC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAC/B,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACzC,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACvC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACnC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACpC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAClC,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACrC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACzB,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;IAC/B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AAC9B,IAAA,UAAU,GAAG,KAAK,CAAsB,SAAS,iFAAC;AAClD,IAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,yFAAC;AAC1C,IAAA,qBAAqB,GAAG,KAAK,CAAS,EAAE,4FAAC;IAEzC,UAAU,GAAG,MAAM,EAAW;IAEvB,cAAc,GAAA;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;AAC9C,QAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACvE;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACxE;AAEmB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAEnB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpC,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;AAEQ,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnC,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC;AAChD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC7C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,UAAU,GAAG,EAAE,GAAG,CAAC;AAE3D,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,QAAQ,EAAE,MAAM;AAEhB,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,MAAM,EAAE,SAAS;AAClB,iBAAA;AAED,gBAAA,4BAA4B,EAAE;AAC5B,oBAAA,eAAe,EAAE,UAAU;AAC3B,oBAAA,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE;AACjC,oBAAA,SAAS,EAAE,YAAY;AACxB,iBAAA;AAED,gBAAA,4BAA4B,EAAE;AAC5B,oBAAA,eAAe,EAAE,UAAU;AAC3B,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;AAID,gBAAA,6CAA6C,EAAE;AAC7C,oBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM;AAClE,oBAAA,cAAc,EAAE,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;AAC9C,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,EAAE,KAAK,UAAU,IAAI;AAClC,gBAAA,4BAA4B,EAAE;AAC5B,oBAAA,eAAe,EAAE,UAAU;AAC3B,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;AACnC,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,wFAAC;AAEQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACpC,GAAG,CAAC;QACF,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzD,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrD,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/C,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAEjD,QAAA,0BAA0B,EAAE;AAC1B,YAAA,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE;AAC3C,SAAA;AACF,KAAA,CAAC,uFACH;AAED,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,eAAe,CAAC,MAAK;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa;YAE5C,MAAM,gBAAgB,GAAG,MAAK;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AAChE,gBAAA,IAAI,UAAU,KAAK,IAAI,CAAC,sBAAsB,EAAE,EAAE;AAChD,oBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBAClC;AACF,YAAA,CAAC;AAED,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,gBAAgB,CAAC;AACrD,YAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC1B,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YACzB,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAEjD,YAAA,gBAAgB,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;wGApIW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZvB,CAAA;;;;;;;;AAQH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAII,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQH,QAAA,CAAA;AACP,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;AAM2D,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,UAAU,iEACX,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCzCvD,sBAAsB,CAAA;IACjC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACzB,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;;IAGnB,WAAW,GAAG,GAAG,CAAC;AACnC,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,cAAc;AAEvB,QAAA,iBAAiB,EAAE;AACjB,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;AACF,KAAA,CAAC;AAEF,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,QAAA,IAAI,CAAC,EAAE;AAAE,YAAA,OAAO,OAAO;QAEvB,OAAO,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,OAAO;AACzE,IAAA,CAAC,gFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,MAAM,EAAE,EAAE;AAEV,YAAA,cAAc,EAAE;AACd,gBAAA,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC,EAAE;gBACV,GAAG,EAAE,CAAC,CAAC;AACP,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,KAAK,EAAE,EAAE;AAET,gBAAA,UAAU,EAAE,uBAAuB;AACnC,gBAAA,SAAS,EAAE,WAAW;AACvB,aAAA;AAED,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,iBAAiB;AAC7B,aAAA;AAED,YAAA,oBAAoB,EAAE;AACpB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,SAAS,EAAE,WAAW;AACvB,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;IAEF,SAAS,GAAA;QACP,MAAM,KAAK,GAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E;AAEA,IAAA,cAAc,CAAC,SAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC;AAC7B,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,SAAS;AACV,SAAA,CAAC;IACJ;wGA7DW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZnC,6NAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCY,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKjB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB,CAAC,kBAAkB,CAAC,EAAA,IAAA,EAEvB,EAAE,SAAS,EAAE,aAAa,EAAE,EAAA,eAAA,EACjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6NAAA,EAAA;;;AE4B3C,MAAO,qBAAyB,SAAQ,aAAkC,CAAA;AAC9E,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAoB;AAC/C,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAyB;IAEjD,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgD;AACzE,IAAA,aAAa,GAAG,MAAM,CAAgB,IAAI,oFAAC;AAE3C,IAAA,cAAc,GAAG,KAAK,CAAU,KAAK,qFAAC;AACtC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;IAClC,SAAS,GAAI,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;IAEzC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACxB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;IAE1B,mBAAmB,GAAG,GAAG,CAAC;AACxB,QAAA,SAAS,EAAE,0BAA0B;AACrC,QAAA,mBAAmB,EAAE,EAAE,GAAG,MAAM,EAAE;AACnC,KAAA,CAAC;IAEF,SAAS,GAAG,MAAM,EAAK;IACvB,QAAQ,GAAG,MAAM,EAAK;AAEH,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,GAAG,CAAC;AACF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACtD,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,aAAa,EAAE,CAAC;AACjB,KAAA,CAAC,iFACH;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,GAAG,CAAC;QACF,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;AAExE,QAAA,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,MAAM;AAChB,SAAA;AACF,KAAA,CAAC,kFACH;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,GAAG,CAAC;QACF,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;AAErE,QAAA,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,MAAM;AAChB,SAAA;AACF,KAAA,CAAC,kFACH;AAEkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,GAAG,CAAC;AACF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAExD,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,CAAC;AAEV,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC;QAExD,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;AACxE,QAAA,oBAAoB,EAAE;YACpB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;AACtE,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,YAAY,EAAE,EAAE;AACjB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,SAAA;AACF,KAAA,CAAC,8EACH;AAEkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,GAAG,CAAC;AACF,QAAA;AACE,YAAA,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,CAAC;AACV,YAAA,oBAAoB,EAAE;gBACpB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;AACtE,aAAA;AACD,YAAA,yBAAyB,EAAE;;AAEzB,gBAAA,YAAY,EAAE,EAAE;AACjB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC;AAC/D,aAAA;AACD,YAAA,kBAAkB,EAAE;;AAElB,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC;AACzD,aAAA;AACF,SAAA;AACF,KAAA,CAAC,8EACH;AAEkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,GAAG,CACD;AACE,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC;AAC5C,YAAA,UAAU,EAAE,gBAAgB;AAC7B,SAAA;AACD,QAAA,sBAAsB,EAAE;YACtB,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;AACzE,SAAA;AACF,KAAA,EACD,IAAI,CAAC,WAAW,EAAE,IAAI;AACpB,QAAA,YAAY,EAAE;AACZ,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC;AACpE,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA;AACF,KAAA,CACF,8EACF;AAEkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,GAAG,CAAC;AACF,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,YAAY,EAAE;AACZ,YAAA,UAAU,EAAE,SAAS;AACtB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,CAAC;YACV,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;AACzE,SAAA;AACD,QAAA,8BAA8B,EAAE;AAC9B,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,UAAU,EAAE,8BAA8B;AAC1C,YAAA,QAAQ,EAAE,QAAQ;AAElB,YAAA,iBAAiB,EAAE;AACjB,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,uCAAuC,EAAE;AACvC,YAAA,gBAAgB,EAAE,KAAK;AACxB,SAAA;AACF,KAAA,CAAC,qFACH;;AAGD,IAAA,SAAS,GAAG,YAAY,CAAC,MAAK;AAC5B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,IAAI,UAAU,IAAI,UAAU,YAAY,uBAAuB,EAAE;;AAE/D,YAAA,OAAO,UAAU,CAAC,SAAS,EAAE;QAC/B;aAAO;;AAEL,YAAA,OAAO,KAAK;QACd;AACF,IAAA,CAAC,gFAAC;AAEF,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM,OAAO,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;IAC5E;IAEA,cAAc,CAAC,GAAM,EAAE,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;;AAGU,IAAA,QAAQ,CAAC,MAA2B,EAAA;AAC5C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;QAC5B,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,MAAM,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI;AAC5D,QAAA,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,EAAE;QACpC,OAAO,SAAS,KAAK,KAAK,GAAG,WAAW,GAAG,SAAS,KAAK,MAAM,GAAG,YAAY,GAAG,IAAI;IACvF;AAEA,IAAA,aAAa,CAAC,GAAM,EAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AACnD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3B,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB;IAEmB,MAAM,GAAG,MAAM;AAElC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;AAEA,IAAA,SAAS,CAAC,IAAwB,EAAA;AAChC,QAAA,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;IAC5D;wGAjMW,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAHrB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCjE,2qKA2IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjHI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,sBAAsB,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMT,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB;wBACP,gBAAgB;wBAChB,eAAe;wBACf,sBAAsB;wBACtB,gBAAgB;wBAChB,sBAAsB;wBACtB,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA,EAAA,SAAA,EAEU,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,eAAA,EAC9C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2qKAAA,EAAA;;;AEpCjD;;;;AAIG;;AC8CG,MAAO,kBAAmB,SAAQ,aAA+B,CAAA;AAC7D,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGjC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAE5B;;;AAGG;IACH,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE3B;;;AAGG;IACH,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAE9B,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;;AAG5B,IAAA,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC;AACtC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;;IAGjC,OAAO,GAAG,MAAM,EAAW;AAE3B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D;AAEA,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;IAChC;AAEmB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC;AACF,QAAA;AACE,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;AAC1D,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACtD,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC;AACpD,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC;AAC1D,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,IAAI,MAAM,CAAC;AAEhE,YAAA,aAAa,EAAE;AACb,gBAAA,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ;AACpC,aAAA;AAED,YAAA,sBAAsB,EAAE;AACtB,gBAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,cAAA,CAAgB;AAChD,aAAA;AAED,YAAA,kCAAkC,EAAE;AAClC,gBAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,cAAA,CAAgB;AACjD,aAAA;AACF,SAAA;AACF,KAAA,CAAC,gFACH;AAES,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,IAAK,KAAK,CAAC,MAAsB,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACvD,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA;;;;AAIG;AACO,IAAA,YAAY,CAAC,KAAY,EAAA;QACjC,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,KAAK,EAAE;IACd;AAEU,IAAA,gBAAgB,CAAC,CAAiB,EAAA;;QAE1C,IAAI,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;IAEA,WAAW,GAAG,GAAG,CAAC;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,GAAG,EAAE,EAAE;AACR,KAAA,CAAC;IAEM,YAAY,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IACvC,aAAa,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAEjD,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;;;;AAKxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;QACpC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,QAAQ,CAAC,EAAE,KAAK,EAAE;QAC5D;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;IAEA,KAAK,GAAA;;;AAGH,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE;QAEjC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;wGAvHW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAXlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAflD;;;;;;;;;;;;;;GAcT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,sBAAsB,iMAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA2BnC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA7B9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,YAAY,CAAC;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBAC5D,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,wBAAwB,EAAE,6BAA6B;AACvD,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,SAAS,EAAE,uBAAuB;AAClC,wBAAA,UAAU,EAAE,sBAAsB;AAClC,wBAAA,gBAAgB,EAAE,0BAA0B;AAC7C,qBAAA;AACF,iBAAA;;;ACjCK,MAAO,yBAA0B,SAAQ,aAAsC,CAAA;AAC3E,IAAA,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE;AAC1C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEF,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACnC,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACvC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAClC,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACtC,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACjC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IAC/B,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACrC,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IAExC,SAAS,GAAG,MAAM,EAAE;;IAGV,cAAc,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,IAAI,SAAS,qFAC/F;IACS,aAAa,GAAG,QAAQ,CAChC,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,IAAI,MAAM,oFAC1F;IACS,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,IAAI,IAAI,mFAAC;IACxF,kBAAkB,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,IAAI,IAAI,yFAC5E;IACS,mBAAmB,GAAG,QAAQ,CACtC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc,IAAI,QAAQ,0FAClF;AACS,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,IAAI,IAAI,+EAAC;AAC9D,IAAA,UAAU,GAAG,QAAQ,CAAO,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,IAAI,IAAI,iFAAC;AAEpE,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK;AAC3B,QAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,IAAI;AACjC,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACnD,SAAA;AACF,KAAA,CAAC,gFACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;IACtB;wGAhDW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,szCAHzB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbrE,4qBAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXY,eAAe,6HAAE,kBAAkB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKlC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACE,wCAAwC,EAAA,OAAA,EACzC,CAAC,eAAe,EAAE,kBAAkB,CAAC,EAAA,SAAA,EAEnC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAA,eAAA,EAClD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4qBAAA,EAAA;;;AEE3C,MAAO,wBAAyB,SAAQ,aAAqC,CAAA;AACzE,IAAA,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE;AAC1C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;;IAGiB,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI;AAEzD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;IACtB;wGAjBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAFxB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdpE,siCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBY,eAAe,4uBAAE,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIzE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,qBAAqB,EAAA,OAAA,EACtB,CAAC,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAA,SAAA,EAE1E,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAA,QAAA,EAAA,siCAAA,EAAA;;;MEFvD,mBAAmB,CAAA;AAC9B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEnC,IAAA,WAAW,GAAG,KAAK,CAAc,YAAY,kFAAC;AAC9C,IAAA,MAAM,GAAG,KAAK,CAAS,SAAS,6EAAC;AAEd,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI;gBACrC,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI;gBACnC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9C,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGApBS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,0YAJpB,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAID,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA,CAAE;AACZ,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACKD;;;;;;;;;;;;AAYG;AA8BG,MAAO,kBAAmB,SAAQ,aAA+B,CAAA;;AAE5D,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AAE5B,IAAA,IAAI,GAAG,KAAK,CAAa,MAAM,2EAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAiB,OAAO,+EAAC;;AAEzC,IAAA,SAAS,GAAG,KAAK,CAAC,YAAY,gFAAC;AAEZ,IAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAuB,SAAS,CAAC;AACvE,IAAA,OAAO,GAAG,SAAS,CAAgC,SAAS,8EAAC;AAE9E,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC5C,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAChB,oBAAA,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;oBACjC,MAAM,CAAC,SAAS,EAAE;gBACpB;YACF;AAAO,iBAAA,IAAI,MAAM,CAAC,IAAI,EAAE;;AAEtB,gBAAA,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,eAAe,CAAC,KAAY,EAAA;AACpC,QAAA,IAAK,KAAK,CAAC,MAAsB,CAAC,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/E;;AAGU,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEU,IAAA,cAAc,CAAC,KAAqB,EAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QAC5C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;YAAE;AAChD,QAAA,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YACjD,MAAM,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;QACnC;IACF;IAEiB,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEvE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAClC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,CAAG,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,CAAC,8EACrG;AACgB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACnC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,CAAG,EAAE,EAAE,CAAC,+EACrG;AAEkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO;AACzC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,UAAU,EAAE,oCAAoC;YAChD,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI;kBACA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO;kBACtC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAA,IAAI,IAAI,CAAC,IAAI;AACX,kBAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACxE,kBAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpE,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO;AACzC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG;AAC3B,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,KAAK,GAAG,YAAY,GAAG,YAAY;AAC3C,YAAA,SAAS,EAAE,MAAM;YACjB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YACtC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1C,YAAA,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE;YACtC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,eAAA,CAAiB,EAAE;YAC5D,YAAY,EAAE,EAAE,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,cAAA,CAAgB,EAAE;AAChE,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAlGS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAzBlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAClD;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxBS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA0Bf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA7B9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5D,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACF,iBAAA;AAU+E,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,iEACnB,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACRzE,MAAO,oBACX,SAAQ,aAAiC,CAAA;AAGjC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,KAAK,GAAG,GAAG;;AAGnB,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAEhC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAe;AACvC,IAAA,SAAS,GAAG,KAAK,CAAY,cAAc,gFAAC;AAC5C,IAAA,MAAM,GAAG,KAAK,CAAe,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,6EAAC;;IAG/C,UAAU,GAAG,aAAa,EAAE;AAE7C;;;;AAIG;AACH,IAAA,YAAY,GAAG,KAAK,CAAsB,IAAI,mFAAC;;AAGtC,IAAA,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;IAE7C,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACvC,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;;;;IAKzC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;IACpC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;IAC1C,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;IACpC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmC;IAEhD,eAAe,GAAG,MAAM,EAAW;IACnC,cAAc,GAAG,MAAM,EAAW;AAGlC,IAAA,WAAW;AAEX,IAAA,IAAY,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;AACA,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACvC;AAEQ,IAAA,kBAAkB,GAA8B;AACtD,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,UAAU,EAAE,cAAc;KAC3B;AAED,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE;AAEzC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;;AAEE,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,KAAK,EAAE,aAAa;;;AAIpB,gBAAA,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;;AAGjE,gBAAA,kBAAkB,EAAE,sCAAsC;AAC1D,gBAAA,kBAAkB,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI;AACrC,gBAAA,wBAAwB,EAAE,QAAQ;AAClC,gBAAA,kBAAkB,EAAE,gBAAgB;;AAGpC,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;;gBAG1D,CAAC,gBAAgB,GAAG;AAClB,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,UAAU;AACtB,iBAAA;;gBAGD,CAAC,iBAAiB,GAAG;oBACnB,CAAC,gBAAgB,GAAG;AAClB,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,oFAAC;;AAGF,IAAA,IAAY,YAAY,GAAA;AACtB,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC1C;IAEA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAQ,KAAI;YACxD,CAAC,CAAC,eAAe,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;;AAGrE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;QACrC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;AACxE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,YAAY,EAAG,CAAC;QAChF;;AAGA,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAU,KAAI;AAC5D,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM;AAC1C,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,CAAA,EAAG,QAAQ,CAAA,CAAE,CAAC;YAE7E,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACK,YAAY,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa;AACrC,QAAA,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QAC3B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAC9B;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAC9B;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;IAC9B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAC9B;AAAE,QAAA,MAAM;;QAER;IACF;wGAlLW,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAFpB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBpD;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhBS,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmBd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,cAAc;oBACxB,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC/D,iBAAA;;sBA0CE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ACxDnC,MAAO,kBAAmB,SAAQ,aAA+B,CAAA;AACrE,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,gFAAC;AAEvB;;;;;AAKG;IACH,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAGxB,IAAA,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC;AAE1C;;;;AAIG;AACgB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,4EAAC;AAEvB,IAAA,UAAU,GAAG,SAAS,CAA0B,SAAS,iFAAC;AAE3E;;;;;;;AAOG;AACc,IAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,oFAAC;AAEtE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,eAAe,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,iBAAiB,CAAC,CAAC,SAAS,KAAI;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AAChD,YAAA,IAAI,CAAC,OAAO;gBAAE;AACd,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACvF,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YACzB,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC;IAClD;AAEA;;;;;;;;AAQG;AACM,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;QACvC,IAAI,QAAQ,KAAK,SAAS;AAAE,YAAA,OAAO,QAAQ;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,IAAI,oBAAoB;AAC7E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,OAAO,MAAM,KAAK,SAAS,GAAG,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;AACrE,IAAA,CAAC,+EAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG,kFAAC;AAEtE;;;;;AAKG;IACgB,aAAa,GAAG,GAAG,CAAC;AACrC,QAAA,OAAO,EAAE,OAAO;AACjB,KAAA,CAAC;IAEF,eAAe,GAAG,GAAG,CAAC;AACpB,QAAA,OAAO,EAAE,MAAM;AAChB,KAAA,CAAC;IAEF,gBAAgB,GAAG,GAAG,CAAC;AACrB,QAAA,SAAS,EAAE,CAAC;AACb,KAAA,CAAC;IAEM,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;IACvC,QAAQ,GAAG,SAAS,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC;AAEpD;;;;;;;;;;;;;AAaG;AACH,IAAA,eAAe,GAAG,GAAG,CACnB,UAAU,CAAC;AACT,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,aAAA,EAAgB,oBAAoB,CAAA,CAAA,CAAG;AACjE,KAAA,CAAC,CACH;AAED,IAAA,iBAAiB,GAAG,GAAG,CACrB,UAAU,CAAC;AACT,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,aAAA,EAAgB,oBAAoB,CAAA,CAAA,CAAG;AACnE,KAAA,CAAC,CACH;wGAnHU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAlBlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAClD,CAAA;;;;;;;;;;;AAWR,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMS,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5D,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWR,GAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,UAAU;AACvB,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA;AACF,iBAAA;kWAsBkE,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClE5E;;;;AAIG;;ACMH;;;;;;;;;AASG;MAuCU,wBAAwB,CAAA;AACnC,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,gFAAC;;IAGvB,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAG9B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGvB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE1B;;;;AAIG;IACH,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGhB,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,mBAAmB,CAAmB,QAAQ,CAAC;IAEpF,KAAK,GAAG,QAAQ,CAC/B,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,eAAe,IAAI,oBAAoB,4EAC7F;AAED;;;;;;;;AAQG;AACc,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AAC7C,QAAA,YAAY,EAAE;AACZ,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,GAAG,UAAU,CAAC;AACZ,gBAAA,UAAU,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAA,aAAA,CAAe;aACrD,CAAC;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,iBAAiB,GAAG,WAAW;AAC9D,SAAA;AACF,KAAA,CAAC,kFAAC;AAEgB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACzD;AAEA,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,MAAM,EAAE,SAAS;YACjB,GAAG,IAAI,CAAC,WAAW,EAAE;AACtB,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;IAEiB,gBAAgB,GAAG,GAAG,CAAC;AACxC,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA,CAAC;IAEiB,cAAc,GAAG,GAAG,CAAC;AACtC,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,QAAQ,EAAE,CAAC;AACZ,KAAA,CAAC;IAEF,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC;IAClD;wGAhFW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7BS,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoCzD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAtCpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC;AACrE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,gBAAgB,EAAE,qBAAqB;AACxC,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCVY,sBAAsB,CAAA;AACjC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;IAChC,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC7D,IAAA,OAAO,GAAG,KAAK,CAAe,IAAI,8EAAC;IAEnC,SAAS,GAAG,MAAM,EAAW;AAE7B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA2B,QAAQ,CAAC;IAE3D,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;IAC3B;wGAXW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAnCS,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,2KAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqC9E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAxClC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,kBAAkB,CAAC;AAC1F,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA;AACF,iBAAA;+ZAQ0D,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtDnE;;;;AAIG;;ACJH;;;;AAIG;;MC6BU,wBAAwB,CAAA;AACnC,IAAA,YAAY,GAAG,MAAM,CAAmB,SAAS,mFAAC;AAClD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,uFAAC;AAC5D,IAAA,eAAe,GAAG,MAAM,CAAuB,SAAS,sFAAC;AAEzD,IAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAA+B,cAAc,CAAC;AAElF,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa;IAC7C;IAEA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;AACjC,IAAA,YAAY,GAAG,KAAK,CAAS,IAAI,mFAAC;AAClC,IAAA,MAAM,GAAG,KAAK,CAAU,OAAO,6EAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAe,IAAI,8EAAC;AACnC,IAAA,eAAe,GAAG,KAAK,CAAU,KAAK,sFAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAS,iBAAiB,uFAAC;AACnD,IAAA,qBAAqB,GAAG,KAAK,CAAW,EAAE,4FAAC;IAC3C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEvB,IAAA,YAAY,GAAG,KAAK,CAA8B,IAAI,mFAAC;AACvD,IAAA,mBAAmB,GAAG,KAAK,CAAiB,IAAI,0FAAC;IAEjD,YAAY,GAAG,MAAM,EAAoB;IACzC,WAAW,GAAG,MAAM,EAAE;AAEtB;;;;AAIG;AACH,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,wFAAC;AAEtF,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,8FACjF;AAED,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,EAAE;QACjD,IAAI,IAAI,GAAG,EAAE;AAEb,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,GAAG,CAAA,EAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB;QAC1C;AAEA,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,kBAAkB;QACnD;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,+EAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YAEjC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;YACpC;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;YACrC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;IAClC;AAEA,IAAA,WAAW,CAAC,QAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ;YAAE;AACf,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAAE;QAClE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrC;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,EAAE;IACrC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IACzB;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IAClC;wGAxFW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCrC,+sEAkEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1CI,oBAAoB,EAAA,QAAA,EAAA,kCAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,iBAAiB,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,gBAAgB,wJAChB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,oBAAoB,EAAA,OAAA,EACrB;wBACP,oBAAoB;wBACpB,eAAe;wBACf,kBAAkB;wBAClB,iBAAiB;wBACjB,gBAAgB;wBAChB,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,+sEAAA,EAAA;uGAQkE,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtCnF;;;;AAIG;;ACYG,MAAO,oBAAqB,SAAQ,aAAiC,CAAA;IACtD,SAAS,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAE3D,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,4EAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,GAAG,+EAAC;;AAE7B,IAAA,MAAM,GAAG,KAAK,CAA8B,SAAS,6EAAC;AAEnC,IAAA,KAAK,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,4EAClF;AAEkB,IAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,6EACpF;AAEkB,IAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,6EACpF;AAEkB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,IAAI;AACjB,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;AAC9D,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC;AACpE,YAAA,MAAM,EAAE,wBAAwB;AACjC,SAAA;AACD,QAAA;AACE,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,GAAG,0BAA0B;AAC7B,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC;AAC9D,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC;AACtD,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;AACzD,aAAA;;AAGD,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AAClC,aAAA;AAED,YAAA,2DAA2D,EAAE;AAC3D,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;AAC9D,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC;AACrE,aAAA;AAED,YAAA,sDAAsD,EAAE;AACtD,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA;AAED,YAAA,kDAAkD,EAAE;AAClD,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY;AAC7C,gBAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB;AAC1D,aAAA;AACF,SAAA;AACF,KAAA,CAAC,oFACH;wGA3DU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAJpB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7D,iWAcA,4CDJY,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,eAAe,CAAC,EAAA,SAAA,EAEf,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA,IAAA,EACrD,EAAE,SAAS,EAAE,WAAW,EAAE,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iWAAA,EAAA;;;AEAjD;;;;;;;AAOG;MAOU,yBAAyB,CAAA;IACpC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC3B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACzB,IAAA,YAAY,GAAG,KAAK,CAAS,GAAG,mFAAC;;IAEjC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACvB,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,kFAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;;IAGvB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACtB,IAAA,YAAY,GAAG,KAAK,CAAsB,SAAS,mFAAC;IACpD,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC9B,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;;IAItC,MAAM,GAAG,MAAM,EAAU;AAEzB,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE5B,IAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAA+B,OAAO,CAAC;IACjF,SAAS,GAAyC,IAAI;AACtD,IAAA,WAAW;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YAChC,IAAI,IAAI,CAAC,SAAS;AAAE,gBAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAClD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;QAGrB,IAAI,IAAI,CAAC,SAAS;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACzB;;IAGA,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,SAAS;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB;IACF;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC3C;IAEA,UAAU,GAAG,GAAG,CAAC;AACf,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,CAAC;AACZ,KAAA,CAAC;wGA/DS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BtC,qsBAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIY,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,oBAAoB,EAAA,OAAA,EACrB,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,qsBAAA,EAAA;6nCAwBkD,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEtC7E,iBAAiB,CAAA;;AAEnB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAG1C,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,kFAAC;;IAGJ,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEjG,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IAC1D;AAEA,IAAA,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;wGAhCT,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX9B,siBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRY,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,WAAW,EAAA,OAAA,EACZ,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,siBAAA,EAAA;;;MEEpB,oBAAoB,CAAA;IAC/B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AACvB,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,2EAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAwB,QAAQ,+EAAC;AACjD,IAAA,KAAK,GAAG,KAAK,CAAkB,MAAM,4EAAC;AACtC,IAAA,aAAa,GAAG,KAAK,CAAU,IAAI,oFAAC;IAEpC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,iFAAC;AAEjE,IAAA,SAAS,GAAG,QAAQ,CAAC,MACnB,GAAG,CAAC;AACF,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,KAAA,CAAC,gFACH;AAED,IAAA,cAAc,CAAC,QAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE;QAC3B,QAAQ,CAAC,MAAM,EAAE;IACnB;wGAnBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wsBCVjC,wIAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,WAChB,EAAE,EAAA,QAAA,EAAA,wIAAA,EAAA;;;AEPb;;;;AAIG;;ACmCI,MAAM,SAAS,GAAG,CAAC,IAAc,KAA0B,SAAS,IAAI;;MCRlE,oBAAoB,CAAA;AAC/B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AACpB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACvB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkB;IAClC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAK;IACpB,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC5B,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;;IAEzB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;;IAEtC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmC;AACrD,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAEb,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAqB,UAAU,CAAC,EAAE,8EACjE;AAEkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,mFAAC;;AAG1D,IAAA,cAAc,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAEhE,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,YAAY,GAAG;AACnB,cAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,OAAO;cACrD,SAAS;AACb,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC;AAEpD,QAAA,OAAO,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBAC1D,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC9B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC1C,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACxC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;;AAGtC,gBAAA,kBAAkB,EAAE;AAClB,oBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC;AAChE,oBAAA,OAAO,EAAE,MAAM;AAChB,iBAAA;AAED,gBAAA,yBAAyB,EAAE;oBACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,qBAAqB,CAAC;AACjD,oBAAA,aAAa,EAAE,MAAM;AACtB,iBAAA;AACF,aAAA;YACD,eAAe,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAA,IAAA,EAAO,eAAe,CAAA,MAAA,CAAQ,EAAE;;;YAGrE,EAAE,GAAG,YAAY,EAAE;AACpB,SAAA,CAAC;AACJ,IAAA,CAAC,wFAAC;;AAGF,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACvC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;wGAvEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wzCC/BjC,wdAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIY,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,4uBAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWpD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,OAAA,EAC/B,CAAC,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAE/C,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,qBAAqB,EAAE,0BAA0B;AACjD,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA,EAAA,QAAA,EAAA,wdAAA,EAAA;;;ME6CU,gBAAgB,CAAA;AACnB,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;;AAGpC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAc;IACxC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAY;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAY,cAAc,gFAAC;;IAG5C,eAAe,GAAG,MAAM,EAAY;IAEpC,gBAAgB,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;IAGhC,SAAS,GAAG,SAAS;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAiB,MAAM,CAAC,EAAE,kFACzD;IAEkB,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,oFAC/C;AAEkB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QAClD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;;;AAG5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,cAAc,IAAI,MAAM,CAAC;AAC9D,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;AACtC,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,YAAY,EAAE,OAAO;AACtB,SAAA,CAAC;AACJ,IAAA,CAAC,uFAAC;AAEM,IAAA,cAAc,GAAG,YAAY,CAAC,oBAAoB,qFAAC;AACnD,IAAA,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,wFAAC;;IAGnD,YAAY,GAAqB,OAAO;AAE7B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;IAEF,mBAAmB,CAAC,IAAc,EAAE,QAA8B,EAAA;QAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE;QACf;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,QAAQ,CAAC,YAAY,EAAE;IACzB;;AAGA,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjE;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc;AACjC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO;QAC3B,MAAM,CAAC,KAAK,EAAE;IAChB;AAEA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACzC,QAAA,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC;YAAE;QACzE,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO;AAC9D,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YACtB,IAAI,CAAC,QAAQ,EAAE;QACjB;aAAO;YACL,QAAQ,CAAC,cAAc,EAAE;QAC3B;IACF;IAEA,aAAa,CAAC,KAAoB,EAAE,QAA8B,EAAA;AAChE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc;AACjC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC;AAE1E,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;gBAChD;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;gBAC/D;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChB;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC/B;AACF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACrB,gBAAA,KAAK,CAAC,MAAsB,CAAC,KAAK,EAAE;gBACrC;AACF,YAAA,KAAK,KAAK;;;gBAGR,QAAQ,CAAC,YAAY,EAAE;gBACvB;AACF,YAAA;gBACE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;;IAEhD;;AAGQ,IAAA,SAAS,CAAC,KAAoB,EAAE,KAA6B,EAAE,YAAoB,EAAA;AACzF,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE;QAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;QACpC,IAAI,IAAI,KAAK,GAAG;YAAE;AAElB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;AACrD,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAChD,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE;gBACZ;YACF;QACF;IACF;wGAxIW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAoCW,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxFhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlDS,oBAAoB,gLAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqDzC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvD5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;AACrD,oBAAA,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AACnC,iBAAA;AAqCuC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,oBAAoB,gGACpB,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MChG/C,uBAAuB,CAAA;;AAElC,IAAA,OAAO,GAAG,KAAK,CAAc,EAAE,8EAAC;AAChC,IAAA,UAAU,GAAG,KAAK,CAAyB,SAAS,iFAAC;IACrD,OAAO,GAAG,MAAM,EAAmB;;AAGnC,IAAA,aAAa,GAAG,KAAK,CAAsD,QAAQ,oFAAC;AACpF,IAAA,WAAW,GAAG,KAAK,CAA2B,IAAI,kFAAC;AAEhC,IAAA,MAAM,GAAG,QAAQ,CAAY,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,6EAAC;AAE3D,IAAA,qBAAqB,GAAG,QAAQ,CAAc,MAC/D,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC9B,QAAA,GAAG,MAAM;QACT,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/C,CAAC,CAAC,4FACJ;IAEkB,SAAS,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAE3D,WAAW,CAAC,OAAgB,EAAE,KAAQ,EAAA;AACpC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AAEpC,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO;YAAE;AAE7B,QAAA,IAAI,UAAU,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC;AACrE,YAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,kBAAkB,CAAC;YAC3D;QACF;QAEA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD;QACF;IACF;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;IAC9B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;IAC9B;IAEA,aAAa,GAAG,GAAG,CAAC;AAClB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA,CAAC;wGApDS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfpC,2bAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHY,oBAAoB,sPAAE,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKpC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB,CAAC,oBAAoB,EAAE,eAAe,CAAC,EAAA,IAAA,EAE1C,EAAE,SAAS,EAAE,WAAW,EAAE,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2bAAA,EAAA;;;AEsB3C,MAAO,+BACX,SAAQ,aAA4C,CAAA;IAGjC,SAAS,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;AAGlD,IAAA,KAAK,GAAG,KAAK,CAAM,EAAE,4EAAC;AACtB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAGjC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAc;AACtC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;AAErB,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,4EAAC;AAElB,IAAA,eAAe,GAAG,QAAQ,CAAa,MAAK;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;QAC7C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrF,IAAA,CAAC,sFAAC;;AAGO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;;QAGjC,MAAM,MAAM,GAAG;aACZ,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK;AACnE,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AACnE,IAAA,CAAC,yFAAC;IAEiB,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE9E,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,OAAO,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC,WAAW;AACnD,cAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,cAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS;AACvC,IAAA,CAAC,gFAAC;IAEF,YAAY,GAAG,GAAG,CAAC;AACjB,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,MAAM;AAEb,QAAA,uCAAuC,EAAE;AACvC,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY;AAC7C,YAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB;AAC1D,SAAA;AACF,KAAA,CAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC7C,GAAG,CAAC;AACF,QAAA,GAAG,0BAA0B;AAC7B,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;AAC/D,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,uBAAuB,CAAC;AACrE,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,KAAK,EAAE,MAAM;AAEb,QAAA,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY;AAC7C,YAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,kBAAkB;AAC1D,SAAA;AACF,KAAA,CAAC,uFACH;AAES,IAAA,gBAAgB,CAAC,KAAY,EAAA;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IAC1D;IAEA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;IAC3B;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB;AAEU,IAAA,gBAAgB,CAAC,MAAiB,EAAA;AAC1C,QAAA,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D;IAEA,YAAY,CAAC,MAAiB,EAAE,OAAgB,EAAA;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;QACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;YAC5B,IAAI,OAAO,EAAE;;AAEX,gBAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC;YAChE;iBAAO;;AAEL,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;IACJ;wGAvHW,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAJ/B,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B3E,+rEAuEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpDI,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,iBAAiB,kIACjB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,6HACf,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAOX,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAnB3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAC5B;wBACP,oBAAoB;wBACpB,eAAe;wBACf,oBAAoB;wBACpB,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;wBAClB,eAAe;wBACf,oBAAoB;qBACrB,EAAA,SAAA,EAEU,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,EAAA,IAAA,EACnE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+rEAAA,EAAA;;;AEhB3C,MAAO,6BAA8B,SAAQ,aAA0C,CAAA;AAC3F,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;AAC5B,IAAA,YAAY,GAAG,KAAK,CAA2B,OAAO,mFAAC;AACvD,IAAA,KAAK,GAAG,KAAK,CAAsB,SAAS,4EAAC;AAC7C,IAAA,QAAQ,GAAG,KAAK,CAA4D,WAAW,+EAAC;AACxF,IAAA,IAAI,GAAG,KAAK,CAAU,IAAI,2EAAC;AAE3B;;;AAGG;IACH,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAER,IAAA,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC;AAEjC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK;AAAE,YAAA,OAAO,mBAAmB;AAC7D,QAAA,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB;AAC/C,IAAA,CAAC,mFAAC;AAEF,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AAEnC,QAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AACrB,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,EAAE;AACrC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,KAAK,GAAG,QAAQ,EAAE;YACpB,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAG;QACvB;AAEA,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;AACzB,IAAA,CAAC,mFAAC;AAEF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AAEnC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;QAEvB,IAAI,OAAO,KAAK,KAAK;AAAE,YAAA,OAAO,IAAI;AAElC,QAAA,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC;AACzC,IAAA,CAAC,iFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,IAAI;AAEpD,QAAA,MAAM,cAAc,GAAG;YACrB,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC3C,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YACzC,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YACjD,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;SAChD,CAAC,QAAQ,CAAC;AAEX,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,GAAG,EAAE;AACH,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,QAAQ,EAAE,OAAO;AAClB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,YAAY,EAAE,EAAE;AACjB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;SACF,CAAC,OAAO,CAAC;AAEV,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,OAAO,EAAE,cAAc;AAEvB,YAAA,iCAAiC,EAAE;AACjC,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,cAAc,EAAE,QAAQ;gBACxB,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,IAAI,MAAM,CAAC;AACjD,gBAAA,MAAM,EAAE,CAAC;AAET,gBAAA,GAAG,cAAc;AACjB,gBAAA,GAAG,aAAa;AACjB,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAxGS,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAJ7B,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbzE,gYAWA,4CDAY,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMf,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;+BACE,wBAAwB,EAAA,OAAA,EACzB,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAEhB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAA,IAAA,EACjE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAA,eAAA,EACjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gYAAA,EAAA;;;AE0B3C,MAAO,iBAAkB,SAAQ,aAA8B,CAAA;IACnE,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAuB,SAAS,+EAAC;AACjD,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,iFAAC;AACjD,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;IAElC,OAAO,GAAG,MAAM,EAAW;AAEP,IAAA,QAAQ;AAEX,IAAA,UAAU,GAAG,MAAM,CAAgC,QAAQ,iFAAC;AAE5D,IAAA,gBAAgB,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc,uFAC/D;AAEkB,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,GAAG,CAAC;AACF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5E,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;QAC1D,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7C,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC;QAE1D,UAAU,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAA,aAAA,CAAe;AACzE,QAAA,kBAAkB,EAAE,gBAAgB;AACpC,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW;AAExC,QAAA,SAAS,EAAE;AACT,YAAA,iBAAiB,EAAE;AACjB,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,CAAgB;AAC3C,SAAA;AACF,KAAA,CAAC,iFACH;IAEgB,OAAO,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;AAEpD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,EAAE;YACb;AAAO,iBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE;gBAChC,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAClE,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;AAC/C,gBAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE;AACpC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa;YAAE;QAEnC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa;YAAE;QAEnC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;IAEmB,iBAAiB,GAAG,QAAQ,CAAuB,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;wGAjFjF,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAHjB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,oJCtC7D,+oBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDYI,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EACZ;wBACP,eAAe;wBACf,sBAAsB;wBACtB,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA,EAAA,SAAA,EAEU,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA,eAAA,EAC1C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+oBAAA,EAAA;;sBAU9C,SAAS;uBAAC,OAAO;;;ME1BP,2BAA2B,CAAA;AACtC,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;IACnB,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgB;IACpC,OAAO,GAAG,MAAM,EAAW;wGAHhB,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBxC,wdAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDI,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,yBAAyB,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIhB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAZvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,eAAA,EAClB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,kBAAkB;wBAClB,wBAAwB;wBACxB,eAAe;wBACf,gBAAgB;wBAChB,yBAAyB;AAC1B,qBAAA,EAAA,QAAA,EAAA,wdAAA,EAAA;;;AEqBG,MAAO,oBACX,SAAQ,aAAiC,CAAA;IAGzC,KAAK,GAAG,QAAQ,EAAE;;IAGlB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACvB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAY;IAC5B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC5B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgC;IAC/C,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE7B,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;IAElC,MAAM,GAAG,MAAM,EAAE;IACjB,OAAO,GAAG,MAAM,EAAW;AAE3B,IAAA,WAAW,GAAG,SAAS,CAAa,UAAU,kFAAC;AAE/C,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa;IAC1C;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D;AAEmB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC;AACF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAChF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC;AACjD,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,QAAA,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAA,YAAA,CAAc;AACxE,QAAA,kBAAkB,EAAE,gBAAgB;AACpC,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc;QAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,QAAA,QAAQ,EAAE,OAAO;AAEjB,QAAA,SAAS,EAAE;AACT,YAAA,iBAAiB,EAAE;AACjB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,CAAgB;AAC3C,SAAA;AACF,KAAA,CAAC,oFACH;IAED,OAAO,GAAG,SAAS,CAAC;AAClB,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACF,KAAA,CAAC;IAEF,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YACrD,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE;AACnC,gBAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAY,QAAQ,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,OAAO,KAAK,UAAU;AAAE,YAAA,OAAO,SAAS;QAE5C,OAAO,OAAO,OAAO,KAAK;AACxB,cAAE,UAAU,CAAC,OAAO;cAClB,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc;IACvD;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACxE;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;IACpB;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IACrB;wGAxGW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtChE,4pCAsCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTI,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EACf;wBACP,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,sBAAsB;wBACtB,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA,EAAA,SAAA,EAEU,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,eAAA,EAC7C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4pCAAA,EAAA;szBAoBX,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MExCnC,sBAAsB,CAAA;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE1B,IAAA,UAAU,GAAG,MAAM,CAAoB,SAAS,iFAAC;AACjD,IAAA,aAAa,GAAG,MAAM,CAAuB,SAAS,oFAAC;AACvD,IAAA,iBAAiB,GAAG,MAAM,CAA2B,SAAS,wFAAC;;AAG7D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,gFAAC;AAC/C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,mFAAC;AACrD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,uFAAC;;IAG7D,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAC/C,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE1E,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACvD,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;AAC/D,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,8BAA8B,CAAC,OAAgB,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;IACrD;AAEA,IAAA,0BAA0B,CAAC,OAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;IACjD;AAEA,IAAA,uBAAuB,CAAC,OAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;IAC9C;wGAvCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6ECnBnC,8zBAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRY,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,2LAAE,2BAA2B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGnE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,mBAAmB,EAAA,OAAA,EACpB,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,8zBAAA,EAAA;;;AEK3E,MAAO,qBAAyB,SAAQ,aAAkC,CAAA;IAC9E,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;IACtC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE9B,IAAA,YAAY,GAAG,KAAK,CAAU,IAAI,mFAAC;AACnC,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,qFAAC;AACrC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;AAEtC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ;gBAAE;AACf,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,IAAI,EAAE;AAAE,gBAAA,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;AAClC,QAAA,CAAC,CAAC;IACJ;AAEmB,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,GAAG,CAAC;AACF,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC;AACzD,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;AAC/D,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,OAAO,EAAE,aAAa;AAEtB,QAAA,iBAAiB,EAAE;AACjB,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;AACF,KAAA,CAAC,iFACH;AAEkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC;AACF,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;AAC9D,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,uBAAuB;AAE/B,QAAA,iBAAiB,EAAE;AACjB,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;AAED,QAAA,WAAW,EAAE;AACX,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;AAC/D,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,uBAAuB,CAAC;AACrE,YAAA,MAAM,EAAE,OAAO;AAChB,SAAA;AAED,QAAA,uBAAuB,EAAE;AACvB,YAAA,eAAe,EAAE,iBAAiB;AACnC,SAAA;AACF,KAAA,CAAC,gFACH;AAED,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACzD,QAAA,IAAI,EAAE;YAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,KAAY,EAAA;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACrD,QAAA,IAAI,EAAE;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC;AAEA,IAAA,QAAQ,CAAC,IAAa,EAAA;AACpB,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ;IACjC;wGA7EW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,81BAPrB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,iDCdjE,83FAuGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3FY,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,kMAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASxD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAA,SAAA,EAEzD,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,eAAA,EAC9C,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,YAAY,EAAE,YAAY;AAC3B,qBAAA,EAAA,QAAA,EAAA,83FAAA,EAAA;;;AEnBH;;;;AAIG;;MCyBU,mBAAmB,CAAA;AACtB,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAEpC,IAAA,SAAS,GAAG,KAAK,CAAY,QAAQ,gFAAC;;AAGtC,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,gFAAC;AAEd,IAAA,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;IACzB,UAAU,GAAG,aAAa,EAAE;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AAEhC,IAAA,UAAU,GAAG,SAAS,CAAC,QAAQ,CAA0B,SAAS,CAAC;AACnE,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA0B,OAAO,CAAC;AAEvE,IAAA,WAAA,GAAA;;QAEE,eAAe,CAAC,MAAK;YACnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AACnE,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAI,KAAqB,CAAC,QAAQ,KAAK,MAAM;AACvD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,EACnD,eAAe,EACf,CAAA,EAAG,IAAI,CAAA,CAAE,CACV;IACH;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE;IAC7C;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE;IAC7C;AAEA,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;QACA,KAAK,CAAC,eAAe,EAAE;IACzB;IAEmB,gBAAgB,GAAG,GAAG,CAAC;AACxC,QAAA,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,KAAA,CAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC7C,GAAG,CAAC;AACF,QAAA;AACE,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAC1C,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;AAClC,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;;AAGnE,YAAA,kBAAkB,EAAE,2BAA2B;AAC/C,YAAA,kBAAkB,EAAE,OAAO;AAC3B,YAAA,kBAAkB,EAAE,gBAAgB;AACpC,YAAA,OAAO,EAAE,CAAC;AAEV,YAAA,gBAAgB,EAAE;AAChB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AAED,YAAA,iBAAiB,EAAE;AACjB,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC;AACX,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,uFACH;AAEkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAE3C,QAAA,MAAM,OAAO,GAA2B;YACtC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;YAC1F,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;YACzF,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;YACxF,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;SAC5F;AACD,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAC1C,YAAA,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,GAAG,OAAO,CAAC,IAAI,CAAC;AACjB,SAAA,CAAC;AACJ,IAAA,CAAC,qFAAC;wGAvGS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,sjBC7BhC,2qBAgBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDaa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,aAAa,WACd,EAAE,EAAA,QAAA,EAAA,2qBAAA,EAAA;AAgBsD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,kEACX,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE3CxE;;;;AAIG;;MCcU,uBAAuB,CAAA;AAClC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,IAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AAE3B,IAAA,KAAK,GAAG,KAAK,CAAS,GAAG,4EAAC;AAC1B,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;AAC1B,IAAA,OAAO,GAAG,KAAK,CAAS,CAAC,8EAAC;;IAG1B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAE3B,MAAM,GAAG,CAAC;AAES,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AACpC,IAAA,CAAC,gFAAC;IAEiB,IAAI,GAAG,IAAI;wGAlBnB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,uyBClBpC,s7BAyBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDPa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,EAAE,EAAA,IAAA,EAEL;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,eAAe,EAAE,GAAG;AACpB,wBAAA,eAAe,EAAE,KAAK;AACtB,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,mBAAmB,EAAE,2BAA2B;qBACjD,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s7BAAA,EAAA;;;AEhBjD;;;;AAIG;;ACeG,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAC1D,IAAA,OAAO,GAAG,KAAK,CAAS,CAAC,8EAAC;;IAG1B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;QACnC,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;AAC/C,IAAA,CAAC,gFAAC;IAEM,QAAQ,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;AACnC,KAAA,CAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,OAAO;AAEhB,YAAA,mBAAmB,EAAE;AACnB,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AAED,YAAA,cAAc,EAAE;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,GAAG;AACjB,aAAA;AAED,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,GAAG;AAChB,gBAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,qBAAA,CAAuB;AACnD,aAAA;AAED,YAAA,eAAe,EAAE;AACf,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,UAAU,EAAE,QAAQ;AACrB,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAxCS,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,GAAA,EAAA,eAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAXzB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,iDCRrE,4qBAuBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDJa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAA,IAAA,EAC7D;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,eAAe,EAAE,GAAG;AACpB,wBAAA,eAAe,EAAE,KAAK;AACtB,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,mBAAmB,EAAE,2BAA2B;qBACjD,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4qBAAA,EAAA;;;AEjBjD;;;;AAIG;;ACaG,MAAO,iBACX,SAAQ,aAA8B,CAAA;;AAI7B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAGjC,IAAA,OAAO,GAAG,KAAK,CAAmB,EAAE,8EAAC;IACrC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAEvB,IAAI,GAAG,KAAK,CAAS,QAAQ,CAAC,iBAAiB,CAAC,2EAAC;;AAGvC,IAAA,YAAY,GAAG,QAAQ,CAAC,iBAAiB,CAAC;;IAG1C,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEjG,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEiB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,SAAS,GAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAe,IAAI,EAAE;AAChE,QAAA,MAAM,eAAe,GAAG,SAAS,GAAG,GAAG;QACvC,OAAO;AACL,YAAA,eAAe,EAAE,SAAS;YAC1B,eAAe;AACf,YAAA,iBAAiB,EAAE,CAAC,SAAS,GAAG,eAAe,IAAI,CAAC;SACrD;AACH,IAAA,CAAC,8EAAC;IAEiB,eAAe,GAAG,GAAG,CAAC;AACvC,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,GAAG,EAAE,EAAE;AACR,KAAA,CAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,QAAA,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9E,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,SAAS;AACnD,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC;AAElC,YAAA,iBAAiB,EAAE;AACjB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,MAAM,EAAE,CAAA,UAAA,EACN,IAAI,CAAC,QAAQ;AACX,sBAAE,IAAI,CAAC,aAAa,CAAC,aAAa;AAClC,sBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,IAAI,SAAS,CACvE,CAAA,CAAE;AACF,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,eAAe;AAC3B,gBAAA,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC;AACnF,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA;AAED,YAAA,gBAAgB,EAAE;AAChB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,UAAU,EAAE,eAAe;AAC5B,aAAA;AAED,YAAA,uBAAuB,EAAE,IAAI,CAAC,QAAQ;AACpC,kBAAE;AACF,kBAAE;oBACE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,iBAAA;AAEL,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,OAAO,EAAE,GAAG;AAEZ,gBAAA,iBAAiB,EAAE;AACjB,oBAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;AAC/C,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,uFAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAC5C,GAAG,CAAC;AACF,QAAA,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,CAAC,CAAC;AACV,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,OAAO,EAAE,CAAC;AAEV,QAAA,2BAA2B,EAAE;YAC3B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,SAAA;AAED,QAAA,wCAAwC,EAAE;AACxC,YAAA,SAAS,EAAE,UAAU;AACtB,SAAA;AAED,QAAA,yBAAyB,EAAE;YACzB,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AAC1D,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA;AACF,KAAA,CAAC,sFACH;AAED,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAClC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1D;wGAzIW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAHjB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd7D,6/BA8BA,4CDlBY,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAEhB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAA,eAAA,EAC1C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6/BAAA,EAAA;;;AEfjD;;;;AAIG;;ACaH;;;;;;AAMG;AASG,MAAO,uBAAwB,SAAQ,aAAoC,CAAA;;AAE/E,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;IAChC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAkB,MAAM,4EAAC;AACtC,IAAA,YAAY,GAAG,KAAK,CAAC,GAAG,mFAAC;AACzB;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK,CAAW,EAAE,kFAAC;;;IAIjC,MAAM,GAAG,MAAM,EAAU;;IAEzB,MAAM,GAAG,MAAM,EAAU;IACzB,kBAAkB,GAAG,MAAM,EAAU;AAElB,IAAA,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC;AAE/D,IAAA,SAAS,GAAG,QAAQ,CAAC,oBAAoB,CAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AACxB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,kFAAC;IAExB,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACzE;IAEkB,QAAQ,GAAG,QAAQ,CACpC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,GAAG,CAAC,+EAC9D;AAEkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,GAAG,SAAS,qFAChF;AAEkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,+EAAC;AAE3D,IAAA,YAAY,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;IAEU,MAAM,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,CAAC,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC;YAC9C;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9C;AAEU,IAAA,MAAM,CAAC,UAAkB,EAAA;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;IACtB;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,MAAM,EAAE;gBACb;AACF,YAAA,KAAK,WAAW;YAChB,KAAK,SAAS,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM;gBAC9C,IAAI,KAAK,KAAK,CAAC;oBAAE;gBACjB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;gBAClE;YACF;AACA,YAAA,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;qBACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAAE,IAAI,CAAC,KAAK,EAAE;gBACtC;;IAEN;AAEU,IAAA,UAAU,CAAC,KAAiB,EAAA;;AAEpC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAA4B;AAC/C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAE,KAAK,CAAC,aAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;AAEmB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CAAC;AACF,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,oBAAoB,EAAE;AACpB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC5C,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;AAChC,SAAA;AACF,KAAA,CAAC,gFACH;AAEkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,SAAS,EAAE,MAAM;YACjB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC;YACrE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;YACrD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;AACtD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,mBAAmB,CAAC;AAClD,oBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC;AAC5C,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGA9IS,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAJvB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuBnB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDzE,+vDAgDA,4CDtBY,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMpE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB,CAAC,yBAAyB,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,SAAA,EAErE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,IAAA,EAC3D,EAAE,SAAS,EAAE,aAAa,EAAE,EAAA,eAAA,EACjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+vDAAA,EAAA;yuBAqBD,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnDzE;;;;AAIG;;MCSU,kBAAkB,CAAA;;AAEpB,IAAA,KAAK,GAAG,KAAK,CAAW,IAAI,4EAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAGjC,IAAA,OAAO,GAAG,KAAK,CAAa,EAAE,8EAAC;IAC/B,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAG7B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAEjB,UAAU,GAAG,CAAC,CAAC;AAElC;;;AAGG;AACgB,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACtD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAA,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,UAAU;;QAG3E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC;AACzE,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;AACzB,IAAA,CAAC,2FAAC;IAEiB,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEvF,IAAA,kBAAkB,CAAC,KAAY,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AAExC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB;aAAO;YACL,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;;YAE5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;QACtC;IACF;IAEA,WAAW,GAAG,GAAG,CAAC;AAChB,QAAA,UAAU,EAAE;YACV,YAAY,EAAE,EAAE;AAChB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AACrC,SAAA;AAED,QAAA,CAAC,8BAA8B,IAAI,CAAC,UAAU,CAAA,WAAA,CAAa,GAAG;AAC5D,YAAA,KAAK,EAAE,mDAAmD;AAC3D,SAAA;AACF,KAAA,CAAC;IAEF,UAAU,GAAG,GAAG,CAAC;AACf,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,MAAM;AACtB,KAAA,CAAC;wGAtES,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb/B,wzBAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfY,oBAAoB,+GAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGvC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,YAAY,WACb,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,wzBAAA,EAAA;;;AEJrD;;;;;AAKG;AAYG,MAAO,oBAAqB,SAAQ,aAAiC,CAAA;AACzE,IAAA,KAAK,GAAG,KAAK,CAAgB,MAAM,4EAAC;;AAEpC,IAAA,KAAK,GAAG,KAAK,CAA8B,SAAS,4EAAC;;AAErD,IAAA,MAAM,GAAG,KAAK,CAA8B,SAAS,6EAAC;;AAEtD,IAAA,KAAK,GAAG,KAAK,CAAC,CAAC,4EAAC;IAEC,OAAO,GAAG,CAAC,KAAsB,KAChD,OAAO,KAAK,KAAK,QAAQ,GAAG,GAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK;AAE/B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACrD,QAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpE,IAAA,CAAC,qFAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,GAAG,SAAS;AAClF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,QAAQ;YAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AACtE,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM;AAAE,YAAA,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;AAEvC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACxC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CACpE;AACH,IAAA,CAAC,iFAAC;IAEe,KAAK,GAAG,SAAS,CAAC;AACjC,QAAA,IAAI,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE;AACtC,QAAA,EAAE,EAAE,EAAE,kBAAkB,EAAE,SAAS,EAAE;AACtC,KAAA,CAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC;AACpE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;QAC1E,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,MAAM,SAAS;AAC/D,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;YACvB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9B,YAAA,uBAAuB,EAAE;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;AAC7B,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK;sBACjB,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;sBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC5C,gBAAA,IAAI,QAAQ;AACV,oBAAA,UAAU,CAAC;AACT,wBAAA,eAAe,EAAE,CAAA,uBAAA,EAA0B,IAAI,SAAS,SAAS,CAAA,MAAA,EAAS,IAAI,CAAA,KAAA,CAAO;AACrF,wBAAA,cAAc,EAAE,WAAW;wBAC3B,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAA,sBAAA,CAAwB;AAC5E,qBAAA,CAAC,CAAC;AACN,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGAzDS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EARpB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAEpD;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;oBAC9D,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE;AACzD,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;AACF,iBAAA;;;AChBD;;;;;AAKG;AAsBG,MAAO,kBACX,SAAQ,aAA+B,CAAA;;AAI9B,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,4EAAC;AACxB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAG1C,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;;;AAGhC,IAAA,GAAG,GAAG,KAAK,CAAqB,CAAC,0EAAC;AAClC,IAAA,GAAG,GAAG,KAAK,CAAqB,GAAG,0EAAC;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,2EAAC;AAEI,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,kFAAC;AAC7C,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,kFAAC;IAElE,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;IAClE;AAEmB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG;QACtC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;AAC3B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK;AAC1C,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG;AACtD,IAAA,CAAC,kFAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;AAC1E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;AAChE,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC;AAC5C,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE;;;AAGzC,QAAA,MAAM,SAAS,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAA,yBAAA,EAA4B,KAAK,0BAA0B;AAC9G,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,UAAU,EAAE,MAAe;AAC3B,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,MAAM,EAAE,SAAS;SAClB;AACD,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,kCAAkC,EAAE;AAClC,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,UAAU,EAAE,SAAS;AACtB,aAAA;AACD,YAAA,yBAAyB,EAAE;AACzB,gBAAA,GAAG,KAAK;AACR,gBAAA,SAAS,EAAE,CAAC,WAAW,GAAG,SAAS,IAAI,CAAC;AACzC,aAAA;AACD,YAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;AACvF,YAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;AACzF,YAAA,qBAAqB,EAAE,KAAK;YAC5B,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE,EAAE,aAAa,EAAE,CAAC,EAAE;AACrE,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;AACpD,gBAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;AACjD,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,iFAAC;wGA7FS,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAlBlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAClD;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBArB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,YAAY;oBACtB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5D,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACF,iBAAA;;;AC1BD,MAAM,WAAW,GAAG,EAAE;AACtB,MAAM,YAAY,GAAG,EAAE;AAEvB;;;;;;AAMG;AAyCG,MAAO,gBAAiB,SAAQ,aAA6B,CAAA;;AAEjE,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;;AAEhC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAmB;;IAEzC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAEvB,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,+EAAC;;IAEtB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAEzB,IAAA,KAAK,GAAG,KAAK,CAAuB,SAAS,4EAAC;AAE3B,IAAA,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;AAE5B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3C,QAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;AACtC,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,qBAAqB,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC,mFAAC;IAEiB,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,gFAAC;AACjE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,kFAAC;IAClE,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEhF,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,SAAS;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,WAAW,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9C,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAuB;AAChD,YAAA,CAAC,GAAG,IAAI;AACR,YAAA,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,KAAK,YAAY,GAAG,CAAC,CAAC;AAC5D,SAAA,CAAC;AACF,QAAA,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,OAAO;AACL,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxF,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACtB;AACH,IAAA,CAAC,gFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,SAAS,EAAE,YAAY;YACvB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;YAC9B,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YACtC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;YAC1C,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACtC,YAAA,mBAAmB,EAAE;gBACnB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC7C,aAAA;AACD,YAAA,mBAAmB,EAAE;gBACnB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AACrC,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,UAAU,EAAE,GAAG;gBACf,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AAClD,aAAA;AACD,YAAA,qBAAqB,EAAE;AACrB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC7C,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE;AAC1E,gBAAA,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE;AAC5E,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,gFAAC;wGA7FS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EArChB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxC5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,UAAU;oBACpB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC1D,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;AAClC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA;AACF,iBAAA;;;ACpDD;;;;AAIG;MAMU,eAAe,CAAA;AAC1B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;;AAGd,IAAA,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;AACxB,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;AAE5B,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAuB,SAAS,CAAC;wGAR3D,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,2bAFhB,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEnD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;AAC/D,iBAAA;8PAS6D,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACLvE;;;;AAIG;AA0CG,MAAO,gBAAiB,SAAQ,aAA6B,CAAA;;AAExD,IAAA,aAAa,GAAG,KAAK,CAAC,CAAC,oFAAC;AAEd,IAAA,IAAI,GAAG,eAAe,CAAC,eAAe,2EAAC;AACzC,IAAA,UAAU,GAAG,YAAY,CAAgC,WAAW,iFAAC;;AAGnE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,MAAM;AAC3D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC7D,QAAA,OAAO,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY;AAC/C,IAAA,CAAC,kFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,gFAAC;AAEpE,IAAA,MAAM,CAAC,KAAa,EAAA;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE;YAAE;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;AACtB,aAAA,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACpC,aAAA,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;aACnC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;AAC5B,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;QAE1B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACpD,QAAA,IAAI,IAAwB;AAC5B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,GAAG,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;gBAC/C;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,GAAG,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;gBAChE;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;gBACjB;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClC;AACF,YAAA;gBACE;;QAEJ,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;IAChD;AAEmB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,SAAS;YACrB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;YAC9B,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,SAAA,CAAC;AACJ,IAAA,CAAC,mFAAC;AAEiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC;cACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB;cAClD,CAAC;AACL,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,MAAM,EAAE,SAAS;;;YAGjB,YAAY,EAAE,CAAA,EAAG,SAAS,CAAA,oBAAA,CAAsB;YAChD,YAAY,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;YAC1C,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;YACjC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;AAC1C,YAAA,GAAG,UAAU,CAAC,EAAE,UAAU,EAAE,2CAA2C,EAAE,CAAC;AAC1E,YAAA,UAAU,EAAE;gBACV,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC5C,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;AAClD,gBAAA,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;AAC5E,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;AAClC,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC,CAAA,CAAE;gBAChF,aAAa,EAAE,CAAC,CAAC;AAClB,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,+EAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,GAAG,CAAC;AACF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,QAAA,iBAAiB,EAAE;AACjB,YAAA,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc,IAAI,SAAS,CAAC,CAAA,CAAE;AAChG,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;AACF,KAAA,CAAC,iFACH;wGA5GU,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EArChB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAyChB,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApCS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsCf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzC5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,UAAU;oBACpB,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC1D,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA;AACF,iBAAA;AAK2C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,eAAe,wEACiB,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCtD1E,oBAAoB,CAAA;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;;AAG3B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAG1C,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,kFAAC;;AAEvB,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;IAEnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAqB,UAAU,CAAC;IAE7D,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,mFAAC;;IAGtE,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE9E,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,GAAG,CAAC;AACF,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,UAAU;AAC5C,KAAA,CAAC,oFACH;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,KAAK,CAAC,MAA8B,CAAC,KAAK,CAAC;IAC7D;wGA7CW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjC,whBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLY,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,cAAc,EAAA,OAAA,EACf,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,whBAAA,EAAA;;;AEVjC;;;;AAIG;;MCOU,eAAe,CAAA;IAC1B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACvB,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;;;IAIhC,KAAK,GAAG,MAAM,EAAmB;IAEjC,WAAW,GAAA;AACT,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B;wGAXW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX5B,oWAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,eAAe,4uBAAE,sBAAsB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGzE,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,SAAS,EAAA,OAAA,EACV,CAAC,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,oWAAA,EAAA;;;AERvF;;;;AAIG;;ACgBH,MAAM,OAAO,GAAkB;IAC7B,eAAe;IACf,WAAW;IACX,eAAe;IACf,oBAAoB;IACpB,SAAS;CACV;AACD,MAAM,UAAU,GAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC;AACnG,MAAM,MAAM,GAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC3D,MAAM,QAAQ,GAAc,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;AAEjF;AACA,MAAM,QAAQ,GAA2D;IACvE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE;IACxD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE;IAC9D,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE;IAC3D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,sBAAsB,EAAE;IAC9E,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE;IAClD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;IAC/C,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE;IACxD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE;CACzD;AAOD;AACA;AACA;AACA,MAAM,OAAO,GAAa;AACxB,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;AACrG,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;AACzG,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;AACrG,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;AAC9G,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;AACnG,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;AACtD,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;AACtD,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;AACtG,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,qBAAqB,EAAE,EAAE;AACzB,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;AAChC,SAAA;AACF,KAAA;CACF;MA+MY,wBAAwB,CAAA;AACzB,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;IAEnB,OAAO,GAAG,OAAO;IACjB,UAAU,GAAG,UAAU;IACvB,MAAM,GAAG,MAAM;IACf,QAAQ,GAAG,QAAQ;IACnB,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;IACzC,QAAQ,GAAG,QAAQ;IACnB,OAAO,GAAG,OAAO;AAE1B,IAAA,IAAI,GAAG,MAAM,CAAC,SAAS,2EAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAc,SAAS,6EAAC;AACvC,IAAA,QAAQ,GAAG,MAAM,CAAgB,SAAS,+EAAC;AAC3C,IAAA,KAAK,GAAG,MAAM,CAAa,QAAQ,4EAAC;AACpC,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,4EAAC;AAClB,IAAA,IAAI,GAAG,MAAM,CAAmB,OAAO,2EAAC;AACxC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,UAAU,GAAG,MAAM,CAAC,SAAS,iFAAC;AAC9B,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAC5B,IAAA,YAAY,GAAG,MAAM,CAAC,SAAS,mFAAC;;AAEhC,IAAA,OAAO,GAAG,MAAM,CAAgC,SAAS,8EAAC;AAE1D,IAAA,MAAM,GAAG,MAAM,CAAmC,IAAI,6EAAC;AACvD,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAEtC,IAAA,WAAA,GAAA;;QAEE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;QAC3C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC;AACvC,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7C;AACA,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;YACjD;YACA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpC;IACF;AAEU,IAAA,MAAM,GAAG,QAAQ,CAAqB,OAAO;AACrD,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE;AACnC,QAAA,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC;AACtD,QAAA,KAAK,EAAE;YACL,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC;YAC5D,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC;AACnE,SAAA;AACF,KAAA,CAAC,6EAAC;AAEH;;;;AAIG;AACO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;QACjC,MAAM,MAAM,GAAoB,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACjE,QAAA,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC/D,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAChC,IAAA,CAAC,+EAAC;AAEQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAqD;AACnF,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;AACjD,QAAA,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAChD,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEQ,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;QAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAClC,OAAO;YACL,MAAM;AACN,YAAA,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;SACjE;AACH,IAAA,CAAC,6EAAC;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,oFACnE;AAES,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AAChD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7B,IAAA,CAAC,8EAAC;;AAGQ,IAAA,eAAe,GAAG,QAAQ,CAAkB,MAAK;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACzF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,EAAE,SAAS;AAChF,QAAA,IAAI,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,OAAO,EAAE,QAAQ;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnD,OAAO;AACL,YAAA,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AAC3C,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,EAAE,OAAO;SACd;AACH,IAAA,CAAC,sFAAC;AAEQ,IAAA,KAAK,CAAC,KAAiB,EAAA;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,aAAa;IACpD;IAEQ,KAAK,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACxC;IAEQ,eAAe,CAAC,IAA+B,EAAE,IAAY,EAAA;AACnE,QAAA,KAAK,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAC/C,QAAA,CAAC,CAAC;IACJ;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC;IAC7E;IAEU,SAAS,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI;AAC3E,QAAA,IAAI,CAAC,eAAe,CAClB,OAAO,EACP,CAAA,8CAAA,EAAiD,KAAK,CAAA,SAAA,EAAY,KAAK,CAAC,KAAK,CAAA,CAAE,CAChF;IACH;IAEU,QAAQ,GAAA;QAChB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QACpC,IAAI,CAAC,eAAe,CAClB,MAAM,EACN,IAAI,CAAC,SAAS,CACZ;AACE,YAAA,KAAK,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACxD,YAAA,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACvD,SAAA,EACD,IAAI,EACJ,CAAC,CACF,CACF;IACH;AAEU,IAAA,OAAO,CAAC,CAAS,EAAA;AACzB,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;;AAE9C,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AACU,IAAA,SAAS,CAAC,CAAc,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,WAAW,CAAC,CAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,QAAQ,CAAC,CAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,QAAQ,CAAC,CAAS,EAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,OAAO,CAAC,CAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,aAAa,CAAC,CAAU,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,aAAa,CAAC,CAAS,EAAA;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;QACpD,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;IACrC;AACU,IAAA,eAAe,CAAC,CAAU,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE;IACd;AACU,IAAA,eAAe,CAAC,CAAS,EAAA;QACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;QACtD,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;IACvC;AAEU,IAAA,WAAW,CAAC,MAA0B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5C,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AACpE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;AAChD,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS;YAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAC1E,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;;AAGQ,IAAA,CAAC,GAAG,CAAC,KAAiB,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,aAAa;AAEpE,IAAA,KAAK,GAAG,QAAQ,CAAC,MACzB,GAAG,CAAC;AACF,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,mBAAmB,EAAE,0BAA0B;AAC/C,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAChC,QAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9B,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,UAAU,EAAE,wCAAwC;AACpD,QAAA,2BAA2B,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE;AAC3D,QAAA,eAAe,EAAE;AACf,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,OAAO,EAAE,GAAG;AACb,SAAA;AACD,QAAA,aAAa,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE;AAC9E,QAAA,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;AACxE,QAAA,aAAa,EAAE;AACb,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,MAAM,EAAE,YAAY;AACrB,SAAA;AACF,KAAA,CAAC,4EACH;AAES,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAC5B,GAAG,CAAC;AACF,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7B,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;QACxC,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE;AAC1D,QAAA,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;AAC9D,QAAA,cAAc,EAAE;AACd,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5B,SAAA;AACD,QAAA,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;AAC3D,QAAA,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjF,oBAAoB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AACpD,QAAA,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC9D,QAAA,qBAAqB,EAAE;AACrB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA;AACD,QAAA,8BAA8B,EAAE;AAC9B,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9B,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA;AACD,QAAA,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;QACxE,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;AAC3C,QAAA,qBAAqB,EAAE;AACrB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC/B,SAAA;AACD,QAAA,wBAAwB,EAAE;AACxB,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAC3B,YAAA,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,SAAA;AACD,QAAA,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;AACrE,QAAA,sBAAsB,EAAE;AACtB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACpC,SAAA;AACD,QAAA,iEAAiE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACpF,QAAA,cAAc,EAAE;AACd,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACvC,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC;AACtC,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9B,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,OAAO,EAAE,GAAG;AACb,SAAA;AACF,KAAA,CAAC,+EACH;AAES,IAAA,OAAO,GAAG,QAAQ,CAAC,MAC3B,GAAG,CAAC;AACF,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,aAAa,EAAE;AACb,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,mBAAmB,EAAE,sCAAsC;AAC3D,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,YAAY,EAAE,EAAE;AACjB,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,GAAG,EAAE,EAAE;AACR,SAAA;AACD,QAAA,iBAAiB,EAAE;AACjB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,aAAa,EAAE,WAAW;AAC3B,SAAA;AACD,QAAA,qBAAqB,EAAE;AACrB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,mBAAmB,EAAE,uCAAuC;AAC5D,YAAA,GAAG,EAAE,CAAC;AACP,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc,EAAE,eAAe;AAChC,SAAA;QACD,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE;AACxD,QAAA,mBAAmB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/E,QAAA,iBAAiB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;AAChF,QAAA,iBAAiB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;AACzE,QAAA,iBAAiB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE;QAC5E,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;AACvG,QAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE;AAC3D,QAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE;AACzD,QAAA,YAAY,EAAE;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACxB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc,EAAE,WAAW;AAC5B,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAE;AACxC,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;AACtE,YAAA,MAAM,EAAE;AACN,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACrC,gBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACnC,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,aAAa,EAAE,WAAW;AAC1B,gBAAA,aAAa,EAAE,QAAQ;AACxB,aAAA;AACD,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE;YAC5E,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;AACxD,YAAA,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE;AAC9F,SAAA;AACD,QAAA,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE;AAC7D,KAAA,CAAC,8EACH;wGA/bU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxMzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxMS,kBAAkB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA0MjB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA7MpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;AAC9B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsMT,EAAA,CAAA;AACF,iBAAA;;;ACjTD;;;;AAIG;MAcU,uBAAuB,CAAA;AACxB,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;;AAGtC,IAAA,SAAS,GAAG,KAAK,CAAC,OAAO,gFAAC;;IAG1B,YAAY,GAAG,MAAM,EAAa;AAExB,IAAA,QAAQ,GAAG,QAAQ,CAAmB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,IAAI,+EAAC;AAElF,IAAA,MAAM,CAAC,SAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;IACnC;wGAfW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATxB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUjB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;;;ACNK,MAAO,kBACX,SAAQ,aAA+B,CAAA;;AAI9B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;;AAGpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AAEhC;;;AAGG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGjC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGb,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEjG,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAC5D,IAAI,CAAC,aAAa,EAAE;IACtB;AAEiB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,UAAU,GAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAe,IAAI,EAAE;AACjE,QAAA,MAAM,UAAU,GAAG,UAAU,GAAG,GAAG;QACnC,OAAO;YACL,UAAU;YACV,WAAW,EAAE,UAAU,GAAG,CAAC;YAC3B,UAAU;AACV,YAAA,YAAY,EAAE,CAAC,UAAU,GAAG,UAAU,IAAI,CAAC;SAC5C;AACH,IAAA,CAAC,8EAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AAC5E,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,SAAS;AACnD,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC;AAElC,YAAA,kBAAkB,EAAE;AAClB,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,eAAe,EAAE,IAAI,CAAC,QAAQ;AAC5B,sBAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AAC/B,sBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,IAAI,iBAAiB,CAAC;gBAC/E,YAAY,EAAE,UAAU,GAAG,CAAC;AAC5B,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,eAAe;AAC5B,aAAA;AAED,YAAA,kBAAkB,EAAE;AAClB,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC;AACnF,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,GAAG,EAAE,YAAY;AACjB,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,UAAU,EAAE,eAAe;AAC3B,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAClC,aAAA;;AAGD,YAAA,wBAAwB,EAAE,IAAI,CAAC,QAAQ;AACrC,kBAAE;AACF,kBAAE;AACE,oBAAA,MAAM,EAAE,kBAAkB;AAC3B,iBAAA;AACN,SAAA,CAAC;AACJ,IAAA,CAAC,kFAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACrC,QAAA,OAAO,GAAG,CAAC;AACT,YAAA,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,CAAC,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,OAAO,EAAE,CAAC;AAEV,YAAA,4BAA4B,EAAE;gBAC5B,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnD,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,aAAA;AAED,YAAA,2CAA2C,EAAE;gBAC3C,SAAS,EAAE,CAAA,WAAA,EAAc,UAAU,CAAA,GAAA,CAAK;AACzC,aAAA;AAED,YAAA,6BAA6B,EAAE;AAC7B,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AAED,YAAA,0BAA0B,EAAE;gBAC1B,OAAO,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AAC1D,gBAAA,aAAa,EAAE,KAAK;AACrB,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,kFAAC;AAEF,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAClC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1D;wGAzHW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAHlB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb9D,qjBAmBA,4CDRY,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAEhB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAA,eAAA,EAC3C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qjBAAA,EAAA;;;AE8C3C,MAAO,mBAAoB,SAAQ,aAAgC,CAAA;AAC/D,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAE5B,KAAK,GAAG,QAAQ,EAAE;AAC1B,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;;AAGZ,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AAExC;;;;;AAKG;AACc,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAElC,IAAA,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC;IAC3B,UAAU,GAAG,aAAa,EAAE;AAE7C,IAAA,UAAU,GAAG,KAAK,CAAS,GAAG,iFAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,SAAS,GAAG,KAAK,CAAY,KAAK,gFAAC;AACnC,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;;AAGlC,IAAA,YAAY,GAAG,KAAK,CAAU,KAAK,mFAAC;AAE5B,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAA0B,KAAK,CAAC;AAEnE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,MAAK;YACV,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACzC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;;YAGxC,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrD,IAAI,CAAC,WAAW,EAAE;YACpB;;iBAEK,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;;;;;QAMF,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAA4B;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBAChF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC;YACnD;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC;AAC1F,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAiB,EAAA;;;QAGzB,IAAK,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YAC3D,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;;YAElB,KAAK,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA;;;;;AAKG;AACO,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAA4B;QACpD,MAAM,OAAO,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACzE,QAAA,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACrC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACnB;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa;QACvC,GAAG,CAAC,WAAW,EAAE;QACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC;IACxE;AAEU,IAAA,cAAc,CAAC,KAAqB,EAAA;QAC5C,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACrD,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB;IACF;AAEmB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,GAAG,CACD;AACE,QAAA,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,KAAA,EACD,IAAI,CAAC,UAAU,EAAE,IAAI;AACnB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,cAAc,EAAE,WAAW;AAC3B,QAAA,mBAAmB,EAAE,QAAQ;AAC9B,KAAA,CACF,gFACF;IAEO,aAAa,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IACxC,cAAc,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;AAE/B,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC7C,GAAG,CAAC;AACF,QAAA;AACE,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACtD,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC;AAC1D,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC;AACvD,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;AACxD,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAEnE,YAAA,cAAc,EAAE;AACd,gBAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,cAAA,CAAgB;AACjD,aAAA;AAED,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,cAAc,CAAA,cAAA,CAAgB;AAClD,aAAA;AACF,SAAA;AACF,KAAA,CAAC,uFACH;AAEkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,GAAG,CAAC;AACF,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACtD,QAAA,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACvC,KAAA,CAAC,qFACH;wGAzLU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAZnB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZnD,CAAA;;;;;;;;;;;AAWC,YAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAaA,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA9B/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,OAAO,EAAE,EAAE;;;;AAIX,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWC,YAAA,CAAA;oBACX,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;oBAC7D,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,cAAc,EAAE,cAAc;AAC9B,wBAAA,cAAc,EAAE,cAAc;AAC9B,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,kBAAkB,EAAE,kBAAkB;AACvC,qBAAA;AACF,iBAAA;ykBA8B8D,KAAK,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACzFpE;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"uni-design-system-uni-angular.mjs","sources":["../../src/lib/cdk/a11y/a11y.ts","../../src/lib/cdk/datetime/datetime.model.ts","../../src/lib/cdk/helpers/memoize.helper.ts","../../src/lib/cdk/datetime/datetime.helper.ts","../../src/lib/cdk/listbox/listbox-navigation.ts","../../src/lib/cdk/position/anchor.ts","../../src/lib/cdk/datasource/base-datasource.ts","../../src/lib/cdk/datasource/record-datasource.ts","../../src/lib/cdk/datasource/server-side-datasource.ts","../../src/lib/cdk/local-storage/local-storage.service.ts","../../src/lib/cdk/notification/notification.service.ts","../../src/lib/cdk/timer/timer.ts","../../src/lib/cdk/file/file.helper.ts","../../src/lib/theming/theme.token.ts","../../src/lib/cdk/helpers/number.helper.ts","../../src/lib/theming/theme.service.ts","../../src/lib/components/base/base.component.ts","../../src/lib/components/app-bar/app-bar.component.ts","../../src/lib/components/symbol/symbol.component.ts","../../src/lib/components/avatar/avatar.component.ts","../../src/lib/components/avatar/avatar-group.component.ts","../../src/lib/components/background/background.component.ts","../../src/lib/components/background/index.ts","../../src/lib/components/badge/badge.component.ts","../../src/lib/components/breadcrumb/breadcrumb.component.ts","../../src/lib/components/icon/icon.component.ts","../../src/lib/components/layout/box/box.component.ts","../../src/lib/components/layout/center/center.component.ts","../../src/lib/components/layout/grid/grid-area/grid-area.component.ts","../../src/lib/components/layout/grid/grid.component.ts","../../src/lib/components/layout/row/row.component.ts","../../src/lib/components/layout/stack/stack.component.ts","../../src/lib/components/layout/wrap/wrap.component.ts","../../src/lib/directives/ripple/ripple.directive.ts","../../src/lib/components/button/button.component.ts","../../src/lib/components/button-group/button-group.component.ts","../../src/lib/components/button-group/index.ts","../../src/lib/directives/body-render/body-render.directive.ts","../../src/lib/directives/drag-and-drop/drag-and-drop.directive.ts","../../src/lib/components/icon-button/icon-button.component.ts","../../src/lib/components/calendar/calendar.component.ts","../../src/lib/components/calendar/calendar.component.html","../../src/lib/components/card/card-content/card-content.component.ts","../../src/lib/components/card/card-content/card-content.component.html","../../src/lib/components/text/text.component.ts","../../src/lib/components/card/card.component.ts","../../src/lib/components/card/card.component.html","../../src/lib/components/card/card-header/card-header.component.ts","../../src/lib/components/card/card-header/card-header.component.html","../../src/lib/components/checkbox/checkbox.component.ts","../../src/lib/components/checkbox/checkbox.component.html","../../src/lib/components/data-search/data-search.component.ts","../../src/lib/components/data-search/data-search.component.html","../../src/lib/components/data-search/index.ts","../../src/lib/components/scroll-area/scroll-area.component.ts","../../src/lib/components/sort-header/sort-header.component.ts","../../src/lib/components/sort-header/sort-header.component.html","../../src/lib/components/data-table/data-table.component.ts","../../src/lib/components/data-table/data-table.component.html","../../src/lib/components/data-table/index.ts","../../src/lib/components/dropdown/dropdown.component.ts","../../src/lib/components/input-box/input-box.component.ts","../../src/lib/components/input-box/input-box.component.html","../../src/lib/components/date-input/date-input.component.ts","../../src/lib/components/date-input/date-input.component.html","../../src/lib/components/time-input/time-input.component.ts","../../src/lib/components/time-input/time-input.component.html","../../src/lib/components/date-time-input/date-time-input.component.ts","../../src/lib/components/date-time-input/date-time-input.component.html","../../src/lib/components/dialog/dialog.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.html","../../src/lib/components/dialog/dialog-header/dialog-header.component.ts","../../src/lib/components/dialog/dialog-header/dialog-header.component.html","../../src/lib/components/divider/divider.component.ts","../../src/lib/components/drawer/drawer.component.ts","../../src/lib/components/expand/expand.component.ts","../../src/lib/components/expand/index.ts","../../src/lib/components/expand-toggle/expand-toggle.component.ts","../../src/lib/components/expand-area/expand-area.component.ts","../../src/lib/components/expand-area/index.ts","../../src/lib/components/expand-toggle/index.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.html","../../src/lib/components/file-drop-zone/index.ts","../../src/lib/components/forms/debounce-input/debounce-input.component.ts","../../src/lib/components/forms/debounce-input/debounce-input.component.html","../../src/lib/components/input/input.component.ts","../../src/lib/components/input/input.component.html","../../src/lib/components/json-view/json-view.component.ts","../../src/lib/components/json-view/json-view.component.html","../../src/lib/components/json-view/index.ts","../../src/lib/components/menu/menu-item/menu-item.model.ts","../../src/lib/components/menu/menu-item/menu-item.component.ts","../../src/lib/components/menu/menu-item/menu-item.component.html","../../src/lib/components/menu/menu.component.ts","../../src/lib/components/multi-select/multi-select.component.ts","../../src/lib/components/multi-select/multi-select.component.html","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.ts","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.html","../../src/lib/components/notification-badge/notification-badge.ts","../../src/lib/components/notification-badge/notification-badge.html","../../src/lib/components/notifications/alert/alert.component.ts","../../src/lib/components/notifications/alert/alert.component.html","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.ts","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.html","../../src/lib/components/notifications/snackbar/snackbar.component.ts","../../src/lib/components/notifications/snackbar/snackbar.component.html","../../src/lib/components/notifications/notifications/notifications.component.ts","../../src/lib/components/notifications/notifications/notifications.component.html","../../src/lib/components/paginator/paginator.component.ts","../../src/lib/components/paginator/paginator.component.html","../../src/lib/components/paginator/index.ts","../../src/lib/components/popover/popover.component.ts","../../src/lib/components/popover/popover.component.html","../../src/lib/components/popover/index.ts","../../src/lib/components/progress-bar/progress-bar.component.ts","../../src/lib/components/progress-bar/progress-bar.component.html","../../src/lib/components/progress-bar/index.ts","../../src/lib/components/progress-gauge/progress-gauge.component.ts","../../src/lib/components/progress-gauge/progress-gauge.component.html","../../src/lib/components/progress-gauge/index.ts","../../src/lib/components/radio/radio.component.ts","../../src/lib/components/radio/radio.component.html","../../src/lib/components/scroll-area/index.ts","../../src/lib/components/search-input/search-input.component.ts","../../src/lib/components/search-input/search-input.component.html","../../src/lib/components/search-input/index.ts","../../src/lib/components/select-input/select-input.component.ts","../../src/lib/components/select-input/select-input.component.html","../../src/lib/components/skeleton/skeleton.component.ts","../../src/lib/components/slider/slider.component.ts","../../src/lib/components/stat/stat.component.ts","../../src/lib/components/tabs/tab.component.ts","../../src/lib/components/tabs/tabs.component.ts","../../src/lib/components/textarea/textarea.component.ts","../../src/lib/components/textarea/textarea.component.html","../../src/lib/components/sort-header/index.ts","../../src/lib/components/tag/tag.component.ts","../../src/lib/components/tag/tag.component.html","../../src/lib/components/tag/index.ts","../../src/lib/components/tag-input/tag-input.component.ts","../../src/lib/components/tag-input/tag-input.component.html","../../src/lib/components/tag-input/index.ts","../../src/lib/components/theme-builder/theme-builder.component.ts","../../src/lib/components/theme-switch/theme-switch.component.ts","../../src/lib/components/toggle/toggle.component.ts","../../src/lib/components/toggle/toggle.component.html","../../src/lib/components/tooltip/tooltip.component.ts","../../src/uni-design-system-uni-angular.ts"],"sourcesContent":["let nextUniqueId = 0;\n\n/**\n * Returns a document-unique id for wiring ARIA relationships\n * (aria-controls, aria-describedby, aria-labelledby, ...).\n */\nexport function uniqueId(prefix = 'uni'): string {\n return `${prefix}-${nextUniqueId++}`;\n}\n\n/**\n * Selector matching natively focusable elements. Used to locate the\n * interactive element inside a projected trigger so ARIA attributes land\n * on the element that actually receives focus.\n */\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Resolves the element that should carry ARIA state for a trigger:\n * the element itself when focusable, otherwise its first focusable descendant.\n */\nexport function resolveFocusTarget(element: HTMLElement): HTMLElement {\n if (element.matches(FOCUSABLE_SELECTOR)) return element;\n return element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? element;\n}\n\n/**\n * Visually hides content while keeping it available to screen readers.\n * Use for text alternatives (e.g. badge counts, icon-only affordances).\n */\nexport const visuallyHidden = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n border: 0,\n} as const;\n\n/**\n * Wraps animation/transition styles so they only apply when the user has\n * not requested reduced motion (WCAG 2.3.3).\n */\nexport function motionSafe<T extends object>(styles: T) {\n return { '@media (prefers-reduced-motion: no-preference)': styles };\n}\n","/**\n * Canonical date/time value shapes shared by `uni-calendar`,\n * `uni-date-input`, `uni-time-input` and `uni-date-time-input`.\n *\n * Plain ISO strings, never `Date`s: a calendar date is a label on a wall\n * calendar, not an instant. `new Date('2026-08-20')` is midnight UTC — which\n * is 19 Aug in Honolulu — the classic off-by-one every `Date`-valued picker\n * ships. Strings are timezone-free, JSON-serializable and sortable with `<`.\n * Zoned scheduling is the app's concern; these components never touch\n * `Date.getTimezoneOffset()`.\n */\n\n/** A calendar date, `'YYYY-MM-DD'`. */\nexport type UniDate = string;\n\n/** A wall-clock time, `'HH:mm'` (24-hour). Display format is separate. */\nexport type UniTime = string;\n\n/** A combined date and time, `'YYYY-MM-DDTHH:mm'`. */\nexport type UniDateTime = string;\n\n/** A start–end date range. Both ends are inclusive. */\nexport interface UniDateRange {\n start?: UniDate;\n end?: UniDate;\n}\n","export function memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n const key = JSON.stringify(args);\n\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n","/**\n * Pure date/time helpers: ISO string math, `Intl`-driven formatting and\n * parsing. No date library — `Date` appears only as UTC arithmetic inside\n * these functions, so no result ever depends on the machine's timezone.\n */\nimport { memoize } from '../helpers/memoize.helper';\nimport type { UniDate, UniDateTime, UniTime } from './datetime.model';\n\nconst pad = (n: number): string => String(n).padStart(2, '0');\n\nconst toUTC = (date: UniDate): number => {\n const [y, m, d] = date.split('-').map(Number);\n return Date.UTC(y, m - 1, d);\n};\n\nconst fromUTC = (timestamp: number): UniDate => {\n const d = new Date(timestamp);\n return isoDate(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate());\n};\n\n/** `(2026, 8, 5)` → `'2026-08-05'`. Does not validate — see `isValidDate`. */\nexport const isoDate = (year: number, month: number, day: number): UniDate =>\n `${year}-${pad(month)}-${pad(day)}`;\n\n/** The ISO date when the parts form a real calendar day, else `null`. */\nexport const isValidDate = (year: number, month: number, day: number): UniDate | null =>\n month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth(year, month)\n ? isoDate(year, month, day)\n : null;\n\n/** Days in a month, leap-year aware. */\nexport const daysInMonth = (year: number, month: number): number =>\n new Date(Date.UTC(year, month, 0)).getUTCDate();\n\nexport const addDays = (date: UniDate, days: number): UniDate =>\n fromUTC(toUTC(date) + days * 86_400_000);\n\n/** Same day ± n months, clamping the day to the target month's length. */\nexport const addMonths = (date: UniDate, months: number): UniDate => {\n let [y, m] = date.split('-').map(Number);\n const d = Number(date.slice(8, 10));\n const total = y * 12 + (m - 1) + months;\n y = Math.floor(total / 12);\n m = ((total % 12) + 12) % 12 + 1;\n return isoDate(y, m, Math.min(d, daysInMonth(y, m)));\n};\n\n/** Day of week, 0 = Sunday … 6 = Saturday. */\nexport const dayOfWeek = (date: UniDate): number => new Date(toUTC(date)).getUTCDay();\n\n/** `'2026-08-20'` → `'2026-08'`. */\nexport const monthOf = (date: UniDate): string => date.slice(0, 7);\n\n/** Today as a local-wall-clock ISO date (the one place local time matters). */\nexport const todayIso = (): UniDate => {\n const d = new Date();\n return isoDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\n};\n\n/** Inclusive day count of a range: `('-20', '-24')` → 5. */\nexport const inclusiveDayCount = (start: UniDate, end: UniDate): number =>\n Math.round((toUTC(end) - toUTC(start)) / 86_400_000) + 1;\n\nexport interface UniMonthGridCell {\n date: UniDate;\n /** True for leading/trailing cells that belong to the adjacent months. */\n outside: boolean;\n}\n\n/**\n * The week matrix a calendar renders: full weeks covering `'YYYY-MM'`,\n * starting on `weekStart` (0 = Sunday). Outside cells are always present so\n * showing or hiding them is a pure render decision.\n */\nexport const buildMonthGrid = (month: string, weekStart: number): UniMonthGridCell[][] => {\n const [y, m] = month.split('-').map(Number);\n const first = isoDate(y, m, 1);\n const offset = (dayOfWeek(first) - weekStart + 7) % 7;\n const total = daysInMonth(y, m);\n const weeks: UniMonthGridCell[][] = [];\n let cursor = addDays(first, -offset);\n for (let w = 0; w < Math.ceil((offset + total) / 7); w++) {\n const week: UniMonthGridCell[] = [];\n for (let c = 0; c < 7; c++) {\n week.push({ date: cursor, outside: monthOf(cursor) !== month });\n cursor = addDays(cursor, 1);\n }\n weeks.push(week);\n }\n return weeks;\n};\n\n// ---- Intl formatting (always UTC — the ISO string is re-hydrated as UTC\n// midnight, so the local zone can never shift the label) ---------------------\n\nexport const formatDate = (\n date: UniDate,\n locale: string,\n options: Intl.DateTimeFormatOptions = { dateStyle: 'medium' }\n): string =>\n new Intl.DateTimeFormat(locale, { ...options, timeZone: 'UTC' }).format(new Date(toUTC(date)));\n\n/** `'2026-08'` → `'August 2026'` in the locale. */\nexport const formatMonthHeading = (month: string, locale: string): string =>\n formatDate(`${month}-01`, locale, { month: 'long', year: 'numeric' });\n\nexport interface UniWeekdayName {\n /** Column label in the requested format ('narrow' | 'short'). */\n label: string;\n /** Full weekday name, for the columnheader's `abbr`. */\n full: string;\n}\n\n/** Weekday header labels starting at `weekStart` (0 = Sunday). */\nexport const weekdayNames = memoize(\n (locale: string, weekStart: number, format: 'narrow' | 'short'): UniWeekdayName[] => {\n const labels: UniWeekdayName[] = [];\n for (let i = 0; i < 7; i++) {\n // 2023-01-01 is a Sunday.\n const day = new Date(Date.UTC(2023, 0, 1 + ((weekStart + i) % 7)));\n labels.push({\n label: new Intl.DateTimeFormat(locale, { weekday: format, timeZone: 'UTC' }).format(day),\n full: new Intl.DateTimeFormat(locale, { weekday: 'long', timeZone: 'UTC' }).format(day),\n });\n }\n return labels;\n }\n);\n\n/** `'15:00'` → `'3:00 PM'` (or `'15:00'` when `hour12` is false). */\nexport const formatTime = (time: UniTime, locale: string, hour12: boolean): string => {\n const [h, m] = time.split(':').map(Number);\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12,\n timeZone: 'UTC',\n }).format(new Date(Date.UTC(2000, 0, 1, h, m)));\n};\n\n// ---- Locale plumbing --------------------------------------------------------\n\ninterface WeekInfo {\n firstDay?: number;\n}\n\n/**\n * The locale's first day of week, 0 = Sunday … 6 = Saturday. Falls back to\n * Sunday where `Intl.Locale` week info is unavailable.\n */\nexport const localeWeekStart = memoize((locale: string): number => {\n try {\n const intlLocale = new Intl.Locale(locale) as Intl.Locale & {\n getWeekInfo?: () => WeekInfo;\n weekInfo?: WeekInfo;\n };\n const info = intlLocale.getWeekInfo?.() ?? intlLocale.weekInfo;\n // Intl counts 1 = Monday … 7 = Sunday.\n if (info?.firstDay) return info.firstDay % 7;\n } catch {\n // Unknown locale tag — fall through to the default.\n }\n return 0;\n});\n\n/** Whether the locale's default clock is 12-hour. */\nexport const localeDefaultHour12 = memoize(\n (locale: string): boolean =>\n new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions().hour12 ?? true\n);\n\ntype DateField = 'year' | 'month' | 'day';\n\n/** The locale's numeric-date field order, e.g. en-US → month, day, year. */\nexport const localeFieldOrder = memoize((locale: string): DateField[] => {\n const parts = new Intl.DateTimeFormat(locale, { timeZone: 'UTC' }).formatToParts(\n new Date(Date.UTC(2000, 11, 31))\n );\n return parts\n .filter((p): p is Intl.DateTimeFormatPart & { type: DateField } =>\n ['year', 'month', 'day'].includes(p.type)\n )\n .map((p) => p.type);\n});\n\n/** Long + short month names → month number, lowercased, dots stripped. */\nexport const localeMonthNames = memoize((locale: string): Map<string, number> => {\n const map = new Map<string, number>();\n for (let i = 0; i < 12; i++) {\n const date = new Date(Date.UTC(2000, i, 15));\n for (const style of ['long', 'short'] as const) {\n const name = new Intl.DateTimeFormat(locale, { month: style, timeZone: 'UTC' })\n .format(date)\n .toLowerCase()\n .replace(/\\./g, '');\n map.set(name, i + 1);\n }\n }\n return map;\n});\n\n/** The locale's digit pattern as a placeholder, e.g. `'MM/DD/YYYY'`. */\nexport const localeDatePlaceholder = memoize((locale: string): string =>\n new Intl.DateTimeFormat(locale, { timeZone: 'UTC' })\n .format(new Date(Date.UTC(2000, 11, 31)))\n .replace(/2000/, 'YYYY')\n .replace(/12/, 'MM')\n .replace(/31/, 'DD')\n);\n\n// ---- Parsing (Intl-driven — digit order and month names come from the\n// locale, never from a hardcoded table) ---------------------------------------\n\n/** Missing year → the NEXT occurrence: nobody schedules into the past. */\nconst nextOccurrence = (month: number, day: number, today: UniDate): UniDate | null => {\n const year = Number(today.slice(0, 4));\n const candidate = isValidDate(year, month, day);\n if (candidate && candidate >= today) return candidate;\n return isValidDate(year + 1, month, day);\n};\n\n/**\n * Free-typed date text → ISO date, or `null` when unreadable. Accepts, in\n * order: ISO (`2026-08-20`), a month name from the locale's own long/short\n * lists (`aug 20`, `20 aug 2026`, `August 20th`), and locale-numeric text\n * (`8/20/2026`, `20.8.2026`, `08-20`) with the digit order taken from\n * `Intl.DateTimeFormat(locale).formatToParts()`. A missing year resolves to\n * the next occurrence; two-digit years are refused rather than guessed.\n */\nexport const parseDateText = (\n raw: string,\n locale: string,\n options: { today?: UniDate } = {}\n): UniDate | null => {\n const today = options.today ?? todayIso();\n const s = raw\n .trim()\n .toLowerCase()\n .replace(/(\\d+)(st|nd|rd|th)\\b/g, '$1')\n .replace(/,/g, ' ');\n if (!s) return null;\n\n // 1. ISO — what agents and APIs write.\n const iso = s.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n if (iso) return isValidDate(+iso[1], +iso[2], +iso[3]);\n\n // 2. Month name, from the locale's own list.\n const monthNames = localeMonthNames(locale);\n const tokens = s.split(/\\s+/);\n const monthToken = tokens.find((t) => monthNames.has(t.replace(/\\./g, '')));\n if (monthToken) {\n const month = monthNames.get(monthToken.replace(/\\./g, ''))!;\n const numbers = tokens.filter((t) => /^\\d+$/.test(t)).map(Number);\n if (numbers.length === 1 && numbers[0] >= 1 && numbers[0] <= 31)\n return nextOccurrence(month, numbers[0], today);\n if (numbers.length === 2) {\n const year = numbers.find((n) => n >= 1000);\n const day = numbers.find((n) => n <= 31 && n !== year);\n if (year && day) return isValidDate(year, month, day);\n }\n return null;\n }\n\n // 3. Locale numeric — digit order from Intl, not hardcoded.\n const numeric = s.match(/^(\\d{1,4})[/.\\-\\s](\\d{1,4})(?:[/.\\-\\s](\\d{1,4}))?$/);\n if (!numeric) return null;\n const parts = [numeric[1], numeric[2], numeric[3]].filter((p): p is string => !!p);\n if (parts.length === 3) {\n if (parts[0].length === 4) return isValidDate(+parts[0], +parts[1], +parts[2]); // 2026/8/20\n const bag: Partial<Record<DateField, string>> = {};\n localeFieldOrder(locale).forEach((field, i) => (bag[field] = parts[i]));\n if (!bag.year || bag.year.length < 4) return null; // two-digit years are refused, not guessed\n return isValidDate(+bag.year, +bag.month!, +bag.day!);\n }\n // Two numbers: month/day in locale order, year = next occurrence.\n const bag: Partial<Record<DateField, number>> = {};\n localeFieldOrder(locale)\n .filter((field) => field !== 'year')\n .forEach((field, i) => (bag[field] = +parts[i]));\n return bag.month && bag.day ? nextOccurrence(bag.month, bag.day, today) : null;\n};\n\n/**\n * Free-typed time text → `'HH:mm'`, or `null`. Accepts `9`, `930`, `9:30`,\n * `9.30`, `9 30`, `3p`, `3pm`, `3 PM`, `15:00`. Bare hours 1–7 with no\n * meridiem lean PM when `hour12` — typing `3` into an appointment field\n * means 15:00, not 03:00.\n */\nexport const parseTimeText = (raw: string, hour12: boolean): UniTime | null => {\n const s = raw.trim().toLowerCase().replace(/\\s+/g, '');\n const match = s.match(/^(\\d{1,2})(?:[:.h]?(\\d{2}))?(a|am|p|pm)?$/);\n if (!match) return null;\n let hour = +match[1];\n const minute = match[2] ? +match[2] : 0;\n const meridiem = match[3];\n if (minute > 59) return null;\n if (meridiem) {\n if (hour < 1 || hour > 12) return null;\n if (meridiem[0] === 'p' && hour !== 12) hour += 12;\n if (meridiem[0] === 'a' && hour === 12) hour = 0;\n } else {\n if (hour > 23) return null;\n if (hour12 && hour >= 1 && hour <= 7) hour += 12;\n }\n return `${pad(hour)}:${pad(minute)}`;\n};\n\n/** Every `minuteStep` time between `min` and `max` (inclusive bounds). */\nexport const timeSlots = (minuteStep: number, min?: UniTime, max?: UniTime): UniTime[] => {\n const slots: UniTime[] = [];\n const lo = min ?? '00:00';\n const hi = max ?? '23:59';\n for (let minutes = 0; minutes < 24 * 60; minutes += minuteStep) {\n const t = `${pad(Math.floor(minutes / 60))}:${pad(minutes % 60)}`;\n if (t >= lo && t <= hi) slots.push(t);\n }\n return slots;\n};\n\n// ---- Combined values --------------------------------------------------------\n\nexport const splitDateTime = (value?: UniDateTime): { date?: UniDate; time?: UniTime } => {\n if (!value) return {};\n const [date, time] = value.split('T');\n return { ...(date ? { date } : {}), ...(time ? { time } : {}) };\n};\n\n/** One combined value only when both parts are present. */\nexport const joinDateTime = (date?: UniDate, time?: UniTime): UniDateTime | undefined =>\n date && time ? `${date}T${time}` : undefined;\n","import { computed, signal, type Signal } from '@angular/core';\n\nimport { uniqueId } from '../a11y/a11y';\n\nexport interface ListboxNavigationConfig {\n /** How many options are currently navigable. Read reactively. */\n count: () => number;\n /** Id prefix for the listbox and its options. */\n idPrefix?: string;\n /** Wrap past the ends. Default true. */\n wrap?: boolean;\n}\n\n/**\n * The keyboard and ARIA bookkeeping shared by every combobox-style popup:\n * open state, the active option index, and the `aria-activedescendant` id\n * wiring. Deliberately owns no markup and no filtering — each control renders\n * its own options and decides what a suggestion *is*.\n *\n * Extracted because three controls need the identical contract\n * (`uni-search-input`, `uni-tag-input`, and the multi-select upgrade), and the\n * parts that silently drift between hand-rolled copies all live here: the\n * wrap-around arithmetic, Home/End, and keeping the active id in sync with the\n * option list.\n *\n * `Enter` and `Escape` are deliberately *not* handled: what they mean depends\n * on the control (submit a search, commit a typed token, clear the field), and\n * `activeIndex()` is all a caller needs to decide.\n */\nexport class ListboxNavigation {\n /** Id for the `role=\"listbox\"` element; wire as `aria-controls`. */\n readonly listboxId: string;\n\n private readonly _open = signal(false);\n private readonly _activeIndex = signal(-1);\n private readonly wrap: boolean;\n\n /** Whether the popup is showing. Also false when there is nothing to show. */\n readonly open: Signal<boolean> = computed(() => this._open() && this.config.count() > 0);\n\n /** Index of the highlighted option, or -1 when none is active. */\n readonly activeIndex: Signal<number> = computed(() => {\n const index = this._activeIndex();\n // A shrinking option list must never leave the active id dangling.\n return index < this.config.count() ? index : -1;\n });\n\n /** Value for `aria-activedescendant`, or null when nothing is active. */\n readonly activeDescendantId: Signal<string | null> = computed(() => {\n const index = this.activeIndex();\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n\n constructor(private readonly config: ListboxNavigationConfig) {\n this.listboxId = uniqueId(config.idPrefix ?? 'uni-listbox');\n this.wrap = config.wrap ?? true;\n }\n\n /** Stable per-option id, for `role=\"option\"` elements. */\n optionId(index: number): string {\n return `${this.listboxId}-option-${index}`;\n }\n\n show(): void {\n this._open.set(true);\n }\n\n /** Close and drop the active option, so reopening starts clean. */\n hide(): void {\n this._open.set(false);\n this._activeIndex.set(-1);\n }\n\n setActive(index: number): void {\n this._activeIndex.set(index);\n }\n\n /**\n * Handle ArrowDown / ArrowUp / Home / End, opening the popup if needed.\n * Returns true when the key was consumed, so a caller can fall through to\n * its own handling for everything else.\n */\n navigate(event: KeyboardEvent): boolean {\n const count = this.config.count();\n if (count === 0) return false;\n\n const target = this.nextIndex(event.key, count);\n if (target === null) return false;\n\n event.preventDefault();\n this._open.set(true);\n this._activeIndex.set(target);\n return true;\n }\n\n private nextIndex(key: string, count: number): number | null {\n const current = this.activeIndex();\n\n switch (key) {\n case 'ArrowDown':\n return this.step(current, 1, count);\n case 'ArrowUp':\n // Opening with ArrowUp lands on the last option, matching menus.\n return current < 0 ? count - 1 : this.step(current, -1, count);\n case 'Home':\n return 0;\n case 'End':\n return count - 1;\n default:\n return null;\n }\n }\n\n private step(current: number, delta: number, count: number): number {\n const next = current + delta;\n if (this.wrap) return (next + count) % count;\n return Math.min(Math.max(next, 0), count - 1);\n }\n\n /** Close when focus leaves the control entirely (not on internal moves). */\n closeOnFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n const container = event.currentTarget as HTMLElement | null;\n if (!next || !container?.contains(next)) this.hide();\n }\n}\n\n/** Factory mirroring the signal-API style used elsewhere in the CDK. */\nexport const createListboxNavigation = (config: ListboxNavigationConfig): ListboxNavigation =>\n new ListboxNavigation(config);\n","import { uniqueId } from '../a11y/a11y';\n\n/**\n * Native CSS Anchor Positioning helpers (Baseline 2026). These replace the\n * former @floating-ui/dom dependency: the browser tracks the anchor natively\n * (no scroll/resize listeners), and `position-try-fallbacks` flips the panel\n * at viewport edges where supported (Chrome 125+, Firefox 147+, Safari 26+;\n * older Baseline browsers still position correctly but do not auto-flip).\n */\n\nexport type Placement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'right-start'\n | 'bottom-start'\n | 'left-start'\n | 'top-end'\n | 'right-end'\n | 'bottom-end'\n | 'left-end';\n\n/** Distances between the anchor and the positioned panel, in px. */\nexport interface AnchorOffset {\n /** Gap along the placement axis (anchor → panel). */\n mainAxis?: number;\n /** Shift along the cross axis, from the aligned edge. */\n alignmentAxis?: number;\n}\n\n/** Returns a document-unique dashed-ident usable as a CSS `anchor-name`. */\nexport function newAnchorName(): string {\n return `--${uniqueId('uni-anchor')}`;\n}\n\nconst POSITION_AREA: Record<Placement, string> = {\n top: 'top',\n bottom: 'bottom',\n left: 'left',\n right: 'right',\n 'top-start': 'top span-right',\n 'top-end': 'top span-left',\n 'bottom-start': 'bottom span-right',\n 'bottom-end': 'bottom span-left',\n 'left-start': 'left span-bottom',\n 'left-end': 'left span-top',\n 'right-start': 'right span-bottom',\n 'right-end': 'right span-top',\n};\n\nconst MAIN_MARGIN: Record<string, string> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft',\n};\n\n/**\n * Emotion style object anchoring a panel to `anchor` at `placement`.\n * Spread into the panel's `css()` styles. The trigger element must carry\n * `anchor-name: <anchor>` (see `newAnchorName`).\n */\nexport function anchorStyles(\n anchor: string,\n placement: Placement,\n offset: AnchorOffset = {}\n): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n\n const styles: Record<string, string | number> = {\n position: 'fixed',\n positionAnchor: anchor,\n positionArea: POSITION_AREA[placement],\n positionTryFallbacks: 'flip-block, flip-inline, flip-block flip-inline',\n // Popover UA styles set inset:0 + margin:auto; anchored elements must not\n inset: 'auto',\n margin: 0,\n };\n\n styles[MAIN_MARGIN[side]] = offset.mainAxis ?? 0;\n\n const cross = offset.alignmentAxis ?? 0;\n if (align && cross) {\n const horizontal = side === 'top' || side === 'bottom';\n const crossMargin = horizontal\n ? align === 'start'\n ? 'marginLeft'\n : 'marginRight'\n : align === 'start'\n ? 'marginTop'\n : 'marginBottom';\n styles[crossMargin] = cross;\n }\n\n return styles;\n}\n\n/**\n * Absolute positioning for a rotated-square arrow sitting on the panel edge\n * that faces the anchor. Static per placement: if the browser flips the panel\n * via position-try, the arrow stays on the configured side (cosmetic-only\n * degradation, matching the flip-support caveat above).\n */\nexport function anchorArrowStyles(placement: Placement, size = 8): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n const overlap = -(size / 2);\n const styles: Record<string, string | number> = {\n position: 'absolute',\n width: size,\n height: size,\n transform: 'rotate(45deg)',\n };\n\n // Edge facing the anchor\n const facing: Record<string, string> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n styles[facing[side]] = overlap;\n\n // Cross-axis position along that edge\n const horizontal = side === 'top' || side === 'bottom';\n const crossProp = horizontal ? 'left' : 'top';\n const crossPropEnd = horizontal ? 'right' : 'bottom';\n if (!align) {\n styles[crossProp] = `calc(50% - ${size / 2}px)`;\n } else if (align === 'start') {\n styles[crossProp] = size * 1.5;\n } else {\n styles[crossPropEnd] = size * 1.5;\n }\n\n return styles;\n}\n","import { computed, signal, Signal, WritableSignal } from '@angular/core';\n\nexport type SortDirection = 'asc' | 'desc' | 'indet';\n\nexport interface Sort<T> {\n column?: keyof T;\n direction: SortDirection;\n}\n\nexport abstract class UniBaseDatasource<T> {\n abstract records: Signal<T[]>;\n abstract recordCount: Signal<number>;\n\n selections = signal<T[]>([]);\n\n sort: WritableSignal<Sort<T>> = signal({\n column: undefined,\n direction: 'indet',\n });\n\n sortColumn = computed(() => this.sort().column);\n sortDirection = computed(() => this.sort().direction);\n\n abstract pageIndex: Signal<number>;\n abstract pageSize: Signal<number>;\n abstract pageCount: Signal<number>;\n\n pages = computed(() => Array.from({ length: this.pageCount() }, (_, index) => index + 1));\n\n startIndex = computed(() => {\n const pageSize = this.pageSize();\n const pageIndex = this.pageIndex();\n return pageSize > 0 ? pageIndex * pageSize : 0;\n });\n\n endIndex = computed(() => {\n const pageSize = this.pageSize();\n const total = this.recordCount();\n\n // If unpaginated (pageSize = 0), return total count\n if (pageSize === 0) {\n return total;\n }\n\n const start = this.startIndex();\n return Math.min(start + pageSize, total);\n });\n\n disablePrevious = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() === 0;\n });\n\n disableNext = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() + 1 >= this.pageCount();\n });\n\n truncatedPages = computed(() => {\n const currentPage = this.pageIndex() + 1;\n const displayRange = 3;\n const totalPages = this.pageCount();\n\n const pages: (number | string)[] = [];\n const startPage = Math.max(1, currentPage - displayRange);\n const endPage = Math.min(totalPages, currentPage + displayRange);\n\n if (startPage > 1) {\n pages.push(1);\n if (startPage > 2) {\n pages.push('...');\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(i);\n }\n\n if (endPage < totalPages) {\n if (endPage < totalPages - 1) {\n pages.push('...');\n }\n pages.push(totalPages);\n }\n return pages;\n });\n\n isSelected(row: T): boolean {\n return this.selections().some((selection) => selection === row);\n }\n\n toggleSelection(row: T) {\n this.selections.update((selections) => {\n return selections.includes(row) ? selections.filter((i) => i !== row) : [...selections, row];\n });\n }\n\n clearSelections() {\n this.selections.set([]);\n }\n\n selectAll() {\n this.selections.set([...this.records()]);\n }\n\n abstract sortRecords(sort: Sort<T>): void;\n abstract firstPage(): void;\n abstract nextPage(): void;\n abstract previousPage(): void;\n abstract lastPage(): void;\n abstract jumpToPage(page: number): void;\n abstract setPageSize(size: number): void;\n}\n","import { computed, signal } from '@angular/core';\nimport { UniBaseDatasource, Sort } from './base-datasource';\n\nexport class UniRecordDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal<number>(0); // 0 = unpaginated (show all)\n\n initialRecords = signal<T[]>([]);\n override recordCount = computed((): number => this.initialRecords().filter(this.filter()).length);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n filter = signal<(value: T) => boolean>((value) => true);\n\n override pageIndex = signal<number>(0);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const pageSize = this.pageSize();\n return pageSize > 0 ? Math.ceil(this.recordCount() / pageSize) : 1;\n });\n\n override records = computed(() => {\n const { column, direction } = this.sort();\n const filter = this.filter();\n const pageSize = this.pageSize();\n\n let filteredRecords = this.initialRecords().filter(filter);\n\n // Apply sorting if specified\n if (column && direction !== 'indet') {\n filteredRecords = [...filteredRecords].sort((a, b) => {\n const valueA = a[column];\n const valueB = b[column];\n\n const isString = typeof valueA === 'string';\n const isAsc = direction === 'asc';\n\n return isString\n ? stringCompare(valueA as string, valueB as string, isAsc)\n : numberCompare(valueA as number, valueB as number, isAsc);\n });\n }\n\n // Apply pagination only if pageSize > 0\n if (pageSize > 0) {\n return filteredRecords.slice(this.startIndex(), this.endIndex());\n }\n\n // Return all records (unpaginated)\n return filteredRecords;\n });\n\n constructor(data: T[]) {\n super();\n this.initialRecords.set(data);\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n }\n\n override firstPage() {\n this.pageIndex.set(0);\n }\n\n override nextPage() {\n if (this.pageIndex() < this.pageCount() - 1) {\n this.pageIndex.update((i) => i + 1);\n }\n }\n\n override previousPage() {\n this.pageIndex.update((i) => (i > 1 ? i - 1 : 0));\n }\n\n override lastPage() {\n this.pageIndex.set(this.pageCount() - 1);\n }\n\n override jumpToPage(page: number) {\n const i = page - 1;\n if (i >= 0 && i < this.pageCount()) {\n this.pageIndex.set(i);\n }\n }\n\n override setPageSize(size: number) {\n this._pageSize.set(size);\n if (size > 0) {\n this._pageNumber.set(1);\n this.pageIndex.set(0);\n }\n }\n\n setFilter(filter: (value: T) => boolean) {\n this.filter.set(filter);\n }\n\n clearFilter() {\n this.filter.set(() => true);\n }\n}\n\nfunction stringCompare(a = 'zzz', b = 'zzz', isAsc: boolean): number {\n a = a.toString();\n b = b.toString();\n\n return isAsc\n ? a.localeCompare(b, undefined, { sensitivity: 'base' })\n : b.localeCompare(a, undefined, { sensitivity: 'base' });\n}\n\nfunction numberCompare(a = 0, b = 0, isAsc: boolean): number {\n return isAsc ? a - b : b - a;\n}\n","import {\n computed,\n linkedSignal,\n resource,\n ResourceLoaderParams,\n ResourceRef,\n type ResourceStatus,\n signal,\n} from '@angular/core';\nimport { UniBaseDatasource, Sort, SortDirection } from './base-datasource';\n\nexport interface PageRequest {\n pageNumber: number;\n pageSize: number;\n sortColumn?: string;\n sortDirection?: SortDirection;\n filter?: Record<string, any>;\n}\n\nexport interface PageResponse<T> {\n data: T[];\n totalRecords: number;\n pageNumber: number;\n pageSize: number;\n}\n\nexport type DataLoader<T> = (request: PageRequest) => Promise<PageResponse<T>>;\n\nexport class UniServerSideDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal(10);\n private _sortColumn = signal<keyof T | undefined>(undefined);\n private _sortDirection = signal<SortDirection>('indet');\n private filter = signal<Record<string, any>>({});\n\n override sortColumn = computed(() => this._sortColumn());\n override sortDirection = computed(() => this._sortDirection());\n\n private totalRecords = signal(0);\n\n private dataResource: ResourceRef<PageResponse<T> | undefined>;\n\n override pageIndex = computed(() => this._pageNumber() - 1);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const total = this.totalRecords();\n const size = this.pageSize();\n return total > 0 ? Math.ceil(total / size) : 0;\n });\n\n private readonly _records = linkedSignal<\n {\n val: PageResponse<T> | undefined;\n status: ResourceStatus;\n },\n T[]\n >({\n source: () => ({\n val: this.dataResource.value(),\n status: this.dataResource.status(),\n }),\n computation: (source, previous) => {\n if (source.status === 'loading' && previous) {\n return previous.value;\n }\n return source.val?.data ?? [];\n },\n });\n\n override records = this._records.asReadonly();\n\n override recordCount = computed(() => this.totalRecords());\n\n isLoading = computed(() => this.dataResource.isLoading());\n\n error = computed(() => this.dataResource.error());\n\n hasError = computed(() => this.dataResource.hasValue() === false && this.error() !== undefined);\n\n constructor(\n private dataLoader: DataLoader<T>,\n initialPageSize = 10\n ) {\n super();\n this._pageSize.set(initialPageSize);\n\n this.dataResource = resource({\n params: () => ({\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n }),\n loader: async (params: ResourceLoaderParams<PageRequest>) => {\n const request = params.params;\n const response = await this.dataLoader(request);\n\n if (request.pageNumber === 1 || this.totalRecords() === 0) {\n this.totalRecords.set(response.totalRecords);\n }\n\n return response;\n },\n });\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n this._sortColumn.set(sort.column);\n this._sortDirection.set(sort.direction);\n this._pageNumber.set(1);\n }\n\n override firstPage() {\n this._pageNumber.set(1);\n }\n\n override nextPage() {\n if (this._pageNumber() < this.pageCount()) {\n this._pageNumber.update((n) => n + 1);\n }\n }\n\n override previousPage() {\n if (this._pageNumber() > 1) {\n this._pageNumber.update((n) => n - 1);\n }\n }\n\n override lastPage() {\n this._pageNumber.set(this.pageCount());\n }\n\n override jumpToPage(page: number) {\n if (page >= 1 && page <= this.pageCount()) {\n this._pageNumber.set(page);\n }\n }\n\n override setPageSize(size: number) {\n if (size > 0) {\n this._pageSize.set(size);\n this._pageNumber.set(1);\n }\n }\n\n setFilter(filterValues: Record<string, any>) {\n this.filter.set(filterValues);\n this._pageNumber.set(1);\n }\n\n clearFilter() {\n this.filter.set({});\n this._pageNumber.set(1);\n }\n\n refresh() {\n this.dataResource.reload();\n }\n\n getPageRequest(): PageRequest {\n return {\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { memoize } from '../helpers/memoize.helper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService {\n private isLocalStorageAvailable = memoize((): boolean => {\n try {\n const test = '__localStorage_test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n });\n\n setItem<T>(key: string, value: T): boolean {\n if (!this.isLocalStorageAvailable()) {\n console.warn('LocalStorage is not available');\n return false;\n }\n\n try {\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n localStorage.setItem(key, stringValue);\n return true;\n } catch (error) {\n console.error('Error saving to localStorage:', error);\n return false;\n }\n }\n\n getItem<T>(key: string): T | null {\n if (!this.isLocalStorageAvailable()) {\n return null;\n }\n\n try {\n const item = localStorage.getItem(key);\n if (item === null) {\n return null;\n }\n\n try {\n return JSON.parse(item) as T;\n } catch {\n return item as T;\n }\n } catch (error) {\n console.error('Error reading from localStorage:', error);\n return null;\n }\n }\n\n removeItem(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.removeItem(key);\n return true;\n } catch (error) {\n console.error('Error removing from localStorage:', error);\n return false;\n }\n }\n\n clear(): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.clear();\n return true;\n } catch (error) {\n console.error('Error clearing localStorage:', error);\n return false;\n }\n }\n\n hasKey(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n return localStorage.getItem(key) !== null;\n }\n\n getAllKeys(): string[] {\n if (!this.isLocalStorageAvailable()) {\n return [];\n }\n\n try {\n return Object.keys(localStorage);\n } catch (error) {\n console.error('Error getting localStorage keys:', error);\n return [];\n }\n }\n\n getSize(): number {\n if (!this.isLocalStorageAvailable()) {\n return 0;\n }\n\n try {\n let total = 0;\n for (const key in localStorage) {\n if (Object.prototype.hasOwnProperty.call(localStorage, key)) {\n total += localStorage[key].length + key.length;\n }\n }\n return total;\n } catch (error) {\n console.error('Error calculating localStorage size:', error);\n return 0;\n }\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { Alert, Confirmation, Snackbar } from './notification.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n /* Alert */\n alert = signal<Alert | undefined>(undefined);\n showAlert = (alert: Alert) => this.alert.set(alert);\n hideAlert = () => this.alert.set(undefined);\n\n /* Snackbar */\n snackbar = signal<Snackbar | undefined>(undefined);\n showSnackbar = (snackbar: Snackbar) => this.snackbar.set(snackbar);\n hideSnackbar = () => this.snackbar.set(undefined);\n\n /* Confirmation */\n confirmation = signal<Confirmation | undefined>(undefined);\n showConfirmation = (confirmation: Confirmation) => this.confirmation.set(confirmation);\n hideConfirmation = () => this.confirmation.set(undefined);\n}\n","import { computed, DestroyRef, inject, signal } from '@angular/core';\n\nexport function useTimer() {\n const destroyRef = inject(DestroyRef);\n\n const msRemaining = signal<number>(0);\n const isPaused = signal<boolean>(false);\n const isActive = computed(() => msRemaining() > 0);\n\n let intervalId: any = null;\n let endTime = 0;\n let onCompleteCallback: (() => void) | undefined;\n\n const stop = () => {\n if (intervalId) clearInterval(intervalId);\n intervalId = null;\n };\n\n const tick = () => {\n const remaining = Math.max(0, endTime - Date.now());\n msRemaining.set(remaining);\n\n if (remaining <= 0) {\n stop();\n if (onCompleteCallback) onCompleteCallback();\n }\n };\n\n const start = (durationMs: number, onComplete?: () => void) => {\n stop();\n onCompleteCallback = onComplete;\n isPaused.set(false);\n msRemaining.set(durationMs);\n endTime = Date.now() + durationMs;\n intervalId = setInterval(tick, 100);\n };\n\n const pause = () => {\n if (!isActive() || isPaused()) return;\n stop();\n isPaused.set(true);\n };\n\n const resume = () => {\n if (!isActive() || !isPaused()) return;\n isPaused.set(false);\n endTime = Date.now() + msRemaining();\n intervalId = setInterval(tick, 100);\n };\n\n destroyRef.onDestroy(() => stop());\n\n return {\n start,\n pause,\n resume,\n stop: () => {\n stop();\n msRemaining.set(0);\n },\n msRemaining,\n isPaused,\n isActive,\n secondsRemaining: computed(() => Math.ceil(msRemaining() / 1000)),\n };\n}\n","export const acceptableFile = (\n file: File,\n acceptedFileExtensions: string[] | undefined\n): boolean => {\n if (!acceptedFileExtensions || acceptedFileExtensions.length < 1) return true;\n return acceptedFileExtensions.includes(getFileExtension(file));\n};\n\nexport const getFileExtension = (file: File): string => '.' + file.name.split('.').pop();\n","import { InjectionToken } from '@angular/core';\nimport { type UniTheme, UniThemes } from '@uni-design-system/uni-core';\n\nexport const UNI_THEMES = new InjectionToken<Record<string, UniTheme>>('', {\n providedIn: 'root',\n factory: () => UniThemes,\n});\n","export const safeParseInt = (n: string | number) => (typeof n === 'number' ? n : parseInt(n));\n","// noinspection JSUnusedGlobalSymbols\n\nimport { computed, inject, Injectable, linkedSignal, Signal, signal } from '@angular/core';\nimport { css, injectGlobal } from '@emotion/css';\nimport { LocalStorageService, Options } from '../cdk';\nimport {\n LightTheme,\n type NullableSize,\n type ThemeName,\n type Typeface,\n type UniTheme,\n Z_INDEX,\n type ZIndexableElements,\n ColorToken,\n ComponentName,\n ComponentTheme,\n ContainerColorToken,\n ContentColorToken,\n NullableStyleExpression,\n OptionalSize,\n Size,\n TextRole,\n Thickness,\n Variant,\n toTypefaces,\n createThemeFromPalette,\n type GenerateColorsConfig,\n type PaletteConfig,\n type Radii,\n type ColorKey,\n type Radius,\n type Border,\n type Shadow,\n} from '@uni-design-system/uni-core';\n\nimport {\n formatThemeIssues,\n hydrateTheme,\n parseTheme,\n type Themes,\n type ThemeParseResult,\n} from '@uni-design-system/uni-core';\n\nimport { UNI_THEMES } from './theme.token';\nimport { safeParseInt } from '../cdk/helpers/number.helper';\n\n/**\n * The editable shape a theme builder manipulates: a seed + scheme + category\n * (plus optional saturation floor, brand colors, and light/dark mode).\n * Everything else in a theme is derived from this. Brand colors come in two\n * strengths: `brand` pins are emitted verbatim (may fail contrast), `targets`\n * are brand-faithful but the WCAG guard-rail may adjust their lightness.\n */\nexport type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> &\n Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'> & {\n /** Radii override (e.g. a `ShapeRadii` shape-language preset). */\n radii?: Radii;\n };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n /** localStorage key marking the custom brand theme as active. */\n static readonly CUSTOM_KEY = 'CustomTheme';\n /** localStorage key holding the serialized brand palette config. */\n static readonly PALETTE_KEY = 'uni-custom-palette';\n\n private localStorage = inject(LocalStorageService);\n\n /**\n * The live theme registry: the injected {@link UNI_THEMES} map (validated\n * at construction) plus anything added via {@link registerTheme} — including\n * the custom brand theme, which registers under {@link CUSTOM_KEY} so it is\n * an ordinary, selectable entry.\n */\n private readonly registry = signal<Themes>({});\n\n private readonly _theme = signal<UniTheme>(LightTheme);\n /** The active theme. Write via {@link setTheme}/{@link selectTheme} — every write is validated. */\n readonly theme = this._theme.asReadonly();\n\n /** Selectable themes, derived from the registry — reactive to registration. */\n readonly themeOptions = computed<Options<ThemeName>>(() =>\n Object.entries(this.registry()).map(([value, theme]) => ({ label: theme.name, value }))\n );\n\n components = computed(() => this.theme().components);\n component = <T>(componentName: ComponentName): Signal<ComponentTheme<T>> =>\n computed(() => (this.components()[componentName] as ComponentTheme<T>) || {});\n colors = computed(() => this.theme().colors);\n // CSS-ready typefaces are derived from the theme's numeric type scale,\n // never stored twice on the theme.\n typeFaces = computed(() => toTypefaces(this.theme().typography));\n spacing = computed(() => this.theme().spacing);\n thicknesses = computed(() => this.theme().thicknesses);\n radii = computed(() => this.theme().radii);\n borders = computed(() => this.theme().borders);\n shadows = computed(() => this.theme().shadows);\n icons = computed(() => this.theme().icons);\n\n constructor() {\n // Honor the user's reduced-motion preference across every component\n // (WCAG 2.3.3): collapse all animations/transitions to a single frame.\n injectGlobal`\n @media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n }\n `;\n\n // Seed the registry from the injected map, excluding (with reasons) any\n // theme that fails the structural contract — a malformed theme would\n // otherwise render as silent `undefined` CSS.\n const injected = inject(UNI_THEMES);\n const registry: Themes = {};\n for (const [key, candidate] of Object.entries(injected)) {\n const result = parseTheme(candidate);\n if (result.success) {\n registry[key] = result.theme;\n } else {\n console.warn(`Uni theme '${key}' rejected: ${formatThemeIssues(result.issues)}`);\n }\n }\n this.registry.set(registry);\n\n // Rehydrate a custom brand theme if one is active — this is what lets a\n // palette built in one story reskin every other story: each story spins up\n // a fresh ThemeService, and it reads the persisted config here on init.\n const savedTheme = this.localStorage.getItem<string>('theme');\n const savedPalette = this.localStorage.getItem<BrandPaletteConfig>(ThemeService.PALETTE_KEY);\n if (savedTheme === ThemeService.CUSTOM_KEY && savedPalette) {\n this.applyPalette(savedPalette, false);\n } else {\n this.selectTheme(savedTheme || Object.keys(registry)[0] || 'base');\n }\n }\n\n /**\n * Activate a registered theme. Returns false — touching nothing, persisting\n * nothing — when the name is unknown (previously this silently kept the old\n * theme while still recording the bad key).\n */\n public selectTheme(themeName: ThemeName): boolean {\n const theme = this.registry()[themeName];\n if (!theme) return false;\n\n // Registered themes were validated at registration; set directly.\n this._theme.set(theme);\n this.selectedThemeKey.set(themeName);\n this.localStorage.setItem('theme', themeName);\n return true;\n }\n\n /**\n * Validate and activate a theme without registering it. The result carries\n * acceptance or the complete list of rejection reasons; on rejection the\n * active theme is unchanged.\n */\n public setTheme(input: unknown): ThemeParseResult {\n const result = this.accept(input);\n if (result.success) {\n this._theme.set(result.theme);\n this.selectedThemeKey.set(result.theme.id);\n }\n return result;\n }\n\n /**\n * Validate and add a theme to the registry (keyed by its `id`), making it\n * selectable and listed in {@link themeOptions}. On rejection the registry\n * is unchanged and the result lists every reason.\n */\n public registerTheme(input: unknown, opts?: { select?: boolean }): ThemeParseResult {\n const result = this.accept(input);\n if (result.success) {\n const theme = result.theme;\n this.registry.update((themes) => ({ ...themes, [theme.id]: theme }));\n if (opts?.select) this.selectTheme(theme.id);\n }\n return result;\n }\n\n /**\n * The gate every externally-supplied theme passes: validate, then restore\n * any built-in icons the payload left out. Themes that travel as JSON (the\n * MCP theme tools, a theme registry) omit the built-in icon set — it is\n * ~71% of the bytes and every consumer already ships it — so hydration\n * applies the same `{...BaseIcons, ...icons}` contract `createTheme` uses:\n * the theme's own icons win, built-ins fill the rest.\n */\n private accept(input: unknown): ThemeParseResult {\n const result = parseTheme(input);\n return result.success ? { ...result, theme: hydrateTheme(result.theme) } : result;\n }\n\n /** Remove a registered theme; falls back to the first remaining theme if it was active. */\n public unregisterTheme(id: string): void {\n if (!(id in this.registry())) return;\n this.registry.update((themes) => {\n const { [id]: _removed, ...rest } = themes;\n return rest;\n });\n if (this.selectedThemeKey() === id) {\n this.selectTheme(Object.keys(this.registry())[0] || 'base');\n }\n }\n\n /** The live brand palette config, when a custom theme is active. */\n public customPalette = signal<BrandPaletteConfig | null>(null);\n public isCustomTheme = computed(() => this.selectedThemeKey() === ThemeService.CUSTOM_KEY);\n\n /**\n * Generate a full theme from a brand palette config and make it active. When\n * `persist` is true the config is saved so every subsequent story (and\n * reload) renders with the same brand.\n */\n public applyPalette(config: BrandPaletteConfig, persist = true): void {\n this.customPalette.set(config);\n // Registering (rather than only setting) makes 'Your Brand' an ordinary\n // registry entry: it appears in themeOptions/uni-theme-switch and can be\n // switched away from and back to.\n const result = this.registerTheme(\n createThemeFromPalette({ ...config, id: ThemeService.CUSTOM_KEY, name: 'Your Brand' })\n );\n if (!result.success) return;\n\n this._theme.set(result.theme);\n this.selectedThemeKey.set(ThemeService.CUSTOM_KEY);\n if (persist) {\n this.localStorage.setItem(ThemeService.PALETTE_KEY, config);\n this.localStorage.setItem('theme', ThemeService.CUSTOM_KEY);\n }\n }\n\n /** Drop the custom brand theme and fall back to the first registered theme. */\n public clearCustomPalette(): void {\n this.customPalette.set(null);\n this.localStorage.removeItem(ThemeService.PALETTE_KEY);\n this.unregisterTheme(ThemeService.CUSTOM_KEY);\n }\n\n public selectedThemeName = computed(() => this.theme().name);\n public selectedThemeKey = signal<string>('');\n\n textClass = (textRole: TextRole, textColor?: ContentColorToken) => {\n return css([\n {\n ...this.typeFaces()[textRole],\n },\n textColor && {\n color: this.colors()[textColor],\n },\n ]);\n };\n\n componentStyle = (componentName: ComponentName, variant: Variant, size: Size) =>\n computed(() => {\n const component = this.component(componentName)();\n const { fixed, variants, sizes } = component;\n const variantStyle = variants && variants[variant];\n const sizeStyle = sizes && sizes[size];\n return { ...fixed, ...variantStyle, ...sizeStyle };\n });\n\n getSpacing = (size: NullableSize) => {\n return size === 'none' ? 'none' : this.spacing()[size];\n };\n\n getThickness = (thickness: Thickness) => this.theme().thicknesses[thickness];\n\n getContentColor = (token: ContainerColorToken, useVariant?: boolean) =>\n useVariant\n ? this.colors()[`on-${token}-variant` as ColorToken]\n : this.colors()[`on-${token}` as ColorToken];\n\n colorPair = (token?: ContainerColorToken, colorVariant?: boolean): NullableStyleExpression => {\n if (!token) return;\n const backgroundColor = this.colors()[token];\n const color = this.getContentColor(token, colorVariant);\n return { color, backgroundColor };\n };\n\n backgroundColor = (token?: ColorKey): NullableStyleExpression => {\n return !token ? undefined : { backgroundColor: this.colors()[token] };\n };\n\n backgroundImage = (url?: string): NullableStyleExpression => {\n return !url ? undefined : { backgroundImage: `url(${url})` };\n };\n\n getContainerColors = (color: Variant, useVariant?: boolean) => {\n const token = (color + '-container') as ContainerColorToken;\n return this.colorPair(token, useVariant);\n };\n\n /**\n * The shared keyboard-focus indicator's styles (WCAG 2.4.7), without a\n * selector — for controls that key the ring off their own state selector\n * (`&:focus + .checkbox`). Everything else spreads `focusRing()` instead.\n *\n * Themable: a theme that defines `focusRing` **border** and/or **shadow**\n * primitives replaces the default 2px outline with that border (drawn as\n * an outline hugging the control) plus the ring shadow — one focus\n * language for every control, from text fields to checkboxes to calendar\n * days. A `focusRing` **thickness** primitive sets the outline offset\n * (default 0 when themed, 2px for the classic outline; negative values\n * overlay the control's own border, reading as a border-color change).\n * Without those primitives the classic outline renders, in the given\n * color or `currentColor`.\n */\n focusRingStyle = (color?: string, gap?: string | number) => {\n const border = this.borders()['focusRing'];\n const shadow = this.shadows()['focusRing'];\n // An explicit per-call gap wins; else the theme's `focusRing` thickness\n // primitive; else the branch default (hugging when themed, classic 2px).\n const offset = gap ?? this.thicknesses()['focusRing'];\n if (border || shadow) {\n return {\n outline: border ?? 'none',\n outlineOffset: offset ?? 0,\n ...(shadow ? { boxShadow: shadow } : {}),\n };\n }\n return { outline: `2px solid ${color ?? 'currentColor'}`, outlineOffset: offset ?? '2px' };\n };\n\n /**\n * Shared keyboard-focus indicator (WCAG 2.4.7). Spread into a component's\n * Emotion styles: `...this.theme.focusRing()` or `focusRing('primary')`.\n * See `focusRingStyle` for how themes restyle it.\n */\n focusRing = (token?: ColorToken) => ({\n '&:focus-visible': this.focusRingStyle(token ? this.colors()[token] : undefined),\n });\n\n typeface = (typeface?: Typeface) => {\n const typefaces = this.typeFaces();\n return typeface && typefaces[typeface];\n };\n\n colorPalette = () => this.colors();\n\n color(color?: ColorKey): NullableStyleExpression {\n return !color ? undefined : { color: this.colors()[color] };\n }\n\n getDashedBorder(\n color: ColorKey | undefined,\n radius: Radius | undefined\n ): NullableStyleExpression {\n if (!color) return;\n\n const r = radius && this.radii()[radius];\n const borderRadius = r ? safeParseInt(r) : 0;\n const colors = this.colors()[color];\n const strokeColor = colors?.replace('#', '%23');\n\n return {\n backgroundImage: `url(\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='${borderRadius}' ry='${borderRadius}' stroke='${strokeColor}' stroke-width='4' stroke-dasharray='6%2c 14' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e\")`,\n borderRadius,\n };\n }\n\n radius(size: Radius | undefined): NullableStyleExpression {\n return !size ? undefined : { borderRadius: this.radii()[size] };\n }\n\n getRadiusLeft(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderTopLeftRadius: this.radii()[size],\n };\n }\n\n getRadiusRight(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomRightRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusTop(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderTopLeftRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusBottom(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderBottomRightRadius: this.radii()[size],\n };\n }\n\n padding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { padding: this.spacing()[size] };\n }\n\n horizontalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingInline: this.spacing()[size] };\n }\n\n verticalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBlock: this.spacing()[size] };\n }\n\n paddingLeft(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingLeft: this.spacing()[size] };\n }\n\n paddingRight(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingRight: this.spacing()[size] };\n }\n\n paddingTop(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingTop: this.spacing()[size] };\n }\n\n paddingBottom(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBottom: this.spacing()[size] };\n }\n\n border(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { border: this.borders()[border] };\n }\n\n borderTop(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderTop: this.borders()[border] };\n }\n\n borderBottom(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderBottom: this.borders()[border] };\n }\n\n borderLeft(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderLeft: this.borders()[border] };\n }\n\n borderRight(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderRight: this.borders()[border] };\n }\n\n boxShadow(shadow: Shadow | undefined) {\n return !shadow ? undefined : { boxShadow: this.shadows()[shadow] };\n }\n\n gap(gap: OptionalSize): NullableStyleExpression {\n return !gap || gap === 'none' ? undefined : { gap: this.spacing()[gap] };\n }\n\n zIndex(element: ZIndexableElements | undefined): NullableStyleExpression {\n return !element ? undefined : { zIndex: Z_INDEX[element] };\n }\n\n borderColor(borderColor: ColorToken): NullableStyleExpression {\n return { borderColor: this.colors()[borderColor] };\n }\n\n getComponentTheme<T>(componentName: ComponentName) {\n return this.component<T>(componentName);\n }\n\n // Used to get an \"always-defined\" options object from a component theme.\n getComponentOptions = <T>(componentName: ComponentName) =>\n linkedSignal({\n source: this.getComponentTheme<T>(componentName),\n computation: () => {\n return this.getComponentTheme<T>(componentName)().options || ({} as T);\n },\n });\n\n componentOptions = (componentName: ComponentName) =>\n computed(() => this.component(componentName)().options || {});\n\n style(prop: string, value: string | number | undefined): NullableStyleExpression {\n return !value ? undefined : { [prop]: value };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n} from '@angular/core';\nimport type { ComponentName, Size, Variant } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\nexport const COMPONENT_NAME = new InjectionToken<ComponentName>('');\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n template: ``,\n})\nexport class BaseComponent<T = unknown> {\n protected componentName = inject(COMPONENT_NAME);\n theme = inject(ThemeService);\n\n variant = input<Variant>('primary'); // TODO: Make Variant support undefined\n size = input<Size>('lg');\n\n componentTheme = computed(() => this.theme.getComponentTheme<T>(this.componentName)());\n\n componentOptions = computed(() => this.theme.getComponentOptions<T>(this.componentName)());\n\n style = computed(() =>\n this.theme.componentStyle(this.componentName, this.variant(), this.size())()\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniAppBarOptions } from './app-bar.model';\n\n/**\n * Horizontal application bar: project leading controls (menu button, logo)\n * with the `leading` attribute, actions with `trailing` (pushed to the far\n * edge), and either pass `title` or project custom center content. Surface,\n * divider, height, typography and spacing all resolve from `appBar` tokens.\n * Place it inside your page's `<header>` landmark.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-app-bar',\n providers: [{ provide: COMPONENT_NAME, useValue: 'appBar' }],\n host: { '[class]': 'className()' },\n template: `\n <ng-content select=\"[leading]\" />\n @if (title()) {\n <span class=\"uni-app-bar-title\">{{ title() }}</span>\n }\n <ng-content />\n <span class=\"uni-app-bar-spacer\"></span>\n <ng-content select=\"[trailing]\" />\n `,\n})\nexport class UniAppBarComponent extends BaseComponent<UniAppBarOptions> {\n /** Bar title; alternatively project your own center content. */\n title = input<string>();\n /** Stick the bar to the top of its scroll container. */\n sticky = input(false);\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n width: '100%',\n height: options.height ?? 56,\n flex: 'none',\n ...this.theme.colorPair(options.color),\n ...this.theme.gap(options.gap),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.borderBottom(options.divider),\n ...this.theme.boxShadow(options.elevation),\n '& .uni-app-bar-title': {\n ...this.theme.typeface(options.typeface),\n whiteSpace: 'nowrap',\n },\n '& .uni-app-bar-spacer': { flexGrow: 1 },\n ...(this.sticky() && { position: 'sticky', top: 0, zIndex: 10 }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport type { SymbolFill, SymbolGrade, SymbolOptions, SymbolWeight } from './symbol.model';\nimport { COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-symbol',\n imports: [],\n template: `{{ name() }}`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'symbol' }],\n // Icons are decorative: hide the ligature text (e.g. \"chevron_left\") from\n // screen readers. Meaningful icons get their name from the parent control.\n host: {\n '[class]': 'className()',\n 'aria-hidden': 'true',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSymbolComponent extends BaseComponent<SymbolOptions> {\n name = input.required<string>();\n\n fill = input<SymbolFill>();\n weight = input<SymbolWeight>();\n grade = input<SymbolGrade>();\n opticalSize = input<number>();\n\n protected readonly className = computed(() => {\n const settings =\n `'FILL' ${this.fill() || this.componentOptions().fill || 0}, ` +\n `'wght' ${this.weight() || this.componentOptions().weight || 400}, ` +\n `'GRAD' ${this.grade() || this.componentOptions().grade || 0}, ` +\n `'opsz' ${this.opticalSize() || this.componentOptions().opticalSize || 24}`;\n\n return (\n 'material-symbols-rounded ' +\n css({\n fontVariationSettings: settings,\n fontSize: `${this.opticalSize() || this.componentOptions().opticalSize || 24}px`,\n })\n );\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniAvatarOptions } from './avatar.model';\n\n/**\n * Identity avatar with a graceful fallback chain: image → initials from\n * `name` → themed symbol. Coloring, radius, typeface and sizes all resolve\n * from `avatar` theme tokens; `variant` picks the container palette.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatar' }],\n host: {\n '[class]': 'className()',\n '[attr.role]': \"label() ? 'img' : null\",\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': \"label() ? null : 'true'\",\n },\n template: `\n @if (showImage()) {\n <img [src]=\"src()\" alt=\"\" (error)=\"imageFailed.set(true)\" />\n } @else if (text()) {\n <span>{{ text() }}</span>\n } @else if (initials()) {\n <span>{{ initials() }}</span>\n } @else {\n <uni-symbol [name]=\"componentOptions().fallbackSymbol ?? 'person'\" />\n }\n `,\n})\nexport class UniAvatarComponent extends BaseComponent<UniAvatarOptions> {\n /** Image URL; on load error the avatar falls back to initials/symbol. */\n src = input<string>();\n /** Person's name: drives the initials and the accessible label. */\n name = input<string>();\n /** Verbatim text instead of derived initials (e.g. a group's “+3”). */\n text = input<string>();\n\n protected readonly imageFailed = signal(false);\n\n protected readonly showImage = computed(() => !!this.src() && !this.imageFailed());\n\n protected readonly initials = computed(() => {\n const name = this.name()?.trim();\n if (!name) return '';\n const words = name.split(/\\s+/);\n const first = words[0]?.[0] ?? '';\n const last = words.length > 1 ? (words[words.length - 1][0] ?? '') : '';\n return (first + last).toUpperCase();\n });\n\n protected readonly label = computed(() => this.name() ?? this.text());\n\n protected readonly className = computed(() =>\n css([\n // Typeface (family/weight) before the merged theme style, so the size\n // record's fontSize wins over the typeface's.\n {\n ...this.theme.typeface(this.componentOptions().typeface),\n ...this.theme.radius(this.componentOptions().borderRadius),\n },\n this.style(),\n {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 'none',\n overflow: 'hidden',\n userSelect: 'none',\n lineHeight: 1,\n '& img': { width: '100%', height: '100%', objectFit: 'cover' },\n '& symbol': { fontSize: '1.4em' },\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniAvatarComponent } from './avatar.component';\nimport type { UniAvatarGroupOptions } from './avatar.model';\n\n/**\n * Overlapping stack of avatars. `max` collapses the overflow into a themed\n * “+N” chip (itself a `uni-avatar`). Overlap and separator ring resolve from\n * `avatarGroup` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar-group',\n imports: [UniAvatarComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatarGroup' }],\n host: { '[class]': 'className()', role: 'group' },\n template: `\n <ng-content />\n @if (surplus() > 0) {\n <uni-avatar\n class=\"uni-surplus\"\n [text]=\"'+' + surplus()\"\n variant=\"quaternary\"\n [size]=\"size()\"\n />\n }\n `,\n})\nexport class UniAvatarGroupComponent extends BaseComponent<UniAvatarGroupOptions> {\n /** Show at most this many avatars; the rest collapse into a “+N” chip. */\n max = input<number | undefined>(undefined);\n\n private readonly avatars = contentChildren(UniAvatarComponent);\n\n protected readonly surplus = computed(() => {\n const max = this.max();\n if (max === undefined) return 0;\n return Math.max(0, this.avatars().length - max);\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const overlap = this.theme.spacing()[options.overlap ?? 'sm'] ?? '8px';\n const ring = `${options.ringWidth ?? 2}px solid ${\n this.theme.colors()[options.ringColor ?? 'surface'] ?? 'transparent'\n }`;\n const max = this.max();\n return css({\n display: 'inline-flex',\n alignItems: 'center',\n '& uni-avatar': {\n border: ring,\n marginLeft: `calc(-1 * ${overlap})`,\n '&:first-child': { marginLeft: 0 },\n },\n // Collapse the overflow: hide projected avatars past `max`, but never\n // the surplus chip this component renders itself.\n ...(max !== undefined && {\n [`& uni-avatar:nth-of-type(n + ${max + 1}):not(.uni-surplus)`]: { display: 'none' },\n }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\nexport type ImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | string;\n\n@Component({\n selector: 'uni-background',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBackgroundComponent {\n theme = inject(ThemeService);\n\n image = input<string>();\n imagePosition = input<ImagePosition>();\n imageSize = input<'cover' | 'contain' | number | string>();\n height = input<number | string>('100%');\n width = input<number | string>();\n\n protected readonly className = computed(() => {\n return css([\n {\n backgroundRepeat: 'no-repeat',\n display: 'block',\n ...this.theme.backgroundImage(this.image()),\n },\n this.theme.style('backgroundPosition', this.imagePosition()),\n this.theme.style('backgroundSize', this.imageSize()),\n this.theme.style('height', this.height()),\n this.theme.style('width', this.width()),\n ]);\n });\n}\n","/**\n * Background Component Barrel File\n *\n * This file exports all public-facing elements of the background component.\n */\n\nexport { UniBackgroundComponent } from './background.component';\nexport type { ImagePosition } from './background.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniBadgeOptions } from './badge.model';\nimport type { Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-badge]',\n imports: [],\n template: `<ng-content></ng-content>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'badge' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {\n color = input<Variant | undefined>(undefined);\n useVariant = input<boolean>(false);\n width = input<number>();\n\n protected readonly className = computed(() => {\n const width = this.width();\n\n return css([\n {\n ...this.theme.getContainerColors(this.color() || 'primary', this.useVariant()),\n ...this.theme.typeface('badge'),\n display: 'inline-block',\n padding: '0 16px',\n ...this.theme.radius(this.componentOptions().borderRadius),\n textAlign: 'center',\n letterSpacing: 1,\n },\n width !== undefined && {\n minWidth: width - 32,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { BreadcrumbItem, UniBreadcrumbOptions } from './breadcrumb.model';\n\n/**\n * WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last\n * item is the current page (`aria-current=\"page\"`), separators are decorative.\n * Items with `href` render as real links; without one they render as\n * link-styled buttons emitting `itemClicked` — wire that to your router.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-breadcrumb',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'breadcrumb' }],\n template: `\n <nav [attr.aria-label]=\"ariaLabel()\" [class]=\"className()\">\n <ol>\n @for (item of items(); track item.label; let last = $last; let i = $index) {\n <li>\n @if (last) {\n <span aria-current=\"page\">{{ item.label }}</span>\n } @else if (item.href) {\n <a [href]=\"item.href\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</a>\n } @else {\n <button type=\"button\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</button>\n }\n @if (!last) {\n <uni-symbol\n aria-hidden=\"true\"\n [name]=\"componentOptions().separatorSymbol ?? 'chevron_right'\"\n />\n }\n </li>\n }\n </ol>\n </nav>\n `,\n})\nexport class UniBreadcrumbComponent extends BaseComponent<UniBreadcrumbOptions> {\n /** The trail, root first; the last item is the current page. */\n items = input.required<BreadcrumbItem[]>();\n /** Landmark label distinguishing this nav from others on the page. */\n ariaLabel = input('Breadcrumb');\n\n /** Emits the clicked ancestor item (also fires for `href` links). */\n itemClicked = output<BreadcrumbItem>();\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const linkColor = this.theme.colors()[options.color ?? 'on-background-variant'];\n return css({\n '& ol': {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n ...this.theme.typeface(options.typeface),\n },\n '& li': {\n display: 'inline-flex',\n alignItems: 'center',\n ...this.theme.gap(options.gap),\n },\n '& a, & button': {\n background: 'none',\n border: 0,\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n textDecoration: 'none',\n color: linkColor,\n '&:hover': { textDecoration: 'underline' },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()['primary']}`,\n outlineOffset: 2,\n },\n },\n '& [aria-current]': {\n ...this.theme.color(options.currentColor),\n },\n '& symbol': { fontSize: '1.1em', ...this.theme.color(options.color) },\n ...this.theme.gap(options.gap),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { ThemeService } from '../../theming/theme.service';\nimport type { ColorToken, CssLength, IconName } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-icon',\n imports: [],\n template: '',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Icons are decorative; meaningful icons get their name from the parent control\n host: {\n 'aria-hidden': 'true',\n '[class]': 'className()',\n '[style.mask-image]': 'path()',\n '[style.-webkit-mask-image]': 'path()',\n // Inline styles, so an explicit size always beats the fill-the-container\n // rule in the stylesheet regardless of style injection order.\n '[style.width]': 'sizeValue()',\n '[style.height]': 'sizeValue()',\n },\n})\nexport class UniIconComponent {\n private themeService = inject(ThemeService);\n\n color = input<ColorToken>();\n name = input.required<IconName>();\n\n /**\n * Explicit square size. Bare numbers are px; strings pass through, so any CSS\n * length works (`'1.25rem'`, `'1em'`, `'clamp(…)'`).\n *\n * Leave it unset to keep the default behaviour — the icon fills its\n * container, which is what lets a themed control size its own glyph through\n * padding. Set it at call sites that would otherwise need a width/height\n * rule just to size one icon.\n */\n size = input<CssLength>();\n\n /** Resolved from the theme's icon primitives; unknown names render nothing. */\n protected readonly path = computed(() => {\n const icon = this.themeService.theme().icons[this.name()];\n return icon ? `url(\"${icon}\")` : 'none';\n });\n\n /** `null` leaves the styles off entirely, falling back to the stylesheet. */\n protected readonly sizeValue = computed(() => {\n const size = this.size();\n if (size === undefined || size === null || size === '') return null;\n if (typeof size === 'number') return `${size}px`;\n\n // A static attribute (`size=\"24\"`) arrives as a string, so a bare number\n // has to mean px here too — otherwise it emits the invalid `width: 24`,\n // which the browser drops, silently falling back to filling the container.\n const trimmed = size.trim();\n return /^-?\\d*\\.?\\d+$/.test(trimmed) ? `${trimmed}px` : trimmed;\n });\n\n protected readonly className = computed(() =>\n css([{ ...this.themeService.color(this.color()) }])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ContainerColorToken,\n OptionalAlignContent,\n OptionalAlignItems,\n OptionalAlignSelf,\n OptionalBorder,\n OptionalColor,\n OptionalDisplay,\n OptionalFlexDirection,\n OptionalJustifyContent,\n OptionalOverflow,\n OptionalPosition,\n OptionalRadius,\n OptionalSize,\n OptionalTextAlign,\n OptionalWrap,\n Shadow,\n Variant,\n ZIndexableElements,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService } from '../../../theming';\n\n/**\n * The base layout primitive, applied as an attribute to any element so\n * semantics stay yours: `<main box-layout [grow]=\"1\" padding=\"md\">`.\n * Exception: other components' host elements (`<uni-card box-layout>` would\n * put two components on one element) — wrap those in a `<div box-layout>`.\n *\n * Sizing convention (height/width/min/max/inset): a **number is px and needs\n * a binding** — `[height]=\"420\"`; a **plain attribute is a CSS length\n * string** — `height=\"420px\"`. Spacing/radius/color inputs take theme tokens.\n */\n@Component({\n selector: '[uni-box-layout], [box-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'boxClassName()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBoxComponent {\n theme = inject(ThemeService);\n\n color = input<ContainerColorToken>();\n backgroundColor = input<OptionalColor>();\n borderRadius = input<OptionalRadius>();\n borderRadiusLeft = input<OptionalRadius>();\n borderRadiusRight = input<OptionalRadius>();\n borderRadiusTop = input<OptionalRadius>();\n borderRadiusBottom = input<OptionalRadius>();\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<OptionalBorder>();\n borderTop = input<OptionalBorder>();\n borderBottom = input<OptionalBorder>();\n borderLeft = input<OptionalBorder>();\n borderRight = input<OptionalBorder>();\n dashBorder = input<boolean>(false);\n alignSelf = input<OptionalAlignSelf>();\n alignItems = input<OptionalAlignItems>();\n alignContent = input<OptionalAlignContent>();\n justifyContent = input<OptionalJustifyContent>();\n grow = input<number>();\n display = input<OptionalDisplay>();\n position = input<OptionalPosition>();\n inset = input<number | string>();\n /** Number = px via binding (`[height]=\"420\"`); string = CSS length (`height=\"420px\"`). */\n height = input<number | string>();\n minHeight = input<number | string>();\n maxHeight = input<number | string>();\n /** Number = px via binding (`[width]=\"420\"`); string = CSS length (`width=\"50%\"`). */\n width = input<number | string>();\n minWidth = input<number | string>();\n maxWidth = input<number | string>();\n ignoreDir = input(true);\n gridArea = input<string>();\n gridColumn = input<string>();\n gridRow = input<string>();\n overflow = input<OptionalOverflow>();\n elevation = input<Shadow>(); // Deprecated, use shadow instead\n shadow = input<Shadow>();\n gap = input<OptionalSize>();\n fullWidth = input<boolean>();\n fullHeight = input<boolean>();\n flexDirection = input<OptionalFlexDirection>();\n textAlign = input<OptionalTextAlign>();\n wrapItems = input<OptionalWrap>(undefined);\n zIndex = input<ZIndexableElements>();\n\n protected readonly boxClassName = computed(() => {\n return css([\n {\n ...this.theme.colorPair(this.color()),\n ...this.theme.backgroundColor(this.backgroundColor()),\n display: this.alignSelf() ? 'flex' : 'block',\n position: this.position(),\n inset: this.inset(),\n boxSizing: 'border-box',\n height: this.height(),\n minHeight: this.minHeight(),\n maxHeight: this.maxHeight(),\n width: this.width(),\n minWidth: this.minWidth(),\n maxWidth: this.maxWidth(),\n flexWrap: this.wrapItems(),\n overflow: this.overflow(),\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n ...this.theme.boxShadow(this.elevation()),\n ...this.theme.boxShadow(this.shadow()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.getRadiusLeft(this.borderRadiusLeft()),\n ...this.theme.getRadiusRight(this.borderRadiusRight()),\n ...this.theme.getRadiusTop(this.borderRadiusTop()),\n ...this.theme.getRadiusBottom(this.borderRadiusBottom()),\n ...this.theme.borderTop(this.borderTop()),\n ...this.theme.borderBottom(this.borderBottom()),\n ...this.theme.borderLeft(this.borderLeft()),\n ...this.theme.borderRight(this.borderRight()),\n ...this.theme.gap(this.gap()),\n ...this.theme.style('display', this.display()),\n ...this.theme.style('alignSelf', this.alignSelf()),\n ...this.theme.style('alignItems', this.alignItems()),\n ...this.theme.style('justifyContent', this.justifyContent()),\n ...this.theme.style('alignContent', this.alignContent()),\n ...this.theme.style('flexGrow', this.grow()),\n ...this.theme.style('flexDirection', this.flexDirection()),\n ...this.theme.style('gridArea', this.gridArea()),\n ...this.theme.style('gridColumn', this.gridColumn()),\n ...this.theme.style('gridRow', this.gridRow()),\n ...this.theme.style('textAlign', this.textAlign()),\n ...this.theme.zIndex(this.zIndex()),\n },\n this.border() &&\n !this.dashBorder() && {\n ...this.theme.border(this.border()),\n },\n this.border() &&\n this.dashBorder() && {\n ...this.theme.getDashedBorder(this.border() as Variant, this.borderRadius()),\n },\n\n this.fullWidth() && {\n width: '100%',\n },\n this.fullHeight() && {\n height: '100%',\n },\n\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row' && {\n '&:dir(rtl)': {\n flexDirection: 'row-reverse',\n },\n },\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row-reverse' && {\n '&:dir(rtl)': {\n flexDirection: 'row',\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type {\n OptionalAlignItems,\n OptionalDisplay,\n OptionalJustifyContent,\n} from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-center-layout], [center-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniCenterComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override justifyContent = input<OptionalJustifyContent>('center');\n override alignItems = input<OptionalAlignItems>('center');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Component({\n selector: '[uni-grid-area-layout], [grid-area-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniGridAreaComponent {\n area = input.required<string>();\n\n protected readonly className = computed(() => css({ gridArea: this.area() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, Thickness, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-grid-layout], [grid-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'gridClassName()' },\n})\nexport class UniGridComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('grid');\n\n templateAreas = input<string>();\n templateColumns = input<string>();\n templateRows = input<string>();\n outline = input<Thickness>();\n outlineColor = input<Variant>();\n\n protected readonly gridClassName = computed(() =>\n css([\n this.templateAreas() && {\n gridTemplateAreas: this.templateAreas(),\n },\n this.templateColumns() && {\n gridTemplateColumns: this.templateColumns(),\n },\n this.templateRows() && {\n gridTemplateRows: this.templateRows(),\n },\n this.outline() && {\n gap: this.theme.getThickness(this.outline()!),\n },\n this.outlineColor() && {\n backgroundColor: this.theme.colorPalette()[this.outlineColor()!],\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-row-layout], [row-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniRowComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('row');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minWidth]=\"0\"`\n * when the row must shrink inside a constrained flex parent (scroll or\n * text truncation containment).\n */\n override minWidth = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-stack-layout], [stack-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniStackComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('column');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minHeight]=\"0\"`\n * when the stack must shrink inside a constrained flex parent (scroll\n * containment).\n */\n override minHeight = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalWrap } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-wrap-layout], [wrap-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniWrapComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override wrapItems = input<OptionalWrap>('wrap');\n\n constructor() {\n super();\n }\n}\n","// https://css-tricks.com/how-to-recreate-the-ripple-effect-of-material-design-buttons/\nimport { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Directive({\n selector: '[uniRipple]',\n host: {\n '(click)': 'onClick($event)',\n },\n})\nexport class RippleDirective {\n private renderer = inject(Renderer2);\n el = inject(ElementRef);\n\n hostEl;\n\n constructor() {\n this.hostEl = this.el.nativeElement;\n }\n\n onClick(e: MouseEvent) {\n if (!e) return;\n let ripple, d;\n if (this.hostEl.querySelector(`.${this.rippleClass}`) === null) {\n ripple = this.renderer.createElement('span');\n this.renderer.addClass(ripple, this.rippleClass);\n this.renderer.appendChild(this.hostEl, ripple);\n }\n\n ripple = this.hostEl.querySelector(`.${this.rippleClass}`);\n this.renderer.appendChild(this.hostEl, ripple);\n this.renderer.removeClass(ripple, this.animateClass);\n\n if (!ripple.offsetHeight && !ripple.offsetWidth) {\n d = Math.max(this.hostEl.offsetWidth, this.hostEl.offsetHeight);\n this.renderer.setStyle(ripple, 'width', d + 'px');\n this.renderer.setStyle(ripple, 'height', d + 'px');\n }\n\n const x = e.pageX - this.hostEl.offsetLeft - ripple.offsetWidth / 2;\n const y = e.pageY - this.hostEl.offsetTop - ripple.offsetHeight / 2;\n\n this.renderer.setStyle(ripple, 'top', y + 'px');\n this.renderer.setStyle(ripple, 'left', x + 'px');\n this.renderer.addClass(ripple, this.animateClass);\n }\n\n rippleClass = css({\n display: 'block',\n position: 'absolute',\n background: 'rgba(255, 255, 255, 0.3)',\n borderRadius: '100%',\n transform: 'scale(0)',\n });\n\n animateClass = css({\n animation: 'ripple 0.65s linear',\n\n '@keyframes ripple': {\n '100%': {\n opacity: 0,\n transform: 'scale(2.5)',\n },\n },\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniButtonOptions } from './button.model';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent } from '../layout';\nimport { UniSymbolComponent } from '../symbol';\nimport { RippleDirective } from '../../directives/ripple';\n\n@Component({\n selector: 'button[uni-text-button], button[text-button]',\n template: `@if (loading()) {\n <div box-layout [class]=\"spinnerBox\"><uni-icon name=\"spinner\" /></div>\n }\n @if (symbolLeft()) {\n <uni-symbol [name]=\"symbolLeft()!\" class=\"symbolLeft\" />\n }\n <span><ng-content></ng-content></span>\n @if (symbolRight()) {\n <uni-symbol [name]=\"symbolRight()!\" class=\"symbolRight\" />\n } `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'button' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RippleDirective, // Keep this import\n UniIconComponent,\n UniBoxComponent,\n UniSymbolComponent,\n ],\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniButtonComponent extends BaseComponent<UniButtonOptions> {\n readonly disable = input<boolean | undefined>(false);\n readonly loading = input<boolean | undefined>(false);\n readonly fullWidth = input<boolean>(false);\n\n readonly symbolLeft = input<string>();\n readonly symbolRight = input<string>();\n\n spinnerBox = css({\n position: 'absolute',\n left: 0,\n width: '100%',\n height: '100%',\n paddingTop: '6%',\n paddingBottom: '6%',\n });\n\n protected readonly className = computed(() =>\n css([\n // Token-driven radius + typeface from component options. Applied before\n // `style()` so theme `sizes`/`fixed` (per-size fontSize, or hand-set\n // radii/families in older themes) keep winning.\n this.theme.radius(this.componentOptions().borderRadius),\n { ...this.theme.typeface(this.componentOptions().typeface) },\n this.style() && {\n ...this.style(), // TODO: Set priority on theme-defined styles\n },\n {\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n '& .symbolLeft': {\n marginLeft: -6,\n marginRight: 4,\n fontSize: this.symbolSize(),\n },\n '& span': {\n alignContent: 'center',\n flexGrow: 1,\n whiteSpace: 'nowrap',\n },\n '& .symbolRight': {\n marginRight: -6,\n marginLeft: 4,\n fontSize: this.symbolSize(),\n },\n },\n // Hover/pressed styling now lives in the theme's button variants\n // (solid vs. hollow, per-variant states). Only the keyboard-focus\n // indicator (WCAG 2.4.7) stays component-owned.\n {\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.variant()]}`,\n outlineOffset: '2px',\n },\n },\n this.fullWidth() && {\n width: '100%',\n },\n !this.loading() && {\n '&:disabled': {\n ...this.componentTheme().variants?.disabled,\n },\n },\n this.loading() && {\n '&:disabled symbol': {\n opacity: 0,\n },\n '&:disabled span': {\n opacity: 0,\n },\n },\n ])\n );\n\n symbolSize = computed(() => {\n const fontSize = parseFloat(String(this.style()['fontSize'] ?? ''));\n // Fall back to the default icon size when the theme defines no fontSize\n return (Number.isNaN(fontSize) ? 16 : fontSize) + 4;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-button-group',\n imports: [],\n template: ` <ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniButtonGroupComponent {\n private themeService = inject(ThemeService);\n\n protected readonly className = computed(() => {\n return css({\n display: 'inline-flex',\n\n '& button': {\n ...this.themeService.border('quaternary'),\n marginRight: -1,\n },\n\n '& button:first-child': {\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:not(:first-child):not(:last-child)': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 4,\n borderBottomRightRadius: 4,\n marginRight: 0,\n },\n });\n });\n}\n","/**\n * UniButtonGroupComponent Barrel File\n *\n * This file exports all public-facing elements of the button-group component.\n */\n\nexport { UniButtonGroupComponent } from './button-group.component';\nexport type { ButtonGroupConfig, ButtonGroupItem } from './button-group.model';\n","import { Directive, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[uniBodyRender]',\n})\nexport class BodyRenderDirective implements OnInit {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngOnInit() {\n const element = this.el.nativeElement;\n this.renderer.appendChild(document.body, element);\n }\n}\n","import { Directive, output, signal } from '@angular/core';\n\n@Directive({\n selector: '[uni-drag-n-drop], [dragAndDrop]',\n host: {\n '[style.opacity]': 'workspaceOpacity()',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class DragAndDropDirective {\n // TODO(v4): rename to fileDropped — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onFileDropped = output<FileList>();\n\n protected workspaceOpacity = signal('1');\n\n // Dragover listener, when files are dragged over our host element\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('0.5');\n }\n\n // Dragleave listener, when files are dragged away from our host element\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n }\n\n // Drop listener, when files are dropped on our host element\n onDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n const files = event.dataTransfer?.files;\n if (files && files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { type IconName } from '../icon/icon.record';\nimport { RippleDirective } from '../../directives';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniIconComponent } from '../icon';\nimport { ThemeService } from '../../theming/theme.service';\nimport { visuallyHidden } from '../../cdk';\nimport type { RadiiSize, Size, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'button[uni-icon-button], button[icon-button]',\n imports: [UniSymbolComponent, UniIconComponent],\n template: `\n @if (loading()) {\n <uni-icon name=\"spinner\" />\n } @else if (symbolName()) {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"opticalSize()\" />\n } @else if (iconName()) {\n <uni-icon [name]=\"iconName()!\" [size]=\"glyphSize()\" />\n }\n <!-- Projected text is the button's accessible name (visually hidden) -->\n <span [class]=\"srOnlyClass\"><ng-content /></span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[attr.aria-label]': 'ariaLabel() || null',\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniIconButtonComponent {\n private theme = inject(ThemeService);\n config = this.theme.component<{ borderRadius?: RadiiSize }>('iconButton');\n\n /**\n * Accessible name for the button. Alternative to projecting text content\n * (`<button icon-button>Close</button>`); one of the two is required for\n * an icon-only button to be announced correctly.\n */\n ariaLabel = input<string>();\n\n iconName = input<IconName>();\n symbolName = input<string>();\n variant = input<Variant>('ghost');\n size = input<Size>('lg');\n disable = input<boolean>();\n loading = input<boolean>();\n opticalSize = input(24);\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n /**\n * Sizes `iconName` from the size token's `fontSize`, the same value that sizes\n * a `symbolName` ligature — so the two paths render the same glyph size and\n * `symbolName` → `iconName` is a like-for-like swap. Without it a masked icon\n * fills the whole button box, since the base size tokens carry no padding.\n * Themes that do use padding (Carbon) set a matching `fontSize`, so they land\n * on the same glyph either way.\n */\n protected readonly glyphSize = computed(() => {\n // Size tokens are Emotion style objects, so `fontSize` is typed wider than\n // a CSS length; anything exotic falls back to filling the button as before.\n const fontSize = this.config().sizes?.[this.size()]?.fontSize;\n return typeof fontSize === 'number' || typeof fontSize === 'string' ? fontSize : undefined;\n });\n\n protected readonly className = computed(() => {\n const { sizes, variants } = this.config();\n const sizeConfig = sizes && sizes[this.size()];\n const colorConfig = variants && variants[this.variant()];\n\n return css([\n {\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n // Token-driven radius (`max` = circle) with the legacy 999 fallback\n // for hand-authored themes that predate iconButton options.\n ...(this.theme.radius(this.config().options?.borderRadius) ?? { borderRadius: 999 }),\n // Block-level, but centring: the size tokens make the box bigger than\n // the glyph (an `sm` button is 22px around an 18px icon), so a plain\n // `display: block` parks the glyph in the top-left corner. Flex is\n // still block-level, so nothing about the button's own layout changes.\n // The accessible-name span is absolutely positioned and so stays out\n // of the flex flow.\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '& symbol': {\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n },\n sizeConfig && {\n ...sizeConfig,\n },\n colorConfig && {\n ...colorConfig,\n },\n this.symbolName() &&\n !this.loading() && {\n padding: 0,\n },\n this.variant() !== 'ghost' && {\n '&:hover': {\n ...this.theme.boxShadow('raised'),\n },\n },\n this.variant() === 'ghost' && {\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n },\n !this.loading() && {\n '&:disabled': {\n ...this.config().variants?.disabled,\n },\n },\n ]);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Size, StyleExpression, Variant } from '@uni-design-system/uni-core';\n\nimport {\n addDays,\n addMonths,\n buildMonthGrid,\n dayOfWeek,\n formatDate,\n formatMonthHeading,\n inclusiveDayCount,\n monthOf,\n localeWeekStart,\n todayIso,\n uniqueId,\n visuallyHidden,\n weekdayNames,\n type UniDate,\n type UniDateRange,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport type {\n UniCalendarMarker,\n UniCalendarMode,\n UniCalendarOptions,\n UniCalendarValue,\n} from './calendar.model';\n\n/** One rendered day cell — precomputed so the template stays declarative. */\ninterface CalendarCell {\n date: UniDate;\n day: number;\n outside: boolean;\n disabled: boolean;\n today: boolean;\n selected: boolean;\n inBand: boolean;\n tabIndex: number;\n ariaLabel: string;\n markers: UniCalendarMarker[];\n cellClass: string;\n dayClass: string;\n}\n\ninterface RangeBand {\n start: UniDate;\n end: UniDate;\n preview: boolean;\n}\n\n/**\n * Inline month calendar: single-date or start–end range selection, day\n * markers (availability dots), min/max fences and disabled dates. One tab\n * stop with a roving-tabindex `role=\"grid\"`; every day is a real button\n * named with its full date. Values are plain ISO strings (`'YYYY-MM-DD'`),\n * never `Date` objects, so bindings are timezone-free and serializable.\n * Selection and today colours come from the theme's `primary` role pair;\n * geometry and glyphs come from the `calendar` theme entry.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-calendar, Calendar',\n imports: [UniIconButtonComponent],\n templateUrl: './calendar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'calendar' }],\n host: { '[class]': 'className()', '(focusout)': 'onHostFocusOut($event)' },\n})\nexport class UniCalendarComponent\n extends BaseComponent<UniCalendarOptions>\n implements FormValueControl<UniCalendarValue>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniCalendarValue>();\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** `'single'` reads/writes a `UniDate`; `'range'` a `UniDateRange`. */\n mode = input<UniCalendarMode>('single');\n /** Shown month, `'YYYY-MM'` — two-way, so an app can drive \"jump to June\". */\n month = model<string>();\n /** Earliest selectable date (inclusive). */\n minDate = input<UniDate>();\n /** Latest selectable date (inclusive). */\n maxDate = input<UniDate>();\n /** Blocked days: a list of dates, or a predicate. */\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n /** Availability dots; `label` extends the day's accessible name. */\n markers = input<UniCalendarMarker[]>([]);\n /** BCP 47 tag; defaults to the document language, then the browser's. */\n locale = input<string>();\n /** First day of week, 0 = Sunday; defaults from the locale's week info. */\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n /** Names the grid when it stands alone (otherwise the heading names it). */\n ariaLabel = input<string>();\n /** Day geometry token; `sm`/`md`/`lg` map to the theme's `calendar` sizes. */\n override size = input<Size>('md');\n\n // --- Events (value/month changes flow through the models) -----------------\n /** Each committed day, including both ends of a range. */\n selected = output<UniDate>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly headingId = uniqueId('uni-calendar-heading');\n protected readonly srOnly = css(visuallyHidden);\n\n /** Pending range start — set by the first commit, cleared by the second. */\n protected readonly pendingStart = signal<UniDate | null>(null);\n /** Hover/focus candidate painting the preview band while a range is pending. */\n protected readonly previewDate = signal<UniDate | null>(null);\n /** Live-region text; selections are otherwise silent for a screen reader. */\n protected readonly announcement = signal('');\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly resolvedWeekStart = computed(\n () => this.weekStart() ?? localeWeekStart(this.resolvedLocale())\n );\n\n /** The month on screen: the `month` model, else the value's month, else today's. */\n protected readonly viewMonth = computed(\n () => this.month() ?? monthOf(this.anchorDate() ?? todayIso())\n );\n\n private readonly anchorDate = computed(() => {\n const value = this.value();\n return this.mode() === 'range'\n ? (value as UniDateRange | undefined)?.start\n : (value as UniDate | undefined);\n });\n\n /**\n * The roving-tabindex day. Re-derives when the view or value changes\n * (selected day in view → today in view → first enabled day); keyboard\n * navigation writes it directly.\n */\n protected readonly focusedDate = linkedSignal<UniDate>(() => this.pickFocus());\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly heading = computed(() =>\n formatMonthHeading(this.viewMonth(), this.resolvedLocale())\n );\n\n protected readonly weekdays = computed(() =>\n weekdayNames(\n this.resolvedLocale(),\n this.resolvedWeekStart(),\n this.componentOptions().weekdayFormat ?? 'short'\n )\n );\n\n private readonly disabledDateSet = computed(() => {\n const dates = this.disabledDates();\n return Array.isArray(dates) ? new Set(dates) : null;\n });\n\n private readonly markersByDate = computed(() => {\n const map = new Map<UniDate, UniCalendarMarker[]>();\n for (const marker of this.markers()) {\n const existing = map.get(marker.date);\n if (existing) existing.push(marker);\n else map.set(marker.date, [marker]);\n }\n return map;\n });\n\n /** The committed range, or the pending preview band. */\n private readonly rangeBand = computed<RangeBand | null>(() => {\n if (this.mode() !== 'range') return null;\n const pending = this.pendingStart();\n const preview = this.previewDate();\n if (pending && preview) {\n const [start, end] = preview < pending ? [preview, pending] : [pending, preview];\n return { start, end, preview: true };\n }\n if (pending) return { start: pending, end: pending, preview: true };\n const value = this.value() as UniDateRange | undefined;\n if (value?.start && value?.end) return { start: value.start, end: value.end, preview: false };\n return null;\n });\n\n protected isDayDisabled(date: UniDate): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && date < min) || (max && date > max)) return true;\n const dates = this.disabledDates();\n if (!dates) return false;\n const set = this.disabledDateSet();\n return set ? set.has(date) : (dates as (date: UniDate) => boolean)(date);\n }\n\n private isSelected(date: UniDate): boolean {\n if (this.mode() === 'single') return this.value() === date;\n const pending = this.pendingStart();\n if (pending) return pending === date;\n const value = this.value() as UniDateRange | undefined;\n return value?.start === date || value?.end === date;\n }\n\n /** The full render model: one precomputed cell per grid position. */\n protected readonly gridWeeks = computed<CalendarCell[][]>(() => {\n const locale = this.resolvedLocale();\n const band = this.rangeBand();\n const today = todayIso();\n const focused = this.focusedDate();\n const markers = this.markersByDate();\n const cellBase = this.cellClass();\n const dayBase = this.dayClass();\n const todayClass = this.todayClass();\n\n return buildMonthGrid(this.viewMonth(), this.resolvedWeekStart()).map((week) =>\n week.map((cell) => {\n const date = cell.date;\n const selected = !cell.outside && this.isSelected(date);\n const inBand = !cell.outside && !!band && date >= band.start && date <= band.end;\n const dayMarkers = cell.outside ? [] : (markers.get(date) ?? []).slice(0, 3);\n const markerLabel = dayMarkers\n .filter((marker) => marker.label)\n .map((marker) => marker.label)\n .join(', ');\n const isToday = date === today;\n return {\n date,\n day: Number(date.slice(8, 10)),\n outside: cell.outside,\n disabled: this.isDayDisabled(date),\n today: isToday,\n selected,\n inBand,\n tabIndex: date === focused && !cell.outside ? 0 : -1,\n ariaLabel:\n formatDate(date, locale, { dateStyle: 'full' }) + (markerLabel ? `, ${markerLabel}` : ''),\n markers: dayMarkers,\n cellClass: [\n cellBase,\n inBand && (band!.preview ? this.previewClass() : this.inRangeClass()),\n inBand && date === band!.start && this.bandStartClass(),\n inBand && date === band!.end && this.bandEndClass(),\n ]\n .filter(Boolean)\n .join(' '),\n dayClass: [dayBase, isToday && todayClass, selected && this.selectedClass()]\n .filter(Boolean)\n .join(' '),\n };\n })\n );\n });\n\n // --- Selection -------------------------------------------------------------\n\n protected select(date: UniDate): void {\n if (this.disabled() || this.isDayDisabled(date)) return;\n this.setViewMonth(monthOf(date));\n this.focusedDate.set(date);\n const locale = this.resolvedLocale();\n const full = (d: UniDate) => formatDate(d, locale, { dateStyle: 'full' });\n\n if (this.mode() === 'single') {\n this.value.set(date);\n this.announce(`${full(date)} selected.`);\n } else if (!this.pendingStart()) {\n this.pendingStart.set(date);\n this.previewDate.set(date);\n this.announce(`Start date ${full(date)}. Choose an end date.`);\n } else {\n let [start, end] = [this.pendingStart()!, date];\n if (end < start) [start, end] = [end, start]; // backwards commit swaps\n this.pendingStart.set(null);\n this.previewDate.set(null);\n this.value.set({ start, end });\n const days = inclusiveDayCount(start, end);\n this.announce(\n `Range selected, ${full(start)} to ${full(end)}. ${days} ${days === 1 ? 'day' : 'days'}.`\n );\n }\n this.selected.emit(date);\n }\n\n private cancelPending(): void {\n this.pendingStart.set(null);\n this.previewDate.set(null);\n this.announce('Range selection cancelled.');\n }\n\n // --- Navigation ------------------------------------------------------------\n\n protected onNav(direction: 1 | -1): void {\n this.setViewMonth(monthOf(addMonths(`${this.viewMonth()}-01`, direction)));\n }\n\n private setViewMonth(month: string): void {\n if (this.month() !== month) this.month.set(month);\n }\n\n /**\n * Move the roving focus. A landing on a disabled day keeps going in the\n * same direction until an enabled day; the min/max fence stops the caret,\n * it never wraps. Month edges never block — the grid follows.\n */\n private moveFocus(target: UniDate, direction: 1 | -1): void {\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && target < min) || (max && target > max)) return;\n let date = target;\n let guard = 0;\n while (this.isDayDisabled(date)) {\n date = addDays(date, direction);\n if ((min && date < min) || (max && date > max) || ++guard > 500) return;\n }\n this.setViewMonth(monthOf(date));\n this.focusedDate.set(date);\n if (this.pendingStart()) this.previewDate.set(date);\n this.focusDay(date);\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const focused = this.focusedDate();\n const week = (dayOfWeek(focused) - this.resolvedWeekStart() + 7) % 7;\n const handlers: Record<string, () => void> = {\n ArrowLeft: () => this.moveFocus(addDays(focused, -1), -1),\n ArrowRight: () => this.moveFocus(addDays(focused, 1), 1),\n ArrowUp: () => this.moveFocus(addDays(focused, -7), -1),\n ArrowDown: () => this.moveFocus(addDays(focused, 7), 1),\n Home: () => this.moveFocus(addDays(focused, -week), 1),\n End: () => this.moveFocus(addDays(focused, 6 - week), -1),\n PageUp: () => this.moveFocus(addMonths(focused, event.shiftKey ? -12 : -1), -1),\n PageDown: () => this.moveFocus(addMonths(focused, event.shiftKey ? 12 : 1), 1),\n Enter: () => this.select(focused),\n ' ': () => this.select(focused),\n };\n if (event.key === 'Escape') {\n // Only a pending range consumes Escape; otherwise it bubbles so a\n // hosting popover can light-dismiss.\n if (this.pendingStart()) {\n event.preventDefault();\n event.stopPropagation();\n this.cancelPending();\n }\n return;\n }\n const handler = handlers[event.key];\n if (handler) {\n event.preventDefault();\n handler();\n }\n }\n\n protected onDayHover(date: UniDate): void {\n if (this.pendingStart() && !this.isDayDisabled(date)) this.previewDate.set(date);\n }\n\n /** Focus the roving day — used by popup hosts when the calendar opens. */\n focusActiveDay(): void {\n this.focusDay(this.focusedDate());\n }\n\n protected onHostFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.host.nativeElement.contains(next)) this.touched.set(true);\n }\n\n private focusDay(date: UniDate): void {\n queueMicrotask(() =>\n this.host.nativeElement.querySelector<HTMLButtonElement>(`[data-date=\"${date}\"]`)?.focus()\n );\n }\n\n private pickFocus(): UniDate {\n const view = this.viewMonth();\n const anchor = this.anchorDate();\n if (anchor && monthOf(anchor) === view && !this.isDayDisabled(anchor)) return anchor;\n const today = todayIso();\n if (monthOf(today) === view && !this.isDayDisabled(today)) return today;\n return this.firstEnabledInView(view);\n }\n\n private firstEnabledInView(view: string): UniDate {\n const first = `${view}-01`;\n let date = first;\n for (let i = 0; i < 31 && monthOf(date) === view; i++) {\n if (!this.isDayDisabled(date)) return date;\n date = addDays(date, 1);\n }\n return first;\n }\n\n private announce(message: string): void {\n // Re-announce identical text by breaking the string equality.\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling ---------------------------------------------------------------\n\n private readonly daySize = computed(\n () => (this.componentTheme().sizes?.[this.size()] ?? {}) as StyleExpression\n );\n\n protected readonly className = computed(() =>\n css([(this.componentTheme().fixed ?? { display: 'inline-block' }) as StyleExpression])\n );\n\n protected readonly navClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n ...this.theme.gap('xs'),\n marginBottom: 4,\n })\n );\n\n protected readonly headingClass = computed(() =>\n css({ flex: 1, textAlign: 'center', ...this.theme.typeface('title-small') })\n );\n\n protected readonly gridClass = computed(() =>\n css({ display: 'grid', ...this.theme.gap(this.componentOptions().gap ?? 'xxs') })\n );\n\n protected readonly rowClass = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n justifyItems: 'center',\n ...this.theme.gap(this.componentOptions().gap ?? 'xxs'),\n })\n );\n\n protected readonly weekdayClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.daySize(),\n height: 'auto',\n ...this.theme.typeface(this.componentOptions().typeface ?? 'label'),\n ...this.theme.color('on-background-variant'),\n '& abbr': { textDecoration: 'none' },\n })\n );\n\n /** The gridcell — range bands paint here so they read as one bar. */\n protected readonly cellClass = computed(() => css({ position: 'relative', display: 'flex' }));\n\n protected readonly inRangeClass = computed(() =>\n css({ ...this.theme.backgroundColor('primary-container'), borderRadius: 0 })\n );\n\n protected readonly previewClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n backgroundColor: `color-mix(in srgb, ${colors['primary-container']} 55%, transparent)`,\n outline: `1px dashed ${colors['primary']}`,\n outlineOffset: -1,\n });\n });\n\n protected readonly bandStartClass = computed(() =>\n css({ ...this.theme.getRadiusLeft(this.componentOptions().dayBorderRadius ?? 'max') })\n );\n\n protected readonly bandEndClass = computed(() =>\n css({ ...this.theme.getRadiusRight(this.componentOptions().dayBorderRadius ?? 'max') })\n );\n\n protected readonly dayClass = computed(() => {\n const options = this.componentOptions();\n const colors = this.theme.colorPalette();\n return css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 0,\n padding: 0,\n background: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n ...this.theme.typeface(options.typeface ?? 'label'),\n ...this.daySize(),\n ...this.theme.radius(options.dayBorderRadius ?? 'max'),\n '&:hover:not(:disabled)': { ...this.theme.colorPair('primary-container') },\n ...this.theme.focusRing(),\n '&:disabled': {\n color: colors['on-disabled'],\n cursor: 'default',\n pointerEvents: 'none',\n },\n });\n });\n\n protected readonly todayClass = computed(() => {\n const colors = this.theme.colorPalette();\n // Outline (or dot), never fill — so today and selected can coincide and\n // both stay legible (WCAG 1.4.1: no state carried by colour alone).\n return (this.componentOptions().todayStyle ?? 'outline') === 'outline'\n ? css({ boxShadow: `inset 0 0 0 1.5px ${colors['primary']}` })\n : css({\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 3,\n left: '50%',\n transform: 'translateX(-50%)',\n width: 4,\n height: 4,\n borderRadius: 999,\n backgroundColor: colors['primary'],\n },\n });\n });\n\n protected readonly selectedClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n ...this.theme.colorPair('primary'),\n // A marker dot survives selection by switching to the on-colour.\n '& [data-dot]': { backgroundColor: colors['on-primary'] },\n });\n });\n\n protected readonly outsideDayClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.typeface(this.componentOptions().typeface ?? 'label'),\n ...this.daySize(),\n color: colors['on-disabled'],\n });\n });\n\n protected readonly dotsClass = computed(() =>\n css({\n position: 'absolute',\n bottom: 2,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n gap: 2,\n pointerEvents: 'none',\n })\n );\n\n /** One dot class per marker variant present, resolved from the palette. */\n protected readonly dotClasses = computed(() => {\n const colors = this.theme.colorPalette();\n const classes = new Map<Variant, string>();\n for (const marker of this.markers()) {\n const variant = marker.variant ?? 'primary';\n if (!classes.has(variant)) {\n classes.set(\n variant,\n css({ width: 4, height: 4, borderRadius: 999, backgroundColor: colors[variant] })\n );\n }\n }\n return classes;\n });\n\n protected dotClassFor(variant: Variant | undefined): string {\n return this.dotClasses().get(variant ?? 'primary') ?? '';\n }\n\n protected readonly showOutside = computed(() => this.componentOptions().showOutsideDays ?? false);\n}\n","<div [class]=\"navClass()\">\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().navPrevSymbol ?? 'chevron_left'\"\n [disable]=\"disabled()\"\n (click)=\"onNav(-1)\"\n >\n Previous month\n </button>\n <!-- aria-live so PageUp/Down narrates the new month without refocusing. -->\n <div [class]=\"headingClass()\" [id]=\"headingId\" aria-live=\"polite\">{{ heading() }}</div>\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().navNextSymbol ?? 'chevron_right'\"\n [disable]=\"disabled()\"\n (click)=\"onNav(1)\"\n >\n Next month\n </button>\n</div>\n\n<!-- One tab stop: the roving tabindex lives on the day buttons, and the grid\n itself only relays their bubbling keys (same delegation as tag-input). -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div\n role=\"grid\"\n [class]=\"gridClass()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabel() ? null : headingId\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onGridKeydown($event)\"\n>\n <div role=\"row\" [class]=\"rowClass()\">\n @for (weekday of weekdays(); track weekday.full) {\n <div role=\"columnheader\" [class]=\"weekdayClass()\">\n <abbr [attr.title]=\"weekday.full\">{{ weekday.label }}</abbr>\n </div>\n }\n </div>\n\n @for (week of gridWeeks(); track week[0].date) {\n <div role=\"row\" [class]=\"rowClass()\">\n @for (cell of week; track cell.date) {\n @if (cell.outside) {\n <!-- Outside days: hidden placeholders by default (geometry kept),\n muted and non-interactive under the showOutsideDays option. -->\n <div role=\"gridcell\" aria-hidden=\"true\" [class]=\"cell.cellClass\">\n @if (showOutside()) {\n <span [class]=\"outsideDayClass()\">{{ cell.day }}</span>\n }\n </div>\n } @else {\n <div\n role=\"gridcell\"\n [class]=\"cell.cellClass\"\n [attr.aria-selected]=\"cell.selected || cell.inBand ? true : null\"\n >\n <button\n type=\"button\"\n [class]=\"cell.dayClass\"\n [attr.data-date]=\"cell.date\"\n [tabindex]=\"cell.tabIndex\"\n [attr.aria-label]=\"cell.ariaLabel\"\n [attr.aria-current]=\"cell.today ? 'date' : null\"\n [disabled]=\"cell.disabled || disabled()\"\n (click)=\"select(cell.date)\"\n (mouseenter)=\"onDayHover(cell.date)\"\n >\n {{ cell.day }}\n @if (cell.markers.length) {\n <span [class]=\"dotsClass()\">\n @for (marker of cell.markers; track $index) {\n <span data-dot [class]=\"dotClassFor(marker.variant)\"></span>\n }\n </span>\n }\n </button>\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Selections and range progress are otherwise silent for a screen reader. -->\n<span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-content',\n imports: [],\n templateUrl: './card-content.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardContent' }],\n styleUrls: ['./card-content.component.scss'],\n})\nexport class UniCardContentComponent extends BaseComponent {}\n","<div [style]=\"style()\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ColorKey,\n OptionalDisplay,\n OptionalTextAlign,\n Typeface,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\n/**\n * Typeface defaults by host element, so semantic HTML and the type scale\n * reinforce each other: `<h1 uni-text>` is already headline-large.\n */\nconst TagTypefaces: Record<string, Typeface> = {\n h1: 'headline-large',\n h2: 'headline-medium',\n h3: 'headline-small',\n h4: 'title-large',\n h5: 'title-medium',\n h6: 'title-small',\n p: 'body-1-long',\n small: 'caption',\n figcaption: 'caption',\n blockquote: 'quote',\n label: 'label',\n};\n\n/**\n * The typography primitive, applied as an attribute to any element so\n * semantics stay yours. The attribute value is the typeface:\n * `<h1 uni-text=\"display-small\">`, `<span uni-text=\"caption\">`, dynamic via\n * `[uni-text]=\"role()\"`. With no value, the typeface is inferred from the\n * host element (h1 → headline-large, p → body-1-long, …), falling back to\n * `title-small`; the `typeface` input remains as an explicit override.\n */\n@Component({\n selector: '[uni-text]',\n imports: [],\n template: '<ng-content></ng-content>',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniTextComponent {\n theme = inject(ThemeService);\n private readonly tag = (inject(ElementRef).nativeElement as HTMLElement).tagName.toLowerCase();\n\n /** Typeface via the selector attribute: `uni-text=\"headline-large\"`. */\n readonly uniText = input<Typeface | ''>('', { alias: 'uni-text' });\n /** Explicit typeface; the attribute value wins when both are set. */\n typeface = input<Typeface | undefined>(undefined);\n color = input<ColorKey>();\n display = input<OptionalDisplay>();\n align = input<OptionalTextAlign>();\n nowrap = input<boolean>();\n maxWidth = input<number>();\n ellipsis = input<boolean>(false);\n\n protected readonly resolvedTypeface = computed<Typeface>(\n () => this.uniText() || this.typeface() || TagTypefaces[this.tag] || 'title-small'\n );\n\n protected readonly className = computed(() => {\n return css([\n {\n ...this.theme.typeface(this.resolvedTypeface()),\n ...this.theme.color(this.color()),\n display: this.display(),\n },\n this.align() && {\n textAlign: this.align(),\n },\n this.nowrap() && {\n whiteSpace: 'nowrap',\n },\n this.maxWidth() && {\n maxWidth: this.maxWidth(),\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'inline-block',\n },\n this.ellipsis() && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCardOptions } from './card.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card',\n imports: [],\n templateUrl: './card.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'card' }],\n})\nexport class UniCardComponent extends BaseComponent<UniCardOptions> {\n /**\n * Token-resolved frame (variant-named border primitive, radii, elevation)\n * under the merged theme style, so hand-authored fixed/variant styles from\n * older themes keep winning.\n */\n protected readonly cardStyle = computed(() => ({\n ...this.theme.border(this.componentOptions().border ?? this.variant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.style(),\n }));\n}\n","<div [style]=\"cardStyle()\">\n <ng-content></ng-content>\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniTextComponent } from '../../text';\nimport { UniCardComponent } from '../card.component';\nimport type { Typeface } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-header',\n imports: [UniTextComponent, NgClass],\n templateUrl: './card-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardHeader' }],\n styleUrls: ['./card-header.component.scss'],\n})\nexport class UniCardHeaderComponent extends BaseComponent {\n private card = inject(UniCardComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n title = input<string>('');\n titleTextRole = input<Typeface>('title-large');\n\n constructor() {\n super();\n\n // this.variant = this.card?.variant;\n }\n\n className = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n });\n}\n","<div [style]=\"style()\" [ngClass]=\"className\">\n <span uni-text [typeface]=\"titleTextRole()\">{{ title() }}</span>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniCheckboxOptions } from './checkbox.model';\n\n@Component({\n selector: 'uni-checkbox',\n imports: [UniTextComponent],\n templateUrl: './checkbox.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'checkbox' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniCheckboxComponent\n extends BaseComponent<UniCheckboxOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n /**\n * Mixed state for \"select all\"-style parent checkboxes. Cleared\n * automatically on the next user interaction, matching native behavior.\n */\n readonly indeterminate = model<boolean>(false);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.indeterminate.set(false);\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n protected readonly checkboxLabel = computed(() =>\n css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '&:hover .checkbox svg path': this.disabled()\n ? {}\n : {\n strokeDashoffset: 0,\n },\n\n '& .checkbox': {\n height: this.componentOptions().size,\n width: this.componentOptions().size,\n },\n\n '& .checkbox svg': {\n display: 'block',\n },\n\n '& .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.componentOptions().boxColor ?? 'surface'),\n stroke: this.getThemeColor(this.variant()),\n strokeWidth: 2,\n rx: this.componentOptions().borderRadius || 2,\n ry: this.componentOptions().borderRadius || 2,\n transition: 'all 0.2s ease',\n },\n\n // Check/dash draw on the variant-filled box, so they wear its on-color.\n '& .checkbox svg .checkbox-check': {\n fill: 'none',\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n strokeDasharray: 18,\n strokeDashoffset: 18,\n transition: 'all 0.5s ease',\n },\n\n '& .checkbox svg .checkbox-dash': {\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n opacity: 0,\n transition: 'opacity 0.2s ease',\n },\n })\n );\n\n protected readonly checkboxInput = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .checkbox': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-check': {\n strokeDashoffset: 0,\n },\n\n '&:indeterminate + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:indeterminate + .checkbox svg .checkbox-dash': {\n opacity: 1,\n },\n\n '&:disabled + .checkbox': {\n cursor: 'not-allowed',\n },\n\n // The shared, themable focus indicator, keyed off the hidden input's\n // focus. The ring sits out from the box, so its radius carries an extra\n // 4px to round proportionally (as the original hand-drawn ring did) —\n // without it the corners gap away from the box.\n '&:focus + .checkbox': {\n ...this.theme.focusRingStyle(\n this.getThemeColor(this.variant()),\n this.componentOptions().focusRingGap\n ),\n borderRadius: `${(Number(this.componentOptions().borderRadius) || 2) + 2}px`,\n },\n })\n );\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n\n /** The content color paired with a variant fill (on-primary, on-warn, …). */\n getOnColor(variant: ColorToken) {\n const colors = this.theme.colors();\n return colors[`on-${variant}`] ?? colors['on-primary'];\n }\n}\n","<label [class]=\"checkboxLabel()\">\n <input\n type=\"checkbox\"\n [class]=\"checkboxInput()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"checkbox\">\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <rect class=\"checkbox-box\" x=\"1\" y=\"1\" width=\"18\" height=\"18\"></rect>\n <polyline class=\"checkbox-check\" points=\"4 11 8 15 16 6\"></polyline>\n <line class=\"checkbox-dash\" x1=\"5\" y1=\"10\" x2=\"15\" y2=\"10\"></line>\n </svg>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniRecordDatasource, UniServerSideDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniCenterComponent, UniRowComponent } from '../layout';\nimport type { UniDataSearchOptions } from './data-search.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-data-search',\n imports: [UniRowComponent, UniIconButtonComponent, UniIconComponent, UniCenterComponent],\n templateUrl: './data-search.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataSearch' }],\n})\nexport class UniDataSearchComponent<T> extends BaseComponent<UniDataSearchOptions> {\n datasource = input<UniDatasource<T>>();\n placeholder = input<string>('Search');\n fields = input<string[]>();\n\n searchValue = signal('');\n\n inputClassName!: string;\n\n constructor() {\n super();\n\n effect(() => {\n this.inputClassName = css({\n border: 'none',\n padding: 0,\n fontSize: 16,\n flexGrow: 1,\n height: 18,\n\n '&:focus-visible': {\n outline: 'none',\n },\n\n '&::placeholder': {\n ...this.theme.color(this.componentOptions().placeholderColor),\n },\n });\n });\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchValue.set(value);\n this.filterData(value);\n }\n\n filterData(value: string) {\n const datasource = this.datasource();\n if (!datasource) return;\n\n const fields = this.fields();\n\n if (datasource instanceof UniRecordDatasource) {\n // Client-side filtering with predicate function\n datasource.setFilter((object) => {\n let searchObject = object;\n if (fields && fields.length > 0) {\n searchObject = pick(object as Record<string, unknown>, fields) as T;\n }\n\n return Object.values(searchObject as object)\n .join(' ')\n .toLowerCase()\n .includes(value.toLowerCase());\n });\n } else if (datasource instanceof UniServerSideDatasource) {\n // Server-side filtering with filter object\n const filterObject: Record<string, unknown> = {};\n\n if (fields && fields.length > 0) {\n // Apply search to specific fields\n fields.forEach((field) => {\n filterObject[field] = value;\n });\n } else {\n // Generic search filter\n filterObject['search'] = value;\n }\n\n datasource.setFilter(filterObject);\n }\n }\n\n clearFilter() {\n const datasource = this.datasource();\n if (!datasource) return;\n\n if (datasource instanceof UniRecordDatasource) {\n datasource.setFilter(() => true);\n } else if (datasource instanceof UniServerSideDatasource) {\n datasource.clearFilter();\n }\n\n this.searchValue.set('');\n }\n}\n\nfunction pick(obj: Record<string, unknown>, keys: string[]) {\n return keys.reduce<Record<string, unknown>>((acc, key) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\n","<div\n row-layout\n alignItems=\"center\"\n [border]=\"componentOptions().border\"\n [height]=\"26\"\n [borderRadius]=\"componentOptions().borderRadius\"\n paddingLeft=\"xs\"\n>\n <div center-layout [height]=\"18\" [width]=\"18\" paddingRight=\"xs\">\n <uni-icon name=\"search\" />\n </div>\n <input\n type=\"text\"\n (input)=\"onInput($event)\"\n [class]=\"inputClassName\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchValue()\"\n />\n <div row-layout alignItems=\"center\" [width]=\"22\">\n @if (!!searchValue()) {\n <button icon-button (click)=\"clearFilter()\" symbolName=\"close\" size=\"sm\">Clear Search</button>\n }\n </div>\n</div>\n","/**\n * UniDataSearchComponent Barrel File\n *\n * This file exports all public-facing elements of the data-search component.\n */\n\nexport { UniDataSearchComponent } from './data-search.component';\nexport type { UniDataSearchOptions } from './data-search.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport type {\n ContainerColorToken,\n OptionalSize,\n Radius,\n Variant,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport type { ScrollbarAppearance } from './scroll-area.types';\n\ntype OptionalValue = string | number | undefined;\n\n/**\n * Native scroll area with theme-driven scrollbar styling.\n *\n * Scrollbars are styled entirely through Emotion-generated CSS:\n * `::-webkit-scrollbar` rules cover Chromium/Safari, with a\n * `scrollbar-width`/`scrollbar-color` fallback for Firefox.\n */\n@Component({\n selector: '[uni-scroll-area], [scroll-area]',\n imports: [],\n template: `<div #viewport [class]=\"viewportClassName()\">\n <div\n #content\n [class]=\"contentClassName()\"\n [class.isVerticallyScrollable]=\"isVerticallyScrollable()\"\n >\n <ng-content></ng-content>\n </div>\n </div>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniScrollAreaComponent {\n theme = inject(ThemeService);\n\n isVerticallyScrollable = signal<boolean>(false);\n\n viewport = viewChild.required<ElementRef<HTMLDivElement>>('viewport');\n content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n color = input<ContainerColorToken>();\n borderRadius = input<Radius>('sm');\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<Variant>();\n height = input<OptionalValue>();\n width = input<OptionalValue>();\n appearance = input<ScrollbarAppearance>('compact');\n autoHeightDisabled = input<boolean>(false);\n verticalScrollPadding = input<number>(29);\n\n scrollable = output<boolean>();\n\n public scrollToBottom() {\n const viewport = this.viewport().nativeElement;\n viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' });\n }\n\n public scrollToTop() {\n this.viewport().nativeElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n overflow: 'hidden',\n height: this.height(),\n width: this.width(),\n\n ...this.theme.colorPair(this.color()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.border(this.border()),\n });\n });\n\n protected viewportClassName = computed(() => {\n const palette = this.theme.colors();\n const thumbColor = palette['on-primary-surface'];\n const trackColor = palette['primary-surface'];\n const thickness = this.appearance() === 'standard' ? 13 : 8;\n\n return css([\n {\n height: '100%',\n width: '100%',\n overflow: 'auto',\n\n '&::-webkit-scrollbar': {\n width: thickness,\n height: thickness,\n },\n\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: thumbColor,\n borderRadius: 7,\n border: `3px solid ${trackColor}`,\n boxSizing: 'border-box',\n },\n\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n },\n\n // Firefox has no ::-webkit-scrollbar support; fall back to the\n // standard scrollbar properties there.\n '@supports not selector(::-webkit-scrollbar)': {\n scrollbarWidth: this.appearance() === 'standard' ? 'auto' : 'thin',\n scrollbarColor: `${thumbColor} ${trackColor}`,\n },\n },\n this.appearance() === 'standard' && {\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n ...this.theme.border('quaternary'),\n },\n },\n ]);\n });\n\n protected contentClassName = computed(() =>\n css({\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n\n '&.isVerticallyScrollable': {\n paddingRight: this.verticalScrollPadding(),\n },\n })\n );\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const viewport = this.viewport().nativeElement;\n const content = this.content().nativeElement;\n\n const updateScrollable = () => {\n const scrollable = viewport.scrollHeight > viewport.clientHeight;\n if (scrollable !== this.isVerticallyScrollable()) {\n this.isVerticallyScrollable.set(scrollable);\n this.scrollable.emit(scrollable);\n }\n };\n\n const observer = new ResizeObserver(updateScrollable);\n observer.observe(viewport);\n observer.observe(content);\n destroyRef.onDestroy(() => observer.disconnect());\n\n updateScrollable();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource, SortDirection } from '../../cdk';\nimport { UniSymbolComponent } from '../symbol/symbol.component';\n\n@Component({\n selector: 'uni-sort-header',\n imports: [UniSymbolComponent],\n templateUrl: './sort-header.component.html',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSortHeaderComponent<T> {\n column = input<keyof T>();\n datasource = input<UniDatasource<T>>();\n\n // A real <button> makes sorting keyboard-operable (Enter/Space) for free\n protected readonly buttonClass = css({\n all: 'unset',\n cursor: 'pointer',\n display: 'inline-block',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 2,\n },\n });\n\n direction = computed(() => {\n const ds = this.datasource();\n if (!ds) return 'indet';\n\n return ds.sortColumn() === this.column() ? ds.sortDirection() : 'indet';\n });\n\n protected readonly className = computed(() => {\n return css({\n cursor: 'pointer',\n position: 'relative',\n height: 24,\n\n '& .sort-icon': {\n position: 'absolute',\n right: -24,\n top: -4,\n height: 24,\n width: 24,\n\n transition: 'all 350ms ease-in-out',\n transform: 'rotate(0)',\n },\n\n '& .sort-icon.asc': {\n transform: 'rotate(-180deg)',\n },\n\n '& .sort-icon.indet': {\n opacity: 0,\n transform: 'rotate(0)',\n },\n });\n });\n\n cycleSort() {\n const cycle: SortDirection[] = ['asc', 'desc', 'indet'];\n this.sortDatasource(cycle[cycle.indexOf(this.direction()) + 1] || cycle[0]);\n }\n\n sortDatasource(direction: SortDirection) {\n this.datasource()?.sortRecords({\n column: this.column(),\n direction,\n });\n }\n}\n","<button type=\"button\" [class]=\"buttonClass\" (click)=\"cycleSort()\">\n <ng-content></ng-content>\n <div class=\"sort-icon\" [class]=\"direction()\">\n <uni-symbol name=\"arrow_upward\" />\n </div>\n</button>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n output,\n signal,\n type TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniServerSideDatasource } from '../../cdk';\nimport { fadeIn, Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent, UniCenterComponent } from '../layout';\nimport { UniScrollAreaComponent } from '../scroll-area/scroll-area.component';\nimport { UniSortHeaderComponent } from '../sort-header/sort-header.component';\nimport { UniTextComponent } from '../text/text.component';\nimport { ColumnDefinition, type UniDataTableOptions } from './data-table.models';\n\n@Component({\n selector: 'uni-data-table',\n imports: [\n NgTemplateOutlet,\n UniBoxComponent,\n UniScrollAreaComponent,\n UniTextComponent,\n UniSortHeaderComponent,\n UniIconComponent,\n UniCenterComponent,\n ],\n templateUrl: './data-table.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataTable' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions> {\n datasource = input.required<UniDatasource<T>>();\n columns = input.required<ColumnDefinition<T>[]>();\n\n detailRowTemplate = input<TemplateRef<{ $implicit: T; index: number }>>();\n expandedIndex = signal<number | null>(null);\n\n useMultiSelect = input<boolean>(false);\n useRowClick = input<boolean>(true);\n highlight? = input<(row: T) => boolean>();\n\n height = input<string>();\n scrollable = signal(false);\n\n loadingOverlayClass = css({\n animation: 'fadeIn 350ms ease-in-out',\n '@keyframes fadeIn': { ...fadeIn },\n });\n\n rowSelect = output<T>();\n rowClick = output<T>();\n\n protected readonly tableClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n width: '100%',\n borderSpacing: 0,\n })\n );\n\n protected readonly headerClass = computed(() =>\n css({\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly footerClass = computed(() =>\n css({\n borderTop: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly thClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().thColor),\n\n position: 'sticky',\n top: 0,\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n\n ...this.theme.padding(this.componentOptions().thPadding),\n\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().thVerticalBorder),\n },\n '&:last-child.scrollable': {\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n },\n })\n );\n\n protected readonly tdClass = computed(() =>\n css([\n {\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().tdVerticalBorder),\n },\n '&:last-child.scrollable': {\n // The last scrollable column allows space for the scrollbar.\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n ...this.theme.colorPair(this.componentOptions().tdStickyColor),\n },\n '&:not(.template)': {\n // Allow templates to define their own styles\n ...this.theme.padding(this.componentOptions().tdPadding),\n },\n },\n ])\n );\n\n protected readonly trClass = computed(() =>\n css(\n {\n '& td': {\n ...this.theme.backgroundColor('transparent'),\n transition: 'all 0.28s ease',\n },\n ':not(:last-child) td': {\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n },\n this.useRowClick() && {\n '&:hover td': {\n ...this.theme.backgroundColor(this.componentOptions().rowHoverColor),\n cursor: 'pointer',\n },\n }\n )\n );\n\n protected readonly detailRowClass = computed(() =>\n css({\n display: 'table-row',\n visibility: 'hidden',\n '&.expanded': {\n visibility: 'visible',\n },\n '& td': {\n padding: 0,\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n '& td .detail-content-wrapper': {\n display: 'grid',\n gridTemplateRows: '0fr',\n transition: 'grid-template-rows 0.3s ease',\n overflow: 'hidden',\n\n '& .detail-inner': {\n minHeight: 0,\n },\n },\n '&.expanded td .detail-content-wrapper': {\n gridTemplateRows: '1fr',\n },\n })\n );\n\n // Loading state detection\n isLoading = linkedSignal(() => {\n const datasource = this.datasource();\n if (datasource && datasource instanceof UniServerSideDatasource) {\n // For server-side datasource, use the built-in loading state\n return datasource.isLoading();\n } else {\n // For client-side datasource, no loading state needed\n return false;\n }\n });\n\n toggleRow(index: number) {\n this.expandedIndex.update((current) => (current === index ? null : index));\n }\n\n handleRowClick(row: T, index: number) {\n this.rowClick.emit(row);\n\n this.toggleRow(index);\n }\n\n /** aria-sort value for a column header, or null when the column is unsorted. */\n protected ariaSort(column: ColumnDefinition<T>): 'ascending' | 'descending' | null {\n const ds = this.datasource();\n if (!ds || ds.sortColumn() !== column.columnDef) return null;\n const direction = ds.sortDirection();\n return direction === 'asc' ? 'ascending' : direction === 'desc' ? 'descending' : null;\n }\n\n isHighlighted(row: T) {\n const callback = this.highlight && this.highlight();\n if (!callback) return false;\n return callback(row);\n }\n\n protected readonly String = String;\n\n handleScrollable(scrollable: boolean) {\n this.scrollable.set(scrollable);\n }\n\n getBorder(name: string | undefined) {\n return name ? this.theme.theme().borders[name] : undefined;\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div\n box-layout\n [color]=\"componentOptions().color\"\n [border]=\"componentOptions().border\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [elevation]=\"componentOptions().elevation\"\n overflow=\"hidden\"\n >\n <div\n box-layout\n [padding]=\"componentOptions().headerPadding\"\n [color]=\"componentOptions().headerColor\"\n [class]=\"headerClass()\"\n >\n <ng-content select=\"data-table-header\"></ng-content>\n </div>\n\n <div box-layout [height]=\"height()\" position=\"relative\" [attr.aria-busy]=\"isLoading()\">\n <div scroll-area [verticalScrollPadding]=\"0\" (scrollable)=\"handleScrollable($event)\">\n <table [class]=\"tableClass()\">\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th\n scope=\"col\"\n [attr.aria-sort]=\"ariaSort(column)\"\n [class]=\"thClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [style.text-align]=\"column.textAlign\"\n >\n <uni-sort-header [datasource]=\"datasource()\" [column]=\"column.columnDef\">\n <span uni-text [typeface]=\"componentOptions().thTextRole\">{{ column.header }}</span>\n </uni-sort-header>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (record of ds.records(); track record; let i = $index) {\n <tr\n [class]=\"trClass()\"\n [attr.tabindex]=\"useRowClick() ? 0 : null\"\n (click)=\"handleRowClick(record, $index)\"\n (keydown.enter)=\"useRowClick() && handleRowClick(record, $index)\"\n (keydown.space)=\"\n useRowClick() && handleRowClick(record, $index);\n useRowClick() && $event.preventDefault()\n \"\n >\n @for (column of columns(); track column) {\n <td\n [class]=\"tdClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [class.template]=\"!!column.template\"\n [style.text-align]=\"column.textAlign\"\n >\n @if (column.template) {\n <ng-container\n [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"record\"\n ></ng-container>\n } @else {\n <span uni-text [typeface]=\"componentOptions().tdTextRole\">\n @if (!column.cell) {\n {{ record[column.columnDef] }}\n } @else {\n {{ column.cell(record) }}\n }\n </span>\n }\n </td>\n }\n </tr>\n @if (detailRowTemplate()) {\n <!-- Collapsed detail rows are inert: invisible to screen\n readers and unreachable by keyboard until expanded -->\n <tr\n [class]=\"detailRowClass()\"\n [class.expanded]=\"expandedIndex() === $index\"\n [attr.inert]=\"expandedIndex() === $index ? null : ''\"\n >\n <td [attr.colspan]=\"columns().length\">\n <div class=\"detail-content-wrapper\">\n <div class=\"detail-inner\">\n <ng-container\n [ngTemplateOutlet]=\"detailRowTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: record,\n index: i,\n }\"\n ></ng-container>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Loading Overlay -->\n @if (isLoading()) {\n <div\n uni-center-layout\n role=\"status\"\n aria-label=\"Loading\"\n position=\"absolute\"\n [inset]=\"0\"\n [backgroundColor]=\"componentOptions().loadingOverlayColor\"\n [class]=\"loadingOverlayClass\"\n zIndex=\"overlay\"\n >\n <!-- Loading Spinner -->\n <div\n uni-box-layout\n [height]=\"componentOptions().loadingSpinnerSize\"\n [width]=\"componentOptions().loadingSpinnerSize\"\n >\n <uni-icon name=\"spinner\" [color]=\"componentOptions().loadingSpinnerColor\" />\n </div>\n </div>\n }\n </div>\n\n <div\n box-layout\n [padding]=\"componentOptions().footerPadding\"\n [color]=\"componentOptions().footerColor\"\n [class]=\"footerClass()\"\n >\n <ng-content select=\"data-table-footer\"></ng-content>\n </div>\n </div>\n}\n","/**\n * UniDataTableComponent Barrel File\n *\n * This file exports all public-facing elements of the data-table component.\n */\n\nexport { UniDataTableComponent } from './data-table.component';\nexport type { ColumnDefinition, UniDataTableOptions } from './data-table.models';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniBoxComponent } from '../layout';\nimport type { UniDropdownOptions } from './dropdown.model';\nimport type {\n Border,\n ContainerColorToken,\n NullableSize,\n Radius,\n Shadow,\n} from '@uni-design-system/uni-core';\nimport {\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type AnchorOffset,\n type Placement,\n} from '../../cdk';\n\nexport type AriaHasPopup = 'menu' | 'listbox' | 'dialog' | 'grid' | 'tree' | 'true';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-dropdown',\n imports: [UniBoxComponent],\n template: `\n <!-- 1. The native 'popover' attribute brings it to the top layer with native light-dismiss -->\n <div #dropdown popover=\"auto\" [id]=\"popoverId\" [class]=\"dropdownClass()\">\n <div\n box-layout\n [border]=\"border() ?? componentOptions().border\"\n [borderRadius]=\"borderRadius() ?? componentOptions().borderRadius\"\n [paddingVertical]=\"paddingVertical()\"\n [paddingHorizontal]=\"paddingHorizontal()\"\n [color]=\"color() ?? componentOptions().color\"\n [shadow]=\"shadow() ?? componentOptions().shadow\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dropdown' }],\n})\nexport class UniDropdownComponent\n extends BaseComponent<UniDropdownOptions>\n implements OnInit, OnDestroy\n{\n private renderer = inject(Renderer2);\n private delay = 100;\n\n // Reactively track visibility status using Signals\n showing = signal<boolean>(false);\n\n trigger = input.required<HTMLElement>();\n placement = input<Placement>('bottom-start');\n offset = input<AnchorOffset>({ mainAxis: 4, alignmentAxis: 12 });\n\n /** CSS anchor-name linking the trigger to the popover panel. */\n private readonly anchorName = newAnchorName();\n\n /**\n * Value for aria-haspopup on the trigger, describing what the popover\n * contains (e.g. 'menu' for Menu, 'dialog' for rich content). When unset,\n * only aria-expanded/aria-controls are managed.\n */\n ariaHasPopup = input<AriaHasPopup | null>(null);\n\n /** Document-unique id of the popover element, for aria-controls wiring. */\n readonly popoverId = uniqueId('uni-dropdown');\n\n paddingVertical = input<NullableSize>();\n paddingHorizontal = input<NullableSize>();\n\n // Per-instance panel-chrome overrides; undefined falls back to the theme's\n // `dropdown` options, so hosts like uni-menu can restyle their panel\n // without forking the shared dropdown entry.\n border = input<Border | undefined>();\n borderRadius = input<Radius | undefined>();\n shadow = input<Shadow | undefined>();\n color = input<ContainerColorToken | undefined>();\n\n dropdownShowing = output<boolean>();\n dropdownHiding = output<boolean>();\n\n @ViewChild('dropdown', { static: true })\n dropdownRef!: ElementRef<HTMLDivElement>;\n\n private get _trigger(): HTMLElement {\n return this.trigger();\n }\n private get _dropdown(): HTMLDivElement {\n return this.dropdownRef.nativeElement;\n }\n\n private transformOriginMap: Record<Placement, string> = {\n top: 'bottom center',\n right: 'center left',\n bottom: 'top center',\n left: 'center right',\n 'top-start': 'bottom left',\n 'top-end': 'bottom right',\n 'right-start': 'top left',\n 'right-end': 'bottom left',\n 'bottom-start': 'top left',\n 'bottom-end': 'top right',\n 'left-start': 'top right',\n 'left-end': 'bottom right',\n };\n\n dropdownClass = computed(() => {\n const currentPlacement = this.placement();\n\n return css([\n {\n // Reset browser agent default popover styles\n border: 'none',\n background: 'transparent',\n padding: 0,\n overflow: 'visible',\n width: 'max-content',\n\n // Native anchor positioning: the browser keeps the panel attached to\n // the trigger (no scroll/resize listeners needed)\n ...anchorStyles(this.anchorName, currentPlacement, this.offset()),\n\n // 2. Animate discrete properties across top layer layout contexts\n transitionProperty: 'transform, opacity, display, overlay',\n transitionDuration: `${this.delay}ms`,\n transitionTimingFunction: 'linear',\n transitionBehavior: 'allow-discrete',\n\n // Hidden State (Closed)\n opacity: 0,\n transform: 'scale(0.8)',\n transformOrigin: this.transformOriginMap[currentPlacement],\n\n // 3. Active state styling controlled via the native browser pseudo-class\n ['&:popover-open']: {\n opacity: 1,\n transform: 'scale(1)',\n },\n\n // 4. Starting-style rules what properties animate *from* when transitioning in\n ['@starting-style']: {\n ['&:popover-open']: {\n opacity: 0,\n transform: 'scale(0.8)',\n },\n },\n },\n ]);\n });\n\n /** The element that receives focus and carries the ARIA popup state. */\n private get _focusTarget(): HTMLElement {\n return resolveFocusTarget(this._trigger);\n }\n\n ngOnInit(): void {\n // Single native click binding to manage open/close commands\n this.renderer.listen(this._trigger, 'click', (e: Event) => {\n e.stopPropagation();\n this.toggleDropdown();\n });\n\n // Anchor the popover panel to the trigger element\n this.renderer.setStyle(this._trigger, 'anchor-name', this.anchorName);\n\n // Wire the ARIA popup contract onto the focusable trigger element\n const focusTarget = this._focusTarget;\n this.renderer.setAttribute(focusTarget, 'aria-expanded', 'false');\n this.renderer.setAttribute(focusTarget, 'aria-controls', this.popoverId);\n if (this.ariaHasPopup()) {\n this.renderer.setAttribute(focusTarget, 'aria-haspopup', this.ariaHasPopup()!);\n }\n\n // Sync state if user invokes light-dismiss via outside click or Escape key\n this.renderer.listen(this._dropdown, 'toggle', (event: any) => {\n const isOpened = event.newState === 'open';\n this.showing.set(isOpened);\n this.renderer.setAttribute(this._focusTarget, 'aria-expanded', `${isOpened}`);\n\n if (isOpened) {\n this.dropdownShowing.emit(true);\n } else {\n this.dropdownHiding.emit(true);\n this.restoreFocus();\n }\n });\n }\n\n /**\n * Returns focus to the trigger when the popover closes while focus was\n * inside it (or was dropped on <body> by the top layer closing), so\n * keyboard users are never stranded (WCAG 2.4.3).\n */\n private restoreFocus() {\n const active = document.activeElement;\n if (active === document.body || (active && this._dropdown.contains(active))) {\n this._focusTarget.focus();\n }\n }\n\n toggleDropdown() {\n if (this.showing()) {\n this._dropdown.hidePopover();\n } else {\n this._dropdown.showPopover();\n }\n }\n\n hideDropdown() {\n this._dropdown.hidePopover();\n }\n\n ngOnDestroy() {\n try {\n this._dropdown.hidePopover();\n } catch {\n // popover was already closed or detached\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniRowComponent } from '../layout';\nimport type { UniInputBoxOptions } from './input-box.model';\n\n@Component({\n selector: 'uni-input-box',\n imports: [UniRowComponent],\n templateUrl: './input-box.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'input' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniInputBoxComponent extends BaseComponent<UniInputBoxOptions> {\n protected readonly className = css({ display: 'contents' });\n\n disabled = input<boolean>(false);\n error = input<boolean>(false);\n minWidth = input<string>('0');\n /** Override the themed field height, e.g. `'auto'` for multi-line fields. */\n height = input<string | number | undefined>(undefined);\n\n protected readonly color = computed(() =>\n this.error() ? this.componentOptions().errorColor : this.componentOptions().color\n );\n\n protected readonly border = computed(() =>\n this.error() ? this.componentOptions().errorBorder : this.componentOptions().border\n );\n\n protected readonly shadow = computed(() =>\n this.error() ? this.componentOptions().errorShadow : this.componentOptions().shadow\n );\n\n protected readonly inputBoxClass = computed(() =>\n css([\n this.disabled() && {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n cursor: 'not-allowed !important',\n },\n {\n '& input, select, textarea': {\n ...removeInputPlatformStyling,\n height: '100%',\n ...this.theme.paddingLeft(this.componentOptions().paddingLeft),\n ...this.theme.color(this.componentOptions().textColor),\n ...this.theme.typeface(this.componentOptions().typeFace),\n },\n\n // Multi-line fields size themselves (rows/resize), not from the box.\n '& textarea': {\n height: 'auto',\n ...this.theme.paddingTop('xs'),\n ...this.theme.paddingBottom('xs'),\n },\n\n '&:has(input:disabled, select:disabled, textarea:disabled)': {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n },\n\n '& input:disabled, select:disabled, textarea:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '&:has(input:focus, select:focus, textarea:focus)': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n // Optional focus chrome (border/ring/background). It yields to the\n // error state, so a flagged field stays visibly flagged while the\n // user is in it correcting the value.\n ...(this.error()\n ? {}\n : {\n ...this.theme.border(this.componentOptions().focusBorder),\n ...this.theme.boxShadow(this.componentOptions().focusShadow),\n ...this.theme.backgroundColor(this.componentOptions().focusColor),\n }),\n },\n },\n ])\n );\n}\n","<div\n row-layout\n alignItems=\"center\"\n [height]=\"height() ?? componentOptions().height\"\n [color]=\"color()\"\n [border]=\"border()\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [shadow]=\"shadow()\"\n [minWidth]=\"minWidth()\"\n [class]=\"inputBoxClass()\"\n position=\"relative\"\n>\n <ng-content></ng-content>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n addDays,\n formatDate,\n localeDatePlaceholder,\n monthOf,\n parseDateText,\n todayIso,\n visuallyHidden,\n type UniDate,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCalendarComponent } from '../calendar/calendar.component';\nimport type { UniCalendarMarker } from '../calendar/calendar.model';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniDateInputOptions, UniDateInputRejection } from './date-input.model';\n\n/**\n * Date field with free-typed parsing and a popup calendar. Type `aug 20`,\n * `8/20/2026` or `2026-08-20`, or pick from the grid — the form gets the\n * same canonical `'YYYY-MM-DD'` string either way. Parsing is `Intl`-driven\n * (locale digit order and month names, never hardcoded); unreadable text\n * stays in the field, flagged, with a `rejected` event. The popup is a\n * native popover hosting the same `uni-calendar` an app could render inline.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-date-input, DateInput',\n imports: [\n NgTemplateOutlet,\n UniCalendarComponent,\n UniDropdownComponent,\n UniIconButtonComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './date-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dateInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniDateInputComponent\n extends BaseComponent<UniDateInputOptions>\n implements FormValueControl<UniDate | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniDate | undefined>();\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** Accessible name for the field, e.g. \"Appointment date\". */\n label = input.required<string>();\n /** Defaults to the locale's digit pattern, e.g. `MM/DD/YYYY`. */\n placeholder = input<string>();\n /** How the committed value renders, e.g. `{ dateStyle: 'long' }`. */\n displayFormat = input<Intl.DateTimeFormatOptions>({ dateStyle: 'medium' });\n /** BCP 47 tag; defaults to the document language, then the browser's. */\n locale = input<string>();\n commitOnBlur = input(true);\n /** Custom parser, replacing the built-in ISO/locale/month-name parsing. */\n parse = input<(raw: string, locale: string) => UniDate | null>();\n /** Renders without its own input-box chrome, for composers like uni-date-time-input. */\n embedded = input(false);\n\n // --- Forwarded to the popup calendar --------------------------------------\n minDate = input<UniDate>();\n maxDate = input<UniDate>();\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n markers = input<UniCalendarMarker[]>([]);\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n\n // --- Events ----------------------------------------------------------------\n /** Popup shown. */\n opened = output<void>();\n /** Popup hidden. */\n closed = output<void>();\n /** A typed commit was refused; the raw text stays in the field. */\n rejected = output<UniDateInputRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('field');\n // #toggle sits on the icon-button component, so read the element explicitly.\n private readonly toggleRef = viewChild('toggle', { read: ElementRef });\n private readonly popupRef = viewChild<ElementRef<HTMLElement>>('popupDialog');\n private readonly dropdown = viewChild(UniDropdownComponent);\n private readonly calendar = viewChild(UniCalendarComponent);\n\n protected readonly srOnly = css(visuallyHidden);\n /** A refused commit — styles the field and sets aria-invalid until edited. */\n protected readonly draftInvalid = signal(false);\n protected readonly announcement = signal('');\n\n protected readonly toggleElement = computed(() => this.toggleRef()?.nativeElement);\n protected readonly popupOpen = computed(() => this.dropdown()?.showing() ?? false);\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly displayText = computed(() => {\n const value = this.value();\n return value ? formatDate(value, this.resolvedLocale(), this.displayFormat()) : '';\n });\n\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? localeDatePlaceholder(this.resolvedLocale())\n );\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly toggleLabel = computed(() => {\n const value = this.value();\n return value\n ? `Change date, ${formatDate(value, this.resolvedLocale(), { dateStyle: 'full' })}`\n : 'Choose date';\n });\n\n // --- Committing -------------------------------------------------------------\n\n private fullDate(date: UniDate): string {\n return formatDate(date, this.resolvedLocale(), { dateStyle: 'full' });\n }\n\n private isDayBlocked(date: UniDate): boolean {\n const dates = this.disabledDates();\n if (!dates) return false;\n return Array.isArray(dates) ? dates.includes(date) : dates(date);\n }\n\n protected setValue(date: UniDate | undefined, silent = false): void {\n this.value.set(date);\n this.draftInvalid.set(false);\n this.setFieldText(this.displayText());\n if (!silent) this.announce(date ? `${this.fullDate(date)}.` : 'Date cleared.');\n }\n\n private refuse(raw: string, reason: UniDateInputRejection['reason']): void {\n this.draftInvalid.set(true);\n const message = {\n unparseable: `Couldn't read “${raw}” as a date.`,\n 'out-of-range': `${raw} is outside the allowed dates.`,\n disabled: `${raw} isn't available.`,\n }[reason];\n this.announce(message);\n this.rejected.emit({ raw, reason });\n }\n\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) {\n this.setValue(undefined);\n return true;\n }\n const custom = this.parse();\n const parsed = custom\n ? custom(trimmed, this.resolvedLocale())\n : parseDateText(trimmed, this.resolvedLocale());\n if (!parsed) {\n this.refuse(trimmed, 'unparseable');\n return false;\n }\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && parsed < min) || (max && parsed > max)) {\n this.refuse(trimmed, 'out-of-range');\n return false;\n }\n if (this.isDayBlocked(parsed)) {\n this.refuse(trimmed, 'disabled');\n return false;\n }\n this.setValue(parsed);\n return true;\n }\n\n /** Step a committed value ±1 day, skipping blocked days, stopping at fences. */\n private step(direction: 1 | -1): void {\n const committed = this.value();\n if (!committed) return;\n let date = addDays(committed, direction);\n let guard = 0;\n while (this.isDayBlocked(date) && guard++ < 400) date = addDays(date, direction);\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && date < min) || (max && date > max)) return; // fence\n this.setValue(date);\n }\n\n // --- Keyboard ----------------------------------------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n const element = this.inputRef()!.nativeElement;\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.commit(element.value);\n break;\n case 'Escape':\n if (this.popupOpen()) {\n this.closePopup();\n } else {\n this.setFieldText(this.displayText());\n this.draftInvalid.set(false);\n }\n break;\n case 'ArrowDown':\n event.preventDefault();\n // Alt or an empty field opens the popup; on a committed value the\n // caret has nowhere to go, so stepping is what a spinner would do.\n if (event.altKey || element.value.trim() === '') this.openPopup();\n else if (this.value() && element.value === this.displayText()) this.step(-1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.value() && element.value === this.displayText()) this.step(1);\n break;\n }\n }\n\n protected onInput(): void {\n this.draftInvalid.set(false);\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.touched.set(true);\n if (this.popupOpen()) return;\n const element = this.inputRef()?.nativeElement;\n if (element && this.commitOnBlur() && element.value !== this.displayText())\n this.commit(element.value);\n }\n\n // --- Popup ---------------------------------------------------------------------\n\n protected openPopup(): void {\n if (this.disabled() || this.popupOpen()) return;\n this.dropdown()?.toggleDropdown();\n }\n\n protected closePopup(): void {\n if (this.popupOpen()) this.dropdown()?.hideDropdown();\n }\n\n protected onPopupShowing(): void {\n // The grid opens on the committed value's month (or today's).\n this.calendar()?.month.set(monthOf(this.value() ?? todayIso()));\n this.calendar()?.focusActiveDay();\n this.opened.emit();\n }\n\n protected onPopupHiding(): void {\n this.closed.emit();\n // Focus returns to the field (not the toggle) when it was in the popup —\n // this runs before the dropdown's own restoreFocus, which then no-ops.\n const active = document.activeElement;\n const popup = this.popupRef()?.nativeElement;\n if (!active || active === document.body || (popup && popup.contains(active)))\n this.inputRef()?.nativeElement.focus();\n }\n\n protected onCalendarPick(date: UniDate): void {\n this.setValue(date);\n this.closePopup();\n }\n\n /** The popup is a focus-holding dialog: Tab cycles inside it (APG pattern). */\n protected onPopupKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closePopup();\n return;\n }\n if (event.key !== 'Tab') return;\n const popup = this.popupRef()?.nativeElement;\n if (!popup) return;\n const focusables = Array.from(\n popup.querySelectorAll<HTMLButtonElement>('button:not(:disabled)')\n ).filter((button) => button.tabIndex >= 0);\n if (!focusables.length) return;\n const index = focusables.indexOf(document.activeElement as HTMLButtonElement);\n const next =\n focusables[(index + (event.shiftKey ? -1 : 1) + focusables.length) % focusables.length];\n event.preventDefault();\n next.focus();\n }\n\n // --- Internals -------------------------------------------------------------------\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\n }\n\n private announce(message: string): void {\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling -----------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block', position: 'relative' }));\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n },\n this.draftInvalid() && {\n color: colors['warn'],\n // Shape and colour, not colour alone (WCAG 1.4.1).\n textDecoration: `underline dashed ${colors['warn']} 1.5px`,\n textUnderlineOffset: 3,\n },\n ]);\n });\n\n protected readonly toggleWrapClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', ...this.theme.paddingRight('xxs') })\n );\n\n /** Embedded mode: the composer owns the box; keep only the flex row. */\n protected readonly embeddedClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n { display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 },\n this.draftInvalid() && { color: colors['warn'] },\n ]);\n });\n}\n","<!-- Focusout rides the bubbling event so commits happen only when focus\n leaves the whole field, not while moving into the popup. -->\n<div (focusout)=\"onFocusOut($event)\">\n <ng-template #parts>\n <input\n #field\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [value]=\"displayText()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() || draftInvalid() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput()\"\n />\n <span [class]=\"toggleWrapClass()\">\n <!-- The dropdown wires aria-haspopup/aria-expanded/aria-controls onto\n this button; its name tracks the value (\"Change date, …\"). -->\n <button\n #toggle\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().toggleSymbol ?? 'calendar_month'\"\n [disable]=\"disabled()\"\n >\n {{ toggleLabel() }}\n </button>\n </span>\n </ng-template>\n\n @if (embedded()) {\n <!-- A composer (uni-date-time-input) owns the field chrome. -->\n <div [class]=\"embeddedClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n } @else {\n <uni-input-box [error]=\"showError() || draftInvalid()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n </uni-input-box>\n }\n\n @if (toggleElement()) {\n <uni-dropdown\n [trigger]=\"toggleElement()!\"\n ariaHasPopup=\"dialog\"\n placement=\"bottom-end\"\n [color]=\"componentOptions().popupColor ?? 'primary-surface'\"\n [shadow]=\"componentOptions().popupShadow ?? 'menu'\"\n [borderRadius]=\"componentOptions().popupBorderRadius ?? 'xs'\"\n paddingVertical=\"xs\"\n paddingHorizontal=\"xs\"\n (dropdownShowing)=\"onPopupShowing()\"\n (dropdownHiding)=\"onPopupHiding()\"\n >\n <!-- A focus-holding dialog per the APG date-picker pattern: Tab cycles\n inside, Escape closes and returns focus to the field. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #popupDialog role=\"dialog\" aria-label=\"Choose date\" (keydown)=\"onPopupKeydown($event)\">\n <uni-calendar\n mode=\"single\"\n [value]=\"value()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabledDates]=\"disabledDates()\"\n [markers]=\"markers()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n (selected)=\"onCalendarPick($event)\"\n />\n </div>\n </uni-dropdown>\n }\n\n <!-- Commits, steps and rejections are otherwise a silent reformat. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n createListboxNavigation,\n formatTime,\n localeDefaultHour12,\n parseTimeText,\n timeSlots,\n visuallyHidden,\n type UniTime,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTimeInputOptions, UniTimeInputRejection } from './time-input.model';\n\nconst toMinutes = (time: UniTime): number => {\n const [h, m] = time.split(':').map(Number);\n return h * 60 + m;\n};\n\nconst fromMinutes = (minutes: number): UniTime =>\n `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;\n\n/**\n * Time field: a combobox over time options — the same listbox contract as\n * uni-search-input and uni-tag-input. Type `3p`, `930` or `15:00`, or pick\n * `3:00 PM` from the list; the form always gets 24-hour `'HH:mm'` (`hour12`\n * affects display only). The list is assistive, not exhaustive: any\n * parseable time commits, unless `slots` pins the choices (a slot picker) —\n * then a typed time must match one. Unreadable or unavailable text stays in\n * the field, flagged, with a `rejected` event.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-time-input, TimeInput',\n imports: [NgTemplateOutlet, UniIconButtonComponent, UniInputBoxComponent],\n templateUrl: './time-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'timeInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniTimeInputComponent\n extends BaseComponent<UniTimeInputOptions>\n implements FormValueControl<UniTime | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniTime | undefined>();\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** Accessible name for the field, e.g. \"Start time\". */\n label = input.required<string>();\n placeholder = input<string>();\n /** Generated list granularity, in minutes. */\n minuteStep = input(30);\n /** Earliest allowed time (inclusive), `'09:00'`. */\n minTime = input<UniTime>();\n /** Latest allowed time (inclusive), `'17:00'`. */\n maxTime = input<UniTime>();\n /** Exact allowed times (scheduling). When set, typed entry must match one. */\n slots = input<UniTime[]>();\n /** 12-hour display; defaults from the locale. The value stays 24-hour. */\n hour12 = input<boolean>();\n /** BCP 47 tag for the display format; defaults to the document language. */\n locale = input<string>();\n commitOnBlur = input(true);\n /** Renders without its own input-box chrome, for composers like uni-date-time-input. */\n embedded = input(false);\n\n // --- Events ----------------------------------------------------------------\n /** A typed commit was refused; the raw text stays in the field. */\n rejected = output<UniTimeInputRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('field');\n private readonly listRef = viewChild<ElementRef<HTMLUListElement>>('listbox');\n\n protected readonly srOnly = css(visuallyHidden);\n /** A refused commit — styles the field and sets aria-invalid until edited. */\n protected readonly draftInvalid = signal(false);\n protected readonly announcement = signal('');\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly resolvedHour12 = computed(\n () => this.hour12() ?? localeDefaultHour12(this.resolvedLocale())\n );\n\n /** The listed times: pinned `slots` verbatim, else the generated step grid. */\n protected readonly options = computed(\n () => this.slots() ?? timeSlots(this.minuteStep(), this.minTime(), this.maxTime())\n );\n\n protected readonly optionLabels = computed(() =>\n this.options().map((time) => this.formatValue(time))\n );\n\n /** Shared combobox bookkeeping — identical contract to uni-search-input. */\n protected readonly list = createListboxNavigation({\n count: () => this.options().length,\n idPrefix: 'uni-time-listbox',\n });\n\n protected readonly displayText = computed(() => {\n const value = this.value();\n return value ? this.formatValue(value) : '';\n });\n\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? this.formatValue('09:00')\n );\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected formatValue(time: UniTime): string {\n return formatTime(time, this.resolvedLocale(), this.resolvedHour12());\n }\n\n // --- Committing -------------------------------------------------------------\n\n protected setValue(time: UniTime | undefined, silent = false): void {\n this.value.set(time);\n this.draftInvalid.set(false);\n this.setFieldText(this.displayText());\n if (!silent) this.announce(time ? `${this.formatValue(time)}.` : 'Time cleared.');\n }\n\n private refuse(raw: string, reason: UniTimeInputRejection['reason'], shown = raw): void {\n this.draftInvalid.set(true);\n const message = {\n unparseable: `Couldn't read “${shown}” as a time.`,\n 'out-of-range': `${shown} is outside the allowed times.`,\n unavailable: `${shown} isn't available.`,\n }[reason];\n this.announce(message);\n this.rejected.emit({ raw, reason });\n }\n\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) {\n this.setValue(undefined);\n return true;\n }\n let parsed = parseTimeText(trimmed, this.resolvedHour12());\n if (!parsed) {\n this.refuse(trimmed, 'unparseable');\n return false;\n }\n const min = this.minTime();\n const max = this.maxTime();\n const inBounds = (time: UniTime) => !(min && time < min) && !(max && time > max);\n const slots = this.slots();\n if (!slots && !inBounds(parsed)) {\n // The PM bias yields if it pushed the time out of bounds.\n const unbiased = parseTimeText(trimmed, false);\n if (unbiased && inBounds(unbiased)) parsed = unbiased;\n else {\n this.refuse(trimmed, 'out-of-range');\n return false;\n }\n }\n if (slots && !slots.includes(parsed)) {\n // Announce the formatted time — \"5:00 PM isn't available.\"\n this.refuse(trimmed, 'unavailable', this.formatValue(parsed));\n return false;\n }\n this.setValue(parsed);\n return true;\n }\n\n /** Step a committed value ±minuteStep (±1 slot when pinned), clamped. */\n private stepValue(direction: 1 | -1): void {\n const committed = this.value();\n if (!committed) return;\n const slots = this.slots();\n if (slots?.length) {\n const sorted = [...slots].sort();\n const index = sorted.indexOf(committed);\n const next =\n index >= 0\n ? sorted[index + direction]\n : direction > 0\n ? sorted.find((slot) => slot > committed)\n : [...sorted].reverse().find((slot) => slot < committed);\n if (next) this.setValue(next);\n return;\n }\n const step = this.minuteStep();\n const current = toMinutes(committed);\n const snapped =\n direction > 0\n ? Math.floor(current / step) * step + step\n : Math.ceil(current / step) * step - step;\n if (snapped < 0 || snapped >= 24 * 60) return;\n const candidate = fromMinutes(snapped);\n const min = this.minTime();\n const max = this.maxTime();\n if ((min && candidate < min) || (max && candidate > max)) return; // fence\n this.setValue(candidate);\n }\n\n // --- Keyboard ----------------------------------------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n const element = this.inputRef()!.nativeElement;\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n event.preventDefault();\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n // A committed value with the list closed steps like a spinner —\n // ArrowUp means later, like the date field's ArrowUp means tomorrow —\n // while the list opens from an empty or edited field (or the toggle).\n if (!this.list.open() && this.value() && element.value === this.displayText()) {\n this.stepValue(direction === 1 ? -1 : 1);\n break;\n }\n if (!this.list.open()) {\n this.openList();\n if (this.list.activeIndex() < 0)\n this.list.setActive(direction === 1 ? 0 : this.options().length - 1);\n } else {\n const count = this.options().length;\n this.list.setActive((this.list.activeIndex() + direction + count) % count);\n }\n this.scrollToActive();\n break;\n }\n case 'Enter': {\n event.preventDefault();\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) this.setValue(this.options()[active]);\n else this.commit(element.value);\n this.list.hide();\n break;\n }\n case 'Escape':\n if (this.list.open()) {\n this.list.hide();\n } else {\n this.setFieldText(this.displayText());\n this.draftInvalid.set(false);\n }\n break;\n case 'Tab':\n // Never trap: commit what is typed, then let focus move on.\n if (element.value.trim() && element.value !== this.displayText())\n this.commit(element.value);\n this.list.hide();\n break;\n }\n }\n\n protected onInput(): void {\n this.draftInvalid.set(false);\n // Typing never selects an option — Enter must commit the draft, not\n // whatever happens to sit nearest; the list only scrolls alongside.\n this.list.show();\n this.list.setActive(-1);\n const parsed = parseTimeText(this.inputRef()!.nativeElement.value, this.resolvedHour12());\n if (parsed) {\n const options = this.options();\n let nearest = options.findIndex((time) => time >= parsed);\n if (nearest < 0) nearest = options.length - 1;\n this.scrollToIndex(nearest);\n }\n }\n\n protected onToggle(): void {\n if (this.list.open()) {\n this.list.hide();\n } else {\n this.openList();\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n protected selectOption(time: UniTime): void {\n this.setValue(time);\n this.list.hide();\n this.inputRef()?.nativeElement.focus();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.list.hide();\n this.touched.set(true);\n const element = this.inputRef()?.nativeElement;\n if (element && this.commitOnBlur() && element.value !== this.displayText())\n this.commit(element.value);\n }\n\n // --- Internals -------------------------------------------------------------------\n\n private openList(): void {\n this.list.show();\n const committed = this.value();\n if (committed) this.list.setActive(this.options().indexOf(committed));\n this.scrollToActive();\n }\n\n private scrollToActive(): void {\n this.scrollToIndex(this.list.activeIndex());\n }\n\n private scrollToIndex(index: number): void {\n if (index < 0) return;\n queueMicrotask(() =>\n this.listRef()?.nativeElement.children[index]?.scrollIntoView?.({ block: 'nearest' })\n );\n }\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\n }\n\n private announce(message: string): void {\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling -----------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block', position: 'relative' }));\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n },\n this.draftInvalid() && {\n color: colors['warn'],\n // Shape and colour, not colour alone (WCAG 1.4.1).\n textDecoration: `underline dashed ${colors['warn']} 1.5px`,\n textUnderlineOffset: 3,\n },\n ]);\n });\n\n protected readonly toggleWrapClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', ...this.theme.paddingRight('xxs') })\n );\n\n /** Embedded mode: the composer owns the box; keep only the flex row. */\n protected readonly embeddedClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: (options.maxVisibleOptions ?? 7) * 36,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Focusout rides the bubbling event so the list closes and the draft\n commits only when focus leaves the whole field. -->\n<div (focusout)=\"onFocusOut($event)\">\n <ng-template #parts>\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n aria-autocomplete=\"list\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [value]=\"displayText()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-expanded]=\"list.open()\"\n [attr.aria-controls]=\"list.listboxId\"\n [attr.aria-activedescendant]=\"list.activeDescendantId()\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() || draftInvalid() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput()\"\n />\n <span [class]=\"toggleWrapClass()\">\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n aria-haspopup=\"listbox\"\n [symbolName]=\"componentOptions().toggleSymbol ?? 'schedule'\"\n [attr.aria-expanded]=\"list.open()\"\n [disable]=\"disabled()\"\n (click)=\"onToggle()\"\n >\n Choose time\n </button>\n </span>\n </ng-template>\n\n @if (embedded()) {\n <!-- A composer (uni-date-time-input) owns the field chrome. -->\n <div [class]=\"embeddedClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n } @else {\n <uni-input-box [error]=\"showError() || draftInvalid()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n </uni-input-box>\n }\n\n @if (list.open()) {\n <ul #listbox [id]=\"list.listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (time of options(); track time; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"list.optionId(i)\"\n [class.active]=\"i === list.activeIndex()\"\n [attr.aria-selected]=\"time === value()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(time)\"\n >\n {{ optionLabels()[i] }}\n </li>\n }\n </ul>\n }\n\n <!-- Commits and rejections are otherwise a silent reformat. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n joinDateTime,\n splitDateTime,\n type UniDate,\n type UniDateTime,\n type UniTime,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCalendarMarker } from '../calendar/calendar.model';\nimport { UniDateInputComponent } from '../date-input/date-input.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniTimeInputComponent } from '../time-input/time-input.component';\nimport type { UniDateTimeInputOptions } from './date-time-input.model';\n\ninterface DateTimeParts {\n date?: UniDate;\n time?: UniTime;\n}\n\n/**\n * One field for a date and a time: a thin composer seating a uni-date-input\n * and a uni-time-input in one input-box chrome under one label, yielding one\n * combined `'YYYY-MM-DDTHH:mm'` value. The value emits only when both parts\n * are set — a time without a day is not an answer — and clearing the date\n * clears it. With `slotsFor`, the time part stays disabled until a day is\n * chosen and offers exactly that day's slots: the scheduling flow in one\n * attribute. Two honest tab stops (it is two questions); apps needing a\n * different arrangement compose the primitives directly.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-date-time-input, DateTimeInput',\n imports: [UniDateInputComponent, UniInputBoxComponent, UniTimeInputComponent],\n templateUrl: './date-time-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dateTimeInput' }],\n host: { '[class]': 'className()', '(focusout)': 'onHostFocusOut($event)' },\n})\nexport class UniDateTimeInputComponent\n extends BaseComponent<UniDateTimeInputOptions>\n implements FormValueControl<UniDateTime | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniDateTime | undefined>();\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** Names the group; the parts are announced as \"Date\" and \"Time\" under it. */\n label = input.required<string>();\n /** Earliest allowed moment; the date and time fences are split from it. */\n minDateTime = input<UniDateTime>();\n /** Latest allowed moment; the date and time fences are split from it. */\n maxDateTime = input<UniDateTime>();\n\n // --- Forwarded wholesale ----------------------------------------------------\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n markers = input<UniCalendarMarker[]>([]);\n /** Fixed time choices; superseded per-day by `slotsFor` when that is set. */\n slots = input<UniTime[]>();\n minuteStep = input(30);\n hour12 = input<boolean>();\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n locale = input<string>();\n /** Scheduling: the day's available times. Gates the time part on a date. */\n slotsFor = input<(date: UniDate) => UniTime[]>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * The two part-values. An external `value` write re-derives both; an\n * internal partial state (a date without a time round-trips through\n * `undefined`) must not be wiped by its own echo.\n */\n private readonly parts = linkedSignal<UniDateTime | undefined, DateTimeParts>({\n source: this.value,\n computation: (value, previous) => {\n if (value) return splitDateTime(value);\n const kept = previous?.value;\n if (kept && joinDateTime(kept.date, kept.time) === undefined) return kept;\n return {};\n },\n });\n\n protected readonly dateValue = computed(() => this.parts().date);\n protected readonly timeValue = computed(() => this.parts().time);\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n private readonly minParts = computed(() => splitDateTime(this.minDateTime()));\n private readonly maxParts = computed(() => splitDateTime(this.maxDateTime()));\n\n protected readonly dateMin = computed(() => this.minParts().date);\n protected readonly dateMax = computed(() => this.maxParts().date);\n\n // The time fence applies only on the boundary date itself — 'after 9:00'\n // on the min date, any time on later days.\n protected readonly timeMin = computed(() => {\n const { date, time } = this.minParts();\n return time && date && this.dateValue() === date ? time : undefined;\n });\n\n protected readonly timeMax = computed(() => {\n const { date, time } = this.maxParts();\n return time && date && this.dateValue() === date ? time : undefined;\n });\n\n /** The chosen day's slots when `slotsFor` is set, else the fixed list. */\n protected readonly effectiveSlots = computed(() => {\n const slotsFor = this.slotsFor();\n if (!slotsFor) return this.slots();\n const date = this.dateValue();\n return date ? slotsFor(date) : [];\n });\n\n protected readonly timeDisabled = computed(\n () => this.disabled() || (!!this.slotsFor() && !this.dateValue())\n );\n\n // --- Part plumbing -----------------------------------------------------------\n\n protected onDatePartChange(date: UniDate | undefined): void {\n let time = this.parts().time;\n if (!date) {\n time = undefined; // clearing the date clears the combined value\n } else {\n const slotsFor = this.slotsFor();\n // Changing the day clears a slot that no longer exists.\n if (slotsFor && time && !slotsFor(date).includes(time)) time = undefined;\n }\n this.setParts({ date, time });\n }\n\n protected onTimePartChange(time: UniTime | undefined): void {\n this.setParts({ date: this.parts().date, time });\n }\n\n private setParts(parts: DateTimeParts): void {\n this.parts.set(parts);\n this.value.set(joinDateTime(parts.date, parts.time));\n }\n\n protected onHostFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.host.nativeElement.contains(next)) this.touched.set(true);\n }\n\n // --- Styling --------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block' }));\n\n protected readonly groupClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'stretch',\n flex: 1,\n width: '100%',\n minWidth: 0,\n ...this.theme.gap(this.componentOptions().partGap ?? 'sm'),\n })\n );\n\n protected readonly datePartClass = computed(() =>\n css({ flex: 1.4, minWidth: 0, display: 'flex', '& > *': { flex: 1, minWidth: 0 } })\n );\n\n protected readonly timePartClass = computed(() =>\n css({ flex: 1, minWidth: 0, display: 'flex', '& > *': { flex: 1, minWidth: 0 } })\n );\n\n protected readonly dividerClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n width: 1,\n alignSelf: 'stretch',\n flex: 'none',\n backgroundColor: colors[this.componentOptions().dividerColor ?? 'outline'],\n });\n });\n}\n","<!-- One field chrome for both parts; the parts render embedded (no box of\n their own), so error/disabled/focus states stay consistent with every\n other field. Tab order: date, then time — two honest tab stops. -->\n<uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div role=\"group\" [attr.aria-label]=\"label()\" [class]=\"groupClass()\">\n <div [class]=\"datePartClass()\">\n <uni-date-input\n [embedded]=\"true\"\n label=\"Date\"\n [value]=\"dateValue()\"\n [minDate]=\"dateMin()\"\n [maxDate]=\"dateMax()\"\n [disabledDates]=\"disabledDates()\"\n [markers]=\"markers()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n [disabled]=\"disabled()\"\n [ariaDescribedBy]=\"ariaDescribedBy()\"\n (valueChange)=\"onDatePartChange($event)\"\n />\n </div>\n <div [class]=\"dividerClass()\"></div>\n <div [class]=\"timePartClass()\">\n <uni-time-input\n [embedded]=\"true\"\n label=\"Time\"\n [value]=\"timeValue()\"\n [minTime]=\"timeMin()\"\n [maxTime]=\"timeMax()\"\n [slots]=\"effectiveSlots()\"\n [minuteStep]=\"minuteStep()\"\n [hour12]=\"hour12()\"\n [locale]=\"locale()\"\n [disabled]=\"timeDisabled()\"\n (valueChange)=\"onTimePartChange($event)\"\n />\n </div>\n </div>\n</uni-input-box>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button';\nimport type { UniDialogOptions } from './dialog.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'dialog[uni-dialog]',\n imports: [UniIconButtonComponent, CommonModule],\n template: `\n @if (defaultCloseButton()) {\n <button\n icon-button\n iconName=\"close\"\n variant=\"ghost\"\n (click)=\"close()\"\n [class]=\"closeButton\"\n size=\"md\"\n >\n Close\n </button>\n }\n <ng-content></ng-content>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialog' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-labelledby]': 'hasTitle() ? titleId : null',\n '[attr.aria-label]': 'ariaLabel() ?? null',\n '[class]': 'className()',\n '(click)': 'backdropClick($event)',\n '(cancel)': 'escapeCancel($event)',\n '(animationend)': 'closingAnimation($event)',\n },\n})\nexport class UniDialogComponent extends BaseComponent<UniDialogOptions> {\n private elem = inject(ElementRef);\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>(false);\n\n /**\n * Accessible name for dialogs without a DialogHeader. When a DialogHeader\n * is present it labels the dialog automatically via aria-labelledby.\n */\n ariaLabel = input<string>();\n\n /**\n * CSS selector for the element to focus when the dialog opens. Defaults to\n * the browser's native behavior (first focusable element).\n */\n initialFocus = input<string>();\n\n defaultCloseButton = input<boolean>();\n\n /** Id referenced by aria-labelledby; DialogHeader attaches it to the title. */\n readonly titleId = uniqueId('uni-dialog-title');\n readonly hasTitle = signal(false);\n\n /** Emits true once opened and false once the closing animation finishes. */\n showing = output<boolean>();\n\n constructor() {\n super();\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n private get _dialog(): HTMLDialogElement {\n return this.elem.nativeElement;\n }\n\n protected readonly className = computed(() =>\n css([\n {\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.border(this.componentOptions().border),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.theme.padding(this.componentOptions().padding || 'none'),\n\n '&::backdrop': {\n ...this.componentOptions().backdrop,\n },\n\n '&[open], &::backdrop': {\n animation: `${this.dialogFadeIn} ease-in 350ms`,\n },\n\n '&[closing], &[closing]::backdrop': {\n animation: `${this.dialogFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected backdropClick(event: Event) {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') {\n this.close();\n }\n }\n\n /**\n * Escape fires the native 'cancel' event, which would close the dialog\n * instantly and leave our show-state out of sync. Route it through the\n * animated close() instead.\n */\n protected escapeCancel(event: Event) {\n event.preventDefault();\n this.close();\n }\n\n protected closingAnimation(e: AnimationEvent) {\n // Close the dialog if the animation is finished\n if (e.animationName.includes(this.dialogFadeOut)) {\n this._dialog.close();\n this._dialog.removeAttribute('closing');\n this.showing.emit(false);\n }\n }\n\n closeButton = css({\n position: 'absolute',\n right: 12,\n top: 12,\n });\n\n private dialogFadeIn = keyframes({ ...fadeIn });\n private dialogFadeOut = keyframes({ ...fadeOut });\n\n open() {\n if (this._dialog.open) return;\n\n this._dialog.removeAttribute('closing');\n this._dialog.showModal();\n\n // Native showModal focuses the first focusable element; allow consumers\n // to direct initial focus somewhere more useful (e.g. past the close\n // button, onto a primary action or first form field).\n const selector = this.initialFocus();\n if (selector) {\n this._dialog.querySelector<HTMLElement>(selector)?.focus();\n }\n\n this.show.set(true);\n this.showing.emit(true);\n }\n\n close() {\n // Strict check: outside a real <dialog> host (e.g. unit tests) `open`\n // is undefined and close() should still run.\n if (this._dialog.open === false) return;\n\n this._dialog.setAttribute('closing', 'true');\n this.show.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniButtonComponent } from '../../button';\nimport { UniRowComponent } from '../../layout';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { JustifyContent, NullableSize, Size, Variant } from '@uni-design-system/uni-core';\nimport type { UniDialogButtonsOptions } from './dialog-buttons.model';\n\n@Component({\n selector: '[uni-dialog-buttons], [dialog-buttons]',\n imports: [UniRowComponent, UniButtonComponent],\n templateUrl: './dialog-buttons.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogButtons' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDialogButtonsComponent extends BaseComponent<UniDialogButtonsOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n confirmButtonText = input<string>();\n confirmButtonVariant = input<Variant>();\n cancelButtonText = input<string>();\n cancelButtonVariant = input<Variant>();\n disableConfirm = input<boolean>();\n padding = input<NullableSize>();\n paddingBottom = input<NullableSize>();\n justifyContent = input<JustifyContent>();\n\n confirmed = output();\n\n // Inputs win over theme options; the trailing literal is the legacy default.\n protected confirmVariant = computed(\n () => this.confirmButtonVariant() ?? this.componentOptions().confirmButtonVariant ?? 'primary'\n );\n protected cancelVariant = computed(\n () => this.cancelButtonVariant() ?? this.componentOptions().cancelButtonVariant ?? 'warn'\n );\n protected paddingValue = computed(() => this.padding() ?? this.componentOptions().padding ?? 'md');\n protected paddingBottomValue = computed(\n () => this.paddingBottom() ?? this.componentOptions().paddingBottom ?? 'lg'\n );\n protected justifyContentValue = computed(\n () => this.justifyContent() ?? this.componentOptions().justifyContent ?? 'center'\n );\n protected gapValue = computed(() => this.componentOptions().gap ?? 'md');\n protected buttonSize = computed<Size>(() => this.componentOptions().buttonSize ?? 'lg');\n\n protected readonly className = computed(() =>\n css([\n this.componentTheme().fixed,\n this.componentOptions().stretch && {\n width: '100%',\n minWidth: '100%',\n '& > button': { flex: '1 1 50%', maxWidth: '50%' },\n },\n ])\n );\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [gap]=\"gapValue()\"\n [padding]=\"paddingValue()\"\n [paddingBottom]=\"paddingBottomValue()\"\n [justifyContent]=\"justifyContentValue()\"\n [flexDirection]=\"componentOptions().reverseOrder ? 'row-reverse' : 'row'\"\n [class]=\"className()\"\n>\n <button\n text-button\n [variant]=\"confirmVariant()\"\n [size]=\"buttonSize()\"\n (click)=\"confirmed.emit(); closeDialog()\"\n [disable]=\"disableConfirm()\"\n >\n {{ confirmButtonText() || 'Confirm' }}\n </button>\n <button text-button [variant]=\"cancelVariant()\" [size]=\"buttonSize()\" (click)=\"closeDialog()\">\n {{ cancelButtonText() || 'Cancel' }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { UniDialogHeaderOptions } from './dialog-header.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-dialog-header]',\n imports: [UniBoxComponent, UniIconButtonComponent, UniTextComponent, UniRowComponent],\n templateUrl: './dialog-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogHeader' }],\n})\nexport class UniDialogHeaderComponent extends BaseComponent<UniDialogHeaderOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n /** Attached to the title element so the parent dialog is labelled by it. */\n protected readonly titleId = this.dialog?.titleId ?? null;\n\n constructor() {\n super();\n this.dialog?.hasTitle.set(true);\n }\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [color]=\"componentOptions().color\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [height]=\"componentOptions().height\"\n alignItems=\"center\"\n [paddingHorizontal]=\"componentOptions().paddingHorizontal ?? 'sm'\"\n>\n <!-- Balance spacer: only centered titles need to offset the close button. -->\n @if ((componentOptions().textAlign || 'center') === 'center') {\n <div box-layout [width]=\"26\"></div>\n }\n <div box-layout [grow]=\"1\" [attr.id]=\"titleId\">\n <span uni-text\n [typeface]=\"componentOptions().textRole\"\n [color]=\"componentOptions().textColor\"\n display=\"block\"\n [align]=\"componentOptions().textAlign || 'center'\"\n ><ng-content></ng-content\n ></span>\n </div>\n <button\n icon-button\n [iconName]=\"componentOptions().closeButtonIcon\"\n [symbolName]=\"componentOptions().closeButtonSymbol\"\n variant=\"ghost\"\n (click)=\"closeDialog()\"\n [size]=\"componentOptions().closeButtonSize || 'md'\"\n >\n Close\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport type { Border, Orientation } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-divider',\n imports: [],\n template: ``,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDividerComponent {\n themeService = inject(ThemeService);\n\n orientation = input<Orientation>('horizontal');\n border = input<Border>('primary');\n\n protected readonly className = computed(() => {\n return css([\n {\n display: 'block',\n },\n this.orientation() === 'horizontal' && {\n ...this.themeService.borderBottom(this.border()),\n width: '100%',\n },\n this.orientation() === 'vertical' && {\n ...this.themeService.borderLeft(this.border()),\n height: '100%',\n },\n ]);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { DrawerMode, DrawerPosition, UniDrawerOptions } from './drawer.model';\n\n/**\n * Navigation drawer with two modes sharing one content slot:\n *\n * - `side` — an in-flow `<aside>` that pushes content (dashboard sidenav);\n * opening/closing animates its width, and the divider border primitive\n * separates it from the page.\n * - `over` — a native `<dialog>` in the top layer: focus trap, Escape and\n * scrim backdrop come from the platform (same machinery as `uni-dialog`),\n * sliding in from its edge.\n *\n * Surface, width, divider, elevation, padding and backdrop all resolve from\n * `drawer` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-drawer',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'drawer' }],\n template: `\n <ng-template #content><ng-content /></ng-template>\n @if (mode() === 'side') {\n <aside [class]=\"sideClass()\" [attr.aria-hidden]=\"open() ? null : 'true'\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </aside>\n } @else {\n <!-- Click handles the ::backdrop only (target check); keyboard closing\n is the native dialog cancel event, and focus is trapped by\n showModal — the element needs no tabindex of its own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #overlay\n [class]=\"overClass()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onBackdropClick($event)\"\n (cancel)=\"onCancel($event)\"\n (animationend)=\"onAnimationEnd($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </dialog>\n }\n `,\n})\nexport class UniDrawerComponent extends BaseComponent<UniDrawerOptions> {\n /** Two-way bindable open state: [(open)]. */\n readonly open = model(false);\n\n mode = input<DrawerMode>('side');\n position = input<DrawerPosition>('start');\n /** Accessible name for the overlay mode's dialog. */\n ariaLabel = input('Navigation');\n\n protected readonly contentTemplate = viewChild.required<TemplateRef<unknown>>('content');\n private readonly overlay = viewChild<ElementRef<HTMLDialogElement>>('overlay');\n\n constructor() {\n super();\n effect(() => {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n if (!dialog.open) {\n dialog.removeAttribute('closing');\n dialog.showModal();\n }\n } else if (dialog.open) {\n // Slide out first; the dialog closes when the animation reports done.\n dialog.setAttribute('closing', 'true');\n }\n });\n }\n\n protected onBackdropClick(event: Event): void {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') this.open.set(false);\n }\n\n /** Route Escape through the animated close, keeping `open` in sync. */\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onAnimationEnd(event: AnimationEvent): void {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog || !dialog.hasAttribute('closing')) return;\n if (event.animationName.includes(this.slideOut())) {\n dialog.close();\n dialog.removeAttribute('closing');\n }\n }\n\n private readonly edge = computed(() => (this.position() === 'start' ? '-100%' : '100%'));\n\n private readonly slideIn = computed(() =>\n keyframes({ from: { transform: `translateX(${this.edge()})` }, to: { transform: 'translateX(0)' } })\n );\n private readonly slideOut = computed(() =>\n keyframes({ from: { transform: 'translateX(0)' }, to: { transform: `translateX(${this.edge()})` } })\n );\n\n protected readonly sideClass = computed(() => {\n const options = this.componentOptions();\n const width = options.width ?? 280;\n const start = this.position() === 'start';\n return css({\n display: 'block',\n boxSizing: 'border-box',\n height: '100%',\n flex: 'none',\n overflowX: 'hidden',\n overflowY: 'auto',\n transition: 'width 0.25s ease, visibility 0.25s',\n ...this.theme.colorPair(options.color),\n ...(start\n ? this.theme.borderRight(options.divider)\n : this.theme.borderLeft(options.divider)),\n ...(this.open()\n ? { width, visibility: 'visible', ...this.theme.padding(options.padding) }\n : { width: 0, visibility: 'hidden', padding: 0, border: 'none' }),\n });\n });\n\n protected readonly overClass = computed(() => {\n const options = this.componentOptions();\n const start = this.position() === 'start';\n return css({\n boxSizing: 'border-box',\n width: options.width ?? 280,\n maxWidth: '90vw',\n height: '100dvh',\n maxHeight: '100dvh',\n border: 'none',\n margin: start ? '0 auto 0 0' : '0 0 0 auto',\n overflowY: 'auto',\n ...this.theme.colorPair(options.color),\n ...this.theme.padding(options.padding),\n ...this.theme.boxShadow(options.elevation),\n '&::backdrop': { ...options.backdrop },\n '&[open]': { animation: `${this.slideIn()} 250ms ease-out` },\n '&[closing]': { animation: `${this.slideOut()} 250ms ease-in` },\n });\n });\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport {\n collapseFadeOut,\n EXPAND_DEFAULT_SPEED,\n expandDuration,\n expandFadeIn,\n} from '@uni-design-system/uni-core';\nimport { motionSafe, uniqueId } from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniExpandOptions } from './expand.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand',\n imports: [],\n providers: [{ provide: COMPONENT_NAME, useValue: 'expand' }],\n template: `@if (!collapsed()) {\n <div\n [animate.enter]=\"ready() ? expandAnimation : ''\"\n [animate.leave]=\"collapseAnimation\"\n [class]=\"expandClassName\"\n [style.animation-duration]=\"cssDuration()\"\n >\n <div #content [class]=\"contentClassName\">\n <ng-content></ng-content>\n </div>\n </div>\n }`,\n host: {\n '[attr.id]': 'regionId',\n '[class]': 'hostClassName',\n },\n})\nexport class UniExpandComponent extends BaseComponent<UniExpandOptions> {\n collapsed = model(true);\n\n /**\n * Exact per-instance duration in seconds. Bypasses size-aware scaling —\n * an explicit number means the consumer wants that number. Omitted, the\n * duration derives from the `expand` theme options' `transitionSpeed`\n * scaled by content height (see `duration`).\n */\n transitionSpeed = input<number>();\n\n /** Referenced by the controlling toggle's aria-controls. */\n readonly regionId = uniqueId('uni-expand');\n\n /**\n * animate.enter has no initial-render guard, so an expand initialized with\n * collapsed = false would play the enter animation on load. Enable\n * animations only after the first render, i.e. on real state changes.\n */\n protected readonly ready = signal(false);\n\n private readonly contentRef = viewChild<ElementRef<HTMLElement>>('content');\n\n /**\n * Last observed content height. Retained after collapse (the observer\n * disconnects but the signal keeps its value) so the leave animation and\n * the next reveal are timed to the real size. Until the first measurement\n * lands — one frame into the very first reveal — the duration falls back\n * to the unscaled token; CSS remaps animation progress when\n * `animation-duration` updates, so the retime is imperceptible that early.\n */\n private readonly contentHeight = signal<number | undefined>(undefined);\n\n constructor() {\n super();\n afterNextRender(() => this.ready.set(true));\n afterRenderEffect((onCleanup) => {\n const content = this.contentRef()?.nativeElement;\n if (!content) return;\n const observer = new ResizeObserver(() => this.contentHeight.set(content.scrollHeight));\n observer.observe(content);\n onCleanup(() => observer.disconnect());\n });\n }\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n\n /**\n * The resolved duration in seconds: the `transitionSpeed` input verbatim,\n * or the `expand` theme options' `transitionSpeed` scaled by content height\n * (`expandDuration` — √-of-height, clamped) so short regions stay snappy\n * and tall ones aren't rushed. The public sync hook: Expand Area binds this\n * to its toggle so the chevron rotates on the region's clock, and consumers\n * can bind adjacent styling the same way\n * (`[style.transition-duration]=\"expand.duration() + 's'\"`).\n */\n readonly duration = computed(() => {\n const override = this.transitionSpeed();\n if (override !== undefined) return override;\n const speed = this.componentOptions().transitionSpeed ?? EXPAND_DEFAULT_SPEED;\n const height = this.contentHeight();\n return height === undefined ? speed : expandDuration(height, speed);\n });\n\n protected readonly cssDuration = computed(() => `${this.duration()}s`);\n\n /**\n * A custom element is `display: inline` by default, which would lay the\n * animated grid out as a block-in-inline box and distort the revealed\n * content's spacing. Every consumer would otherwise have to write\n * `uni-expand { display: block }` themselves.\n */\n protected readonly hostClassName = css({\n display: 'block',\n });\n\n expandClassName = css({\n display: 'grid',\n });\n\n contentClassName = css({\n minHeight: 0,\n });\n\n private expand = keyframes({ ...expandFadeIn });\n private collapse = keyframes({ ...collapseFadeOut });\n\n /**\n * Reveal is motion-safe (WCAG 2.3.3): under `prefers-reduced-motion` these\n * classes are empty, so the region appears and disappears instantly.\n * `overflow: hidden` rides inside the guard deliberately — it exists to clip\n * the growing box mid-animation, and leaving it applied at rest would crop\n * decorations that legitimately paint outside the region (focus rings,\n * offset outlines). Angular removes a leaving node on the next frame when it\n * detects no animation, so nothing hangs when the guard strips them.\n *\n * The classes carry the default duration; the animated div's\n * `[style.animation-duration]` binding overrides it with the resolved\n * `duration`, so the classes stay static while timing tracks the theme and\n * the content's size through signals alone.\n */\n expandAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.expand} ease-in-out ${EXPAND_DEFAULT_SPEED}s`,\n }),\n );\n\n collapseAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.collapse} ease-in-out ${EXPAND_DEFAULT_SPEED}s`,\n }),\n );\n}\n","/**\n * UniExpandComponent Barrel File\n *\n * This file exports all public-facing elements of the expand component.\n */\n\nexport { UniExpandComponent } from './expand.component';\nexport type { UniExpandOptions } from './expand.model';\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { EXPAND_DEFAULT_SPEED } from '@uni-design-system/uni-core';\nimport { motionSafe } from '../../cdk';\nimport { ThemeService } from '../../theming';\nimport type { UniExpandOptions } from '../expand/expand.model';\nimport { UniIconComponent } from '../icon/icon.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniTextComponent } from '../text/text.component';\n\n/**\n * Trigger for a {@link UniExpandComponent} region.\n *\n * Two shapes, chosen by whether `label` is set:\n * - **Icon only** (default) — the bare chevron, sized for a Card Header.\n * - **Labelled** — chevron plus a label and optional muted sublabel, as a\n * single full-width button. Most real disclosures need a name for the\n * section, and building that row by hand is the thing this saves; it also\n * makes the label the button's accessible name rather than adjacent text.\n */\n@Component({\n selector: 'uni-expand-toggle',\n imports: [UniIconComponent, UniIconButtonComponent, UniTextComponent],\n template: `\n @if (label()) {\n <button\n type=\"button\"\n [class]=\"triggerClassName\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n <uni-icon name=\"chevronUp\" size=\"1em\" />\n <span [class]=\"labelClassName\">\n <span uni-text=\"label\">{{ label() }}</span>\n @if (sublabel()) {\n <span uni-text=\"caption\" color=\"on-background-variant\">{{ sublabel() }}</span>\n }\n </span>\n </button>\n } @else {\n <button\n icon-button\n iconName=\"chevronUp\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n {{ collapsed() ? 'Expand' : 'Collapse' }}\n </button>\n }\n `,\n host: {\n '[class]': 'className()',\n '[attr.toggled]': 'collapsed() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniExpandToggleComponent {\n collapsed = model(true);\n\n /** Id of the Expand region this toggle controls (see UniExpandComponent.regionId). */\n ariaControls = input<string>();\n\n /** Names the region. Setting it switches the toggle to its labelled shape. */\n label = input<string>();\n\n /** Muted qualifier beside the label (\"for POs & custom orders\"). Needs `label`. */\n sublabel = input<string>();\n\n /**\n * Rotation duration in seconds. Expand Area binds the region's resolved\n * `duration` here so chevron and reveal share one clock even when the\n * region is size-scaled or overridden per instance.\n */\n transitionSpeed = input<number>();\n\n /** Fallback clock when no `transitionSpeed` is bound: the `expand` theme options' `transitionSpeed`. */\n private readonly expandOptions = inject(ThemeService).getComponentOptions<UniExpandOptions>('expand');\n\n private readonly speed = computed(\n () => this.transitionSpeed() ?? this.expandOptions().transitionSpeed ?? EXPAND_DEFAULT_SPEED,\n );\n\n /**\n * The glyph rotates, never the host.\n *\n * The host is taller than the glyph (an inline-level box reserves baseline\n * descender space), so spinning it about its own centre walks the glyph\n * off-centre. `uni-icon` is a centred square sized to the glyph, which makes\n * it the only box here that rotates symmetrically. It also keeps a label\n * from turning upside down with the chevron.\n */\n private readonly glyphStyles = computed(() => ({\n '& uni-icon': {\n flexShrink: 0,\n ...motionSafe({\n transition: `transform ${this.speed()}s ease-in-out`,\n }),\n transform: this.collapsed() ? 'rotate(-180deg)' : 'rotate(0)',\n },\n }));\n\n protected readonly className = computed(() => {\n if (this.label()) {\n return css({ display: 'block', ...this.glyphStyles() });\n }\n\n return css({\n display: 'inline-flex',\n cursor: 'pointer',\n ...this.glyphStyles(),\n });\n });\n\n protected readonly triggerClassName = css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n width: '100%',\n padding: 0,\n border: 0,\n background: 'none',\n font: 'inherit',\n color: 'inherit',\n textAlign: 'left',\n cursor: 'pointer',\n });\n\n protected readonly labelClassName = css({\n display: 'flex',\n alignItems: 'baseline',\n gap: 6,\n minWidth: 0,\n });\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, output, viewChild } from '@angular/core';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniExpandToggleComponent } from '../expand-toggle/expand-toggle.component';\nimport { UniExpandComponent } from '../expand/expand.component';\nimport { UniBoxComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand-area',\n imports: [UniBoxComponent, UniTextComponent, UniExpandToggleComponent, UniExpandComponent],\n template: `\n <div box-layout color=\"tertiary-surface\" borderRadius=\"sm\" border=\"quaternary\" overflow=\"hidden\">\n <div box-layout\n border=\"quaternary\"\n borderRadius=\"sm\"\n color=\"primary-surface\"\n style=\"margin-top: -1px; margin-left: -1px; margin-right: -1px\"\n [style.margin-bottom]=\"toggle.collapsed() ? '-1px' : 0\"\n justifyContent=\"space-between\"\n display=\"flex\"\n alignItems=\"center\"\n >\n <div box-layout [width]=\"36\"></div>\n <div box-layout paddingHorizontal=\"md\">\n <span uni-text=\"title-small\" display=\"block\">\n {{ title() }}\n </span>\n </div>\n\n <uni-expand-toggle\n #toggle\n style=\"display: inline-flex; margin: -2px\"\n [collapsed]=\"initCollapsed()\"\n [ariaControls]=\"expand.regionId\"\n [transitionSpeed]=\"expand.duration()\"\n />\n </div>\n\n <uni-expand #expand [collapsed]=\"toggle.collapsed()\">\n <div box-layout [padding]=\"padding()\">\n <ng-content></ng-content>\n </div>\n </uni-expand>\n </div>\n `,\n})\nexport class UniExpandAreaComponent {\n title = input.required<string>();\n initCollapsed = input(false, { transform: booleanAttribute });\n padding = input<NullableSize>('md');\n\n collapsed = output<boolean>();\n\n toggleRef = viewChild.required<UniExpandToggleComponent>('toggle');\n\n public toggleExpand() {\n this.toggleRef().toggle();\n }\n}\n","/**\n * UniExpandAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-area component.\n */\n\nexport { UniExpandAreaComponent } from './expand-area.component';\n","/**\n * UniExpandToggleComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-toggle component.\n */\n\nexport { UniExpandToggleComponent } from './expand-toggle.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { acceptableFile } from '../../cdk';\nimport { DragAndDropDirective } from '../../directives/drag-and-drop/drag-and-drop.directive';\nimport type { NullableSize, Radius, Variant } from '@uni-design-system/uni-core';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniBoxComponent, UniStackComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-file-drop-zone',\n imports: [\n DragAndDropDirective,\n UniBoxComponent,\n UniButtonComponent,\n UniStackComponent,\n UniTextComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './file-drop-zone.component.html',\n})\nexport class UniFileDropZoneComponent {\n selectedFile = signal<File | undefined>(undefined);\n selectedFileName = computed(() => this.selectedFile()?.name);\n attachmentState = signal<'upload' | undefined>(undefined);\n\n fileSelectorRef = viewChild.required<ElementRef<HTMLInputElement>>('fileSelector');\n\n get fileSelectorElement() {\n return this.fileSelectorRef().nativeElement;\n }\n\n height = input<number | string>();\n borderRadius = input<Radius>('md');\n border = input<Variant>('light');\n padding = input<NullableSize>('lg');\n useBrowseButton = input<boolean>(false);\n browseButtonText = input<string>('Browse for file');\n allowedFileExtensions = input<string[]>([]);\n label = input<string>();\n\n helpTemplate = input<TemplateRef<unknown> | null>(null);\n helpTemplateContext = input<unknown | null>(null);\n\n fileAttached = output<File | undefined>();\n fileRemoved = output();\n\n /**\n * The zone acts as the keyboard-reachable file picker only when no browse\n * button is rendered (nesting a button inside a button-role zone would be\n * invalid ARIA) and no file is attached yet.\n */\n zoneIsInteractive = computed(() => !this.useBrowseButton() && !this.attachmentState());\n\n sanitizedFileExtensions = computed(() =>\n this.allowedFileExtensions().map((ext) => (ext.includes('.') ? ext : '.' + ext))\n );\n\n helpText = computed(() => {\n const extensions = this.sanitizedFileExtensions();\n let text = '';\n\n if (extensions.length === 1) {\n text = `${extensions[0]} format allowed`;\n }\n\n if (extensions.length > 1) {\n text = extensions.join(', ') + ' formats allowed';\n }\n\n return text;\n });\n\n constructor() {\n effect(() => {\n const files = this.selectedFile();\n\n if (files) {\n this.attachmentState.set('upload');\n } else {\n this.attachmentState.set(undefined);\n }\n });\n }\n\n openFileSelector() {\n this.fileSelectorElement.click();\n }\n\n selectFiles(fileList: FileList | null): void {\n if (!fileList) return;\n if (!acceptableFile(fileList[0], this.sanitizedFileExtensions())) return;\n this.selectedFile.set(fileList[0]);\n this.fileAttached.emit(fileList[0]);\n }\n\n onFileInputChange() {\n this.selectFiles(this.fileSelectorElement.files);\n this.fileSelectorElement.value = '';\n }\n\n cancelUpload() {\n this.selectedFile.set(undefined);\n this.fileAttached.emit(undefined);\n this.fileRemoved.emit();\n }\n\n removeAttachment() {\n this.selectedFile.set(undefined);\n }\n}\n","<!-- Without a browse button the zone itself is the keyboard path to the\n native file picker; with one, the button already provides it -->\n<div\n box-layout\n [border]=\"border()\"\n [borderRadius]=\"borderRadius()\"\n [dashBorder]=\"[undefined, 'replace'].includes(attachmentState())\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n [padding]=\"padding()\"\n dragAndDrop\n (onFileDropped)=\"selectFiles($event)\"\n [height]=\"height()\"\n [attr.role]=\"zoneIsInteractive() ? 'button' : null\"\n [attr.tabindex]=\"zoneIsInteractive() ? 0 : null\"\n [attr.aria-label]=\"zoneIsInteractive() ? label() || 'Choose a file' : null\"\n (keydown.enter)=\"zoneIsInteractive() && openFileSelector()\"\n (keydown.space)=\"\n zoneIsInteractive() && openFileSelector(); zoneIsInteractive() && $event.preventDefault()\n \"\n>\n <div stack-layout gap=\"md\" alignItems=\"center\">\n @switch (attachmentState()) {\n @case ('upload') {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">{{ label() }}</span>\n <span uni-text=\"title-small\">{{ selectedFileName() }}</span>\n </div>\n <button text-button (click)=\"removeAttachment()\" variant=\"warn\">Cancel</button>\n }\n\n @default {\n @if (useBrowseButton()) {\n <button text-button (click)=\"openFileSelector()\">\n {{ browseButtonText() }}\n </button>\n <span uni-text>OR</span>\n }\n\n @if (!helpTemplate()) {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">Drag and drop the file here</span>\n @if (helpText()) {\n <span uni-text=\"title-small\">{{ helpText() }}</span>\n }\n </div>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"helpTemplate()\"\n [ngTemplateOutletContext]=\"helpTemplateContext()\"\n ></ng-container>\n }\n }\n }\n </div>\n\n <input\n #fileSelector\n type=\"file\"\n style=\"display: none\"\n (change)=\"onFileInputChange()\"\n [accept]=\"sanitizedFileExtensions().join(',')\"\n [multiple]=\"false\"\n />\n</div>\n","/**\n * UniFileDropZoneComponent Barrel File\n *\n * This file exports all public-facing elements of the file-drop-zone component.\n */\n\nexport { UniFileDropZoneComponent } from './file-drop-zone.component';\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../../input-box/input-box.component';\n\n/**\n * Text input that emits `change` only after the user pauses typing. Wears the\n * shared input chrome (themed color, border, typeface, focus ring) via\n * `uni-input-box`; project adornments with the `pre-input` / `post-input`\n * slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a\n * wrapping composite (e.g. SearchInput's combobox) annotate the real input\n * element.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-debounce-input',\n imports: [UniInputBoxComponent],\n templateUrl: './debounce-input.component.html',\n})\nexport class UniDebounceInputComponent {\n inputName = input<string>();\n inputId = input<string>();\n debounceTime = input<number>(400);\n /** Accessible name for the input. */\n label = input<string>();\n placeholder = input('');\n disabled = input(false);\n\n // ARIA passthroughs for composite widgets (combobox etc.).\n role = input<string>();\n ariaExpanded = input<boolean | undefined>(undefined);\n ariaControls = input<string>();\n ariaActivedescendant = input<string>();\n\n // TODO(v4): rename to valueChange — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n\n value = signal<string | undefined>(undefined);\n\n private readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private lastEmitted: string | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n });\n }\n\n handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.value.set(value);\n\n // Debounce, emitting only when the value actually changed.\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => {\n if (value !== this.lastEmitted) {\n this.lastEmitted = value;\n this.change.emit(value);\n }\n }, this.debounceTime());\n }\n\n /** Empty the field immediately, cancelling any pending emit. */\n clear() {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.value.set('');\n if (this.lastEmitted !== '') {\n this.lastEmitted = '';\n this.change.emit('');\n }\n }\n\n focus() {\n this.inputElement().nativeElement.focus();\n }\n\n inputClass = css({\n flexGrow: 1,\n width: '100%',\n minWidth: 0,\n });\n}\n","<uni-input-box>\n <ng-content select=\"[pre-input]\" />\n <input\n #field\n [class]=\"inputClass\"\n type=\"text\"\n [name]=\"inputName()\"\n [id]=\"inputId()\"\n [value]=\"value() ?? ''\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label() || null\"\n [attr.role]=\"role() || null\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() || null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() || null\"\n [attr.aria-autocomplete]=\"role() === 'combobox' ? 'list' : null\"\n />\n <ng-content select=\"[post-input]\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-input',\n imports: [UniInputBoxComponent],\n templateUrl: './input.component.html',\n})\nexport class UniInputComponent implements FormValueControl<string> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLInputElement).value);\n }\n\n inputClass = css({});\n}\n","<uni-input-box [error]=\"showError()\">\n <ng-content select=\"pre-input\" />\n <input\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [class]=\"inputClass\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <ng-content select=\"post-input\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { AbsoluteSize } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-json-view',\n imports: [],\n templateUrl: './json-view.component.html',\n})\nexport class UniJsonViewComponent {\n json = input<unknown>();\n rows = input<number>(6);\n fontSize = input<AbsoluteSize | string>('medium');\n width = input<string | number>('100%');\n selectOnClick = input<boolean>(true);\n\n jsonString = computed(() => JSON.stringify(this.json(), null, 2));\n\n className = computed(() =>\n css({\n fontSize: this.fontSize(),\n width: this.width(),\n })\n );\n\n selectContents(jsonArea: HTMLTextAreaElement) {\n if (!this.selectOnClick()) return;\n jsonArea.select();\n }\n}\n","<textarea #jsonArea (click)=\"selectContents(jsonArea)\" [class]=\"className()\" [rows]=\"rows()\">{{\n jsonString()\n}}</textarea>\n","/**\n * UniJsonViewComponent Barrel File\n *\n * This file exports all public-facing elements of the json-view component.\n */\n\nexport { UniJsonViewComponent } from './json-view.component';\n","import { TemplateRef } from '@angular/core';\nimport type {\n ColorKey,\n ContainerColorToken,\n NullableSize,\n Radius,\n Typeface,\n Variant,\n} from '@uni-design-system/uni-core';\n\ninterface BaseMenuItem {\n symbolName?: string;\n action?: () => void;\n /** Tone routed through the theme's `menuItem.variants` (e.g. 'warn' for destructive actions). */\n variant?: Variant;\n disabled?: boolean;\n}\n\nexport interface MenuItemWithLabel extends BaseMenuItem {\n label: string;\n template?: never;\n context?: never;\n divider?: never;\n}\n\nexport interface MenuItemWithTemplate<T = any> extends BaseMenuItem {\n label?: never;\n template: TemplateRef<T>;\n context: T;\n divider?: never;\n}\n\n/** A non-interactive separator between item groups; styled by the theme's `menu` options. */\nexport interface MenuDivider {\n divider: true;\n}\n\nexport type MenuItem<T = any> = MenuDivider | MenuItemWithLabel | MenuItemWithTemplate<T>;\n\nexport const isDivider = (item: MenuItem): item is MenuDivider => 'divider' in item;\n\n/** Theme options for the `menuItem` component entry. */\nexport interface UniMenuItemOptions {\n height?: number;\n paddingHorizontal?: NullableSize;\n gap?: NullableSize;\n borderRadius?: Radius;\n typeface?: Typeface;\n /** Resting text color; undefined inherits the panel's on-color. */\n textColor?: ColorKey;\n hoverColor?: ContainerColorToken;\n /** Trailing symbol marking the active item; undefined/'' renders none. */\n activeSymbol?: string;\n /** Hover/focus transition in seconds; 0 switches instantly. */\n transitionSpeed?: number;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { ThemeService } from '../../../theming';\nimport { HOVER_OR_KEYBOARD_FOCUS, type ContainerColorToken, type Variant } from '@uni-design-system/uni-core';\nimport type { UniMenuItemOptions } from './menu-item.model';\n\n@Component({\n selector: '[uni-menu-item], [menu-item]',\n imports: [UniSymbolComponent, UniBoxComponent, NgTemplateOutlet],\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.aria-current]': \"active() ? 'true' : null\",\n '[class]': 'menuItemClassName()',\n },\n})\nexport class UniMenuItemComponent<T = any> {\n theme = inject(ThemeService);\n private _elementRef = inject(ElementRef);\n\n label = input<string>();\n template = input<TemplateRef<T>>();\n context = input<T>();\n symbolName = input<string>();\n active = input<boolean>();\n /** Tone routed through the theme's `menuItem` variants (e.g. 'warn'). */\n variant = input<Variant | undefined>();\n /** Per-instance override of the theme's `menuItem.hoverColor`. */\n hoverColor = input<ContainerColorToken | undefined>();\n disabled = input<boolean>(false);\n\n protected readonly options = computed(() =>\n this.theme.getComponentOptions<UniMenuItemOptions>('menuItem')()\n );\n\n protected readonly activeSymbol = computed(() => this.options().activeSymbol);\n\n /** Typography comes from the host's themed typeface; the span only lays out. */\n protected readonly LabelClassName = css({ display: 'block', whiteSpace: 'nowrap' });\n\n protected readonly menuItemClassName = computed(() => {\n const options = this.options();\n const variant = this.variant();\n const variantStyle = variant\n ? this.theme.component('menuItem')().variants?.[variant]\n : undefined;\n const transitionSpeed = options.transitionSpeed ?? 0;\n\n return css([\n {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n boxSizing: 'border-box',\n cursor: 'pointer',\n height: options.height,\n ...this.theme.horizontalPadding(options.paddingHorizontal),\n ...this.theme.gap(options.gap),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n\n // Roving focus highlights items the same way hover does — but only\n // when focus is keyboard-driven. `onOpened()` focuses an item on every\n // open, including pointer opens, and plain `:focus` would paint that\n // as a highlight the mouse user never asked for, reading as a\n // preselected item. `:focus-visible` excludes programmatic focus that\n // follows a click while still matching keyboard navigation.\n [HOVER_OR_KEYBOARD_FOCUS]: {\n ...this.theme.colorPair(this.hoverColor() ?? options.hoverColor),\n outline: 'none',\n },\n\n '&[aria-disabled=\"true\"]': {\n color: this.theme.colors()['on-disabled-surface'],\n pointerEvents: 'none',\n },\n },\n transitionSpeed > 0 && { transition: `all ${transitionSpeed}s ease` },\n // Variant tones override the base look. A variant that restyles the\n // highlight must key it with HOVER_OR_KEYBOARD_FOCUS — Emotion merges by\n // exact selector text, so a variant spelling it `&:hover, &:focus`\n // would both miss the override and reintroduce the phantom highlight.\n { ...variantStyle },\n ]);\n });\n\n /** Host element, used by Menu for roving-focus bookkeeping. */\n get host(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\n","@let tpl = template();\n@let symbol = symbolName();\n@if (symbol) {\n <uni-symbol [name]=\"symbol\"></uni-symbol>\n}\n<div box-layout [grow]=\"1\">\n @if (tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"context()\"></ng-container>\n } @else {\n <span [class]=\"LabelClassName\">{{ label() }}</span>\n }\n</div>\n@let activeSym = activeSymbol();\n@if (active() && activeSym) {\n <uni-symbol [name]=\"activeSym\"></uni-symbol>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type Placement } from '../../cdk';\n\nimport { UniMenuItemComponent } from './menu-item/menu-item.component';\nimport { isDivider, MenuItem } from './menu-item/menu-item.model';\nimport type { UniMenuOptions } from './menu.model';\nimport { UniDropdownComponent } from '../dropdown';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-menu',\n imports: [UniMenuItemComponent, UniDropdownComponent],\n changeDetection: ChangeDetectionStrategy.OnPush, // Crucial for zoneless\n template: `\n <!-- Keydown listens for arrow keys bubbling from the projected (focusable)\n trigger; the wrapper itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #trigger [class]=\"TriggerClassName\" (keydown)=\"onTriggerKeydown($event)\">\n <ng-content></ng-content>\n </div>\n\n @if (menuItems()) {\n <uni-dropdown\n [trigger]=\"trigger\"\n [placement]=\"placement()\"\n ariaHasPopup=\"menu\"\n [color]=\"menuOptions().color\"\n [border]=\"menuOptions().border\"\n [borderRadius]=\"menuOptions().borderRadius\"\n [shadow]=\"menuOptions().shadow\"\n [paddingVertical]=\"menuOptions().paddingVertical\"\n [paddingHorizontal]=\"menuOptions().paddingHorizontal\"\n #dropdown\n (dropdownShowing)=\"onOpened()\"\n >\n <!-- Roving-focus composite: the container handles keys bubbling from\n the focused item (menu-item hosts carry tabindex=\"-1\"), and\n Enter/Space activation is dispatched from onMenuKeydown. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"menu\" [class]=\"menuClassName()\" (keydown)=\"onMenuKeydown($event, dropdown)\">\n @for (item of menuItems(); track item) {\n @if (isDivider(item)) {\n <div role=\"separator\" [class]=\"dividerClassName()\"></div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n menu-item\n [label]=\"item.label\"\n [symbolName]=\"item.symbolName\"\n [active]=\"activeItem() === item\"\n [template]=\"item.template\"\n [context]=\"item.context\"\n [variant]=\"item.variant\"\n [disabled]=\"item.disabled ?? false\"\n (click)=\"handleMenuItemClick(item, dropdown)\"\n ></div>\n }\n }\n </div>\n </uni-dropdown>\n }\n `,\n host: { '[class]': 'className()' },\n})\nexport class UniMenuComponent {\n private theme = inject(ThemeService);\n\n // Modern Signal Inputs for perfect Zoneless tracking\n menuItems = input.required<MenuItem[]>();\n activeItem = input<MenuItem>();\n placement = input<Placement>('bottom-start');\n\n // Modern Signal Output\n menuItemClicked = output<MenuItem>();\n\n TriggerClassName = css({ display: 'inline-block' });\n\n /** Type guard for the template: dividers render as separators, not items. */\n protected readonly isDivider = isDivider;\n\n protected readonly menuOptions = computed(() =>\n this.theme.getComponentOptions<UniMenuOptions>('menu')()\n );\n\n protected readonly menuClassName = computed(() =>\n css({ minWidth: this.menuOptions().minWidth })\n );\n\n protected readonly dividerClassName = computed(() => {\n const { dividerBorder, dividerSpacing } = this.menuOptions();\n // Read spacing directly: getSpacing('none') yields the string 'none',\n // which is invalid as a margin and must resolve to 0 instead.\n const spacing = this.theme.spacing()[dividerSpacing ?? 'none'];\n return css({\n ...this.theme.borderTop(dividerBorder),\n marginBlock: spacing,\n marginInline: spacing,\n });\n });\n\n private itemComponents = viewChildren(UniMenuItemComponent);\n private dropdownComponent = viewChild(UniDropdownComponent);\n\n /** Which item receives focus when the menu opens (ArrowUp opens onto the last item). */\n private pendingFocus: 'first' | 'last' = 'first';\n\n protected readonly className = computed(() => {\n return css({\n margin: 'unset',\n padding: 'unset',\n });\n });\n\n handleMenuItemClick(item: MenuItem, dropdown: UniDropdownComponent) {\n if (!isDivider(item) && item.action) {\n item.action();\n }\n\n this.menuItemClicked.emit(item);\n dropdown.hideDropdown();\n }\n\n /** Enabled items participating in keyboard navigation. */\n private get navigableItems(): UniMenuItemComponent[] {\n return this.itemComponents().filter((item) => !item.disabled());\n }\n\n onOpened() {\n const items = this.navigableItems;\n if (items.length === 0) return;\n const target = this.pendingFocus === 'last' ? items[items.length - 1] : items[0];\n this.pendingFocus = 'first';\n target.focus();\n }\n\n onTriggerKeydown(event: KeyboardEvent) {\n const dropdown = this.dropdownComponent();\n if (!dropdown || (event.key !== 'ArrowDown' && event.key !== 'ArrowUp')) return;\n event.preventDefault();\n\n this.pendingFocus = event.key === 'ArrowUp' ? 'last' : 'first';\n if (dropdown.showing()) {\n this.onOpened();\n } else {\n dropdown.toggleDropdown();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent, dropdown: UniDropdownComponent) {\n const items = this.navigableItems;\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.host === event.target);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n items[(currentIndex + 1) % items.length].focus();\n break;\n case 'ArrowUp':\n event.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n case 'Home':\n event.preventDefault();\n items[0].focus();\n break;\n case 'End':\n event.preventDefault();\n items[items.length - 1].focus();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n (event.target as HTMLElement).click();\n break;\n case 'Tab':\n // A menu is not part of the page tab sequence: close and let focus\n // return to the trigger, then continue tabbing naturally.\n dropdown.hideDropdown();\n break;\n default:\n this.typeahead(event, items, currentIndex);\n }\n }\n\n /** First-character matching, starting after the focused item and wrapping. */\n private typeahead(event: KeyboardEvent, items: UniMenuItemComponent[], currentIndex: number) {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n const char = event.key.toLowerCase();\n if (char === ' ') return;\n\n for (let i = 1; i <= items.length; i++) {\n const item = items[(currentIndex + i) % items.length];\n if (item.label()?.toLowerCase().startsWith(char)) {\n event.preventDefault();\n item.focus();\n return;\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { Option } from '../../cdk';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniBoxComponent } from '../layout';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'uni-multi-select',\n imports: [UniCheckboxComponent, UniBoxComponent],\n templateUrl: './multi-select.component.html',\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectComponent<T = unknown> {\n // Data Inputs\n options = input<Option<T>[]>([]);\n selections = input<T[] | null | undefined>(undefined);\n updates = output<T[] | undefined>();\n\n // Styling Inputs\n flexDirection = input<'row' | 'row-reverse' | 'column' | 'column-reverse'>('column');\n checkboxGap = input<NullableSize | undefined>('sm');\n\n protected readonly values = computed<unknown[]>(() => this.selections() || []);\n\n protected readonly optionsWithSelections = computed<Option<T>[]>(() =>\n this.options().map((option) => ({\n ...option,\n selected: this.values().includes(option.value),\n }))\n );\n\n protected readonly className = css({ display: 'contents' });\n\n handleCheck(checked: boolean, value: T) {\n const selections = this.selections();\n\n if (!selections && !checked) return;\n\n if (selections && !checked) {\n const filteredSelections = selections.filter((item) => item != value);\n const isEmpty = filteredSelections.length === 0;\n this.updates.emit(isEmpty ? undefined : filteredSelections);\n return;\n }\n\n if (checked) {\n this.updates.emit([...(selections || []), value]);\n return;\n }\n }\n\n selectAll() {\n const allValues = this.options().map((option) => option.value);\n this.updates.emit(allValues);\n }\n\n deselectAll() {\n this.updates.emit(undefined);\n }\n\n optionWrapper = css({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n });\n}\n","<div box-layout display=\"flex\" [flexDirection]=\"flexDirection()\" [gap]=\"checkboxGap()\">\n @for (option of options(); track option) {\n <div [class]=\"optionWrapper\">\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"values().indexOf(option.value) > -1\"\n (checkedChange)=\"handleCheck($event, option.value)\"\n variant=\"primary\"\n >\n </uni-checkbox>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { createListboxNavigation, Option, visuallyHidden, type Options } from '../../cdk';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { UniBoxComponent, UniRowComponent, UniStackComponent } from '../layout';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniDividerComponent } from '../divider';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniTextComponent } from '../text/text.component';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniMultiSelectDropdownOptions } from './multi-select-dropdown.model';\n\n@Component({\n selector: 'uni-multi-select-dropdown',\n imports: [\n UniCheckboxComponent,\n UniBoxComponent,\n UniDropdownComponent,\n UniStackComponent,\n UniDividerComponent,\n UniButtonComponent,\n UniTextComponent,\n UniSymbolComponent,\n UniRowComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './multi-select-dropdown.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'multiSelectDropdown' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectDropdownComponent<T = unknown>\n extends BaseComponent<UniMultiSelectDropdownOptions>\n implements FormValueControl<T[]>\n{\n protected readonly className = css({ display: 'contents' });\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T[]>([]);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input.required<Options<T>>();\n readonly placeholder = input<string>('');\n\n /**\n * What the field is for, e.g. \"Fruits\". Rendered visually hidden inside the\n * trigger so its accessible name reads \"Fruits, Apple, Pear\" — without it a\n * screen reader announces only the current selection, with no clue which\n * field it belongs to.\n */\n readonly label = input<string>();\n\n /** Debounce for the filter box, matching the library's input debounce. */\n readonly debounceTime = input(200);\n\n protected readonly srOnly = css(visuallyHidden);\n\n protected readonly query = signal('');\n private queryTimer?: ReturnType<typeof setTimeout>;\n\n protected readonly filteredOptions = computed<Options<T>>(() => {\n const filterText = this.query().toLowerCase();\n return this.options().filter((opt) => opt.label.toLowerCase().includes(filterText));\n });\n\n private readonly optionRefs = viewChildren<ElementRef<HTMLElement>>('optionRow');\n\n /**\n * Roving focus over the options. The shared helper owns the index\n * arithmetic — wrapping, Home/End, and never pointing past a list the\n * filter has narrowed — the same contract `uni-search-input` and\n * `uni-tag-input` use, so the keys behave identically across all three.\n */\n protected readonly list = createListboxNavigation({\n count: () => this.filteredOptions().length,\n idPrefix: 'uni-multi-select',\n });\n\n /** Announced with the selection so the count is not left to guesswork. */\n readonly selectionSummary = computed(() => {\n const count = this.value().length;\n return count === 0 ? 'none selected' : `${count} selected`;\n });\n\n // Derived display string\n readonly selectedLabelsText = computed(() => {\n const selections = this.value();\n const allOptions = this.options();\n\n // Find labels for each selected ID\n const labels = selections\n .map((value) => allOptions.find((opt) => opt.value === value)?.label)\n .filter((label) => !!label); // Remove undefined if an ID isn't found\n\n return labels.length > 0 ? labels.join(', ') : this.placeholder();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textColor = computed(() => {\n return this.selectedLabelsText() === this.placeholder()\n ? this.componentOptions().placeholderTextColor\n : this.componentOptions().textColor;\n });\n\n triggerClass = css({\n all: 'unset',\n display: 'block',\n cursor: 'pointer',\n width: '100%',\n\n '&:focus > :first-child > :first-child': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n });\n\n protected readonly searchInputClass = computed(() =>\n css({\n ...removeInputPlatformStyling,\n ...this.theme.border(this.componentOptions().searchInputBorder),\n ...this.theme.radius(this.componentOptions().searchInputBorderRadius),\n paddingBlock: 4,\n paddingInline: 8,\n width: 'auto',\n\n '&:focus': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n })\n );\n\n protected handleQueryInput(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n // Debounced so a long option list is not re-filtered on every keystroke.\n clearTimeout(this.queryTimer);\n this.queryTimer = setTimeout(() => this.query.set(text), this.debounceTime());\n }\n\n /**\n * Arrow keys walk the options from anywhere in the panel, including the\n * filter box — previously the only way in was to Tab through every\n * checkbox.\n */\n protected onPanelKeydown(event: KeyboardEvent) {\n if (!this.list.navigate(event)) return;\n const row = this.optionRefs()[this.list.activeIndex()]?.nativeElement;\n row?.querySelector<HTMLElement>('input, [tabindex]')?.focus();\n }\n\n /** Keeps the active index in step when focus lands on a row by pointer. */\n protected onOptionFocus(index: number) {\n this.list.show();\n this.list.setActive(index);\n }\n\n selectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const allValues = this.options().map((option) => option.value);\n this.value.set(allValues);\n }\n\n deselectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n this.value.set([]);\n }\n\n protected isOptionSelected(option: Option<T>) {\n return computed(() => this.value().includes(option.value));\n }\n\n toggleOption(option: Option<T>, checked: boolean) {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const { value } = option;\n this.value.update((current) => {\n if (checked) {\n // Add selection if not already present\n return current.includes(value) ? current : [...current, value];\n } else {\n // Remove selection\n return current.filter((item) => item !== value);\n }\n });\n }\n}\n","<button\n [class]=\"triggerClass\"\n #trigger\n [style.cursor]=\"disabled() ? 'default' : 'pointer'\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n (click)=\"!disabled() && touched.set(true)\"\n>\n @if (label(); as fieldLabel) {\n <span [class]=\"srOnly\">{{ fieldLabel }},</span>\n }\n <span [class]=\"srOnly\">{{ selectionSummary() }}</span>\n <uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div\n row-layout\n alignItems=\"center\"\n justifyContent=\"space-between\"\n [fullWidth]=\"true\"\n [minWidth]=\"0\"\n paddingLeft=\"sm\"\n >\n <span uni-text\n display=\"block\"\n [typeface]=\"componentOptions().textRole\"\n [color]=\"textColor()\"\n [ellipsis]=\"true\"\n [style.flex-grow]=\"1\"\n >{{ selectedLabelsText() }}</span>\n <uni-symbol name=\"keyboard_arrow_down\" [style.flex-shrink]=\"0\"></uni-symbol>\n </div>\n </uni-input-box>\n</button>\n<uni-dropdown\n #dropdown\n [trigger]=\"trigger\"\n ariaHasPopup=\"dialog\"\n (dropdownShowing)=\"$event && searchInput.focus()\"\n (dropdownHiding)=\"$event && trigger.focus()\"\n>\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div (keydown)=\"onPanelKeydown($event)\">\n <div box-layout gap=\"xs\" padding=\"xs\">\n <input\n #searchInput\n type=\"text\"\n [class]=\"searchInputClass()\"\n [value]=\"query()\"\n (input)=\"handleQueryInput($event)\"\n placeholder=\"Search...\"\n aria-label=\"Filter options\"\n (click)=\"$event.stopPropagation()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div\n stack-layout\n gap=\"xs\"\n padding=\"xs\"\n role=\"group\"\n [attr.aria-label]=\"label() ? label() + ' options' : 'Options'\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div #optionRow (focusin)=\"onOptionFocus(i)\">\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"isOptionSelected(option)()\"\n (checkedChange)=\"toggleOption(option, $event)\"\n variant=\"primary\"\n [disabled]=\"disabled()\"\n >\n </uni-checkbox>\n </div>\n }\n @if (filteredOptions().length === 0) {\n <span uni-text=\"label\" role=\"status\">No options match.</span>\n }\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div row-layout gap=\"xs\" justifyContent=\"space-around\" padding=\"xs\">\n <button text-button (click)=\"dropdown.hideDropdown()\" size=\"sm\" variant=\"ghost\">Done</button>\n </div>\n </div>\n</uni-dropdown>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { Variant } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniNotificationBadgeOptions } from './notification-badge.model';\n\n@Component({\n selector: 'uni-notification-badge',\n imports: [UniTextComponent],\n templateUrl: './notification-badge.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'notificationBadge' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniNotificationBadgeComponent extends BaseComponent<UniNotificationBadgeOptions> {\n count = input<number | undefined>(undefined);\n maxCount = input<number>(99);\n badgeVariant = input<'dot' | 'count' | 'pill'>('count');\n color = input<Variant | undefined>(undefined);\n position = input<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>('top-right');\n show = input<boolean>(true);\n\n /**\n * Screen-reader text for the badge (e.g. \"5 unread messages\"). Without it\n * a sensible default is announced; a bare number or dot carries no meaning.\n */\n ariaLabel = input<string>();\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n protected readonly announcement = computed(() => {\n const label = this.ariaLabel();\n if (label) return label;\n if (this.badgeVariant() === 'dot') return 'New notifications';\n return `${this.displayValue()} notifications`;\n });\n\n displayValue = computed(() => {\n const count = this.count();\n const maxCount = this.maxCount();\n const variant = this.badgeVariant();\n\n if (variant === 'dot') {\n return '';\n }\n\n if (count === undefined || count <= 0) {\n return '';\n }\n\n if (count > maxCount) {\n return `${maxCount}+`;\n }\n\n return count.toString();\n });\n\n shouldShow = computed(() => {\n const show = this.show();\n const count = this.count();\n const variant = this.badgeVariant();\n\n if (!show) return false;\n\n if (variant === 'dot') return true;\n\n return count !== undefined && count > 0;\n });\n\n protected readonly className = computed(() => {\n const variant = this.badgeVariant();\n const color = this.color();\n const position = this.position();\n const offset = this.componentOptions().offset + 'px';\n\n const positionStyles = {\n 'top-right': { top: offset, right: offset },\n 'top-left': { top: offset, left: offset },\n 'bottom-right': { bottom: offset, right: offset },\n 'bottom-left': { bottom: offset, left: offset },\n }[position];\n\n const variantStyles = {\n dot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n minWidth: 'unset',\n },\n count: {\n width: 20,\n height: 20,\n borderRadius: 10,\n },\n pill: {\n minWidth: '24px',\n height: '20px',\n borderRadius: '10px',\n padding: '0 8px',\n },\n }[variant];\n\n return css({\n position: 'relative',\n display: 'inline-block',\n\n '& .notification-badge-indicator': {\n position: 'absolute',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.getContainerColors(color || 'warn'),\n zIndex: 1,\n\n ...positionStyles,\n ...variantStyles,\n },\n });\n });\n}\n","<ng-content></ng-content>\n@if (shouldShow()) {\n<div class=\"notification-badge-indicator\" aria-hidden=\"true\">\n <span uni-text\n typeface=\"overline\"\n align=\"center\"\n [style.max-width]=\"badgeVariant() !== 'pill' ? (displayValue().length * 5 + 'px') : ''\"\n >{{ displayValue() }}</span>\n</div>\n<span [class]=\"srOnlyClass\">{{ announcement() }}</span>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { fadeOut, type Variant } from '@uni-design-system/uni-core';\n\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniAlertOptions } from './alert.model';\n\n@Component({\n selector: 'uni-alert',\n imports: [\n UniRowComponent,\n UniIconButtonComponent,\n UniTextComponent,\n UniBoxComponent,\n UniIconComponent,\n UniSymbolComponent,\n ],\n templateUrl: './alert.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'alert' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniAlertComponent extends BaseComponent<UniAlertOptions> implements AfterViewInit {\n show = model<boolean>();\n iconName = input<IconName | undefined>(undefined);\n symbolName = input<string | undefined>(undefined);\n useVariant = input<boolean>(false);\n\n showing = output<boolean>();\n\n @ViewChild('alert') alertRef?: ElementRef<HTMLDialogElement>;\n\n private readonly alertState = signal<'open' | 'closing' | 'closed'>('closed');\n\n private readonly effectiveVariant = computed<Variant>(\n () => this.variant() || this.componentOptions().defaultVariant\n );\n\n protected readonly alertClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.effectiveVariant(), this.useVariant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.border(this.effectiveVariant()),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n\n transition: `all ${this.componentOptions().transitionSpeed}s ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n top: this.componentOptions().topPosition,\n\n '&[open]': {\n '@starting-style': {\n top: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n private readonly fadeOut = keyframes({ ...fadeOut });\n\n constructor() {\n super();\n effect(() => {\n if (this.show() === true) {\n this.open();\n } else if (this.show() === false) {\n this.close();\n }\n });\n }\n\n ngAfterViewInit() {\n this.alertRef?.nativeElement.addEventListener('animationend', (e) => {\n if (e.animationName === this.fadeOut.toString()) {\n this.alertRef?.nativeElement.close();\n this.showing.emit(false);\n this.alertState.set('closed');\n }\n });\n }\n\n open() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.removeAttribute('closing');\n this.alertRef.nativeElement.show();\n this.alertState.set('open');\n this.showing.emit(true);\n }\n\n close() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.setAttribute('closing', 'true');\n this.alertState.set('closing');\n this.show.set(false);\n }\n\n protected readonly effectiveIconName = computed<IconName | undefined>(() => this.iconName());\n}\n","<!-- role=\"alert\" makes the message announce immediately when shown -->\n<dialog #alert [class]=\"alertClass()\" role=\"alert\">\n <div row-layout gap=\"md\">\n @if (iconName() || symbolName()) {\n <div box-layout [height]=\"26\" [width]=\"26\">\n @if (effectiveIconName()) {\n <uni-icon [name]=\"effectiveIconName()!\" />\n } @else {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"26\" />\n }\n </div>\n }\n <span uni-text>\n <ng-content></ng-content>\n </span>\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">close</button>\n </div>\n</dialog>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport {\n UniDialogButtonsComponent,\n UniDialogComponent,\n UniDialogHeaderComponent,\n} from '../../dialog';\nimport { UniBoxComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport type { Confirmation } from '../../../cdk/notification';\n\n@Component({\n selector: 'uni-confirmation-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n UniDialogComponent,\n UniDialogHeaderComponent,\n UniBoxComponent,\n UniTextComponent,\n UniDialogButtonsComponent,\n ],\n templateUrl: './confirmation-dialog.component.html',\n})\nexport class ConfirmationDialogComponent {\n show = input(false);\n confirmation = input<Confirmation>();\n showing = output<boolean>();\n}\n","<dialog uni-dialog [show]=\"show()\" (showing)=\"showing.emit($event)\">\n <div uni-dialog-header>\n {{ confirmation()?.title }}\n </div>\n <div box-layout padding=\"md\">\n <span uni-text>\n {{ confirmation()?.message }}\n </span>\n </div>\n <div\n dialog-buttons\n [confirmButtonText]=\"confirmation()?.actionLabel\"\n (confirmed)=\"confirmation()?.action()\"\n [cancelButtonText]=\"confirmation()?.dismissLabel\"\n ></div>\n</dialog>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { useTimer } from '../../../cdk';\nimport { Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniButtonComponent } from '../../button';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniSnackbarOptions } from './snackbar.model';\n\n@Component({\n selector: 'uni-snackbar',\n imports: [\n UniRowComponent,\n UniBoxComponent,\n UniTextComponent,\n UniIconButtonComponent,\n UniSymbolComponent,\n UniIconComponent,\n UniButtonComponent,\n ],\n templateUrl: './snackbar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'snackbar' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSnackbarComponent\n extends BaseComponent<UniSnackbarOptions>\n implements AfterViewInit\n{\n timer = useTimer();\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>();\n iconName = input<IconName>();\n symbolName = input<string>();\n timeout = input<number | string | 'disabled'>();\n actionLabel = input<string>();\n\n useVariant = input<boolean>(false);\n\n action = output();\n showing = output<boolean>();\n\n snackbarRef = viewChild<ElementRef>('snackbar');\n\n private get _snackbar(): HTMLDialogElement | undefined {\n return this.snackbarRef()?.nativeElement;\n }\n\n constructor() {\n super();\n\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n protected readonly snackbarClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.variant() || 'primary', this.useVariant()),\n ...this.theme.radius('sm'),\n ...this.theme.border(this.variant() || 'primary'),\n ...this.theme.boxShadow('dialog'),\n padding: 0,\n transition: `all ${this.componentOptions().transitionDelay} ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n bottom: this.componentOptions().bottomPosition,\n zIndex: Z_INDEX.dialog,\n position: 'fixed',\n\n '&[open]': {\n '@starting-style': {\n bottom: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n fadeOut = keyframes({\n '0% ': {\n opacity: 1,\n },\n '100%': {\n opacity: 0,\n },\n });\n\n ngAfterViewInit() {\n this._snackbar?.addEventListener('animationend', (e) => {\n if (e.animationName == this.fadeOut) {\n this._snackbar?.close();\n this.showing.emit(false);\n }\n });\n }\n\n private get _timeout(): number | undefined {\n const timeout = this.timeout();\n if (timeout === 'disabled') return undefined;\n\n return typeof timeout === 'string'\n ? parseFloat(timeout)\n : timeout || this.componentOptions().autoCloseDelay;\n }\n\n open() {\n this._snackbar?.removeAttribute('closing');\n this._snackbar?.show();\n this.show.set(true);\n this.showing.emit(true);\n\n if (this._timeout) this.timer.start(this._timeout, () => this.close());\n }\n\n close() {\n this._snackbar?.setAttribute('closing', 'true');\n this.show.set(false);\n }\n\n protected pauseTimer() {\n this.timer.pause();\n }\n\n protected resumeTimer() {\n this.timer.resume();\n }\n}\n","@let icon = iconName();\n@let symbol = symbolName();\n<!-- role=\"status\" announces the message politely without stealing focus -->\n<dialog\n #snackbar\n [class]=\"snackbarClass()\"\n role=\"status\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\"\n (focusin)=\"pauseTimer()\"\n (focusout)=\"resumeTimer()\"\n>\n <div row-layout alignItems=\"center\">\n @if (icon || symbol) {\n <div box-layout [height]=\"26\" [width]=\"26\" paddingLeft=\"sm\">\n @if (icon) {\n <uni-icon [name]=\"icon\"></uni-icon>\n } @else if (symbol) {\n <uni-symbol [name]=\"symbol\" [opticalSize]=\"26\"></uni-symbol>\n }\n </div>\n }\n <div box-layout padding=\"sm\">\n <span uni-text>\n <ng-content></ng-content>\n </span>\n </div>\n <div box-layout paddingRight=\"sm\">\n @if (!actionLabel()) {\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">Close</button>\n } @else {\n <button text-button variant=\"ghost\" (click)=\"this.action.emit(); close()\">\n {{ actionLabel() }}\n </button>\n }\n </div>\n </div>\n</dialog>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { Alert, Confirmation, NotificationService, Snackbar } from '../../../cdk';\nimport { UniAlertComponent } from '../alert/alert.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { UniSnackbarComponent } from '../snackbar/snackbar.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-notifications',\n imports: [UniAlertComponent, UniSnackbarComponent, ConfirmationDialogComponent],\n templateUrl: './notifications.component.html',\n})\nexport class NotificationsComponent {\n notifications = inject(NotificationService);\n\n private readonly alertState = signal<Alert | undefined>(undefined);\n private readonly snackbarState = signal<Snackbar | undefined>(undefined);\n private readonly confirmationState = signal<Confirmation | undefined>(undefined);\n\n // Computed values for the show states\n protected readonly showAlert = computed(() => !!this.alertState());\n protected readonly showSnackbar = computed(() => !!this.snackbarState());\n protected readonly showConfirmation = computed(() => !!this.confirmationState());\n\n // Expose the alert state\n protected readonly alert = computed(() => this.alertState());\n protected readonly snackbar = computed(() => this.snackbarState());\n protected readonly confirmation = computed(() => this.confirmationState());\n\n constructor() {\n effect(() => {\n this.alertState.set(this.notifications.alert());\n });\n effect(() => {\n this.snackbarState.set(this.notifications.snackbar());\n });\n effect(() => {\n this.confirmationState.set(this.notifications.confirmation());\n });\n }\n\n handleConfirmationShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideConfirmation();\n }\n\n handleSnackbarShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideSnackbar();\n }\n\n handleAlertShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideAlert();\n }\n}\n","<uni-alert\n [show]=\"showAlert()\"\n (showing)=\"handleAlertShowingEvent($event)\"\n [variant]=\"alert()?.variant || 'primary'\"\n [iconName]=\"alert()?.iconName\"\n [symbolName]=\"alert()?.symbolName\"\n >{{ alert()?.message }}</uni-alert>\n\n<uni-snackbar\n [show]=\"showSnackbar()\"\n (showing)=\"handleSnackbarShowingEvent($event)\"\n [variant]=\"snackbar()?.variant || 'primary'\"\n [actionLabel]=\"snackbar()?.actionLabel\"\n (action)=\"snackbar()?.action?.()\"\n [timeout]=\"snackbar()?.timeout\"\n [iconName]=\"snackbar()?.iconName\"\n [symbolName]=\"snackbar()?.symbolName\"\n >{{ snackbar()?.message }}</uni-snackbar>\n\n<uni-confirmation-dialog\n [show]=\"showConfirmation()\"\n (showing)=\"handleConfirmationShowingEvent($event)\"\n [confirmation]=\"confirmation()\"\n></uni-confirmation-dialog>\n","import { ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniRowComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniPaginatorOptions } from './paginator.model';\n\n@Component({\n selector: 'uni-paginator',\n imports: [UniRowComponent, UniIconButtonComponent, UniTextComponent],\n templateUrl: './paginator.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'paginator' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'navigation',\n 'aria-label': 'Pagination',\n },\n})\nexport class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions> {\n datasource = input<UniDatasource<T>>();\n initPageSize = input<number>();\n\n showPageSize = input<boolean>(true);\n showPageJumper = input<boolean>(true);\n showPageNumbers = input<boolean>(true);\n\n constructor() {\n super();\n effect(() => {\n const pageSize = this.initPageSize();\n if (!pageSize) return;\n const ds = this.datasource();\n if (ds) ds.setPageSize(pageSize);\n });\n }\n\n protected readonly inputClass = computed(() =>\n css({\n textAlign: 'center',\n ...this.theme.border(this.componentOptions().inputBorder),\n ...this.theme.radius(this.componentOptions().inputBorderRadius),\n height: 22,\n fontSize: 16,\n padding: '2px 0 0 2px',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n })\n );\n\n protected readonly pageClass = computed(() =>\n css({\n all: 'unset',\n boxSizing: 'border-box',\n ...this.theme.radius(this.componentOptions().pageBorderRadius),\n padding: 2,\n width: 20,\n display: 'flex',\n justifyContent: 'center',\n cursor: 'pointer',\n border: 'solid 1px transparent',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n\n '&.current': {\n ...this.theme.border(this.componentOptions().currentPageBorder),\n ...this.theme.radius(this.componentOptions().currentPageBorderRadius),\n cursor: 'unset',\n },\n\n '&:hover:not(.current)': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n })\n );\n\n updatePageSize(event: Event) {\n const ds = this.datasource();\n const pageSize = (event.target as HTMLInputElement).value;\n if (ds) ds.setPageSize(parseInt(pageSize));\n }\n\n jumpToPage(event: Event) {\n const ds = this.datasource();\n const page = (event.target as HTMLInputElement).value;\n if (ds) ds.jumpToPage(parseInt(page));\n }\n\n isNumber(page: unknown) {\n return typeof page === 'number';\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div row-layout alignItems=\"center\" [gap]=\"componentOptions().gap\">\n @if (showPageSize()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingRight=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Show</span>\n <input\n type=\"number\"\n aria-label=\"Items per page\"\n [class]=\"inputClass()\"\n (change)=\"updatePageSize($event)\"\n min=\"1\"\n [max]=\"ds.recordCount()\"\n [value]=\"ds.pageSize()\"\n />\n </div>\n }\n\n @if (showPageNumbers()) {\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_left\"\n (click)=\"ds.firstPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n First Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_left\"\n (click)=\"ds.previousPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n Previous Page\n </button>\n\n @for (page of ds.truncatedPages(); track page) {\n @if (isNumber(page)) {\n <button\n type=\"button\"\n [class]=\"pageClass()\"\n [class.current]=\"page === ds.pageIndex() + 1\"\n [attr.aria-label]=\"'Page ' + page\"\n [attr.aria-current]=\"page === ds.pageIndex() + 1 ? 'page' : null\"\n (click)=\"ds.jumpToPage(page)\"\n >\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </button>\n } @else {\n <div>\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </div>\n }\n }\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_right\"\n (click)=\"ds.nextPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Next Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_right\"\n (click)=\"ds.lastPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Last Page\n </button>\n }\n\n @if (showPageJumper()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingLeft=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Jump to</span>\n <input\n type=\"number\"\n aria-label=\"Jump to page\"\n [class]=\"inputClass()\"\n (change)=\"jumpToPage($event)\"\n min=\"1\"\n [max]=\"ds.pageCount()\"\n [value]=\"ds.pageIndex() + 1\"\n />\n </div>\n }\n </div>\n}\n","/**\n * UniPaginatorComponent Barrel File\n *\n * This file exports all public-facing elements of the paginator component.\n */\n\nexport { UniPaginatorComponent } from './paginator.component';\nexport type { UniPaginatorOptions } from './paginator.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type Placement,\n} from '../../cdk';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-popover',\n imports: [],\n templateUrl: './popover.component.html',\n})\nexport class UniPopoverComponent {\n private renderer = inject(Renderer2);\n private theme = inject(ThemeService);\n\n placement = input<Placement>('bottom');\n\n /** Light-dismiss on outside click / Escape (native popover=\"auto\"). */\n autoClose = input(true);\n\n readonly panelId = uniqueId('uni-popover');\n private readonly anchorName = newAnchorName();\n private readonly showing = signal(false);\n\n private triggerRef = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');\n\n constructor() {\n // Wire the ARIA disclosure contract onto the focusable trigger element\n afterNextRender(() => {\n const target = resolveFocusTarget(this.triggerRef().nativeElement);\n this.renderer.setAttribute(target, 'aria-expanded', 'false');\n this.renderer.setAttribute(target, 'aria-controls', this.panelId);\n });\n }\n\n protected onToggle(event: Event) {\n const open = (event as ToggleEvent).newState === 'open';\n this.showing.set(open);\n this.renderer.setAttribute(\n resolveFocusTarget(this.triggerRef().nativeElement),\n 'aria-expanded',\n `${open}`\n );\n }\n\n showPopover() {\n this.panelRef().nativeElement.showPopover();\n }\n\n hidePopover() {\n this.panelRef().nativeElement.hidePopover();\n }\n\n togglePopover(event: MouseEvent) {\n if (this.showing()) {\n this.hidePopover();\n } else {\n this.showPopover();\n }\n event.stopPropagation();\n }\n\n protected readonly triggerClassName = css({\n display: 'inline-block',\n anchorName: this.anchorName,\n });\n\n protected readonly popoverClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair('primary-surface'),\n ...this.theme.radius('xs'),\n ...this.theme.boxShadow('raised'),\n ...this.theme.typeface('label'),\n ...this.theme.border('quaternary'),\n padding: '6px 12px',\n width: 'max-content',\n overflow: 'visible',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 7 }),\n\n // Fade via discrete transitions across the top layer\n transitionProperty: 'opacity, display, overlay',\n transitionDuration: '250ms',\n transitionBehavior: 'allow-discrete',\n opacity: 0,\n\n '&:popover-open': {\n opacity: 1,\n },\n\n '@starting-style': {\n '&:popover-open': {\n opacity: 0,\n },\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() => {\n const side = this.placement().split('-')[0];\n // Border on the two edges of the rotated square that face outward\n const borders: Record<string, object> = {\n top: { ...this.theme.borderRight('quaternary'), ...this.theme.borderBottom('quaternary') },\n bottom: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderTop('quaternary') },\n left: { ...this.theme.borderRight('quaternary'), ...this.theme.borderTop('quaternary') },\n right: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderBottom('quaternary') },\n };\n return css({\n ...this.theme.colorPair('primary-surface'),\n ...anchorArrowStyles(this.placement()),\n ...borders[side],\n });\n });\n}\n","<!-- Click bubbles up from the projected [trigger] content, which is expected\n to be focusable (a button); keyboard activation arrives as a click. -->\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<span #trigger (click)=\"togglePopover($event)\" [class]=\"triggerClassName\">\n <ng-content select=\"[trigger]\"></ng-content>\n</span>\n<div\n #panel\n [id]=\"panelId\"\n [attr.popover]=\"autoClose() ? 'auto' : 'manual'\"\n [class]=\"popoverClassName()\"\n (toggle)=\"onToggle($event)\"\n>\n <ng-content></ng-content>\n <span [class]=\"arrowClassName()\"></span>\n</div>\n","/**\n * UniPopoverComponent Barrel File\n *\n * This file exports all public-facing elements of the popover component.\n */\n\nexport { UniPopoverComponent } from './popover.component';\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-progress-bar',\n imports: [],\n templateUrl: './progress-bar.component.html',\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressBarComponent {\n theme = inject(ThemeService);\n\n palette = this.theme.colors;\n\n width = input<number>(560);\n height = input<number>(24);\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing (e.g. \"Upload progress\"). */\n ariaLabel = input<string>();\n\n stroke = 1;\n\n protected readonly className = computed(() => {\n return css([{ display: 'block' }]);\n });\n\n protected readonly Math = Math;\n}\n","<svg aria-hidden=\"true\" [attr.width]=\"width()\" [attr.height]=\"height()\">\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"width() - stroke * 2\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"palette()['primary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"Math.max(height() - stroke * 2, (percent() / 100) * width() - stroke * 2)\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"percent() === 100 ? palette()['secondary'] : palette()['secondary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n</svg>\n","/**\n * UniProgressBarComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-bar component.\n */\n\nexport { UniProgressBarComponent } from './progress-bar.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-progress-gauge',\n imports: [],\n templateUrl: './progress-gauge.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'progressGauge' }],\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressGaugeComponent extends BaseComponent {\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing. */\n ariaLabel = input<string>();\n\n textStyle = computed(() => {\n const theme = this.componentTheme();\n return theme.fixed && theme.fixed['textFill'];\n });\n\n private progress = keyframes({\n '0%': { strokeDasharray: '0 100' },\n });\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n\n '& .circular-chart': {\n display: 'block',\n },\n\n '& .circle-bg': {\n fill: 'none',\n strokeWidth: 3.8,\n },\n\n '& .circle': {\n fill: 'none',\n strokeWidth: 3.8,\n animation: `${this.progress} 1s ease-out forwards`,\n },\n\n '& .percentage': {\n fontFamily: 'sans-serif',\n fontSize: '0.5em',\n textAnchor: 'middle',\n },\n });\n });\n}\n","<svg\n viewBox=\"0 0 36 36\"\n class=\"circular-chart\"\n aria-hidden=\"true\"\n [style.height]=\"style()['height']\"\n>\n <path\n class=\"circle-bg\"\n [attr.stroke]=\"style()['backgroundColor']\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <path\n class=\"circle\"\n [attr.stroke]=\"style()['color']\"\n [attr.stroke-dasharray]=\"percent() + ', 100'\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <text x=\"18.5\" y=\"20.82\" class=\"percentage\" [style.fill]=\"textStyle()\">{{ percent() }}%</text>\n</svg>\n","/**\n * UniProgressGaugeComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-gauge component.\n */\n\nexport { UniProgressGaugeComponent } from './progress-gauge.component';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniRadioOption, UniRadioOptions } from './radio.model';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'uni-radio',\n imports: [UniTextComponent],\n templateUrl: './radio.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'radio' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniRadioComponent\n extends BaseComponent<UniRadioOptions>\n implements FormValueControl<string>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<UniRadioOption[]>([]);\n readonly label = input<string>();\n // Unique default so multiple radio groups on a page never share a name\n readonly name = input<string>(uniqueId('uni-radio-group'));\n\n /** Links the group label to the radiogroup container. */\n protected readonly groupLabelId = uniqueId('uni-radio-label');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n private readonly metrics = computed(() => {\n const radioSize = (this.componentOptions().size as number) || 20;\n const innerCircleSize = radioSize * 0.6;\n return {\n outerCircleSize: radioSize,\n innerCircleSize,\n innerCircleOffset: (radioSize - innerCircleSize) / 2,\n };\n });\n\n protected readonly radioGroupClass = css({\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n });\n\n protected readonly radioOptionClass = computed(() => {\n const { outerCircleSize, innerCircleSize, innerCircleOffset } = this.metrics();\n // The dot's grow/retract is a token: 0.3s default, 0 = instant. The\n // transitions are scoped — never `all` — so the focus ring's outline and\n // shadow apply instantly instead of interpolating from a stale outline\n // color, which flashed a dark ring before the themed ring color landed.\n const speed = this.componentOptions().transitionSpeed ?? 0.3;\n const ringTransition = `border-color ${speed}s ease, background-color ${speed}s ease`;\n const dotTransition = `transform ${speed}s ease`;\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .radio-button': {\n width: outerCircleSize,\n height: outerCircleSize,\n borderRadius: '50%',\n border: `2px solid ${\n this.disabled()\n ? this.getThemeColor('on-disabled')\n : this.getThemeColor(this.componentOptions().ringColor ?? 'outline')\n }`,\n position: 'relative',\n transition: ringTransition,\n backgroundColor: this.getThemeColor(this.componentOptions().fillColor ?? 'surface'),\n flexShrink: 0,\n },\n\n '& .radio-inner': {\n width: innerCircleSize,\n height: innerCircleSize,\n borderRadius: '50%',\n backgroundColor: this.getThemeColor(this.variant()),\n position: 'absolute',\n top: innerCircleOffset,\n left: innerCircleOffset,\n transform: 'scale(0)',\n transition: dotTransition,\n },\n\n '&:hover .radio-button': this.disabled()\n ? {}\n : {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&.disabled': {\n cursor: 'not-allowed',\n opacity: 0.6,\n\n '& .radio-button': {\n borderColor: this.getThemeColor('on-disabled'),\n },\n },\n });\n });\n\n protected readonly radioInputClass = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .radio-button': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .radio-button .radio-inner': {\n transform: 'scale(1)',\n },\n\n // The shared, themable focus indicator, keyed off the hidden input.\n '&:focus + .radio-button': {\n ...this.theme.focusRingStyle(this.getThemeColor(this.variant())),\n },\n })\n );\n\n handleRadioChange(optionValue: string) {\n this.value.set(optionValue);\n this.markAsTouched();\n }\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<div\n [class]=\"radioGroupClass\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"label() ? groupLabelId : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n>\n @if (label()) {\n <span uni-text=\"label\" [attr.id]=\"groupLabelId\">{{ label() }}</span>\n }\n\n @for (option of options(); track option.value) {\n <label [class]=\"radioOptionClass()\" [class.disabled]=\"disabled() || option.disabled\">\n <input\n type=\"radio\"\n [class]=\"radioInputClass()\"\n [value]=\"option.value\"\n [name]=\"name()\"\n [checked]=\"value() === option.value\"\n [disabled]=\"disabled() || option.disabled\"\n (change)=\"handleRadioChange(option.value)\"\n />\n <div class=\"radio-button\">\n <div class=\"radio-inner\"></div>\n </div>\n <span uni-text=\"label\">{{ option.label }}</span>\n </label>\n }\n</div>\n","/**\n * UniScrollAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the scroll-area component.\n */\n\nexport { UniScrollAreaComponent } from './scroll-area.component';\nexport type { ScrollbarAppearance } from './scroll-area.types';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { createListboxNavigation } from '../../cdk';\nimport { UniDebounceInputComponent } from '../forms/debounce-input/debounce-input.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniSearchInputOptions } from './search-input.model';\n\n/**\n * Generic search field: shared input chrome with a leading magnifier, a clear\n * button while there's a query, Enter to submit, and optional type-ahead —\n * pass `suggestions` (refresh them from `change`) and the field becomes an\n * ARIA combobox with a keyboard-navigable listbox. Escape closes the list\n * first, then clears the query.\n */\n@Component({\n selector: 'uni-search-input',\n imports: [UniDebounceInputComponent, UniIconButtonComponent, UniSymbolComponent],\n templateUrl: './search-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'searchInput' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSearchInputComponent extends BaseComponent<UniSearchInputOptions> {\n /** Accessible name for the field, also the placeholder fallback. */\n label = input.required<string>();\n placeholder = input<string>();\n width = input<string | number>('100%');\n debounceTime = input(400);\n /**\n * Type-ahead entries. Keep them fresh from `change` emissions; the list\n * shows while the field has focus and entries exist.\n */\n suggestions = input<string[]>([]);\n\n // TODO(v4): rename to searchChange/searchSubmit — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n search = output<string>();\n suggestionSelected = output<string>();\n\n protected readonly field = viewChild.required(UniDebounceInputComponent);\n\n protected readonly visibleSuggestions = computed(() =>\n this.suggestions().slice(0, this.componentOptions().maxSuggestions ?? 8)\n );\n\n /** Shared combobox bookkeeping: open state, active option, ARIA ids. */\n protected readonly list = createListboxNavigation({\n count: () => this.visibleSuggestions().length,\n idPrefix: 'uni-search-listbox',\n });\n\n readonly listboxId = this.list.listboxId;\n\n protected readonly hasQuery = computed(() => !!this.field()?.value());\n\n protected handleChange(value: string) {\n this.list.show();\n this.list.setActive(-1);\n this.change.emit(value);\n }\n\n protected submit() {\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) {\n this.select(this.visibleSuggestions()[active]);\n return;\n }\n this.list.hide();\n this.search.emit(this.field().value() ?? '');\n }\n\n protected select(suggestion: string) {\n this.field().value.set(suggestion);\n this.list.hide();\n this.suggestionSelected.emit(suggestion);\n this.search.emit(suggestion);\n }\n\n protected clear() {\n this.field().clear();\n this.list.hide();\n this.field().focus();\n }\n\n protected onKeydown(event: KeyboardEvent) {\n // Arrows and Home/End belong to the shared listbox contract.\n if (this.list.navigate(event)) return;\n\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.submit();\n break;\n case 'Escape':\n // Escape backs out one layer at a time: close the list, then clear.\n if (this.list.open()) this.list.hide();\n else if (this.hasQuery()) this.clear();\n break;\n }\n }\n\n protected onFocusOut(event: FocusEvent) {\n this.list.closeOnFocusOut(event);\n }\n\n protected readonly className = computed(() =>\n css({\n display: 'block',\n position: 'relative',\n width: this.width(),\n '& .uni-search-lead': {\n fontSize: 20,\n ...this.theme.color('on-background-variant'),\n ...this.theme.paddingLeft('sm'),\n },\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: 280,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Keydown/focusout ride the bubbling events from the inner input; the\n wrapper itself stays out of the tab order. -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div (keydown)=\"onKeydown($event)\" (focusout)=\"onFocusOut($event)\">\n <uni-debounce-input\n #searchField\n [label]=\"label()\"\n [placeholder]=\"placeholder() ?? label()\"\n [debounceTime]=\"debounceTime()\"\n role=\"combobox\"\n [ariaExpanded]=\"list.open()\"\n [ariaControls]=\"listboxId\"\n [ariaActivedescendant]=\"list.activeDescendantId() ?? undefined\"\n (change)=\"handleChange($event)\"\n >\n <uni-symbol pre-input class=\"uni-search-lead\" name=\"{{ componentOptions().searchSymbol ?? 'search' }}\" aria-hidden=\"true\" />\n @if (hasQuery()) {\n <button\n post-input\n icon-button\n [iconName]=\"componentOptions().clearSymbol ?? 'close'\"\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"clear()\"\n >\n Clear search\n </button>\n }\n </uni-debounce-input>\n\n @if (list.open()) {\n <ul [id]=\"listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (suggestion of visibleSuggestions(); track suggestion; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"list.optionId(i)\"\n [class.active]=\"i === list.activeIndex()\"\n [attr.aria-selected]=\"i === list.activeIndex()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"select(suggestion)\"\n >\n {{ suggestion }}\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * UniSearchInputComponent Barrel File\n *\n * This file exports all public-facing elements of the search-input component.\n */\n\nexport { UniSearchInputComponent } from './search-input.component';\nexport type { UniSearchInputOptions } from './search-input.model';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Options } from '../../cdk';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniSymbolComponent } from '../symbol';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-select',\n imports: [UniInputBoxComponent, UniSymbolComponent],\n templateUrl: './select-input.component.html',\n})\nexport class UniSelectComponent<T> implements FormValueControl<T | null> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T | null>(null);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<Options<T>>([]);\n readonly placeholder = input<string>();\n\n /** Accessible name for the select; a placeholder is not a label. */\n readonly ariaLabel = input<string>();\n\n protected readonly UNSELECTED = -1;\n\n /**\n * We use the index as the HTML value to avoid issues with\n * stringifying complex objects or duplicate labels.\n */\n protected readonly currentSelectedIndex = computed(() => {\n const currentVal = this.value();\n if (currentVal === null || currentVal === undefined) return this.UNSELECTED;\n\n // Find the index of the option that contains our current value\n const index = this.options().findIndex((opt) => opt.value === currentVal);\n return index.toString();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected handleSelectChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const index = parseInt(select.value, 10);\n\n if (index === this.UNSELECTED) {\n this.value.set(null);\n } else {\n const selectedOption = this.options()[index];\n // Update the model with the 'value' property of the Option interface\n this.value.set(selectedOption.value);\n }\n }\n\n selectClass = css({\n '& select': {\n paddingRight: 24, // Prevent arrow from overlapping\n cursor: 'pointer',\n '&::-ms-expand': { display: 'none' },\n },\n\n [`& select:has(option[value=\"${this.UNSELECTED}\"]:checked)`]: {\n color: 'color-mix(in srgb, currentColor 50%, transparent)',\n },\n });\n\n arrowClass = css({\n position: 'absolute',\n right: 0,\n pointerEvents: 'none' /* Crucial for clicking through */,\n });\n}\n","<uni-input-box [error]=\"showError()\" [class]=\"selectClass\">\n <select\n [disabled]=\"disabled()\"\n [value]=\"currentSelectedIndex()\"\n (change)=\"handleSelectChange($event)\"\n (blur)=\"touched.set(true)\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n >\n @if (placeholder()) {\n <option [value]=\"UNSELECTED\" disabled selected>\n {{ placeholder() }}\n </option>\n }\n\n @for (opt of options(); track opt.label; let i = $index) {\n <!-- [selected] evaluates during the option's own render, so a selection\n pointing at an option added in the same change-detection pass still\n applies (the select-level [value] write lands before new options\n exist and is ignored by the browser). -->\n <option [value]=\"i\" [selected]=\"currentSelectedIndex() === i.toString()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <uni-symbol name=\"keyboard_arrow_down\" [class]=\"arrowClass\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport type { SkeletonShape, UniSkeletonOptions } from './skeleton.model';\n\n/**\n * Loading placeholder painted with surface tokens. `text` renders one or more\n * lines (the last line shortened, as real text would be), `rect` and `circle`\n * render fixed shapes. The shimmer only animates when the user allows motion;\n * it degrades to static blocks under `prefers-reduced-motion`.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-skeleton',\n providers: [{ provide: COMPONENT_NAME, useValue: 'skeleton' }],\n host: { '[class]': 'className()', 'aria-hidden': 'true' },\n template: `\n @for (line of lineWidths(); track $index) {\n <div class=\"uni-skeleton-block\" [style.width]=\"line\"></div>\n }\n `,\n})\nexport class UniSkeletonComponent extends BaseComponent<UniSkeletonOptions> {\n shape = input<SkeletonShape>('text');\n /** CSS width; defaults to 100% for text/rect and `height` for circles. */\n width = input<string | number | undefined>(undefined);\n /** CSS height per block; defaults to 1em (text), 96px (rect), 40px (circle). */\n height = input<string | number | undefined>(undefined);\n /** Number of text lines (text shape only). */\n lines = input(1);\n\n private readonly cssSize = (value: string | number): string =>\n typeof value === 'number' ? `${value}px` : value;\n\n protected readonly resolvedHeight = computed(() => {\n const height = this.height();\n if (height !== undefined) return this.cssSize(height);\n return { text: '1em', rect: '96px', circle: '40px' }[this.shape()];\n });\n\n protected readonly lineWidths = computed(() => {\n const width = this.width() !== undefined ? this.cssSize(this.width()!) : undefined;\n if (this.shape() === 'circle') return [width ?? this.resolvedHeight()];\n if (this.shape() === 'rect') return [width ?? '100%'];\n const lines = Math.max(1, this.lines());\n // Multi-line text blocks end on a short line, like real paragraphs do.\n return Array.from({ length: lines }, (_, i) =>\n lines > 1 && i === lines - 1 ? (width ?? '60%') : (width ?? '100%')\n );\n });\n\n private readonly sweep = keyframes({\n from: { backgroundPosition: '200% 0' },\n to: { backgroundPosition: '-200% 0' },\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const base = this.theme.colors()[options.color ?? 'surface-variant'];\n const highlight = this.theme.colors()[options.highlightColor ?? 'surface'];\n const animated = (options.animation ?? 'shimmer') === 'shimmer';\n return css({\n display: 'flex',\n flexDirection: 'column',\n ...this.theme.gap(options.gap),\n '& .uni-skeleton-block': {\n height: this.resolvedHeight(),\n backgroundColor: base,\n ...(this.shape() === 'circle'\n ? { borderRadius: '50%', flex: 'none' }\n : this.theme.radius(options.borderRadius)),\n ...(animated &&\n motionSafe({\n backgroundImage: `linear-gradient(90deg, ${base} 40%, ${highlight} 50%, ${base} 60%)`,\n backgroundSize: '200% 100%',\n animation: `${this.sweep} ${options.duration ?? 1.4}s ease-in-out infinite`,\n })),\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniSliderOptions } from './slider.model';\n\n/**\n * Range slider on a native `<input type=\"range\">` — keyboard interaction and\n * the ARIA slider contract come from the platform. Fill, track, thumb and\n * radii resolve from `slider` theme tokens; the fill percentage rides a CSS\n * custom property so dragging never regenerates styles.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-slider',\n providers: [{ provide: COMPONENT_NAME, useValue: 'slider' }],\n template: `\n <input\n type=\"range\"\n [class]=\"inputClass()\"\n [style.--uni-slider-fill]=\"fillPercent()\"\n [min]=\"resolvedMin()\"\n [max]=\"resolvedMax()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"handleInput($event)\"\n (blur)=\"markAsTouched()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n `,\n})\nexport class UniSliderComponent\n extends BaseComponent<UniSliderOptions>\n implements FormValueControl<number>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<number>(0);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered value or error text — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n // `min`/`max` are part of the FormValueControl contract (synced from\n // min()/max() validators), so their type must admit undefined.\n min = input<number | undefined>(0);\n max = input<number | undefined>(100);\n step = input(1);\n\n protected readonly resolvedMin = computed(() => this.min() ?? 0);\n protected readonly resolvedMax = computed(() => this.max() ?? 100);\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set(Number((event.target as HTMLInputElement).value));\n }\n\n protected readonly fillPercent = computed(() => {\n const min = this.resolvedMin();\n const range = this.resolvedMax() - min;\n if (range <= 0) return '0%';\n const ratio = (this.value() - min) / range;\n return `${Math.min(100, Math.max(0, ratio * 100))}%`;\n });\n\n protected readonly inputClass = computed(() => {\n const options = this.componentOptions();\n const fill = this.theme.colors()[options.color ?? 'primary'];\n const track = this.theme.colors()[options.trackColor ?? 'surface-variant'];\n const radius = this.theme.radii()[options.borderRadius ?? 'max'];\n const trackHeight = options.trackHeight ?? 4;\n const thumbSize = options.thumbSize ?? 16;\n // Webkit paints the fill via a gradient stopped at the custom property;\n // Firefox has a real ::-moz-range-progress.\n const trackFill = `linear-gradient(to right, ${fill} var(--uni-slider-fill), ${track} var(--uni-slider-fill))`;\n const thumb = {\n appearance: 'none' as const,\n width: thumbSize,\n height: thumbSize,\n borderRadius: radius,\n border: 'none',\n background: fill,\n cursor: 'pointer',\n };\n return css({\n appearance: 'none',\n width: '100%',\n height: thumbSize,\n margin: 0,\n background: 'transparent',\n cursor: 'pointer',\n '&::-webkit-slider-runnable-track': {\n height: trackHeight,\n borderRadius: radius,\n background: trackFill,\n },\n '&::-webkit-slider-thumb': {\n ...thumb,\n marginTop: (trackHeight - thumbSize) / 2,\n },\n '&::-moz-range-track': { height: trackHeight, borderRadius: radius, background: track },\n '&::-moz-range-progress': { height: trackHeight, borderRadius: radius, background: fill },\n '&::-moz-range-thumb': thumb,\n // The shared, themable focus indicator, in the track's fill color.\n '&:focus-visible': { ...this.theme.focusRingStyle(fill) },\n '&:disabled': {\n cursor: 'not-allowed',\n opacity: 0.5,\n '&::-webkit-slider-thumb': { cursor: 'not-allowed' },\n '&::-moz-range-thumb': { cursor: 'not-allowed' },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniStatOptions } from './stat.model';\n\nconst SPARK_WIDTH = 96;\nconst SPARK_HEIGHT = 28;\n\n/**\n * KPI stat tile: muted label, large value (numbers auto-compact: 48234 →\n * \"48.2K\"), an optional delta whose ink is decided by *direction × whether up\n * is good* (never direction alone — churn going down is good news), and an\n * optional decorative sparkline. Frame, typography and inks are all `stat`\n * theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-stat',\n providers: [{ provide: COMPONENT_NAME, useValue: 'stat' }],\n host: { '[class]': 'className()' },\n template: `\n <span class=\"uni-stat-label\">{{ label() }}</span>\n <span class=\"uni-stat-value\">{{ displayValue() }}</span>\n @if (delta()) {\n <span class=\"uni-stat-meta\">\n <span class=\"uni-stat-delta\" [class.good]=\"deltaIsGood()\">\n <span aria-hidden=\"true\">{{ deltaIsUp() ? '▴' : '▾' }}</span>\n <span [class]=\"srOnly\">{{ deltaIsUp() ? 'up' : 'down' }}</span>\n {{ deltaMagnitude() }}\n </span>\n @if (caption()) {\n <span class=\"uni-stat-caption\">{{ caption() }}</span>\n }\n </span>\n }\n @if (sparkline(); as spark) {\n <svg\n class=\"uni-stat-trend\"\n aria-hidden=\"true\"\n [attr.width]=\"spark.width\"\n [attr.height]=\"spark.height\"\n [attr.viewBox]=\"'0 0 ' + spark.width + ' ' + spark.height\"\n >\n <path\n [attr.d]=\"spark.path\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle [attr.cx]=\"spark.endX\" [attr.cy]=\"spark.endY\" r=\"3.5\" />\n </svg>\n }\n `,\n})\nexport class UniStatComponent extends BaseComponent<UniStatOptions> {\n /** What is being measured, sentence case. */\n label = input.required<string>();\n /** The headline number: strings render verbatim, numbers auto-compact. */\n value = input.required<string | number>();\n /** Signed change, e.g. \"+12.4%\" or \"-0.4%\". The sign drives the arrow. */\n delta = input<string>();\n /** Whether an upward movement is good news. Flip for churn, errors, cost. */\n upIsGood = input(true);\n /** Names the comparison period, e.g. \"vs last month\". */\n caption = input<string>();\n /** Recent values for the decorative sparkline (12 points reads best). */\n trend = input<number[] | undefined>(undefined);\n\n protected readonly srOnly = css(visuallyHidden);\n\n protected readonly displayValue = computed(() => {\n const value = this.value();\n if (typeof value !== 'number') return value;\n return new Intl.NumberFormat(undefined, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value);\n });\n\n protected readonly deltaIsUp = computed(() => !this.delta()?.trim().startsWith('-'));\n protected readonly deltaIsGood = computed(() => this.deltaIsUp() === this.upIsGood());\n protected readonly deltaMagnitude = computed(() => this.delta()?.trim().replace(/^[-+]/, '') ?? '');\n\n protected readonly sparkline = computed(() => {\n const points = this.trend();\n if (!points || points.length < 2) return undefined;\n const min = Math.min(...points);\n const range = Math.max(...points) - min || 1;\n const step = SPARK_WIDTH / (points.length - 1);\n const xy = points.map((p, i): [number, number] => [\n i * step,\n SPARK_HEIGHT - 3 - ((p - min) / range) * (SPARK_HEIGHT - 6),\n ]);\n const [endX, endY] = xy[xy.length - 1];\n return {\n width: SPARK_WIDTH,\n height: SPARK_HEIGHT,\n path: xy.map(([x, y], i) => `${i ? 'L' : 'M'}${x.toFixed(1)},${y.toFixed(1)}`).join(' '),\n endX: endX.toFixed(1),\n endY: endY.toFixed(1),\n };\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box',\n ...this.theme.gap(options.gap),\n ...this.theme.colorPair(options.color),\n ...this.theme.border(options.border),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.padding(options.padding),\n '& .uni-stat-label': {\n ...this.theme.typeface(options.labelTypeface),\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-value': {\n ...this.theme.typeface(options.valueTypeface),\n ...this.theme.color('on-background'),\n },\n '& .uni-stat-meta': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n columnGap: 8,\n },\n '& .uni-stat-delta': {\n fontSize: 13,\n fontWeight: 600,\n ...this.theme.color(options.negativeColor),\n '&.good': this.theme.color(options.positiveColor),\n },\n '& .uni-stat-caption': {\n fontSize: 11.5,\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-trend': {\n position: 'absolute',\n right: 16,\n bottom: 14,\n '& path': { stroke: this.theme.colors()[options.trendColor ?? 'outline'] },\n '& circle': { fill: this.theme.colors()[options.trendAccent ?? 'primary'] },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, input, viewChild, TemplateRef } from '@angular/core';\nimport { uniqueId } from '../../cdk';\n\n/**\n * One tab inside `uni-tabs`: a label for the tablist plus projected panel\n * content. Content is captured in a template and only instantiated while the\n * tab is selected, so inactive panels cost nothing.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tab',\n template: `<ng-template #content><ng-content /></ng-template>`,\n})\nexport class UniTabComponent {\n label = input.required<string>();\n disabled = input(false);\n\n /** Stable ids wiring tab ↔ panel ARIA relationships. */\n readonly id = uniqueId('uni-tab');\n readonly panelId = `${this.id}-panel`;\n\n readonly content = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n model,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport { UniTabComponent } from './tab.component';\nimport type { UniTabsOptions } from './tabs.model';\n\n/**\n * WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus\n * and select), Home/End, disabled tabs skipped. Only the selected panel is\n * instantiated. All styling resolves from `tabs` theme option tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tabs',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'tabs' }],\n template: `\n <!-- Roving-tabindex composite: focus lives on the tab buttons; keydown\n bubbles to the tablist, which itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"tablist\" [class]=\"tablistClass()\" (keydown)=\"onKeydown($event)\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"tabClass()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n [class.active]=\"i === activeIndex()\"\n (click)=\"select(i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n @if (activeTab(); as tab) {\n <div\n role=\"tabpanel\"\n [id]=\"tab.panelId\"\n [attr.aria-labelledby]=\"tab.id\"\n tabindex=\"0\"\n [class]=\"panelClass()\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.content()\" />\n </div>\n }\n `,\n})\nexport class UniTabsComponent extends BaseComponent<UniTabsOptions> {\n /** Index of the selected tab; two-way bindable. */\n readonly selectedIndex = model(0);\n\n protected readonly tabs = contentChildren(UniTabComponent);\n private readonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n /** The selection, snapped to the nearest enabled tab. */\n protected readonly activeIndex = computed(() => {\n const tabs = this.tabs();\n const wanted = this.selectedIndex();\n if (tabs[wanted] && !tabs[wanted].disabled()) return wanted;\n const firstEnabled = tabs.findIndex((tab) => !tab.disabled());\n return firstEnabled === -1 ? 0 : firstEnabled;\n });\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n\n protected select(index: number): void {\n if (this.tabs()[index]?.disabled()) return;\n this.selectedIndex.set(index);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const enabled = this.tabs()\n .map((tab, index) => ({ tab, index }))\n .filter(({ tab }) => !tab.disabled())\n .map(({ index }) => index);\n if (enabled.length === 0) return;\n\n const position = enabled.indexOf(this.activeIndex());\n let next: number | undefined;\n switch (event.key) {\n case 'ArrowRight':\n next = enabled[(position + 1) % enabled.length];\n break;\n case 'ArrowLeft':\n next = enabled[(position - 1 + enabled.length) % enabled.length];\n break;\n case 'Home':\n next = enabled[0];\n break;\n case 'End':\n next = enabled[enabled.length - 1];\n break;\n default:\n return;\n }\n event.preventDefault();\n this.select(next);\n this.tabButtons()[next]?.nativeElement.focus();\n }\n\n protected readonly tablistClass = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'stretch',\n ...this.theme.gap(options.gap),\n ...this.theme.borderBottom(options.divider),\n });\n });\n\n protected readonly tabClass = computed(() => {\n const options = this.componentOptions();\n const thickness = options.indicatorThickness\n ? this.theme.getThickness(options.indicatorThickness)\n : 2;\n return css({\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n // The indicator overlays the divider: reserve its thickness on every\n // tab so labels don't shift when selection moves.\n borderBottom: `${thickness}px solid transparent`,\n marginBottom: -1,\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.paddingTop('sm'),\n ...this.theme.paddingBottom('sm'),\n ...this.theme.radius(options.borderRadius),\n ...motionSafe({ transition: 'color 0.15s ease, border-color 0.15s ease' }),\n '&.active': {\n ...this.theme.color(options.activeTextColor),\n ...this.theme.backgroundColor(options.activeColor),\n borderBottomColor: this.theme.colors()[options.indicatorColor ?? 'primary'],\n },\n '&:disabled': {\n ...this.theme.color('on-disabled'),\n cursor: 'not-allowed',\n },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[options.indicatorColor ?? 'primary']}`,\n outlineOffset: -2,\n },\n });\n });\n\n protected readonly panelClass = computed(() =>\n css({\n ...this.theme.paddingTop('md'),\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.componentOptions().indicatorColor ?? 'primary']}`,\n outlineOffset: 2,\n },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTextareaOptions } from './textarea.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-textarea',\n imports: [UniInputBoxComponent],\n templateUrl: './textarea.component.html',\n})\nexport class UniTextareaComponent implements FormValueControl<string> {\n private theme = inject(ThemeService);\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n /** Visible text rows. Defaults to the theme's `textarea` options. */\n rows = input<number | undefined>(undefined);\n\n private options = this.theme.getComponentOptions<UniTextareaOptions>('textarea');\n\n protected readonly resolvedRows = computed(() => this.rows() ?? this.options().rows ?? 3);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textareaClass = computed(() =>\n css({\n width: '100%',\n resize: this.options().resize ?? 'vertical',\n })\n );\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLTextAreaElement).value);\n }\n}\n","<uni-input-box [error]=\"showError()\" height=\"auto\">\n <textarea\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [rows]=\"resolvedRows()\"\n [class]=\"textareaClass()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n ></textarea>\n</uni-input-box>\n","/**\n * UniSortHeaderComponent Barrel File\n *\n * This file exports all public-facing elements of the sort-header component.\n */\n\nexport { UniSortHeaderComponent } from './sort-header.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { IconName, Size, TagTone } from '@uni-design-system/uni-core';\n\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniTagOptions, UniTagValue } from './tag.model';\n\n/**\n * Compact chip for categories, states, filters and tokens.\n *\n * Two orthogonal style axes: `variant` picks the colour role and `tone` picks\n * the archetype (soft / solid / outline). Both live in the theme's `tag` entry,\n * so a theme restyles every chip in the app without touching markup.\n *\n * Structurally a chip is **body + trailing action as siblings**, never nested\n * buttons: an interactive chip whose body is a `<button>` cannot contain the\n * remove `<button>` (invalid HTML, and the inner control becomes unreachable\n * for keyboard users). Both stay independently operable.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tag',\n imports: [NgTemplateOutlet, UniIconComponent, UniIconButtonComponent, UniSymbolComponent],\n templateUrl: './tag.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'tag' }],\n host: {\n '[class]': 'hostClass()',\n '[attr.aria-invalid]': \"invalid() ? 'true' : null\",\n },\n})\nexport class UniTagComponent extends BaseComponent<UniTagOptions> {\n // Presentation. `variant` comes from BaseComponent; chips default to `md`\n // rather than the library-wide `lg`, since they sit inside dense content.\n override size = input<Size>('md');\n tone = input<TagTone>('soft');\n label = input<string>();\n value = input<string | number>();\n /** Truncation budget, e.g. `'14ch'`. A number is treated as px. */\n maxWidth = input<string | number>();\n\n // Lead convenience inputs. Anything richer goes in the `[tag-lead]` slot.\n avatarSrc = input<string>();\n /** Initials fallback when `avatarSrc` is absent or fails to load. */\n avatarName = input<string>();\n /** Theme icon primitive — the preferred glyph path. */\n iconName = input<IconName>();\n /** Material Symbols ligature, for glyphs the theme's icon set doesn't carry. */\n symbolName = input<string>();\n /** Status dot in the current colour. */\n dot = input<boolean>(false);\n\n // Behaviour\n removable = input(false);\n interactive = input(false);\n /**\n * Toggle state. Left undefined the chip carries no `aria-pressed` at all —\n * an interactive chip is not always a toggle (inside a tag input it is\n * focusable so it can be removed), and announcing \"not pressed\" on a\n * recipient chip is worse than announcing nothing.\n */\n selected = input<boolean | undefined>(undefined);\n invalid = input(false);\n disabled = input(false);\n /** Accessible-name override for the remove button. */\n removeLabel = input<string>();\n /**\n * Tab position of the chip's controls. A composite that owns its own\n * roving focus — `uni-tag-input`, where the whole field is one tab stop —\n * passes `-1` so Tab does not walk through every chip to reach the next\n * control.\n */\n controlTabIndex = input<number>(0);\n\n removed = output<UniTagValue>();\n activated = output<UniTagValue>();\n\n /** A disabled chip wears the theme's `disabled` role, whatever its variant. */\n protected readonly resolvedVariant = computed(() =>\n this.disabled() ? ('disabled' as const) : this.variant()\n );\n\n protected readonly themeStyle = computed(() =>\n this.theme.componentStyle('tag', this.resolvedVariant(), this.size())()\n );\n\n /** Lead elements derive from the chip height, so no second size token. */\n protected readonly leadSize = computed(() => {\n const height = Number(this.themeStyle()['height'] ?? 24);\n return Number.isFinite(height) ? Math.max(height - 6, 0) : 18;\n });\n\n /** Remove glyph, proportional to the chip rather than to the icon-button. */\n protected readonly removeGlyphSize = computed(() =>\n Math.max(Math.round(this.leadSize() * 0.8), 10)\n );\n\n protected readonly initials = computed(() =>\n (this.avatarName() ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((part) => part[0]?.toUpperCase() ?? '')\n .join('')\n );\n\n protected readonly hostClass = computed(() => {\n const options = this.componentOptions();\n\n return `${css([\n this.theme.radius(options.borderRadius),\n { ...this.theme.typeface(options.typeface) },\n // Theme `fixed` + variant (incl. its nested `&.tone-*` rules) + size.\n { ...this.themeStyle() },\n { ...this.theme.gap(options.gap) },\n {\n boxSizing: 'border-box',\n maxWidth: this.maxWidth(),\n // The chip is not a widget; only its sub-controls take focus.\n '& > button': this.theme.focusRing(),\n // The remove control is the trailing counterpart of the lead, so it\n // sizes from the chip too. Left at the icon-button's own `sm` size it\n // is 22px inside a 24px chip — and taller than an `sm` chip entirely.\n '& > button[uni-icon-button]': {\n flex: 'none',\n width: this.leadSize(),\n minWidth: this.leadSize(),\n height: this.leadSize(),\n minHeight: this.leadSize(),\n padding: 0,\n fontSize: this.removeGlyphSize(),\n // uni-icon writes width/height as *inline* styles, sized from the\n // icon-button's own `sm` token (18px — wider than an `sm` chip).\n // Only !important can reach past an inline style to keep the glyph\n // proportional to the chip.\n '& uni-icon': {\n width: `${this.removeGlyphSize()}px !important`,\n height: `${this.removeGlyphSize()}px !important`,\n },\n },\n },\n this.invalid() && {\n // Colour alone cannot carry \"this entry is malformed\" (WCAG 1.4.1).\n textDecoration: 'underline dashed',\n textUnderlineOffset: 3,\n },\n this.disabled() && { pointerEvents: 'none' },\n ])} tone-${this.tone()}`;\n });\n\n /** Truncating label; `title` exposes the full text when a budget is set. */\n protected readonly labelClass = css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n });\n\n protected readonly bodyClass = computed(() =>\n css([\n {\n display: 'inline-flex',\n alignItems: 'center',\n minWidth: 0,\n // The body inherits the chip's own colours in every case.\n font: 'inherit',\n color: 'inherit',\n background: 'none',\n border: 0,\n padding: 0,\n ...this.theme.gap(this.componentOptions().gap),\n },\n this.interactive() && { cursor: 'pointer' },\n ])\n );\n\n protected readonly leadClass = computed(() =>\n css({\n flex: 'none',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n width: this.leadSize(),\n height: this.leadSize(),\n borderRadius: '50%',\n fontSize: Math.max(Math.round(this.leadSize() * 0.5), 8),\n // Initials sit on a wash of the current ink so they read on any tone.\n backgroundColor: this.avatarSrc() ? undefined : 'rgba(0, 0, 0, 0.12)',\n '& img': { width: '100%', height: '100%', objectFit: 'cover' },\n })\n );\n\n protected readonly dotClass = computed(() =>\n css({\n flex: 'none',\n width: Math.max(Math.round(this.leadSize() / 3), 6),\n height: Math.max(Math.round(this.leadSize() / 3), 6),\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n })\n );\n\n protected remove(): void {\n if (this.disabled()) return;\n this.removed.emit(this.value());\n }\n\n protected activate(): void {\n if (this.disabled()) return;\n this.activated.emit(this.value());\n }\n}\n","<!-- Lead + label. Shared so the static and interactive bodies stay identical. -->\n<ng-template #body>\n <ng-content select=\"[tag-lead]\"></ng-content>\n\n @if (selected() && componentOptions().selectedIcon; as selectedIcon) {\n <uni-icon [name]=\"selectedIcon\" [size]=\"leadSize()\" />\n } @else if (avatarSrc(); as src) {\n <span [class]=\"leadClass()\" aria-hidden=\"true\">\n <img [src]=\"src\" alt=\"\" />\n </span>\n } @else if (initials(); as text) {\n <span [class]=\"leadClass()\" aria-hidden=\"true\">{{ text }}</span>\n } @else if (iconName(); as icon) {\n <uni-icon [name]=\"icon\" [size]=\"leadSize()\" />\n } @else if (symbolName(); as symbol) {\n <uni-symbol [name]=\"symbol\" [style.font-size.px]=\"leadSize()\" />\n } @else if (dot()) {\n <span [class]=\"dotClass()\" aria-hidden=\"true\"></span>\n }\n\n @if (label(); as text) {\n <span [class]=\"labelClass\" [attr.title]=\"maxWidth() ? text : null\">{{ text }}</span>\n } @else {\n <span [class]=\"labelClass\"><ng-content></ng-content></span>\n }\n</ng-template>\n\n<!-- An interactive chip's body is the button; a static chip is plain text with\n no role and no tab stop, so screen readers read it as content. -->\n@if (interactive()) {\n <button\n type=\"button\"\n [class]=\"bodyClass()\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"selected() ?? null\"\n [attr.tabindex]=\"controlTabIndex()\"\n (click)=\"activate()\"\n >\n <ng-container [ngTemplateOutlet]=\"body\"></ng-container>\n </button>\n} @else {\n <span [class]=\"bodyClass()\">\n <ng-container [ngTemplateOutlet]=\"body\"></ng-container>\n </span>\n}\n\n@if (removable()) {\n <button\n uni-icon-button\n variant=\"ghost\"\n size=\"sm\"\n [iconName]=\"componentOptions().removeIcon ?? 'close'\"\n [disable]=\"disabled()\"\n [attr.tabindex]=\"controlTabIndex()\"\n (click)=\"remove()\"\n >\n {{ removeLabel() ?? 'Remove ' + (label() ?? '') }}\n </button>\n}\n","/**\n * UniTagComponent Barrel File\n *\n * This file exports all public-facing elements of the tag component.\n */\n\nexport { UniTagComponent } from './tag.component';\nexport * from './tag.model';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Size, TagTone, Variant } from '@uni-design-system/uni-core';\n\nimport { createListboxNavigation, uniqueId, visuallyHidden } from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniTagComponent } from '../tag';\nimport type {\n UniTagInputOptions,\n UniTagItem,\n UniTagRejection,\n UniTagSuggestion,\n} from './tag-input.model';\n\n/** Loose address check — deliberately permissive, matching what mail clients accept. */\nconst EMAIL = /^[^\\s@,;]+@[^\\s@,;.]+\\.[^\\s@,;]+$/;\n\n/** `Name <a@b.com>` / `\"Name\" <a@b.com>` → the address, plus the display name. */\nconst unwrapAddress = (raw: string): { value: string; label?: string } => {\n const match = raw.match(/^\\s*\"?([^\"<]*?)\"?\\s*<([^>]+)>\\s*$/);\n if (!match) return { value: raw.trim() };\n const label = match[1].trim();\n return { value: match[2].trim(), ...(label ? { label } : {}) };\n};\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tag-input',\n imports: [UniInputBoxComponent, UniTagComponent],\n templateUrl: './tag-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'tagInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniTagInputComponent\n extends BaseComponent<UniTagInputOptions>\n implements FormValueControl<UniTagItem[]>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniTagItem[]>([]);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** Accessible name for the field, e.g. \"To\". */\n label = input.required<string>();\n placeholder = input<string>();\n /** `email` wires an address validator, paste parser and space separator. */\n preset = input<'text' | 'email'>('text');\n separators = input<string[]>([',', ';']);\n commitOnBlur = input(true);\n allowDuplicates = input(false);\n max = input<number>();\n validate = input<(raw: string) => boolean>();\n parse = input<(pasted: string) => string[]>();\n\n // Chip presentation, forwarded to uni-tag.\n tagVariant = input<Variant>('primary');\n tagTone = input<TagTone>('soft');\n tagSize = input<Size>();\n\n // --- Autocomplete (same contract as uni-search-input: the app filters) ----\n suggestions = input<UniTagSuggestion[]>([]);\n /** Debounced text the app should filter `suggestions` from. */\n query = output<string>();\n debounceTime = input(250);\n\n // --- Events --------------------------------------------------------------\n added = output<UniTagItem>();\n removed = output<UniTagItem>();\n rejected = output<UniTagRejection>();\n\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly chipRefs = viewChildren<ElementRef<HTMLElement>>('chip');\n\n /** Uncommitted text in the field. */\n protected readonly draft = signal('');\n /** Index of the focused chip, or -1 when focus is in the text input. */\n protected readonly focusedChip = signal(-1);\n /** Announcement for the status region; add/remove are otherwise silent. */\n protected readonly announcement = signal('');\n\n protected readonly hintId = uniqueId('uni-tag-input-hint');\n protected readonly srOnly = css(visuallyHidden);\n\n private queryTimer?: ReturnType<typeof setTimeout>;\n\n protected readonly visibleSuggestions = computed(() => {\n const taken = new Set(this.value().map((item) => item.value));\n return this.suggestions()\n .filter((suggestion) => this.allowDuplicates() || !taken.has(suggestion.value))\n .slice(0, this.componentOptions().maxSuggestions ?? 8);\n });\n\n /** Shared combobox bookkeeping — identical contract to uni-search-input. */\n protected readonly list = createListboxNavigation({\n count: () => this.visibleSuggestions().length,\n idPrefix: 'uni-tag-listbox',\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly separatorKeys = computed(() =>\n this.preset() === 'email' ? [...this.separators(), ' '] : this.separators()\n );\n\n protected readonly describedBy = computed(() =>\n [this.ariaDescribedBy(), this.hintId].filter(Boolean).join(' ')\n );\n\n protected labelOf(item: UniTagItem | UniTagSuggestion): string {\n return item.label ?? item.value;\n }\n\n // --- Committing ----------------------------------------------------------\n\n /** Split pasted text into candidate tokens. */\n private parseRaw(raw: string): string[] {\n const custom = this.parse();\n if (custom) return custom(raw);\n\n const pattern = this.preset() === 'email' ? /[,;\\n\\t]+/ : new RegExp(`[${this.separators().map((s) => `\\\\${s}`).join('')}\\n\\t]+`);\n return raw.split(pattern);\n }\n\n private isValid(candidate: string): boolean {\n const custom = this.validate();\n if (custom) return custom(candidate);\n return this.preset() === 'email' ? EMAIL.test(candidate) : true;\n }\n\n /**\n * Turn typed text into a chip. Invalid entries are kept and flagged rather\n * than dropped; duplicates and over-max are refused with a reason.\n */\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) return false;\n\n const { value: candidate, label } = this.preset() === 'email' ? unwrapAddress(trimmed) : { value: trimmed, label: undefined };\n if (!candidate) return false;\n\n const current = this.value();\n if (!this.allowDuplicates() && current.some((item) => item.value === candidate)) {\n this.reject(candidate, 'duplicate');\n return false;\n }\n\n const max = this.max();\n if (max !== undefined && current.length >= max) {\n this.reject(candidate, 'max');\n return false;\n }\n\n const match = this.suggestions().find((suggestion) => suggestion.value === candidate);\n const item: UniTagItem = {\n value: candidate,\n ...(label || match?.label ? { label: label ?? match?.label } : {}),\n ...(match?.avatarSrc ? { avatarSrc: match.avatarSrc } : {}),\n ...(this.isValid(candidate) ? {} : { invalid: true }),\n };\n\n this.value.update((items) => [...items, item]);\n this.added.emit(item);\n this.announce(`${this.labelOf(item)} added. ${this.value().length} ${this.countNoun()}.`);\n return true;\n }\n\n private reject(raw: string, reason: UniTagRejection['reason']): void {\n this.rejected.emit({ raw, reason });\n // The visual cue is a brief pulse a screen reader cannot see.\n this.announce(\n reason === 'duplicate' ? `${raw} is already added.` : `${raw} was not added: limit reached.`\n );\n }\n\n protected removeAt(index: number, focus: 'left' | 'right' | 'input' = 'input'): void {\n const item = this.value()[index];\n if (!item || item.disabled) return;\n\n this.value.update((items) => items.filter((_, i) => i !== index));\n this.removed.emit(item);\n this.announce(`${this.labelOf(item)} removed. ${this.value().length} ${this.countNoun()}.`);\n\n const remaining = this.value().length;\n if (focus === 'left' && index > 0) this.focusChip(index - 1);\n else if (focus === 'right' && index < remaining) this.focusChip(index);\n else this.focusInput();\n }\n\n private countNoun(): string {\n return this.value().length === 1 ? 'item' : 'items';\n }\n\n private announce(message: string): void {\n // Re-announce identical text by breaking the string equality.\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Focus ---------------------------------------------------------------\n\n protected focusInput(): void {\n this.focusedChip.set(-1);\n queueMicrotask(() => this.inputRef().nativeElement.focus());\n }\n\n private focusChip(index: number): void {\n const clamped = Math.max(0, Math.min(index, this.value().length - 1));\n this.focusedChip.set(clamped);\n queueMicrotask(() => {\n const chip = this.chipRefs()[clamped]?.nativeElement;\n chip?.querySelector<HTMLElement>('button')?.focus();\n });\n }\n\n // --- Keyboard: focus in the text input -----------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.list.navigate(event)) return;\n\n const input = this.inputRef().nativeElement;\n const empty = input.value === '';\n\n if (this.separatorKeys().includes(event.key) && !empty) {\n event.preventDefault();\n this.commitDraft();\n return;\n }\n\n switch (event.key) {\n case 'Enter': {\n event.preventDefault();\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) this.selectSuggestion(this.visibleSuggestions()[active]);\n else this.commitDraft();\n break;\n }\n case 'Tab':\n // Never trap: commit what is typed, then let focus move on.\n if (!empty) this.commitDraft();\n break;\n case 'Backspace':\n if (empty && this.value().length) {\n // Focus the last chip rather than deleting blind — a second\n // Backspace, now on the chip, removes it.\n event.preventDefault();\n this.focusChip(this.value().length - 1);\n }\n break;\n case 'ArrowLeft':\n if (input.selectionStart === 0 && this.value().length) {\n event.preventDefault();\n this.focusChip(this.value().length - 1);\n }\n break;\n case 'Escape':\n if (this.list.open()) this.list.hide();\n else this.setDraft('');\n break;\n }\n }\n\n protected onInput(value: string): void {\n this.setDraft(value);\n this.list.show();\n this.list.setActive(-1);\n\n clearTimeout(this.queryTimer);\n this.queryTimer = setTimeout(() => this.query.emit(value), this.debounceTime());\n }\n\n protected onPaste(event: ClipboardEvent): void {\n const text = event.clipboardData?.getData('text') ?? '';\n if (!text) return;\n event.preventDefault();\n\n const tokens = this.parseRaw(text);\n\n // A trailing fragment with no separator after it is still being typed, so\n // it stays in the field rather than committing as a half-address. With a\n // custom `parse` the app owns tokenization and every token is complete.\n const separators = [...this.separatorKeys(), '\\n', '\\t'].map((key) =>\n key.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n );\n const endsWithSeparator = new RegExp(`[${separators.join('')}]\\\\s*$`).test(text);\n const tail = this.parse() || endsWithSeparator ? '' : (tokens.pop() ?? '');\n\n tokens.forEach((token) => this.commit(token));\n this.setDraft(tail.trim());\n }\n\n protected onBlur(): void {\n this.touched.set(true);\n if (this.commitOnBlur()) this.commitDraft();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n this.list.closeOnFocusOut(event);\n }\n\n // --- Keyboard: focus on a chip -------------------------------------------\n\n protected onChipKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (index > 0) this.focusChip(index - 1);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (index < this.value().length - 1) this.focusChip(index + 1);\n else this.focusInput();\n break;\n case 'Home':\n event.preventDefault();\n this.focusChip(0);\n break;\n case 'End':\n event.preventDefault();\n this.focusChip(this.value().length - 1);\n break;\n case 'Backspace':\n // Two deletion keys with different focus outcomes: hold Backspace to\n // eat backwards, Delete to eat forwards, without the cursor jumping.\n event.preventDefault();\n this.removeAt(index, 'left');\n break;\n case 'Delete':\n event.preventDefault();\n this.removeAt(index, 'right');\n break;\n case 'Enter':\n case 'F2':\n event.preventDefault();\n this.editChip(index);\n break;\n case 'Escape':\n event.preventDefault();\n this.focusInput();\n break;\n default:\n // A printable key means the user wants to type, not navigate chips.\n if (event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n this.setDraft(this.draft() + event.key);\n this.focusInput();\n }\n }\n }\n\n /** Lift a chip back into the input for correction. */\n protected editChip(index: number): void {\n const item = this.value()[index];\n if (!item || item.disabled) return;\n\n this.value.update((items) => items.filter((_, i) => i !== index));\n this.removed.emit(item);\n const text = item.label && item.label !== item.value ? `${item.label} <${item.value}>` : item.value;\n this.setDraft(text);\n this.focusInput();\n }\n\n protected selectSuggestion(suggestion: UniTagSuggestion): void {\n this.commit(suggestion.value);\n this.setDraft('');\n this.list.hide();\n this.focusInput();\n }\n\n private commitDraft(): void {\n if (this.commit(this.draft())) this.setDraft('');\n else this.setDraft('');\n this.list.hide();\n }\n\n private setDraft(text: string): void {\n this.draft.set(text);\n const input = this.inputRef?.().nativeElement;\n if (input) input.value = text;\n }\n\n // --- Styling -------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block' }));\n\n protected readonly fieldClass = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n ...this.theme.gap(options.chipGap),\n });\n });\n\n protected readonly inputClass = computed(() =>\n css({\n flex: 1,\n minWidth: this.componentOptions().minInputWidth ?? '12ch',\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n padding: 0,\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: 280,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Focusout rides the bubbling event so the list closes only when focus\n leaves the whole field, not while moving between chips and the input. -->\n<div style=\"position: relative\" (focusout)=\"onFocusOut($event)\">\n <uni-input-box [error]=\"showError()\" height=\"auto\">\n <ul [class]=\"fieldClass()\">\n @for (item of value(); track item.value; let i = $index) {\n <!-- The focusable element is the chip's own button; this <li> only\n receives keys bubbling up from it, so it must stay out of the tab\n order (same delegation the menu uses for its roving focus). -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <li #chip (keydown)=\"onChipKeydown($event, i)\" (dblclick)=\"editChip(i)\">\n <uni-tag\n [label]=\"labelOf(item)\"\n [value]=\"item.value\"\n [avatarSrc]=\"item.avatarSrc\"\n [variant]=\"item.invalid ? 'warn' : tagVariant()\"\n [tone]=\"tagTone()\"\n [size]=\"tagSize() ?? componentOptions().chipSize ?? 'md'\"\n [invalid]=\"!!item.invalid\"\n [disabled]=\"!!item.disabled || disabled()\"\n [interactive]=\"true\"\n [removable]=\"!item.disabled && !disabled()\"\n [controlTabIndex]=\"-1\"\n (removed)=\"removeAt(i)\"\n />\n </li>\n }\n\n <li [class]=\"inputClass()\">\n <!-- The field is one tab stop: chips carry tabindex=\"-1\" and are\n entered with Backspace/ArrowLeft, so Tab never walks through\n eight recipients to reach the next control. -->\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder() ?? ''\"\n [attr.aria-label]=\"label()\"\n [attr.aria-expanded]=\"list.open()\"\n [attr.aria-controls]=\"list.listboxId\"\n [attr.aria-activedescendant]=\"list.activeDescendantId()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput($any($event.target).value)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"onBlur()\"\n />\n </li>\n </ul>\n </uni-input-box>\n\n @if (list.open()) {\n <ul [id]=\"list.listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (suggestion of visibleSuggestions(); track suggestion.value; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"list.optionId(i)\"\n [class.active]=\"i === list.activeIndex()\"\n [attr.aria-selected]=\"i === list.activeIndex()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectSuggestion(suggestion)\"\n >\n {{ labelOf(suggestion) }}\n @if (suggestion.description) {\n <span [class]=\"srOnly\">{{ suggestion.description }}</span>\n }\n </li>\n }\n </ul>\n }\n\n <!-- Said once for the whole field, rather than every chip advertising it. -->\n <span [id]=\"hintId\" [class]=\"srOnly\">\n Press Backspace to reach the last entry, then Backspace again to remove it.\n </span>\n\n <!-- Adds and removes are otherwise silent for a screen reader. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","/**\n * UniTagInputComponent Barrel File\n *\n * This file exports all public-facing elements of the tag-input component.\n */\n\nexport { UniTagInputComponent } from './tag-input.component';\nexport * from './tag-input.model';\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport {\n emitDtcgTokens,\n emitThemeFile,\n generatePalette,\n ShapeRadii,\n type ColorCategory,\n type ColorScheme,\n type Colors,\n type ColorToken,\n type ContrastCheck,\n type GenerationInput,\n type ThemeShape,\n type Variant,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService, type BrandPaletteConfig } from '../../theming';\nimport { UniButtonComponent } from '../button';\n\nconst SCHEMES: ColorScheme[] = [\n 'monochromatic',\n 'analogous',\n 'complimentary',\n 'splitComplimentary',\n 'triadic',\n];\nconst CATEGORIES: ColorCategory[] = ['jewel', 'pastel', 'earth', 'neutral', 'florescent', 'shades'];\nconst SHAPES: ThemeShape[] = ['sharp', 'modern', 'playful'];\nconst VARIANTS: Variant[] = ['primary', 'secondary', 'tertiary', 'warn', 'ghost'];\n\n// Representative tokens shown as swatches in each mode panel.\nconst SWATCHES: { label: string; token: ColorToken; on: ColorToken }[] = [\n { label: 'primary', token: 'primary', on: 'on-primary' },\n { label: 'secondary', token: 'secondary', on: 'on-secondary' },\n { label: 'tertiary', token: 'tertiary', on: 'on-tertiary' },\n { label: 'container', token: 'primary-container', on: 'on-primary-container' },\n { label: 'error', token: 'error', on: 'on-error' },\n { label: 'warn', token: 'warn', on: 'on-warn' },\n { label: 'success', token: 'success', on: 'on-success' },\n { label: 'surface', token: 'surface', on: 'on-surface' },\n];\n\ninterface Preset {\n label: string;\n config: BrandPaletteConfig;\n}\n\n// Curated presets for the OKLCH engine. Brand colors ride as soft `targets`:\n// emitted exactly where they already meet WCAG AA, lightness-adjusted (never\n// hue) where they don't — so every preset is AA-clean in both modes.\nconst PRESETS: Preset[] = [\n {\n label: 'Indigo',\n config: { seed: '#4F46E5', scheme: 'analogous', category: 'jewel', targets: { primary: '#4F46E5' } },\n },\n {\n label: 'Ocean',\n config: { seed: '#0066B2', scheme: 'complimentary', category: 'jewel', targets: { primary: '#0066B2' } },\n },\n {\n label: 'Emerald',\n config: { seed: '#047857', scheme: 'analogous', category: 'jewel', targets: { primary: '#047857' } },\n },\n {\n label: 'Sunset',\n config: { seed: '#DC2626', scheme: 'splitComplimentary', category: 'jewel', targets: { primary: '#DC2626' } },\n },\n {\n label: 'Berry',\n config: { seed: '#C2185B', scheme: 'triadic', category: 'jewel', targets: { primary: '#C2185B' } },\n },\n {\n label: 'Heritage',\n config: {\n seed: '#2C3E35',\n scheme: 'complimentary',\n category: 'earth',\n targets: { primary: '#2C3E35', secondary: '#D4A373' },\n },\n },\n {\n label: 'Sage & Clay',\n config: {\n seed: '#6B8F71',\n scheme: 'analogous',\n category: 'earth',\n targets: { primary: '#6B8F71', secondary: '#B3593C' },\n },\n },\n {\n label: 'Pastel',\n config: { seed: '#A78BFA', scheme: 'analogous', category: 'pastel', targets: { primary: '#A78BFA' } },\n },\n {\n label: 'Graphite',\n config: {\n seed: '#475569',\n scheme: 'monochromatic',\n category: 'neutral',\n accentSaturationFloor: 10,\n targets: { primary: '#475569' },\n },\n },\n];\n\n@Component({\n selector: 'uni-theme-builder',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UniButtonComponent],\n host: { '[class]': 'shell()' },\n template: `\n <aside [class]=\"controls()\">\n <header class=\"tb-head\">\n <span class=\"tb-eyebrow\">Theme builder · Playground</span>\n <h2 class=\"tb-title\">Make Uni your brand</h2>\n <p class=\"tb-lede\">\n Every token is derived in OKLCH from a seed color, a scheme and a category — or bring\n exact brand colors. Presets are WCAG AA in light and dark. Changes apply to\n <b>every</b> component in this Storybook, live.\n </p>\n </header>\n\n <div class=\"tb-presets\">\n @for (p of presets; track p.label) {\n <button type=\"button\" class=\"tb-preset\" (click)=\"applyPreset(p.config)\">\n <span\n class=\"tb-dot\"\n [style.background]=\"p.config.targets?.primary ?? p.config.brand?.primary ?? p.config.seed\"\n ></span>\n {{ p.label }}\n </button>\n }\n </div>\n\n <label class=\"tb-field\">\n <span>Seed color</span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" />\n <input type=\"text\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field\">\n <span>Scheme</span>\n <select (change)=\"setScheme($any($event.target).value)\">\n @for (s of schemes; track s) {\n <option [value]=\"s\" [selected]=\"s === scheme()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Category</span>\n <select (change)=\"setCategory($any($event.target).value)\">\n @for (c of categories; track c) {\n <option [value]=\"c\" [selected]=\"c === category()\">{{ c }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Shape</span>\n <select (change)=\"setShape($any($event.target).value)\">\n @for (s of shapes; track s) {\n <option [value]=\"s\" [selected]=\"s === shape()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Accent saturation floor · {{ floor() }}</span>\n <input type=\"range\" min=\"0\" max=\"45\" [value]=\"floor()\" (input)=\"setFloor($any($event.target).value)\" />\n </label>\n\n <div class=\"tb-field\">\n <span>Storybook mode</span>\n <div class=\"tb-toggle\">\n <button type=\"button\" [class.on]=\"mode() === 'light'\" (click)=\"setMode('light')\">Light</button>\n <button type=\"button\" [class.on]=\"mode() === 'dark'\" (click)=\"setMode('dark')\">Dark</button>\n </div>\n </div>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinPrimary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinPrimary()\" (change)=\"setPinPrimary($any($event.target).checked)\" />\n Pin primary <em>{{ pinPrimary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinSecondary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinSecondary()\" (change)=\"setPinSecondary($any($event.target).checked)\" />\n Pin secondary <em>{{ pinSecondary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <div class=\"tb-field\">\n <span>Export</span>\n <div class=\"tb-exports\">\n <button type=\"button\" (click)=\"copyThemeFile()\">\n {{ copied() === 'file' ? 'Copied ✓' : 'Copy uni-theme.ts' }}\n </button>\n <button type=\"button\" (click)=\"copyNgAdd()\">\n {{ copied() === 'ngadd' ? 'Copied ✓' : 'Copy ng add command' }}\n </button>\n <button type=\"button\" (click)=\"copyDtcg()\">\n {{ copied() === 'dtcg' ? 'Copied ✓' : 'Copy DTCG JSON' }}\n </button>\n </div>\n </div>\n\n <div class=\"tb-actions\">\n <button type=\"button\" class=\"tb-reset\" (click)=\"reset()\">Reset to default</button>\n </div>\n <code class=\"tb-snippet\">{{ snippet() }}</code>\n </aside>\n\n <section [class]=\"preview()\">\n <p class=\"tb-group\">Light & dark — generated together, side by side</p>\n <div class=\"tb-modes\">\n @for (m of modePanels(); track m.label) {\n <div class=\"tb-panel\" [style.background]=\"m.colors['background']\" [style.borderColor]=\"m.colors['outline']\">\n <span class=\"tb-panel-tag\" [style.color]=\"m.colors['on-background-variant']\">{{ m.label }}</span>\n <div class=\"tb-mode-swatches\">\n @for (s of swatches; track s.label) {\n <div class=\"tb-swatch\" [style.background]=\"m.colors[s.token]\" [style.color]=\"m.colors[s.on]\">\n <span>{{ s.label }}</span>\n <code>{{ m.colors[s.token] }}</code>\n </div>\n }\n </div>\n <div class=\"tb-mini-card\" [style.background]=\"m.colors['surface']\" [style.borderColor]=\"m.colors['outline']\">\n <div class=\"tb-mini-head\" [style.background]=\"m.colors['primary']\" [style.color]=\"m.colors['on-primary']\">\n Card header\n </div>\n <div class=\"tb-mini-body\" [style.color]=\"m.colors['on-surface']\">\n Semantic inks stay legible:\n <b [style.color]=\"m.colors['error']\">error</b> ·\n <b [style.color]=\"m.colors['warn']\">warn</b> ·\n <b [style.color]=\"m.colors['success']\">success</b>.\n </div>\n </div>\n </div>\n }\n </div>\n\n <p class=\"tb-group\">Real components — your brand, live ({{ mode() }})</p>\n <div class=\"tb-buttons\">\n @for (v of variants; track v) {\n <button text-button [variant]=\"v\" size=\"lg\">{{ v }}</button>\n }\n </div>\n <div class=\"tb-buttons\">\n @for (sz of sizes; track sz) {\n <button text-button variant=\"primary\" [size]=\"sz\">{{ sz }}</button>\n }\n </div>\n\n <p class=\"tb-group\">\n Contrast report — {{ report().checks.length }} pairs ·\n worst {{ report().worst }}:1 ·\n @if (report().failing.length === 0) {\n <span class=\"tb-pass\">all AA</span>\n } @else {\n <span class=\"tb-fail\">{{ report().failing.length }} failing</span>\n }\n <button type=\"button\" class=\"tb-link\" (click)=\"showAllPairs.set(!showAllPairs())\">\n {{ showAllPairs() ? 'hide detail' : 'show all pairs' }}\n </button>\n </p>\n @if (report().failing.length > 0 || showAllPairs()) {\n <div class=\"tb-matrix\">\n <table>\n <thead>\n <tr><th>mode</th><th>foreground</th><th>on</th><th>ratio</th><th>needs</th><th>level</th></tr>\n </thead>\n <tbody>\n @for (c of visibleChecks(); track $index) {\n <tr [class.bad]=\"!c.pass\">\n <td>{{ c.mode }}</td>\n <td><code>{{ c.foreground }}</code></td>\n <td><code>{{ c.background }}</code></td>\n <td>{{ c.ratio }}</td>\n <td>{{ c.required }}</td>\n <td>{{ c.level }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n @if (report().failing.length > 0) {\n <p class=\"tb-hint\">\n Failing pairs come from hard-pinned brand colors (pins are emitted verbatim). Un-pin, or\n use a preset — soft targets keep brand hue while the guard-rail restores AA.\n </p>\n }\n\n <p class=\"tb-hint\">Tip: browse to any component story in the sidebar — it's wearing your brand now.</p>\n </section>\n `,\n})\nexport class UniThemeBuilderComponent {\n protected theme = inject(ThemeService);\n\n protected readonly schemes = SCHEMES;\n protected readonly categories = CATEGORIES;\n protected readonly shapes = SHAPES;\n protected readonly variants = VARIANTS;\n protected readonly sizes = ['sm', 'md', 'lg', 'xl'] as const;\n protected readonly swatches = SWATCHES;\n protected readonly presets = PRESETS;\n\n protected seed = signal('#4F46E5');\n protected scheme = signal<ColorScheme>('triadic');\n protected category = signal<ColorCategory>('neutral');\n protected shape = signal<ThemeShape>('modern');\n protected floor = signal(18);\n protected mode = signal<'light' | 'dark'>('light');\n protected pinPrimary = signal(false);\n protected primaryHex = signal('#2C3E35');\n protected pinSecondary = signal(false);\n protected secondaryHex = signal('#D4A373');\n /** Soft brand targets carried by the active preset (cleared on seed edits). */\n protected targets = signal<BrandPaletteConfig['targets']>(undefined);\n\n protected copied = signal<'file' | 'ngadd' | 'dtcg' | null>(null);\n protected showAllPairs = signal(false);\n\n constructor() {\n // Seed the controls from an already-active custom palette, if any.\n const existing = this.theme.customPalette();\n if (existing) {\n this.seed.set(existing.seed);\n this.scheme.set(existing.scheme);\n this.category.set(existing.category);\n this.floor.set(existing.accentSaturationFloor ?? 18);\n this.mode.set(existing.mode ?? 'light');\n if (existing.brand?.primary) {\n this.pinPrimary.set(true);\n this.primaryHex.set(existing.brand.primary);\n }\n if (existing.brand?.secondary) {\n this.pinSecondary.set(true);\n this.secondaryHex.set(existing.brand.secondary);\n }\n this.targets.set(existing.targets);\n }\n }\n\n protected config = computed<BrandPaletteConfig>(() => ({\n seed: this.seed(),\n scheme: this.scheme(),\n category: this.category(),\n mode: this.mode(),\n accentSaturationFloor: this.floor(),\n radii: ShapeRadii[this.shape()],\n ...(this.targets() ? { targets: this.targets() } : {}),\n brand: {\n ...(this.pinPrimary() ? { primary: this.primaryHex() } : {}),\n ...(this.pinSecondary() ? { secondary: this.secondaryHex() } : {}),\n },\n }));\n\n /**\n * Both modes generated on every input change (< 15 ms each), independent of\n * the storybook-wide theme — the side-by-side preview and the contrast\n * report always show the full light+dark picture.\n */\n protected palettes = computed(() => {\n const base = { ...this.config() };\n const checks: ContrastCheck[] = [];\n const light = generatePalette({ ...base, mode: 'light', checks });\n const dark = generatePalette({ ...base, mode: 'dark', checks });\n return { light, dark, checks };\n });\n\n protected modePanels = computed((): { label: 'light' | 'dark'; colors: Colors }[] => [\n { label: 'light', colors: this.palettes().light },\n { label: 'dark', colors: this.palettes().dark },\n ]);\n\n protected report = computed(() => {\n const { checks } = this.palettes();\n return {\n checks,\n failing: checks.filter((c) => !c.pass),\n worst: checks.reduce((worst, c) => Math.min(worst, c.ratio), 21),\n };\n });\n\n protected visibleChecks = computed(() =>\n this.showAllPairs() ? this.report().checks : this.report().failing\n );\n\n protected snippet = computed(() => {\n const { radii: _radii, ...rest } = this.config();\n return JSON.stringify(rest);\n });\n\n /** The builder state expressed as engine input — drives all three exports. */\n protected generationInput = computed<GenerationInput>(() => {\n const targets = this.targets();\n const seeds = [this.pinPrimary() ? this.primaryHex() : (targets?.primary ?? this.seed())];\n const secondary = this.pinSecondary() ? this.secondaryHex() : targets?.secondary;\n if (secondary) seeds.push(secondary);\n if (targets?.tertiary) seeds.push(targets.tertiary);\n return {\n seed: seeds.length === 1 ? seeds[0] : seeds,\n scheme: this.scheme(),\n vibe: this.category(),\n shape: this.shape(),\n name: 'Brand',\n };\n });\n\n protected color(token: ColorToken): string {\n return this.theme.colors()[token] ?? 'transparent';\n }\n\n private apply(): void {\n this.theme.applyPalette(this.config());\n }\n\n private copyToClipboard(kind: 'file' | 'ngadd' | 'dtcg', text: string): void {\n void navigator.clipboard?.writeText(text).then(() => {\n this.copied.set(kind);\n setTimeout(() => this.copied.set(null), 1600);\n });\n }\n\n protected copyThemeFile(): void {\n this.copyToClipboard('file', emitThemeFile(this.generationInput()).content);\n }\n\n protected copyNgAdd(): void {\n const input = this.generationInput();\n const seeds = Array.isArray(input.seed) ? input.seed.join(',') : input.seed;\n this.copyToClipboard(\n 'ngadd',\n `ng add @uni-design-system/uni-angular --brand=${seeds} --shape=${input.shape}`\n );\n }\n\n protected copyDtcg(): void {\n const { light, dark } = this.palettes();\n const radii = ShapeRadii[this.shape()];\n const spacing = this.theme.spacing();\n this.copyToClipboard(\n 'dtcg',\n JSON.stringify(\n {\n light: emitDtcgTokens({ colors: light, radii, spacing }),\n dark: emitDtcgTokens({ colors: dark, radii, spacing }),\n },\n null,\n 2\n )\n );\n }\n\n protected setSeed(v: string) {\n if (/^#?[0-9a-fA-F]{6}$/.test(v.replace('#', ''))) {\n this.seed.set(v.startsWith('#') ? v : `#${v}`);\n // A hand-edited seed takes over from any preset's soft brand targets.\n this.targets.set(undefined);\n this.apply();\n }\n }\n protected setScheme(v: ColorScheme) {\n this.scheme.set(v);\n this.apply();\n }\n protected setCategory(v: ColorCategory) {\n this.category.set(v);\n this.apply();\n }\n protected setShape(v: ThemeShape) {\n this.shape.set(v);\n this.apply();\n }\n protected setFloor(v: string) {\n this.floor.set(Number(v));\n this.apply();\n }\n protected setMode(v: 'light' | 'dark') {\n this.mode.set(v);\n this.apply();\n }\n protected setPinPrimary(v: boolean) {\n this.pinPrimary.set(v);\n this.apply();\n }\n protected setPrimaryHex(v: string) {\n this.primaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinPrimary()) this.apply();\n }\n protected setPinSecondary(v: boolean) {\n this.pinSecondary.set(v);\n this.apply();\n }\n protected setSecondaryHex(v: string) {\n this.secondaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinSecondary()) this.apply();\n }\n\n protected applyPreset(config: BrandPaletteConfig) {\n this.seed.set(config.seed);\n this.scheme.set(config.scheme);\n this.category.set(config.category);\n this.floor.set(config.accentSaturationFloor ?? 18);\n this.targets.set(config.targets);\n this.pinPrimary.set(!!config.brand?.primary);\n if (config.brand?.primary) this.primaryHex.set(config.brand.primary);\n this.pinSecondary.set(!!config.brand?.secondary);\n if (config.brand?.secondary) this.secondaryHex.set(config.brand.secondary);\n this.apply();\n }\n\n protected reset() {\n this.theme.clearCustomPalette();\n this.seed.set('#4F46E5');\n this.scheme.set('triadic');\n this.category.set('neutral');\n this.shape.set('modern');\n this.floor.set(18);\n this.mode.set('light');\n this.targets.set(undefined);\n this.pinPrimary.set(false);\n this.pinSecondary.set(false);\n }\n\n // ── Styling (reads live theme tokens so the builder wears the brand too) ──\n private c = (token: ColorToken) => this.theme.colors()[token] ?? 'transparent';\n\n protected shell = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'minmax(280px, 340px) 1fr',\n gap: 24,\n alignItems: 'start',\n padding: 24,\n background: this.c('background'),\n color: this.c('on-background'),\n minHeight: '100vh',\n fontFamily: 'Red Hat Display, system-ui, sans-serif',\n '@media (max-width: 820px)': { gridTemplateColumns: '1fr' },\n '& .tb-eyebrow': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.6,\n },\n '& .tb-title': { fontSize: 26, margin: '6px 0 8px', letterSpacing: '-0.02em' },\n '& .tb-lede': { fontSize: 14, lineHeight: 1.5, opacity: 0.8, margin: 0 },\n '& .tb-group': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.55,\n margin: '4px 0 12px',\n },\n })\n );\n\n protected controls = computed(() =>\n css({\n position: 'sticky',\n top: 16,\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n padding: 20,\n borderRadius: 14,\n background: this.c('surface'),\n border: `1px solid ${this.c('outline')}`,\n '& .tb-head': { display: 'flex', flexDirection: 'column' },\n '& .tb-presets': { display: 'flex', flexWrap: 'wrap', gap: 8 },\n '& .tb-preset': {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 7,\n cursor: 'pointer',\n borderRadius: 999,\n padding: '5px 11px 5px 6px',\n fontSize: 12.5,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('surface'),\n color: this.c('on-surface'),\n },\n '& .tb-dot': { width: 13, height: 13, borderRadius: '50%' },\n '& .tb-field': { display: 'flex', flexDirection: 'column', gap: 6, fontSize: 13 },\n '& .tb-field > span': { fontSize: 12, opacity: 0.7 },\n '& .tb-row': { display: 'flex', gap: 8, alignItems: 'center' },\n '& input[type=color]': {\n width: 40,\n height: 34,\n padding: 0,\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 8,\n background: 'none',\n cursor: 'pointer',\n },\n '& input[type=text], & select': {\n width: '100%',\n height: 34,\n padding: '0 10px',\n borderRadius: 8,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& input[type=range]': { width: '100%', accentColor: this.c('primary') },\n '& .tb-toggle': { display: 'flex', gap: 6 },\n '& .tb-toggle button': {\n flex: 1,\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n },\n '& .tb-toggle button.on': {\n background: this.c('primary'),\n color: this.c('on-primary'),\n borderColor: this.c('primary'),\n },\n '& .tb-exports': { display: 'flex', flexDirection: 'column', gap: 6 },\n '& .tb-exports button': {\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 12.5,\n border: `1px solid ${this.c('primary')}`,\n background: this.c('primary-surface'),\n color: this.c('on-primary-surface'),\n },\n '& .tb-pin.dim input[type=color], & .tb-pin.dim input[type=text]': { opacity: 0.45 },\n '& .tb-pin em': {\n fontStyle: 'normal',\n fontSize: 10,\n padding: '1px 6px',\n borderRadius: 5,\n marginLeft: 4,\n background: this.c('primary-container'),\n color: this.c('on-primary-container'),\n },\n '& .tb-reset': {\n cursor: 'pointer',\n borderRadius: 8,\n padding: '8px 14px',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& .tb-snippet': {\n display: 'block',\n fontFamily: 'monospace',\n fontSize: 10.5,\n lineHeight: 1.5,\n wordBreak: 'break-all',\n opacity: 0.6,\n },\n })\n );\n\n protected preview = computed(() =>\n css({\n display: 'flex',\n flexDirection: 'column',\n gap: 10,\n '& .tb-modes': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gap: 14,\n marginBottom: 20,\n },\n '& .tb-panel': {\n border: '1px solid',\n borderRadius: 14,\n padding: 14,\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n },\n '& .tb-panel-tag': {\n fontSize: 10.5,\n letterSpacing: '0.12em',\n textTransform: 'uppercase',\n },\n '& .tb-mode-swatches': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(110px, 1fr))',\n gap: 8,\n },\n '& .tb-swatch': {\n borderRadius: 10,\n padding: '12px 12px',\n minHeight: 60,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n '& .tb-swatch span': { fontSize: 12.5, fontWeight: 600 },\n '& .tb-swatch code': { fontFamily: 'monospace', fontSize: 10.5, opacity: 0.85 },\n '& .tb-mini-card': { borderRadius: 10, overflow: 'hidden', border: '1px solid' },\n '& .tb-mini-head': { padding: '8px 14px', fontWeight: 600, fontSize: 13 },\n '& .tb-mini-body': { padding: '10px 14px', fontSize: 12.5, lineHeight: 1.5 },\n '& .tb-buttons': { display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center', marginBottom: 14 },\n '& .tb-pass': { color: this.c('success'), fontWeight: 700 },\n '& .tb-fail': { color: this.c('error'), fontWeight: 700 },\n '& .tb-link': {\n marginLeft: 10,\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n color: this.c('primary'),\n fontSize: 11,\n textTransform: 'none',\n letterSpacing: 'normal',\n textDecoration: 'underline',\n },\n '& .tb-matrix': {\n maxHeight: 320,\n overflow: 'auto',\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 10,\n marginBottom: 12,\n '& table': { width: '100%', borderCollapse: 'collapse', fontSize: 12 },\n '& th': {\n position: 'sticky',\n top: 0,\n textAlign: 'left',\n padding: '8px 10px',\n background: this.c('surface-variant'),\n color: this.c('on-surface-variant'),\n fontSize: 10.5,\n textTransform: 'uppercase',\n letterSpacing: '0.08em',\n },\n '& td': { padding: '6px 10px', borderTop: `1px solid ${this.c('outline')}` },\n '& td code': { fontFamily: 'monospace', fontSize: 11.5 },\n '& tr.bad td': { background: this.c('error-container'), color: this.c('on-error-container') },\n },\n '& .tb-hint': { fontSize: 12.5, opacity: 0.6, marginTop: 8 },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport type { ThemeName } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport { UniSelectComponent } from '../select-input';\n\n/**\n * Drop-in switcher for the themes registered via `UNI_THEMES`: a select over\n * `ThemeService.themeOptions` that applies the choice through `selectTheme`\n * (so it persists across reloads like any other theme selection).\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-theme-switch',\n imports: [UniSelectComponent],\n template: `\n <uni-select\n [options]=\"theme.themeOptions()\"\n [value]=\"selected()\"\n (valueChange)=\"select($event)\"\n [ariaLabel]=\"ariaLabel()\"\n />\n `,\n})\nexport class UniThemeSwitchComponent {\n protected theme = inject(ThemeService);\n\n /** Accessible name for the underlying select. */\n ariaLabel = input('Theme');\n\n /** Emits the selected theme key after it has been applied. */\n themeChanged = output<ThemeName>();\n\n protected selected = computed<ThemeName | null>(() => this.theme.selectedThemeKey() || null);\n\n protected select(themeName: ThemeName | null): void {\n if (!themeName) return;\n this.theme.selectTheme(themeName);\n this.themeChanged.emit(themeName);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniToggleOptions } from './toggle.model';\n\n@Component({\n selector: 'uni-toggle',\n imports: [UniTextComponent],\n templateUrl: './toggle.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'toggle' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniToggleComponent\n extends BaseComponent<UniToggleOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n private readonly metrics = computed(() => {\n const toggleSize = (this.componentOptions().size as number) || 20;\n const sliderSize = toggleSize * 0.8;\n return {\n toggleSize,\n toggleWidth: toggleSize * 2,\n sliderSize,\n sliderOffset: (toggleSize - sliderSize) / 2,\n };\n });\n\n protected readonly toggleLabel = computed(() => {\n const { toggleSize, toggleWidth, sliderSize, sliderOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .toggle-switch': {\n width: toggleWidth,\n height: toggleSize,\n backgroundColor: this.disabled()\n ? this.getThemeColor('disabled')\n : this.getThemeColor(this.componentOptions().trackColor ?? 'surface-variant'),\n borderRadius: toggleSize / 2,\n position: 'relative',\n // Scoped, never `all`: the focus ring must apply instantly rather\n // than interpolating its outline color from a stale value.\n transition: 'background-color 0.3s ease, border-color 0.3s ease',\n },\n\n '& .toggle-slider': {\n width: sliderSize,\n height: sliderSize,\n backgroundColor: this.getThemeColor(this.componentOptions().knobColor ?? 'surface'),\n borderRadius: '50%',\n position: 'absolute',\n top: sliderOffset,\n left: sliderOffset,\n transition: 'transform 0.3s ease, background-color 0.3s ease',\n ...this.theme.boxShadow('raised'),\n },\n\n // Hover darkens whatever the token resolves to — the button convention.\n '&:hover .toggle-switch': this.disabled()\n ? {}\n : {\n filter: 'brightness(0.95)',\n },\n });\n });\n\n protected readonly toggleInput = computed(() => {\n const { toggleSize } = this.metrics();\n return css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .toggle-switch': {\n backgroundColor: this.getThemeColor(this.variant()),\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .toggle-switch .toggle-slider': {\n transform: `translateX(${toggleSize}px)`,\n },\n\n '&:disabled + .toggle-switch': {\n cursor: 'not-allowed',\n },\n\n // The shared, themable focus indicator, keyed off the hidden input.\n '&:focus + .toggle-switch': {\n ...this.theme.focusRingStyle(this.getThemeColor(this.variant())),\n },\n });\n });\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<label [class]=\"toggleLabel()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [class]=\"toggleInput()\"\n [checked]=\"checked()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"toggle-switch\">\n <div class=\"toggle-slider\"></div>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniTooltipOptions } from './tooltip.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n useTimer,\n FOCUSABLE_SELECTOR,\n type Placement,\n} from '../../cdk';\n\n@Component({\n selector: 'uni-tooltip',\n imports: [],\n // The bubble lives declaratively in the template as a manual popover: the\n // top layer escapes any overflow context (which made appendToBody obsolete)\n // and native CSS anchor positioning keeps it attached to the host.\n template: `<ng-content></ng-content\n ><span\n #tip\n popover=\"manual\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [class]=\"tooltipClassName()\"\n (mouseenter)=\"isMouseInside.set(true)\"\n (mouseleave)=\"isMouseInside.set(false)\"\n (animationend)=\"onAnimationEnd($event)\"\n >{{ label() }}<span [class]=\"arrowClassName()\"></span\n ></span>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'tooltip' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'className()',\n '(click)': 'onClick($event)',\n '(mouseenter)': 'mouseenter()',\n '(mouseleave)': 'mouseleave()',\n '(focusin)': 'onFocusIn($event)',\n '(focusout)': 'onFocusOut()',\n '(keydown.escape)': 'onEscape($event)',\n },\n})\nexport class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n private timer = useTimer();\n isMouseInside = signal(false);\n\n /** Whether the bubble is currently shown (or fading out). */\n private readonly visible = signal(false);\n\n /**\n * Set when the wrapped control is activated: clicking a button is not a\n * request to toggle the bubble, and re-showing it right away makes a\n * state-flipping label (\"Expand\" → \"Collapse\") blink back mid-interaction.\n * Re-arms when the pointer leaves or focus moves away.\n */\n private readonly suppressed = signal(false);\n\n readonly tooltipId = uniqueId('uni-tooltip');\n private readonly anchorName = newAnchorName();\n\n hoverDelay = input<number>(500);\n label = input.required<string>();\n placement = input<Placement>('top');\n inlineText = input<boolean>(false);\n\n /** @deprecated The tooltip renders in the native top layer; ignored. */\n appendToBody = input<boolean>(false);\n\n private tipRef = viewChild.required<ElementRef<HTMLElement>>('tip');\n\n constructor() {\n super();\n\n effect(() => {\n const timerActive = this.timer.isActive();\n const mouseInside = this.isMouseInside();\n\n // If the timer finished and the mouse is still inside, show tooltip\n if (!timerActive && mouseInside && !this.suppressed()) {\n this.showTooltip();\n }\n // If the mouse left and the timer is not running, hide tooltip\n else if (!mouseInside) {\n this.hideTooltip();\n }\n });\n\n // A tooltip must be reachable by keyboard (WCAG 1.4.13): when the\n // projected content has no focusable element, the host itself joins\n // the tab sequence. The bubble is always in the DOM, so the describedby\n // relationship is wired once, on the element that receives focus.\n afterNextRender(() => {\n const host = this.elRef.nativeElement as HTMLElement;\n if (!host.querySelector(FOCUSABLE_SELECTOR) && !host.matches(FOCUSABLE_SELECTOR)) {\n this.renderer.setAttribute(host, 'tabindex', '0');\n }\n this.renderer.setAttribute(resolveFocusTarget(host), 'aria-describedby', this.tooltipId);\n });\n }\n\n onFocusIn(event: FocusEvent) {\n // Only keyboard-driven focus shows the tooltip immediately; mouse\n // interaction keeps the hover-delay behavior.\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.showTooltip();\n }\n }\n\n onFocusOut() {\n this.suppressed.set(false);\n if (!this.isMouseInside()) {\n this.hideTooltip();\n }\n }\n\n onEscape(event: Event) {\n if (this.visible()) {\n // Dismiss only the tooltip, not an enclosing dialog/popover\n event.stopPropagation();\n this.hideTooltip();\n }\n }\n\n /**\n * A click on an interactive element inside the host is an activation of\n * that control — hide the bubble and stay suppressed until re-arm. A click\n * anywhere else (inline-text tooltips, tap on a non-interactive host)\n * keeps the tap-to-toggle behavior.\n */\n protected onClick(event: Event) {\n const host = this.elRef.nativeElement as HTMLElement;\n const control = (event.target as HTMLElement).closest(FOCUSABLE_SELECTOR);\n if (control && control !== host && host.contains(control)) {\n this.suppressed.set(true);\n this.hideTooltip();\n } else {\n this.toggleTooltip();\n }\n }\n\n toggleTooltip() {\n if (this.visible()) {\n this.hideTooltip();\n } else {\n this.showTooltip();\n }\n }\n\n mouseenter() {\n this.isMouseInside.set(true);\n this.timer.start(this.hoverDelay());\n }\n\n mouseleave() {\n this.isMouseInside.set(false);\n this.suppressed.set(false);\n this.timer.stop();\n }\n\n showTooltip() {\n if (this.visible()) return;\n const tip = this.tipRef().nativeElement;\n tip.showPopover();\n this.renderer.setAttribute(tip, 'fade', 'in');\n this.visible.set(true);\n }\n\n hideTooltip() {\n if (!this.visible()) return;\n this.renderer.setAttribute(this.tipRef().nativeElement, 'fade', 'out');\n }\n\n protected onAnimationEnd(event: AnimationEvent) {\n if (event.animationName.includes(this.tooltipFadeOut)) {\n this.tipRef().nativeElement.hidePopover();\n this.visible.set(false);\n }\n }\n\n protected readonly className = computed(() =>\n css(\n {\n display: 'inline-flex',\n anchorName: this.anchorName,\n },\n this.inlineText() && {\n cursor: 'help',\n textDecoration: 'underline',\n textDecorationStyle: 'dotted',\n }\n )\n );\n\n private tooltipFadeIn = keyframes({ ...fadeIn });\n private tooltipFadeOut = keyframes({ ...fadeOut });\n\n protected readonly tooltipClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().shadow),\n ...this.theme.typeface(this.componentOptions().typeface),\n border: 'none',\n padding: 5,\n width: 'max-content',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 6 }),\n\n '&[fade=\"in\"]': {\n animation: `${this.tooltipFadeIn} ease-in 350ms`,\n },\n\n '&[fade=\"out\"]': {\n animation: `${this.tooltipFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n ...anchorArrowStyles(this.placement()),\n })\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RippleDirective"],"mappings":"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"}
|