angular-tailwind-components 1.8.3-RC2 → 1.8.3-RC3

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":"angular-tailwind-components.mjs","sources":["../../../projects/angular-tailwind-components/src/lib/models/types.ts","../../../projects/angular-tailwind-components/src/lib/models/icons.ts","../../../projects/angular-tailwind-components/src/lib/components/tailwind.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/angular-tailwind-components/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-table-row.directive.ts","../../../projects/angular-tailwind-components/src/lib/tokens/tokens.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.html","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-sort-header.directive.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.html","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.html","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.ts","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.html","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.ts","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.html","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.html","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.ts","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.html","../../../projects/angular-tailwind-components/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/angular-tailwind-components/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.html","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.ts","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.html","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.ts","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.html","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.html","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.ts","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.html","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.ts","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.ts","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.html","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.html","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.ts","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.html","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.html","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.ts","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.html","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.html","../../../projects/angular-tailwind-components/src/lib/ref/modal/modal.ref.ts","../../../projects/angular-tailwind-components/src/lib/services/modal/modal.service.ts","../../../projects/angular-tailwind-components/src/lib/services/toast/toast.service.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.html","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.ts","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.html","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.ts","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.html","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.html","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.html","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.ts","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.html","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.html","../../../projects/angular-tailwind-components/src/lib/components/index.ts","../../../projects/angular-tailwind-components/src/lib/providers/theme-define.provider.ts","../../../projects/angular-tailwind-components/src/public-api.ts","../../../projects/angular-tailwind-components/src/angular-tailwind-components.ts"],"sourcesContent":["/** Common types used across all components */\n\n/** Size variants for components */\nexport type TailwindSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Color variants for buttons and interactive elements */\nexport type TailwindColor = 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info' | 'transparent';\n\n/** Button kinds */\nexport type TailwindButtonKind = 'solid' | 'flat' | 'outlined' | 'ghost' | 'text';\n\n/** ARIA role for `TailwindButton` */\nexport type TailwindButtonRole = 'button' | 'menuitem' | 'tab' | 'switch' | 'checkbox' | 'radio';\n\n/** Alert/feedback color variants */\nexport type TailwindSeverity = 'success' | 'warning' | 'danger' | 'info';\n\n/** Position variants for overlays */\nexport type TailwindPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/** Icon placement relative to button label */\nexport type TailwindIconPosition = 'left' | 'right';\n\n/** Shape variants */\nexport type TailwindShape = 'rounded' | 'pill' | 'square';\n\n/** Semantic heading level for `TailwindTitle` */\nexport type TailwindTitleTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/**\n * Pixel width and height for `TailwindIcon`. Intended range **16–64**; values outside it are clamped at runtime.\n */\nexport type TailwindIconSize = number;\n\n/** Option interface for select/radio/checkbox groups */\nexport interface TailwindOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TailwindOptionGroup<T = unknown> extends TailwindOption<T> {\n description?: string;\n}\n\nexport interface TailwindMenuItem {\n label?: string;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n value?: string;\n items?: Exclude<TailwindMenuItem, 'items'>[];\n}\n","/**\n * Heroicons outline icon names (kebab-case). SVG assets in `public/tailwind-icons/`.\n * Generated by scripts/copy-icons.js sync — do not edit manually.\n *\n * Icons: Heroicons (Tailwind Labs), MIT — https://heroicons.com/\n */\nexport const TAILWIND_HEROICON_NAMES = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-small-down',\n 'arrow-small-left',\n 'arrow-small-right',\n 'arrow-small-up',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'book-open',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'minus-small',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'plus-small',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\n/** Use names listed in {@link TAILWIND_HEROICON_NAMES} (compile-time union omitted — large sets break Angular template inference). */\nexport type TailwindHeroicon = string;\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n host: {\n '[attr.id]': 'id() || null',\n '[class]': 'class() || null'\n }\n})\nexport abstract class TailwindComponent {\n /** Optional ID for the component */\n readonly id = input<string>();\n\n /** Custom CSS classes to append */\n readonly class = input<string>(undefined, { alias: 'class' });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n OnDestroy,\n AfterViewInit,\n NgZone,\n ElementRef,\n viewChild\n} from '@angular/core';\nimport { TailwindPosition } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { DOCUMENT } from '@angular/common';\n\n@Component({\n selector: 'tailwind-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTooltip extends TailwindComponent implements AfterViewInit, OnDestroy {\n /** Tooltip text */\n readonly text = input.required<string>();\n /** Position relative to trigger */\n readonly position = input<TailwindPosition>('top');\n\n readonly isVisible = signal(false);\n readonly topPos = signal<number>(0);\n readonly leftPos = signal<number>(0);\n\n private targetElement: HTMLElement | null = null;\n\n private document = inject(DOCUMENT);\n private ngZone = inject(NgZone);\n private el = inject(ElementRef);\n\n readonly tooltipEl = viewChild.required<ElementRef<HTMLDivElement>>('tooltipEl');\n\n private scrollListener = () => this.updatePosition();\n\n readonly tooltipClasses = computed(() => {\n const base = [\n 'fixed z-[1070] px-3 py-1.5',\n 'text-xs font-medium text-white bg-neutral-900 rounded-lg',\n 'shadow-lg whitespace-nowrap pointer-events-none',\n 'transition-opacity duration-150',\n this.isVisible() ? 'opacity-100' : 'opacity-0'\n ];\n return base.join(' ');\n });\n\n readonly arrowClasses = computed(() => {\n const base = 'absolute w-2 h-2 bg-neutral-900 rotate-45';\n\n const posMap: Record<TailwindPosition, string> = {\n top: 'top-full left-1/2 -translate-x-1/2 -mt-1',\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-1',\n left: 'left-full top-1/2 -translate-y-1/2 -ml-1',\n right: 'right-full top-1/2 -translate-y-1/2 -mr-1'\n };\n\n return `${base} ${posMap[this.position()]}`;\n });\n\n ngAfterViewInit() {\n this.updatePosition();\n }\n\n ngOnDestroy() {\n this.hide();\n }\n\n setTarget(el: HTMLElement) {\n this.targetElement = el;\n this.updatePosition();\n }\n\n private getFixedOrigin(): { top: number; left: number } {\n const dummy = this.document.createElement('div');\n dummy.style.position = 'fixed';\n dummy.style.top = '0';\n dummy.style.left = '0';\n this.el.nativeElement.appendChild(dummy);\n const rect = dummy.getBoundingClientRect();\n this.el.nativeElement.removeChild(dummy);\n return { top: rect.top, left: rect.left };\n }\n\n updatePosition(): void {\n if (!this.targetElement) return;\n\n const origin = this.getFixedOrigin();\n const targetRect = this.targetElement.getBoundingClientRect();\n const tooltipRect = this.tooltipEl().nativeElement.getBoundingClientRect();\n\n let top = 0;\n let left = 0;\n\n switch (this.position()) {\n case 'top':\n top = targetRect.top - tooltipRect.height - 8;\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\n break;\n case 'bottom':\n top = targetRect.bottom + 8;\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\n break;\n case 'left':\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\n left = targetRect.left - tooltipRect.width - 8;\n break;\n case 'right':\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\n left = targetRect.right + 8;\n break;\n }\n\n this.ngZone.run(() => {\n this.topPos.set(top - origin.top);\n this.leftPos.set(left - origin.left);\n });\n }\n\n show(): void {\n this.updatePosition();\n this.ngZone.run(() => {\n this.isVisible.set(true);\n });\n this.ngZone.runOutsideAngular(() => {\n window.addEventListener('scroll', this.scrollListener, true);\n window.addEventListener('resize', this.scrollListener, true);\n });\n }\n\n hide(): void {\n this.ngZone.run(() => {\n this.isVisible.set(false);\n });\n window.removeEventListener('scroll', this.scrollListener, true);\n window.removeEventListener('resize', this.scrollListener, true);\n }\n}\n","<div #tooltipEl role=\"tooltip\" [class]=\"tooltipClasses()\" [style.top.px]=\"topPos()\" [style.left.px]=\"leftPos()\">\n {{ text() }}\n <!-- Arrow -->\n <div [class]=\"arrowClasses()\"></div>\n</div>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n OnDestroy,\n ViewContainerRef,\n inject,\n input\n} from '@angular/core';\nimport { TailwindTooltip } from '../../components/tooltip/tooltip.component';\nimport { TailwindPosition } from '../../models';\n\n@Directive({\n selector: '[tooltip]',\n standalone: true\n})\nexport class TailwindTooltipDirective implements OnDestroy {\n /** Tooltip text */\n readonly tooltip = input.required<string>();\n /** Position relative to the trigger */\n readonly tooltipPosition = input<TailwindPosition>('top');\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private componentRef: ComponentRef<TailwindTooltip> | null = null;\n\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject(ElementRef);\n\n private get host(): HTMLElement {\n return this.el.nativeElement;\n }\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n show(): void {\n this.clearHideTimeout();\n\n if (this.componentRef) {\n this.updateTooltipComponent();\n this.componentRef.instance.show();\n return;\n }\n\n if (this.showTimeout) {\n return;\n }\n\n this.showTimeout = setTimeout(() => {\n this.showTimeout = null;\n this.createComponent();\n }, 200);\n }\n\n @HostListener('mouseleave')\n hideFromPointer(): void {\n this.hide();\n }\n\n @HostListener('focusout', ['$event'])\n hideFromFocus(event: FocusEvent): void {\n const related = event.relatedTarget as Node | null;\n if (related && this.host.contains(related)) {\n return;\n }\n\n queueMicrotask(() => {\n if (!this.host.contains(document.activeElement)) {\n this.hide();\n }\n });\n }\n\n private hide(): void {\n this.clearShowTimeout();\n\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.instance.hide();\n\n this.hideTimeout = setTimeout(() => {\n this.hideTimeout = null;\n this.destroyComponent();\n }, 150);\n }\n\n private clearShowTimeout(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n }\n\n private clearHideTimeout(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n private createComponent(): void {\n if (this.componentRef) {\n this.destroyComponent();\n }\n\n this.componentRef = this.viewContainerRef.createComponent(TailwindTooltip);\n this.updateTooltipComponent();\n\n setTimeout(() => {\n if (this.componentRef) {\n this.componentRef.instance.show();\n }\n });\n }\n\n private updateTooltipComponent(): void {\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.setInput('text', this.tooltip());\n this.componentRef.setInput('position', this.tooltipPosition());\n this.componentRef.instance.setTarget(this.host);\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n private destroyComponent(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngOnDestroy(): void {\n this.clearShowTimeout();\n this.clearHideTimeout();\n this.destroyComponent();\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/**\n * Row definition for `TailwindTable`. Prefer structural syntax on `<tbody>`:\n * `<tbody *tailwindTableRow=\"let row\">...</tbody>` — each rendered fragment is one `<tbody>` per data row.\n *\n * Legacy: `<ng-template tailwindTableRow let-row>` with only `<td>` cells still works.\n */\n@Directive({\n selector: '[tailwindTableRow]',\n standalone: true\n})\nexport class TailwindTableRowDirective {\n readonly templateRef = inject(TemplateRef<{ $implicit: any; index: number }>);\n}\n\n/** @deprecated Use TailwindTableRowDirective instead. */\nexport { TailwindTableRowDirective as TailwindTableRowTemplateDirective };\n","import { InjectionToken } from '@angular/core';\nimport { TailwindButtonKind, TailwindSize } from '../models';\n\nexport const TAILWIND_MODAL_DATA = new InjectionToken<unknown>('TAILWIND_MODAL_DATA');\n\n/** Default pixel size for `tailwind-icon` when `size` is omitted (typically 16–64). */\nexport const TAILWIND_ICON_SIZE = new InjectionToken<number>('TAILWIND_ICON_SIZE');\n\nexport const TAILWIND_DATETIME_LANGUAGE = new InjectionToken<'it' | 'en'>('TAILWIND_DATETIME_LANGUAGE');\n\nexport const TAILWIND_COMPONENTS_SIZE = new InjectionToken<TailwindSize>('TAILWIND_COMPONENTS_SIZE');\n\n/** Default `kind` for `tailwind-button` when the `kind` input is omitted. */\nexport const TAILWIND_BUTTON_KIND = new InjectionToken<TailwindButtonKind>('TAILWIND_BUTTON_KIND');\n\n/**\n * Default template for `tailwind-pagination` **summary** when the `summary` input is omitted.\n * Use placeholders `{start}`, `{end}`, `{total}` (same rules as the `summary` input).\n */\nexport const TAILWIND_PAGINATION_SUMMARY = new InjectionToken<string>('TAILWIND_PAGINATION_SUMMARY');\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport type { TailwindHeroicon, TailwindIconSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TAILWIND_ICON_SIZE } from '../../tokens';\n\nconst clampIconSize = (value: number): number => {\n if (!Number.isFinite(value)) return 24;\n const rounded = Math.round(value);\n return Math.min(64, Math.max(16, rounded));\n};\n\n@Component({\n selector: 'tailwind-icon',\n host: {\n '[class]': 'hostClasses()'\n },\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindIcon extends TailwindComponent {\n private readonly iconSize = inject(TAILWIND_ICON_SIZE, { optional: true });\n\n /** Heroicons outline icon name; SVG path `/tailwind-icons/<name>.svg` */\n readonly icon = input.required<TailwindHeroicon>();\n /** Width and height in px (16–64, clamped); default from `TAILWIND_ICON_SIZE` or **24** */\n readonly size = input<TailwindIconSize>(clampIconSize(this.iconSize ?? 24));\n\n readonly src = computed(() => `/tailwind-icons/${this.icon()}.svg`);\n\n readonly pixelSize = computed(() => clampIconSize(this.size()));\n\n /** Layout-only; custom `class` is applied to the inner glyph (color, spacing, etc.). */\n readonly hostClasses = computed(() => 'inline-flex shrink-0 items-center justify-center');\n\n /** Tailwind classes from `class` input, merged with the masked glyph base. */\n readonly glyphClasses = computed(() => {\n const custom = this.class();\n return custom ? `tailwind-icon-glyph ${custom}` : 'tailwind-icon-glyph';\n });\n\n readonly maskImage = computed(() => `url(\"${this.src()}\")`);\n}\n","<span\n [class]=\"glyphClasses()\"\n [style.width.px]=\"pixelSize()\"\n [style.height.px]=\"pixelSize()\"\n [style.mask-image]=\"maskImage()\"\n [style.-webkit-mask-image]=\"maskImage()\"\n [attr.aria-hidden]=\"true\"\n [attr.aria-label]=\"icon()\"></span>\n","import {\n ApplicationRef,\n afterNextRender,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\n Injector,\n Renderer2,\n createComponent,\n inject,\n input\n} from '@angular/core';\nimport { TailwindIcon } from '../../components/icon/icon.component';\n/** Host attributes on `<tailwind-table>`; kept in sync for sort-header observers. */\nexport const TW_TABLE_SORT_KEY_ATTR = 'data-tw-sort-key';\nexport const TW_TABLE_SORT_DIR_ATTR = 'data-tw-sort-dir';\n\nconst MAX_TABLE_RESOLVE_ATTEMPTS = 24;\n\n/**\n * Sortable column header: put on `<th>` (plain header text + directive). Not sortable columns omit this directive.\n * Sorting is handled by the nearest `tailwind-table` host (event delegation); do not pass a table reference.\n */\n@Directive({\n selector: '[tailwindSortHeader]',\n standalone: true,\n host: {\n class: 'cursor-pointer whitespace-nowrap text-left select-none hover:text-neutral-900',\n '[attr.tabindex]': '0',\n '[attr.data-sort-key]': 'sortKey()'\n }\n})\nexport class TailwindSortHeaderDirective {\n /** Property key on each row used for sorting. */\n readonly sortKey = input.required<string>();\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private labelWrapper?: HTMLElement;\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly injector = inject(Injector);\n\n private iconRef?: ComponentRef<TailwindIcon>;\n private mo?: MutationObserver;\n private destroyed = false;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n this.destroyed = true;\n this.mo?.disconnect();\n this.mo = undefined;\n this.iconRef?.destroy();\n this.iconRef = undefined;\n });\n\n afterNextRender(\n () => {\n if (!this.destroyed) {\n this.resolveTableAndAttach(0);\n }\n },\n { injector: this.injector }\n );\n }\n\n /**\n * After first render the projected `<th>` may still not be under `<tailwind-table>` in the DOM\n * for one frame; retry with `requestAnimationFrame` until `closest` succeeds.\n */\n private resolveTableAndAttach(attempt: number): void {\n if (this.destroyed || this.mo) return;\n\n const tableEl = this.host.nativeElement.closest('tailwind-table');\n if (!tableEl) {\n if (attempt < MAX_TABLE_RESOLVE_ATTEMPTS) {\n requestAnimationFrame(() => this.resolveTableAndAttach(attempt + 1));\n }\n return;\n }\n\n const sync = (): void => {\n if (this.destroyed || !this.iconRef) return;\n\n const columnKey = this.sortKey();\n const activeKey = tableEl.getAttribute(TW_TABLE_SORT_KEY_ATTR) ?? '';\n const dirRaw = tableEl.getAttribute(TW_TABLE_SORT_DIR_ATTR) ?? 'asc';\n const asc = dirRaw === 'asc';\n const active = activeKey === columnKey;\n\n const icon = active ? (asc ? 'chevron-up' : 'chevron-down') : 'chevron-up-down';\n this.iconRef.setInput('icon', icon);\n this.iconRef.setInput('size', 14);\n this.iconRef.setInput('class', active ? 'shrink-0 text-primary-600' : 'shrink-0 text-neutral-600');\n\n this.renderer.setAttribute(\n this.host.nativeElement,\n 'aria-label',\n active ? `Sorted ${asc ? 'ascending' : 'descending'}, activate to reverse` : `Sort by ${columnKey}`\n );\n\n this.iconRef.changeDetectorRef.detectChanges();\n };\n\n if (!this.iconRef) {\n const labelHost = this.ensureLabelWrapper();\n this.iconRef = createComponent(TailwindIcon, {\n environmentInjector: this.environmentInjector,\n elementInjector: this.injector\n });\n this.renderer.appendChild(labelHost, this.iconRef.location.nativeElement);\n this.appRef.attachView(this.iconRef.hostView);\n }\n\n sync();\n\n this.mo = new MutationObserver(() => sync());\n this.mo.observe(tableEl, {\n attributes: true,\n attributeFilter: [TW_TABLE_SORT_KEY_ATTR, TW_TABLE_SORT_DIR_ATTR]\n });\n }\n\n /** Keep `th` as `display: table-cell`; flex only on an inner wrapper (label + icon). */\n private ensureLabelWrapper(): HTMLElement {\n if (this.labelWrapper) return this.labelWrapper;\n\n const th = this.host.nativeElement;\n const existing = th.querySelector('[data-tw-sort-header-label]');\n if (existing instanceof HTMLElement) {\n this.labelWrapper = existing;\n return existing;\n }\n\n const wrapper = this.renderer.createElement('span');\n this.renderer.setAttribute(wrapper, 'data-tw-sort-header-label', '');\n this.renderer.addClass(wrapper, 'inline-flex');\n this.renderer.addClass(wrapper, 'items-center');\n this.renderer.addClass(wrapper, 'gap-1.5');\n this.renderer.addClass(wrapper, 'justify-start');\n\n for (const child of Array.from(th.childNodes)) {\n this.renderer.appendChild(wrapper, child);\n }\n this.renderer.appendChild(th, wrapper);\n this.labelWrapper = wrapper;\n return wrapper;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport type { TailwindHeroicon, TailwindIconPosition } from '../../models';\nimport { TailwindSize, TailwindColor, TailwindButtonKind, TailwindButtonRole } from '../../models';\nimport { TAILWIND_BUTTON_KIND } from '../../tokens';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindIcon } from '../icon/icon.component';\n\nconst iconPixelSizeMap: Record<TailwindSize, number> = {\n xs: 14,\n sm: 16,\n md: 18,\n lg: 20,\n xl: 22\n};\n\n/** Always transparent background; no tint on hover, focus, or active. */\nconst transparentColorClasses =\n 'bg-transparent hover:bg-transparent active:bg-transparent focus:bg-transparent border-transparent shadow-none text-neutral-600 focus-visible:outline-neutral-400';\n\n@Component({\n imports: [NgClass, TailwindIcon],\n selector: 'tailwind-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindButton extends TailwindComponent {\n private readonly defaultKind = inject(TAILWIND_BUTTON_KIND, { optional: true });\n\n /** Visual color */\n readonly color = input<TailwindColor>('primary');\n /**\n * Visual kind: `flat` = filled like `solid` without border, shadow, or hover/active background change;\n * `ghost` = transparent with hover tint; `text` = text color only, no hover background.\n * Default from {@link TAILWIND_BUTTON_KIND} or `'solid'`.\n */\n readonly kind = input<TailwindButtonKind>(this.defaultKind ?? 'solid');\n /** Size of the button */\n readonly size = input<TailwindSize>('md');\n /** Whether the button is disabled */\n readonly disabled = input<boolean>(false);\n /** HTML button type attribute */\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** ARIA role attribute */\n readonly role = input<TailwindButtonRole>('button');\n /** Optional Heroicons outline icon inside the button */\n readonly icon = input<TailwindHeroicon | undefined>();\n /** Icon placement when both icon and label are shown */\n readonly iconPosition = input<TailwindIconPosition>('left');\n /** Accessible name for icon-only buttons */\n readonly ariaLabel = input<string>('');\n\n /** Emitted when the button is clicked (not disabled). */\n readonly onClick = output<MouseEvent>();\n\n readonly iconPixelSize = computed(() => iconPixelSizeMap[this.size()]);\n\n /** Computed Tailwind classes based on color, kind, size, and state */\n readonly computedClasses = computed(() => {\n const base = [\n 'inline-flex items-center justify-center',\n 'font-medium',\n 'transition-all duration-150 ease-in-out',\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'cursor-pointer',\n 'border'\n ];\n\n const solidMap: Record<TailwindColor, string> = {\n primary:\n 'bg-primary-600 text-on-primary-600 hover:bg-primary-700 hover:text-on-primary-700 active:bg-primary-800 active:text-on-primary-800 border-transparent focus-visible:outline-primary-600 shadow-sm',\n secondary:\n 'bg-neutral-100 text-neutral-800 hover:bg-neutral-200 active:bg-neutral-300 border-neutral-300 focus-visible:outline-neutral-500 shadow-sm',\n danger:\n 'bg-danger-600 text-on-danger-600 hover:bg-danger-700 hover:text-on-danger-700 active:bg-danger-800 active:text-on-danger-800 border-transparent focus-visible:outline-danger-700 shadow-sm',\n success:\n 'bg-success-700 text-on-success-700 hover:bg-success-800 hover:text-on-success-800 active:bg-success-900 active:text-on-success-900 border-transparent focus-visible:outline-success-600 shadow-sm',\n warning:\n 'bg-warning-500 text-on-warning-500 hover:bg-warning-600 hover:text-on-warning-600 active:bg-warning-700 active:text-on-warning-700 border-transparent focus-visible:outline-warning-600 shadow-sm',\n info: 'bg-info-600 text-on-info-600 hover:bg-info-700 hover:text-on-info-700 active:bg-info-800 active:text-on-info-800 border-transparent focus-visible:outline-info-600 shadow-sm',\n transparent: transparentColorClasses\n };\n\n /** Filled surface like `solid`, without box shadow, border, or hover/active tint. */\n const flatMap: Record<TailwindColor, string> = {\n primary:\n 'bg-primary-600 text-on-primary-600 border-0 shadow-none focus-visible:outline-primary-600',\n secondary: 'bg-neutral-100 text-neutral-800 border-0 shadow-none focus-visible:outline-neutral-500',\n danger: 'bg-danger-600 text-on-danger-600 border-0 shadow-none focus-visible:outline-danger-600',\n success: 'bg-success-700 text-on-success-700 border-0 shadow-none focus-visible:outline-success-600',\n warning: 'bg-warning-500 text-on-warning-500 border-0 shadow-none focus-visible:outline-warning-600',\n info: 'bg-info-600 text-on-info-600 border-0 shadow-none focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n const outlinedMap: Record<TailwindColor, string> = {\n primary:\n 'bg-transparent text-primary-600 border-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\n secondary:\n 'bg-transparent text-neutral-700 border-neutral-300 hover:bg-neutral-50 active:bg-neutral-100 focus-visible:outline-neutral-500',\n danger:\n 'bg-transparent text-danger-600 border-danger-600 hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\n success:\n 'bg-transparent text-success-600 border-success-600 hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\n warning:\n 'bg-transparent text-warning-600 border-warning-500 hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\n info: 'bg-transparent text-info-600 border-info-600 hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n /** Transparent + hover/active background tint (former `text` look). */\n const ghostMap: Record<TailwindColor, string> = {\n primary:\n 'bg-transparent text-primary-600 border-transparent hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\n secondary:\n 'bg-transparent text-neutral-700 border-transparent hover:bg-neutral-100 active:bg-neutral-200 focus-visible:outline-neutral-500',\n danger:\n 'bg-transparent text-danger-600 border-transparent hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\n success:\n 'bg-transparent text-success-600 border-transparent hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\n warning:\n 'bg-transparent text-warning-600 border-transparent hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\n info: 'bg-transparent text-info-600 border-transparent hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n /** Text color from severity only; background stays transparent on hover/active. */\n const textMap: Record<TailwindColor, string> = {\n primary: 'bg-transparent text-primary-600 border-transparent focus-visible:outline-primary-600',\n secondary: 'bg-transparent text-neutral-700 border-transparent focus-visible:outline-neutral-500',\n danger: 'bg-transparent text-danger-600 border-transparent focus-visible:outline-danger-600',\n success: 'bg-transparent text-success-600 border-transparent focus-visible:outline-success-600',\n warning: 'bg-transparent text-warning-600 border-transparent focus-visible:outline-warning-500',\n info: 'bg-transparent text-info-600 border-transparent focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n const styleMap = {\n solid: solidMap,\n flat: flatMap,\n outlined: outlinedMap,\n ghost: ghostMap,\n text: textMap\n };\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm',\n sm: 'text-sm px-3 py-1.5 rounded-md',\n md: 'text-sm px-4 py-2 rounded-md',\n lg: 'text-base px-5 py-2.5 rounded-lg',\n xl: 'text-base px-6 py-3 rounded-lg'\n };\n\n /** Square padding when `icon` is set and projected label is empty (icon-only). */\n const iconOnlySizeMap: Record<TailwindSize, string> = {\n xs: 'has-[.tailwind-button-label:empty]:p-1 has-[.tailwind-button-label:empty]:px-1',\n sm: 'has-[.tailwind-button-label:empty]:p-1.5 has-[.tailwind-button-label:empty]:px-1.5',\n md: 'has-[.tailwind-button-label:empty]:p-2 has-[.tailwind-button-label:empty]:px-2',\n lg: 'has-[.tailwind-button-label:empty]:p-2.5 has-[.tailwind-button-label:empty]:px-2.5',\n xl: 'has-[.tailwind-button-label:empty]:p-3 has-[.tailwind-button-label:empty]:px-3'\n };\n\n const size = this.size();\n const sizeClasses = [sizeMap[size], this.icon() ? iconOnlySizeMap[size] : ''].filter(Boolean).join(' ');\n\n return [...base, styleMap[this.kind()][this.color()] || styleMap['solid']['primary'], sizeClasses].join(' ');\n });\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.onClick.emit(event);\n }\n }\n}\n","<button\n [ngClass]=\"computedClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [attr.role]=\"role()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\">\n <span class=\"inline-flex min-w-0 items-center justify-center gap-2\">\n @if (icon() && iconPosition() === 'left') {\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconPixelSize()\" class=\"shrink-0\" />\n }\n <span class=\"tailwind-button-label inline-flex min-w-0 items-center empty:hidden\">\n <ng-content />\n </span>\n @if (icon() && iconPosition() === 'right') {\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconPixelSize()\" class=\"shrink-0\" />\n }\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-input',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindInput),\n multi: true\n }\n ],\n templateUrl: './input.component.html',\n styleUrl: './input.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindInput extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Placeholder text */\n readonly placeholder = input<string>('');\n /** Input type */\n readonly type = input<'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'>('text');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Whether the input is readonly */\n readonly readonly = input<boolean>(false);\n /** Helper text shown below input */\n readonly helperText = input<string>('');\n /** Error text shown when hasError is true */\n readonly errorText = input<string>('');\n /** Whether the input is in error state */\n readonly hasError = input<boolean>(false);\n\n /** Two-way bound value */\n readonly value = model<string>('');\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Computed input classes */\n readonly inputClasses = computed(() => {\n const base = [\n 'block w-full bg-white',\n 'border transition-colors duration-150',\n 'placeholder:text-neutral-400',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed'\n ];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm',\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\n md: 'text-sm px-3 py-2 rounded-md',\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\n xl: 'text-base px-4 py-3 rounded-lg'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\n\n return [...base, sizeMap[this.size()], stateClass].join(' ');\n });\n\n // CVA\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n this.onChange(val);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div class=\"tailwind-input-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-neutral-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"inputClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\" />\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-textarea',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindTextarea),\n multi: true\n }\n ],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTextarea extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Placeholder text */\n readonly placeholder = input<string>('');\n /** Visible row count */\n readonly rows = input<number>(4);\n /** Optional maximum width in columns */\n readonly cols = input<number | undefined>(undefined);\n /** Maximum character length (HTML maxlength) */\n readonly maxlength = input<number | undefined>(undefined);\n /** Resize behavior */\n readonly resize = input<'vertical' | 'none' | 'both' | 'horizontal'>('vertical');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Whether the textarea is readonly */\n readonly readonly = input<boolean>(false);\n /** Helper text shown below field */\n readonly helperText = input<string>('');\n /** Error text shown when hasError is true */\n readonly errorText = input<string>('');\n /** Whether the textarea is in error state */\n readonly hasError = input<boolean>(false);\n\n /** Two-way bound value */\n readonly value = model<string>('');\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Computed textarea classes */\n readonly textareaClasses = computed(() => {\n const base = [\n 'block w-full bg-white',\n 'border transition-colors duration-150',\n 'placeholder:text-neutral-400',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed'\n ];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm min-h-[4.5rem]',\n sm: 'text-sm px-2.5 py-1.5 rounded-md min-h-[5rem]',\n md: 'text-sm px-3 py-2 rounded-md min-h-[5.5rem]',\n lg: 'text-base px-3.5 py-2.5 rounded-lg min-h-[6.5rem]',\n xl: 'text-base px-4 py-3 rounded-lg min-h-[7.5rem]'\n };\n\n const resizeMap: Record<'vertical' | 'none' | 'both' | 'horizontal', string> = {\n vertical: 'resize-y',\n none: 'resize-none',\n both: 'resize',\n horizontal: 'resize-x'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\n\n return [...base, sizeMap[this.size()], resizeMap[this.resize()], stateClass].join(' ');\n });\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLTextAreaElement).value;\n this.value.set(val);\n this.onChange(val);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div class=\"tailwind-textarea-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-neutral-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <textarea\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [placeholder]=\"placeholder()\"\n [rows]=\"rows()\"\n [attr.cols]=\"cols() ?? null\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"textareaClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"></textarea>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n model,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-upload',\n imports: [TailwindIcon, TailwindButton],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindUpload),\n multi: true\n }\n ],\n templateUrl: './upload.component.html',\n styleUrl: './upload.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindUpload extends TailwindComponent implements ControlValueAccessor {\n private static nextId = 0;\n private readonly fallbackFileId = `tw-upload-${TailwindUpload.nextId++}`;\n\n readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>('fileInput');\n\n /** Visual layout: compact button or drop zone */\n readonly variant = input<'button' | 'area'>('area');\n /** Field label */\n readonly label = input<string>('');\n /** Button label when `variant` is `button` */\n readonly buttonLabel = input<string>('Choose file');\n /** Drop zone title when `variant` is `area` */\n readonly areaTitle = input<string>('Drag and drop a file');\n /** Drop zone hint when `variant` is `area` */\n readonly areaHint = input<string>('or click to browse');\n /** Accepted MIME types / extensions (native `accept`) */\n readonly accept = input<string | undefined>(undefined);\n /** Allow multiple files */\n readonly multiple = input<boolean>(false);\n /** Max size per file (bytes); if any file exceeds it, selection is rejected */\n readonly maxFileSizeBytes = input<number | undefined>(undefined);\n /** Button / control size */\n readonly size = input<TailwindSize>('md');\n /** Show a clear control when there is a value */\n readonly showClear = input<boolean>(true);\n /** Label for the clear action (i18n) */\n readonly clearText = input<string>('clear');\n readonly helperText = input<string>('');\n readonly errorText = input<string>('');\n readonly hasError = input<boolean>(false);\n\n /** Data URL (`data:<mime>;base64,...`) — forms / `[(value)]`; with `multiple`, only the first file is stored here */\n readonly value = model<string>('');\n\n /** Raw files after a successful selection */\n readonly filesSelected = output<File[]>();\n /** Human-readable validation message when selection is rejected */\n readonly validationError = output<string>();\n\n readonly isDisabled = signal(false);\n readonly isDragOver = signal(false);\n readonly selectedNames = signal<string[]>([]);\n\n private dragDepth = 0;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly fileInputId = computed(() => this.id() ?? this.fallbackFileId);\n\n readonly areaClasses = computed(() => {\n const base = [\n 'flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center',\n 'transition-colors duration-150 outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2'\n ];\n\n if (this.isDisabled()) {\n return [...base, 'cursor-not-allowed opacity-50 bg-neutral-50 border-neutral-200 text-neutral-500'].join(' ');\n }\n if (this.isDragOver()) {\n return [\n ...base,\n 'cursor-pointer border-primary-500 bg-primary-50/60 text-neutral-800 focus-visible:outline-primary-500'\n ].join(' ');\n }\n if (this.hasError()) {\n return [\n ...base,\n 'cursor-pointer border-danger-400 bg-danger-50/40 text-danger-900 focus-visible:outline-danger-500 hover:border-danger-500'\n ].join(' ');\n }\n return [\n ...base,\n 'cursor-pointer border-neutral-300 bg-neutral-50/50 text-neutral-800 focus-visible:outline-primary-500',\n 'hover:border-primary-400 hover:bg-primary-50/30'\n ].join(' ');\n });\n\n writeValue(obj: string | null): void {\n this.value.set(obj ?? '');\n if (!obj) {\n this.selectedNames.set([]);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n triggerPicker(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (this.isDisabled()) return;\n this.fileInput().nativeElement.click();\n }\n\n onKeydownArea(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.triggerPicker();\n }\n }\n\n onDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.isDisabled()) return;\n this.dragDepth++;\n this.isDragOver.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragDepth = Math.max(0, this.dragDepth - 1);\n if (this.dragDepth === 0) {\n this.isDragOver.set(false);\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragDepth = 0;\n this.isDragOver.set(false);\n if (this.isDisabled()) return;\n const files = event.dataTransfer?.files;\n if (files?.length) {\n void this.handleFiles(files);\n }\n }\n\n onNativeChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const files = input.files;\n if (files?.length) {\n void this.handleFiles(files);\n }\n input.value = '';\n }\n\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (this.isDisabled()) return;\n this.selectedNames.set([]);\n this.value.set('');\n this.onChange('');\n this.fileInput().nativeElement.value = '';\n }\n\n blurHost(): void {\n this.onTouched();\n }\n\n private validate(files: File[]): string | null {\n const max = this.maxFileSizeBytes();\n if (max == null) return null;\n const tooLarge = files.filter(f => f.size > max);\n if (tooLarge.length === 0) return null;\n const maxLabel =\n max >= 1024 * 1024\n ? `${(max / (1024 * 1024)).toFixed(1)} MB`\n : max >= 1024\n ? `${Math.round(max / 1024)} KB`\n : `${max} bytes`;\n return tooLarge.length === 1\n ? `File exceeds maximum size (${maxLabel}).`\n : `${tooLarge.length} files exceed maximum size (${maxLabel}).`;\n }\n\n private async handleFiles(fileList: FileList): Promise<void> {\n let files = Array.from(fileList);\n if (!this.multiple() && files.length > 1) {\n files = [files[0]];\n }\n\n const err = this.validate(files);\n if (err) {\n this.validationError.emit(err);\n return;\n }\n\n this.selectedNames.set(files.map(f => f.name));\n\n try {\n const dataUrls = await Promise.all(files.map(f => this.readAsDataUrl(f)));\n this.filesSelected.emit(files);\n\n const primary = dataUrls[0] ?? '';\n this.value.set(primary);\n this.onChange(primary);\n } catch {\n this.validationError.emit('Could not read file.');\n }\n }\n\n private readAsDataUrl(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result;\n if (typeof result === 'string') {\n resolve(result);\n } else {\n reject(new Error('Unexpected read result'));\n }\n };\n reader.onerror = () => reject(reader.error ?? new Error('read error'));\n reader.readAsDataURL(file);\n });\n }\n}\n","<div class=\"tailwind-upload-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"fileInputId()\" class=\"text-sm font-medium text-neutral-700\" [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n #fileInput\n type=\"file\"\n class=\"sr-only\"\n [attr.id]=\"fileInputId()\"\n [accept]=\"accept() ?? null\"\n [attr.multiple]=\"multiple() ? '' : null\"\n [disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"helperText() || errorText() ? fileInputId() + '-helper' : null\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"blurHost()\" />\n\n @if (variant() === 'button') {\n <div class=\"flex flex-wrap items-center gap-2\">\n <tailwind-button\n type=\"button\"\n color=\"primary\"\n kind=\"solid\"\n [size]=\"size()\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"triggerPicker($event)\">\n {{ buttonLabel() }}\n </tailwind-button>\n @if (showClear() && value()) {\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"clear($event)\">\n {{ clearText() }}\n </tailwind-button>\n }\n </div>\n } @else {\n <div class=\"flex flex-col gap-2\">\n <div\n role=\"button\"\n tabindex=\"0\"\n [class]=\"areaClasses()\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n (click)=\"triggerPicker($event)\"\n (keydown)=\"onKeydownArea($event)\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event)\">\n <tailwind-icon icon=\"cloud-arrow-up\" [size]=\"40\" />\n <span class=\"text-sm font-medium\">{{ areaTitle() }}</span>\n <span class=\"text-xs text-neutral-500\">{{ areaHint() }}</span>\n </div>\n @if (showClear() && value()) {\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"sm\"\n class=\"self-start\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"clear($event)\">\n {{ clearText() }}\n </tailwind-button>\n }\n </div>\n }\n\n @if (selectedNames().length) {\n <p class=\"truncate text-xs text-neutral-600\" [attr.title]=\"selectedNames().join(', ')\">\n {{ selectedNames().join(', ') }}\n </p>\n }\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n output,\n signal,\n viewChildren,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-input-otp',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindInputOtp),\n multi: true\n }\n ],\n templateUrl: './input-otp.component.html',\n styleUrl: './input-otp.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindInputOtp extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Number of character slots */\n readonly length = input<number>(6);\n /** Allow only digits */\n readonly integerOnly = input<boolean>(true);\n /** Mask digits (password bullets) */\n readonly mask = input<boolean>(false);\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Slots are read-only (navigation still allowed) */\n readonly readonly = input<boolean>(false);\n /** Helper text shown below */\n readonly helperText = input<string>('');\n /** Error text when hasError is true */\n readonly errorText = input<string>('');\n /** Error state styling */\n readonly hasError = input<boolean>(false);\n /** Accessible label for the group (used when label is empty) */\n readonly ariaLabel = input<string>('Verification code');\n /** Separator string; empty hides */\n readonly separator = input<string>('');\n /** 0-based slot index after which the separator is rendered */\n readonly separatorAfterIndex = input<number | null>(null);\n /** Hint for browsers / SMS autofill (first slot only) */\n readonly autocomplete = input<string>('one-time-code');\n\n /** Two-way bound full code string */\n readonly value = model<string>('');\n\n /** Emitted when all slots are filled */\n readonly completed = output<string>();\n\n readonly isDisabled = signal(false);\n\n readonly slotIndexes = computed(() => {\n const n = Math.max(1, Math.min(32, Math.floor(this.length())));\n return Array.from({ length: n }, (_, i) => i);\n });\n\n readonly otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpDigit');\n\n readonly cellClasses = computed(() => {\n const base = [\n 'block w-10 text-center font-mono tabular-nums bg-white',\n 'border transition-colors duration-150',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed'\n ];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-1 py-1 rounded-sm min-w-7',\n sm: 'text-sm px-1.5 py-1.5 rounded-md min-w-8',\n md: 'text-sm px-2 py-2 rounded-md min-w-10',\n lg: 'text-base px-2.5 py-2.5 rounded-lg min-w-11',\n xl: 'text-base px-3 py-3 rounded-lg min-w-12'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\n\n return [...base, sizeMap[this.size()], stateClass].join(' ');\n });\n\n readonly groupAriaLabel = computed(() => this.label() || this.ariaLabel());\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(this.normalizeIncoming(value ?? ''));\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n maxSlots(): number {\n return this.slotIndexes().length;\n }\n\n digitAt(index: number): string {\n return this.value()[index] ?? '';\n }\n\n showSeparatorAfter(index: number): boolean {\n const sep = this.separator();\n const pos = this.separatorAfterIndex();\n return !!sep && pos !== null && pos === index;\n }\n\n inputType(): string {\n return this.mask() ? 'password' : 'text';\n }\n\n inputMode(): 'numeric' | 'text' {\n return this.integerOnly() ? 'numeric' : 'text';\n }\n\n autocompleteForSlot(index: number): string | null {\n return index === 0 ? this.autocomplete() : null;\n }\n\n cellId(index: number): string {\n const base = this.id() ?? 'tailwind-input-otp';\n return `${base}-digit-${index}`;\n }\n\n onSlotFocus(index: number): void {\n this.onTouched();\n const len = this.value().length;\n if (index > len) {\n queueMicrotask(() => this.focusSlot(Math.min(len, this.maxSlots() - 1)));\n }\n }\n\n onInput(event: Event, index: number): void {\n if (this.readonly()) {\n return;\n }\n const inputEl = event.target as HTMLInputElement;\n let raw = inputEl.value;\n if (this.integerOnly()) {\n raw = raw.replace(/\\D/g, '');\n }\n const char = raw.slice(-1);\n\n let v = this.value();\n const max = this.maxSlots();\n\n if (char && index > v.length) {\n queueMicrotask(() => this.focusSlot(v.length));\n inputEl.value = this.digitAt(index);\n return;\n }\n\n if (!char) {\n if (index < v.length) {\n v = v.slice(0, index) + v.slice(index + 1);\n }\n } else {\n if (index < v.length) {\n v = v.slice(0, index) + char + v.slice(index + 1);\n } else if (index === v.length) {\n v = v + char;\n }\n v = v.slice(0, max);\n }\n\n v = this.normalizeIncoming(v);\n this.commit(v);\n\n queueMicrotask(() => {\n inputEl.value = this.digitAt(index);\n if (char && index < max - 1) {\n this.focusSlot(index + 1);\n }\n });\n }\n\n onPaste(event: ClipboardEvent, index: number): void {\n if (this.readonly() || this.isDisabled()) {\n return;\n }\n event.preventDefault();\n const text = event.clipboardData?.getData('text') ?? '';\n let cleaned = this.integerOnly() ? text.replace(/\\D/g, '') : text.replace(/\\s/g, '');\n const max = this.maxSlots();\n cleaned = cleaned.slice(0, max - index);\n const merged = this.normalizeIncoming(this.value().slice(0, index) + cleaned);\n this.commit(merged);\n\n queueMicrotask(() => this.focusSlot(cleaned.length ? Math.min(index + cleaned.length - 1, max - 1) : index));\n }\n\n onKeydown(event: KeyboardEvent, index: number): void {\n const max = this.maxSlots();\n const v = this.value();\n\n if (event.key === 'Backspace') {\n const cur = this.digitAt(index);\n if (!cur && index > 0) {\n event.preventDefault();\n const nextVal = this.normalizeIncoming(v.slice(0, index - 1) + v.slice(index));\n this.commit(nextVal);\n queueMicrotask(() => this.focusSlot(index - 1));\n } else if (cur) {\n event.preventDefault();\n const nextVal = this.normalizeIncoming(v.slice(0, index) + v.slice(index + 1));\n this.commit(nextVal);\n queueMicrotask(() => {\n const el = this.otpInputs()[index]?.nativeElement;\n if (el) {\n el.value = this.digitAt(index);\n }\n });\n }\n return;\n }\n\n if (event.key === 'ArrowLeft' && index > 0) {\n event.preventDefault();\n this.focusSlot(index - 1);\n } else if (event.key === 'ArrowRight' && index < max - 1) {\n event.preventDefault();\n this.focusSlot(index + 1);\n }\n }\n\n private commit(joined: string): void {\n const prev = this.value();\n this.value.set(joined);\n this.onChange(joined);\n const max = this.maxSlots();\n if (joined.length === max && prev.length !== max) {\n this.completed.emit(joined);\n }\n }\n\n private normalizeIncoming(v: string): string {\n const max = Math.max(1, Math.min(32, Math.floor(this.length())));\n let s = v ?? '';\n if (this.integerOnly()) {\n s = s.replace(/\\D/g, '');\n }\n return s.slice(0, max);\n }\n\n private focusSlot(index: number): void {\n queueMicrotask(() => {\n const list = this.otpInputs();\n const el = list[index]?.nativeElement;\n el?.focus();\n el?.select();\n });\n }\n}\n","<div class=\"tailwind-input-otp-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"cellId(0)\" class=\"text-sm font-medium text-neutral-700\" [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <div role=\"group\" [attr.aria-label]=\"groupAriaLabel()\" class=\"flex flex-wrap items-center gap-2\">\n @for (idx of slotIndexes(); track idx) {\n <input\n #otpDigit\n [attr.id]=\"cellId(idx)\"\n [type]=\"inputType()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.autocomplete]=\"autocompleteForSlot(idx)\"\n [attr.aria-label]=\"'Digit ' + (idx + 1) + ' of ' + slotIndexes().length\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n maxlength=\"1\"\n spellcheck=\"false\"\n [class]=\"cellClasses()\"\n [value]=\"digitAt(idx)\"\n (input)=\"onInput($event, idx)\"\n (keydown)=\"onKeydown($event, idx)\"\n (paste)=\"onPaste($event, idx)\"\n (focus)=\"onSlotFocus(idx)\" />\n @if (showSeparatorAfter(idx)) {\n <span class=\"select-none text-neutral-500\" aria-hidden=\"true\">{{ separator() }}</span>\n }\n }\n </div>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-checkbox',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindCheckbox),\n multi: true\n }\n ],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindCheckbox extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Description text */\n readonly description = input<string>('');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Unique ID */\n\n /** Two-way bound checked state */\n readonly checked = model<boolean>(false);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Box size class based on size input */\n readonly boxSizeClass = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-7 h-7'\n };\n return sizeMap[this.size()];\n });\n\n readonly checkIconSize = computed(() => {\n const sizeMap: Record<TailwindSize, number> = {\n xs: 16,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 28\n };\n return sizeMap[this.size()];\n });\n\n // CVA\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onCheckboxChange(event: Event): void {\n const val = (event.target as HTMLInputElement).checked;\n this.checked.set(val);\n this.onChange(val);\n this.onTouched();\n }\n}\n","<div class=\"inline-flex items-center gap-2.5 select-none\" [class.opacity-50]=\"isDisabled()\">\n <label\n class=\"relative flex items-center justify-center shrink-0\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [attr.for]=\"id() ? id() + '-inner' : null\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-describedby]=\"description() && id() ? id() + '-desc' : null\"\n [attr.aria-labelledby]=\"label() && id() ? id() + '-label' : null\"\n (change)=\"onCheckboxChange($event)\" />\n <div\n class=\"w-full h-full border-2 transition-all duration-150 flex items-center justify-center peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1\"\n [class.rounded-sm]=\"size() === 'xs' || size() === 'sm'\"\n [class.rounded-md]=\"size() !== 'xs' && size() !== 'sm'\"\n [class.border-neutral-300]=\"!checked()\"\n [class.bg-white]=\"!checked()\"\n [class.border-primary-600]=\"checked()\"\n [class.bg-primary-600]=\"checked()\">\n @if (checked()) {\n <tailwind-icon icon=\"check\" [size]=\"checkIconSize()\" class=\"text-white shrink-0\" />\n }\n </div>\n </label>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-neutral-800 leading-tight\">{{\n label()\n }}</span>\n }\n @if (description()) {\n <span [attr.id]=\"id() ? id() + '-desc' : null\" class=\"text-xs text-neutral-500 leading-snug\">\n {{ description() }}\n </span>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindOptionGroup, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-radio-group',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindRadioGroup),\n multi: true\n }\n ],\n templateUrl: './radio-group.component.html',\n styleUrl: './radio-group.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindRadioGroup<T = unknown> extends TailwindComponent implements ControlValueAccessor {\n /** Label for the radio group */\n readonly label = input<string>('');\n /** Aria label for accessibility */\n readonly ariaLabel = input<string>('');\n /** Name for the radio group (used for native radio grouping) */\n readonly name = input<string>();\n /** Available options */\n readonly options = input<TailwindOptionGroup<T>[]>([]);\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Layout orientation */\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n\n /** Currently selected value */\n readonly value = model<T | null>(null);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Radio button outer ring size */\n readonly radioSizeClass = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-7 h-7'\n };\n return sizeMap[this.size()];\n });\n\n /** Inner dot size */\n readonly dotSizeClass = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-1.5 h-1.5',\n sm: 'w-2 h-2',\n md: 'w-2.5 h-2.5',\n lg: 'w-3 h-3',\n xl: 'w-3.5 h-3.5'\n };\n return sizeMap[this.size()];\n });\n\n // CVA\n private onChange: (value: T) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: T): void {\n this.value.set(value ?? null);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onRadioChange(optionValue: T): void {\n this.value.set(optionValue);\n this.onChange(optionValue);\n this.onTouched();\n }\n}\n","<fieldset\n class=\"flex gap-3\"\n [class.flex-col]=\"orientation() === 'vertical'\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"radiogroup\">\n @if (label()) {\n <legend class=\"text-sm font-medium text-neutral-700 mb-2\">{{ label() }}</legend>\n }\n\n @for (option of options(); track option.value) {\n <label\n class=\"inline-flex items-start gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled() || option.disabled\"\n [class.opacity-50]=\"isDisabled() || option.disabled\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"radioSizeClass()\">\n <input\n type=\"radio\"\n class=\"peer sr-only\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"onRadioChange(option.value)\" />\n <div\n class=\"w-full h-full rounded-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1 flex items-center justify-center\"\n [class.border-neutral-300]=\"value() !== option.value\"\n [class.border-primary-600]=\"value() === option.value\">\n @if (value() === option.value) {\n <div\n class=\"rounded-full bg-primary-600 transition-transform duration-150 scale-100\"\n [class]=\"dotSizeClass()\"></div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n <span class=\"text-sm font-medium text-neutral-800 leading-tight\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"text-xs text-neutral-500 leading-snug\">{{ option.description }}</span>\n }\n </div>\n </label>\n }\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n TemplateRef,\n ViewContainerRef,\n viewChild\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindOption, TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-select',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindSelect),\n multi: true\n }\n ],\n templateUrl: './select.component.html',\n styleUrl: './select.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSelect<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n /** Label text */\n readonly label = input<string>('');\n /** Accessible name for the combobox when `label` is omitted */\n readonly ariaLabel = input<string>('');\n /** Placeholder text */\n readonly placeholder = input<string>('');\n /** Available options */\n readonly options = input<TailwindOption<T>[]>([]);\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Helper text */\n readonly helperText = input<string>('');\n /** Error text */\n readonly errorText = input<string>('');\n /** Whether in error state */\n readonly hasError = input<boolean>(false);\n /** When true, value is `T[]` and several options can be selected */\n readonly multiple = input(false);\n\n /** Selected value: `T | null` when single, `T[]` when `multiple` */\n readonly value = model<T | T[] | null>(null);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Whether the dropdown panel is open */\n readonly isOpen = signal(false);\n\n /** Keyboard-highlighted option index (-1 = none) */\n readonly activeIndex = signal(-1);\n\n /** The currently selected option object (single mode only) */\n readonly selectedOption = computed(() => {\n if (this.multiple()) return null;\n const v = this.value();\n if (v == null || Array.isArray(v)) return null;\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\n });\n\n /** Accessible name for the combobox when there is no visible `label` */\n readonly comboboxAriaLabel = computed(() => {\n if (this.label()) return null;\n const base = this.ariaLabel();\n if (!base) return null;\n if (this.multiple()) {\n const count = this.selectedOptions().length;\n return count > 0 ? `${base}, ${count} selected` : base;\n }\n const selected = this.selectedOption();\n return selected ? `${base}, ${selected.label}` : base;\n });\n\n /** Selected option objects in `options()` order (multiple mode only) */\n readonly selectedOptions = computed(() => {\n if (!this.multiple()) return [];\n const v = this.value();\n const arr = Array.isArray(v) ? v : [];\n return this.options().filter(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\n });\n\n /** Classes for the trigger button */\n readonly triggerClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm',\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\n md: 'text-sm px-3 py-2 rounded-md',\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\n xl: 'text-base px-4 py-3 rounded-lg'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500';\n\n const layout = this.multiple() ? 'items-start' : 'items-center';\n\n return [\n 'flex justify-between w-full bg-white border transition-colors duration-150',\n layout,\n 'pr-3 cursor-pointer text-left',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed',\n sizeMap[this.size()],\n stateClass\n ].join(' ');\n });\n\n private optionValueEquals(a: unknown, b: unknown): boolean {\n return Object.is(a, b);\n }\n\n /** Used in the template to compare option values */\n isOptionSelected(option: TailwindOption<T>): boolean {\n if (this.multiple()) {\n const v = this.value();\n const arr = Array.isArray(v) ? v : [];\n return arr.some(sv => this.optionValueEquals(option.value, sv));\n }\n const v = this.value();\n if (v == null || Array.isArray(v)) return false;\n return this.optionValueEquals(option.value, v);\n }\n\n /** Classes for a single option row */\n optionClasses(index: number, option: TailwindOption<T>): string {\n const isSelected = this.isOptionSelected(option);\n const isActive = this.activeIndex() === index;\n const isDisabled = !!option.disabled;\n\n return [\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\n isDisabled\n ? 'text-neutral-400 cursor-not-allowed'\n : isSelected\n ? 'bg-primary-50 text-primary-700 font-medium'\n : isActive\n ? 'bg-neutral-100 text-neutral-900'\n : 'text-neutral-800 hover:bg-neutral-50'\n ].join(' ');\n }\n\n // CVA\n private onChange: (value: T | T[] | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: T | T[] | null | undefined): void {\n if (this.multiple()) {\n if (value == null) this.value.set([]);\n else this.value.set(Array.isArray(value) ? [...value] : []);\n } else {\n if (Array.isArray(value)) this.value.set(null);\n else this.value.set(value ?? null);\n }\n }\n\n registerOnChange(fn: (value: T | T[] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n ngOnDestroy(): void {\n this.closeDropdown();\n }\n\n private openDropdown(): void {\n if (this.overlayRef) return;\n\n const trigger =\n (this.elRef.nativeElement.querySelector('button[role=\"combobox\"]') as HTMLElement) ?? this.elRef.nativeElement;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withPositions([\n // Preferred: open downward\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n // Fallback: open upward\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\n ])\n .withFlexibleDimensions(false)\n .withPush(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n width: trigger.offsetWidth,\n minWidth: 'w-full'\n });\n\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\n this.overlayRef.attach(portal);\n\n const pane = this.overlayRef.overlayElement;\n this.outsideSub = new Subscription();\n\n // Close on outside click (capture: trigger + panel are excluded; avoids CDK edge cases)\n this.outsideSub.add(\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\n const t = ev.target as Node;\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\n this.closeDropdown();\n })\n );\n\n this.outsideSub.add(\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\n if (ev.key === 'Escape') {\n ev.preventDefault();\n this.closeDropdown();\n }\n })\n );\n\n this.isOpen.set(true);\n\n const opts = this.options();\n let initial = -1;\n if (this.multiple()) {\n const v = this.value();\n const arr = Array.isArray(v) ? v : [];\n initial = opts.findIndex(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\n } else {\n const v = this.value();\n if (v != null && !Array.isArray(v)) {\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\n }\n }\n this.activeIndex.set(initial >= 0 ? initial : -1);\n }\n\n private closeDropdown(): void {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n }\n\n toggleDropdown(): void {\n if (this.isDisabled()) return;\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n selectOption(option: TailwindOption<T>): void {\n if (option.disabled) return;\n if (this.multiple()) {\n const v = this.value();\n const current = Array.isArray(v) ? [...v] : [];\n const idx = current.findIndex(sv => this.optionValueEquals(sv, option.value));\n if (idx >= 0) current.splice(idx, 1);\n else current.push(option.value);\n this.value.set(current);\n this.onChange(current);\n this.onTouched();\n return;\n }\n const val = option.value;\n this.value.set(val);\n this.onChange(val);\n this.onTouched();\n this.closeDropdown();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n const opts = this.options();\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n return;\n }\n let next = this.activeIndex() + 1;\n while (next < opts.length && opts[next].disabled) next++;\n if (next < opts.length) this.activeIndex.set(next);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n return;\n }\n let prev = this.activeIndex() - 1;\n while (prev >= 0 && opts[prev].disabled) prev--;\n if (prev >= 0) this.activeIndex.set(prev);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n return;\n }\n const active = this.activeIndex();\n if (active >= 0 && active < opts.length) {\n this.selectOption(opts[active]);\n }\n break;\n }\n case 'Escape':\n case 'Tab': {\n this.closeDropdown();\n break;\n }\n }\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-neutral-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <!-- Trigger button -->\n <button\n type=\"button\"\n [attr.id]=\"id() ? id() + '-inner' : null\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"comboboxAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [disabled]=\"isDisabled()\"\n [class]=\"triggerClasses()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeydown($event)\">\n @if (multiple()) {\n <span class=\"flex flex-wrap gap-1 flex-1 min-w-0 mr-2\" [class.text-neutral-400]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length === 0) {\n {{ placeholder() }}\n } @else {\n @for (opt of selectedOptions(); track opt) {\n <span class=\"rounded-md bg-neutral-100 px-2 py-0.5 text-sm text-neutral-800\">{{ opt.label }}</span>\n }\n }\n </span>\n } @else {\n <span [class.text-neutral-400]=\"!selectedOption()\">\n {{ selectedOption()?.label ?? placeholder() }}\n </span>\n }\n\n <tailwind-icon\n icon=\"chevron-down\"\n [size]=\"16\"\n class=\"shrink-0 ml-2 text-neutral-600 transition-transform duration-150\"\n [class.rotate-180]=\"isOpen()\"\n aria-hidden=\"true\" />\n </button>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">{{ helperText() }}</p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\n }\n</div>\n\n<!-- Dropdown panel — rendered via CDK Overlay outside the component DOM -->\n<ng-template #panelTemplate>\n <ul\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n class=\"w-full bg-white border border-neutral-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\n @if (placeholder()) {\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-neutral-400 cursor-default select-none\">\n {{ placeholder() }}\n </li>\n }\n @for (option of options(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [class]=\"optionClasses(i, option)\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\n <span>{{ option.label }}</span>\n\n @if (isOptionSelected(option)) {\n <tailwind-icon icon=\"check\" [size]=\"16\" class=\"text-primary-600 shrink-0\" aria-hidden=\"true\" />\n }\n </li>\n }\n </ul>\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n NgZone,\r\n OnDestroy,\r\n output,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { TailwindOption, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\n\r\n/** Context passed to the `#item` ng-template. */\r\nexport interface TailwindAutocompleteItemContext<T = unknown> {\r\n $implicit: TailwindOption<T>;\r\n option: TailwindOption<T>;\r\n index: number;\r\n selected: boolean;\r\n active: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [NgTemplateOutlet, TailwindIcon],\r\n selector: 'tailwind-autocomplete',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindAutocomplete),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './autocomplete.component.html',\r\n styleUrl: './autocomplete.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TailwindAutocomplete<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\r\n private static nextId = 0;\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n private readonly ngZone = inject(NgZone);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const opts = this.filteredOptions();\r\n if (!this.isOpen()) return;\r\n\r\n const v = this.value();\r\n let initial = -1;\r\n if (v != null) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n } else if (opts.length > 0) {\r\n initial = 0;\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideSub: Subscription | null = null;\r\n private searchDebounceTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n private readonly instanceListboxId = `tailwind-autocomplete-listbox-${++TailwindAutocomplete.nextId}`;\r\n\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Available options */\r\n readonly options = input<TailwindOption<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Helper text */\r\n readonly helperText = input<string>('');\r\n /** Error text */\r\n readonly errorText = input<string>('');\r\n /** Whether in error state */\r\n readonly hasError = input<boolean>(false);\r\n /** Filter options locally by label when typing */\r\n readonly filterLocally = input(true);\r\n /** Minimum query length before opening panel and emitting onSearch */\r\n readonly minSearchLength = input(0);\r\n /** Debounce delay (ms) for onSearch emission only */\r\n readonly debounceMs = input(0);\r\n /** On blur, reset input to selected option label or clear invalid text */\r\n readonly forceSelection = input(true);\r\n\r\n /** Selected value (form control) — set only when an option is chosen */\r\n readonly value = model<T | null>(null);\r\n\r\n /** Emits the current search query (after debounce / minSearchLength) */\r\n readonly onSearch = output<string>();\r\n\r\n /** Custom option row template (`ng-template` with `#item`) */\r\n readonly itemTemplate = contentChild('item', { read: TemplateRef });\r\n\r\n /** Text shown in the input */\r\n readonly searchQuery = signal('');\r\n\r\n readonly isDisabled = signal(false);\r\n readonly isOpen = signal(false);\r\n readonly activeIndex = signal(-1);\r\n\r\n readonly listboxId = computed(() => (this.id() ? `${this.id()}-listbox` : this.instanceListboxId));\r\n\r\n readonly selectedOption = computed(() => {\r\n const v = this.value();\r\n if (v == null) return null;\r\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\r\n });\r\n\r\n readonly filteredOptions = computed(() => {\r\n const opts = this.options();\r\n if (!this.filterLocally()) return opts;\r\n const q = this.searchQuery().trim().toLowerCase();\r\n if (!q) return opts;\r\n return opts.filter(o => o.label.toLowerCase().includes(q));\r\n });\r\n\r\n readonly inputClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\r\n\r\n return [\r\n 'block w-full bg-white border transition-colors duration-150',\r\n 'placeholder:text-neutral-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed',\r\n sizeMap[this.size()],\r\n stateClass\r\n ].join(' ');\r\n });\r\n\r\n private onChange: (value: T | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | null | undefined): void {\r\n this.value.set(value ?? null);\r\n const opt = this.options().find(o => this.optionValueEquals(o.value, value));\r\n this.searchQuery.set(opt?.label ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.searchDebounceTimer != null) {\r\n clearTimeout(this.searchDebounceTimer);\r\n }\r\n this.closePanel();\r\n }\r\n\r\n isOptionSelected(option: TailwindOption<T>): boolean {\r\n const v = this.value();\r\n if (v == null) return false;\r\n return this.optionValueEquals(option.value, v);\r\n }\r\n\r\n optionClasses(index: number, option: TailwindOption<T>): string {\r\n const isSelected = this.isOptionSelected(option);\r\n const isActive = this.activeIndex() === index;\r\n const isDisabled = !!option.disabled;\r\n\r\n return [\r\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\r\n isDisabled\r\n ? 'text-neutral-400 cursor-not-allowed'\r\n : isSelected\r\n ? 'bg-primary-50 text-primary-700 font-medium'\r\n : isActive\r\n ? 'bg-neutral-100 text-neutral-900'\r\n : 'text-neutral-800 hover:bg-neutral-50'\r\n ].join(' ');\r\n }\r\n\r\n itemContext(option: TailwindOption<T>, index: number): TailwindAutocompleteItemContext<T> {\r\n return {\r\n $implicit: option,\r\n option,\r\n index,\r\n selected: this.isOptionSelected(option),\r\n active: this.activeIndex() === index\r\n };\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const query = (event.target as HTMLInputElement).value;\r\n this.searchQuery.set(query);\r\n this.cdr.markForCheck();\r\n\r\n const selected = this.selectedOption();\r\n if (selected && query !== selected.label) {\r\n this.value.set(null);\r\n this.onChange(null);\r\n }\r\n\r\n this.emitSearch(query);\r\n\r\n if (query.length >= this.minSearchLength()) {\r\n this.openPanel();\r\n } else {\r\n this.closePanel();\r\n }\r\n }\r\n\r\n onFocus(): void {\r\n if (this.isDisabled()) return;\r\n if (this.searchQuery().length >= this.minSearchLength()) {\r\n this.openPanel();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n queueMicrotask(() => this.applyForceSelectionOnBlur());\r\n }\r\n\r\n private applyForceSelectionOnBlur(): void {\r\n if (!this.forceSelection() || this.isOpen()) return;\r\n\r\n const active = document.activeElement;\r\n const host = this.elRef.nativeElement;\r\n const pane = this.overlayRef?.overlayElement;\r\n if (active && (host.contains(active) || pane?.contains(active))) return;\r\n\r\n const selected = this.selectedOption();\r\n const query = this.searchQuery();\r\n\r\n if (selected) {\r\n if (query !== selected.label) {\r\n this.searchQuery.set(selected.label);\r\n }\r\n return;\r\n }\r\n\r\n if (query) {\r\n this.searchQuery.set('');\r\n }\r\n }\r\n\r\n selectOption(option: TailwindOption<T>): void {\r\n if (option.disabled) return;\r\n this.value.set(option.value);\r\n this.searchQuery.set(option.label);\r\n this.onChange(option.value);\r\n this.onTouched();\r\n this.closePanel();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.isDisabled()) return;\r\n const opts = this.filteredOptions();\r\n\r\n switch (event.key) {\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openPanel();\r\n return;\r\n }\r\n let next = this.activeIndex() + 1;\r\n while (next < opts.length && opts[next].disabled) next++;\r\n if (next < opts.length) this.activeIndex.set(next);\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openPanel();\r\n return;\r\n }\r\n let prev = this.activeIndex() - 1;\r\n while (prev >= 0 && opts[prev].disabled) prev--;\r\n if (prev >= 0) this.activeIndex.set(prev);\r\n break;\r\n }\r\n case 'Enter': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openPanel();\r\n return;\r\n }\r\n const active = this.activeIndex();\r\n if (active >= 0 && active < opts.length) {\r\n this.selectOption(opts[active]);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n case 'Tab': {\r\n this.closePanel();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private optionValueEquals(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n }\r\n\r\n private emitSearch(query: string): void {\r\n if (query.length < this.minSearchLength()) return;\r\n\r\n const debounce = this.debounceMs();\r\n if (this.searchDebounceTimer != null) {\r\n clearTimeout(this.searchDebounceTimer);\r\n this.searchDebounceTimer = null;\r\n }\r\n\r\n if (debounce <= 0) {\r\n this.onSearch.emit(query);\r\n return;\r\n }\r\n\r\n this.searchDebounceTimer = setTimeout(() => {\r\n this.ngZone.run(() => {\r\n this.onSearch.emit(query);\r\n this.cdr.markForCheck();\r\n });\r\n this.searchDebounceTimer = null;\r\n }, debounce);\r\n }\r\n\r\n private openPanel(): void {\r\n if (this.overlayRef || this.isDisabled()) return;\r\n if (this.searchQuery().length < this.minSearchLength()) return;\r\n\r\n const trigger = this.elRef.nativeElement.querySelector('input[role=\"combobox\"]') as HTMLElement;\r\n if (!trigger) return;\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger)\r\n .withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n width: trigger.offsetWidth\r\n });\r\n\r\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n const pane = this.overlayRef.overlayElement;\r\n this.outsideSub = new Subscription();\r\n\r\n this.outsideSub.add(\r\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\r\n const t = ev.target as Node;\r\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\r\n this.closePanel();\r\n })\r\n );\r\n\r\n this.outsideSub.add(\r\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\r\n if (ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.closePanel();\r\n }\r\n })\r\n );\r\n\r\n this.isOpen.set(true);\r\n\r\n const opts = this.filteredOptions();\r\n const v = this.value();\r\n let initial = -1;\r\n if (v != null) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n }\r\n\r\n private closePanel(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = null;\r\n this.outsideSub?.unsubscribe();\r\n this.outsideSub = null;\r\n this.isOpen.set(false);\r\n this.activeIndex.set(-1);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"id() ? id() + '-inner' : null\"\r\n class=\"text-sm font-medium text-neutral-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <input\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n [attr.id]=\"id() ? id() + '-inner' : null\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-controls]=\"listboxId()\"\r\n [attr.aria-activedescendant]=\"\r\n isOpen() && activeIndex() >= 0 ? listboxId() + '-option-' + activeIndex() : null\r\n \"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"isDisabled()\"\r\n [value]=\"searchQuery()\"\r\n [class]=\"inputClasses()\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keydown)=\"onKeydown($event)\" />\r\n\r\n <ng-content />\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">{{ helperText() }}</p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\r\n }\r\n</div>\r\n\r\n<ng-template #panelTemplate>\r\n <ul\r\n role=\"listbox\"\r\n [attr.id]=\"listboxId()\"\r\n class=\"w-full bg-white border border-neutral-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\r\n @for (option of filteredOptions(); track option.value; let i = $index) {\r\n <li\r\n role=\"option\"\r\n [attr.id]=\"listboxId() + '-option-' + i\"\r\n [attr.aria-selected]=\"isOptionSelected(option)\"\r\n [attr.aria-disabled]=\"option.disabled || null\"\r\n [class]=\"optionClasses(i, option)\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"selectOption(option)\"\r\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\r\n @if (itemTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate()!; context: itemContext(option, i)\" />\r\n } @else {\r\n <span>{{ option.label }}</span>\r\n @if (isOptionSelected(option)) {\r\n <tailwind-icon icon=\"check\" [size]=\"16\" class=\"text-primary-600 shrink-0\" aria-hidden=\"true\" />\r\n }\r\n }\r\n </li>\r\n } @empty {\r\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-neutral-400 cursor-default select-none\">\r\n {{ placeholder() || 'Nessun risultato' }}\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-toggle',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindToggle),\n multi: true\n }\n ],\n templateUrl: './toggle.component.html',\n styleUrl: './toggle.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindToggle extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Aria label for accessibility */\n readonly ariaLabel = input<string>('');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n\n /** Two-way bound checked state */\n readonly checked = model<boolean>(false);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Track (background) classes */\n readonly trackClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-7 h-4',\n sm: 'w-8 h-5',\n md: 'w-11 h-6',\n lg: 'w-14 h-7',\n xl: 'w-16 h-8'\n };\n\n const base = [\n 'relative inline-flex shrink-0 rounded-full',\n 'border-2 border-transparent',\n 'transition-colors duration-200 ease-in-out',\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600',\n 'cursor-pointer disabled:cursor-not-allowed'\n ];\n\n const stateClass = this.checked() ? 'bg-primary-600' : 'bg-neutral-300';\n\n return [...base, sizeMap[this.size()], stateClass].join(' ');\n });\n\n /** `aria-label` / `aria-labelledby` for the switch (label text is not a hit target) */\n readonly switchAria = computed(() => {\n const al = this.ariaLabel();\n if (al) {\n return { label: al, labelledBy: null as string | null };\n }\n const lb = this.label();\n const sid = this.id();\n if (lb && sid) {\n return { label: null, labelledBy: `${sid}-label` };\n }\n if (lb) {\n return { label: lb, labelledBy: null };\n }\n return { label: 'Toggle', labelledBy: null };\n });\n\n /** Thumb (knob) classes */\n readonly thumbClasses = computed(() => {\n const sizeMap: Record<TailwindSize, { thumb: string; translateOn: string }> = {\n xs: { thumb: 'w-3 h-3', translateOn: 'translate-x-3' },\n sm: { thumb: 'w-4 h-4', translateOn: 'translate-x-3' },\n md: { thumb: 'w-5 h-5', translateOn: 'translate-x-5' },\n lg: { thumb: 'w-6 h-6', translateOn: 'translate-x-7' },\n xl: { thumb: 'w-7 h-7', translateOn: 'translate-x-8' }\n };\n\n const config = sizeMap[this.size()];\n\n const base = [\n 'pointer-events-none inline-block rounded-full',\n 'bg-white shadow-md',\n 'transform transition-transform duration-200 ease-in-out'\n ];\n\n const translateClass = this.checked() ? config.translateOn : 'translate-x-0';\n\n return [...base, config.thumb, translateClass].join(' ');\n });\n\n // CVA\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n toggle(): void {\n if (this.isDisabled()) return;\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n}\n","<div class=\"inline-flex items-center gap-3 select-none\" [class.opacity-50]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-label]=\"switchAria().label\"\n [attr.aria-labelledby]=\"switchAria().labelledBy\"\n [disabled]=\"isDisabled()\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\">\n <span [class]=\"thumbClasses()\" aria-hidden=\"true\"></span>\n </button>\n\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-neutral-800\">{{ label() }}</span>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-badge',\n templateUrl: './badge.component.html',\n styleUrl: './badge.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindBadge extends TailwindComponent {\n /** Color variant */\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('primary');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Show a dot indicator */\n readonly dot = input<boolean>(false);\n /** Shape variant */\n readonly rounded = input<boolean>(false);\n /** Accessible label */\n readonly ariaLabel = input<string>('');\n\n readonly computedClasses = computed(() => {\n const base = ['inline-flex items-center gap-1 font-medium', 'leading-none'];\n\n const variantMap: Record<string, string> = {\n primary: 'bg-primary-100 text-primary-700',\n neutral: 'bg-neutral-100 text-neutral-700',\n success: 'bg-success-100 text-success-700',\n warning: 'bg-warning-100 text-warning-800',\n danger: 'bg-danger-100 text-danger-700',\n info: 'bg-info-100 text-info-700'\n };\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-[10px] px-1.5 py-0.5',\n sm: 'text-xs px-2 py-0.5',\n md: 'text-xs px-2.5 py-1',\n lg: 'text-sm px-3 py-1',\n xl: 'text-sm px-3.5 py-1.5'\n };\n\n const shape = this.rounded() ? 'rounded-full' : 'rounded-md';\n\n return [...base, variantMap[this.variant()] ?? variantMap['primary'], sizeMap[this.size()], shape].join(' ');\n });\n}\n","<span [class]=\"computedClasses()\" [attr.aria-label]=\"ariaLabel()\">\n @if (dot()) {\n <span class=\"w-1.5 h-1.5 rounded-full bg-current\"></span>\n }\n <ng-content />\n</span>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { TailwindHeroicon, TailwindTitleTag } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindIcon } from '../icon/icon.component';\n\n@Component({\n selector: 'tailwind-title',\n imports: [NgTemplateOutlet, TailwindIcon],\n templateUrl: './title.component.html',\n styleUrl: './title.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTitle extends TailwindComponent {\n /** Visible title text */\n readonly text = input.required<string>();\n\n /** Optional Heroicons outline icon name (shown before `text`) */\n readonly icon = input<TailwindHeroicon | undefined>();\n\n /** HTML heading element */\n readonly titleTag = input<TailwindTitleTag>('h2');\n\n readonly headingClasses = computed(() => {\n const tag = this.titleTag();\n const scale: Record<TailwindTitleTag, string> = {\n h1: 'text-3xl font-bold tracking-tight text-neutral-900',\n h2: 'text-2xl font-semibold tracking-tight text-neutral-900',\n h3: 'text-xl font-semibold tracking-tight text-neutral-900',\n h4: 'text-lg font-normal text-neutral-900',\n h5: 'text-base font-normal text-neutral-900',\n h6: 'text-sm font-normal text-neutral-800 uppercase tracking-wide'\n };\n const layout = 'inline-flex items-center gap-2 min-w-0';\n const extra = this.class();\n const base = `${scale[tag]} ${layout}`.trim();\n return extra ? `${base} ${extra}`.trim() : base;\n });\n\n readonly iconSize = computed(() => {\n const tag = this.titleTag();\n const size: Record<TailwindTitleTag, number> = {\n h1: 32,\n h2: 24,\n h3: 20,\n h4: 18,\n h5: 16,\n h6: 14\n };\n return size[tag];\n });\n}\n","@switch (titleTag()) {\n @case ('h1') {\n <h1 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h1>\n }\n @case ('h2') {\n <h2 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h2>\n }\n @case ('h3') {\n <h3 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h3>\n }\n @case ('h4') {\n <h4 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h4>\n }\n @case ('h5') {\n <h5 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h5>\n }\n @case ('h6') {\n <h6 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h6>\n }\n}\n\n<ng-template #titleBody>\n @if (icon()) {\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconSize()\" />\n }\n <span class=\"min-w-0\">{{ text() }}</span>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-card',\n templateUrl: './card.component.html',\n styleUrl: './card.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindCard extends TailwindComponent {\n /** Whether the card has elevated shadow */\n readonly elevated = input<boolean>(false);\n /** Whether to show hover shadow effect */\n readonly hoverable = input<boolean>(false);\n /** Whether to show header background */\n readonly headerBg = input<boolean>(false);\n /** Whether the card has a header */\n readonly hasHeader = input<boolean>(true);\n /** Whether the card has a footer */\n readonly hasFooter = input<boolean>(true);\n}\n","<div\n class=\"bg-white rounded-xl border border-neutral-200 overflow-hidden transition-shadow duration-200\"\n [class.shadow-sm]=\"!elevated()\"\n [class.shadow-lg]=\"elevated()\"\n [class.hover:shadow-md]=\"hoverable() && !elevated()\"\n [class.hover:shadow-xl]=\"hoverable() && elevated()\">\n @if (hasHeader()) {\n <!-- Header slot (always rendered; only visible when content is projected) -->\n <div class=\"px-6 pt-4 pb-2 border-b border-neutral-100\" [class.bg-neutral-50]=\"headerBg()\">\n <ng-content select=\"[tailwind-card-header]\" />\n </div>\n }\n\n <!-- Image slot -->\n <ng-content select=\"[tailwind-card-image]\" />\n\n <!-- Body -->\n <div class=\"p-6\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <!-- Footer slot -->\n <div class=\"px-6 py-4 border-t border-neutral-100 bg-neutral-50/50\">\n <ng-content select=\"[tailwind-card-footer]\" />\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon, TailwindButton],\n selector: 'tailwind-alert',\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindAlert extends TailwindComponent {\n /** Severity / color variant */\n readonly severity = input<TailwindSeverity>('info');\n /** Alert title */\n readonly title = input<string>('');\n /** Whether the alert can be dismissed */\n readonly dismissible = input<boolean>(false);\n /** Whether to show a border on the left */\n readonly bordered = input<boolean>(true);\n\n /** Emitted when the alert is dismissed */\n readonly onDismiss = output<void>();\n\n /** Internal dismissed state */\n readonly dismissed = signal(false);\n\n readonly computedClasses = computed(() => {\n const base = 'flex gap-3 p-4 rounded-lg';\n\n const variantMap: Record<TailwindSeverity, string> = {\n success: 'bg-success-50 text-success-800 border-success-200',\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\n info: 'bg-info-50 text-info-800 border-info-200'\n };\n\n const borderClass = this.bordered() ? 'border-l-4' : 'border';\n\n return `${base} ${variantMap[this.severity()]} ${borderClass}`;\n });\n\n dismiss(): void {\n this.dismissed.set(true);\n this.onDismiss.emit();\n }\n}\n","@if (!dismissed()) {\n <div [class]=\"computedClasses()\" role=\"alert\" [attr.aria-live]=\"severity() === 'danger' ? 'assertive' : 'polite'\">\n <!-- Icon -->\n <div class=\"shrink-0 mt-0.5\">\n @switch (severity()) {\n @case ('success') {\n <tailwind-icon icon=\"check-circle\" [size]=\"20\" />\n }\n @case ('warning') {\n <tailwind-icon icon=\"exclamation-triangle\" [size]=\"20\" />\n }\n @case ('danger') {\n <tailwind-icon icon=\"x-circle\" [size]=\"20\" />\n }\n @case ('info') {\n <tailwind-icon icon=\"information-circle\" [size]=\"20\" />\n }\n }\n </div>\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <h3 class=\"text-sm font-semibold mb-0.5\">{{ title() }}</h3>\n }\n <div class=\"text-sm\">\n <ng-content />\n </div>\n </div>\n\n <!-- Dismiss button -->\n @if (dismissible()) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 -m-1 opacity-70 hover:opacity-100\"\n ariaLabel=\"Dismiss alert\"\n (onClick)=\"dismiss()\" />\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindColor, TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-spinner',\n templateUrl: './spinner.component.html',\n styleUrl: './spinner.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSpinner extends TailwindComponent {\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Color uses Tailwind text color class */\n readonly color = input<TailwindColor>('primary');\n /** Optional label text */\n readonly label = input<string>('');\n /** Aria label for accessibility */\n readonly ariaLabel = input<string>('Loading');\n /** Layout orientation */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly containerClasses = computed(() => {\n const base = 'inline-flex items-center gap-2';\n const orient = this.orientation() === 'vertical' ? 'flex-col' : '';\n return `${base} ${orient}`;\n });\n\n readonly iconPixelSize = computed(() => {\n const sizeMap: Record<TailwindSize, number> = {\n xs: 16,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48\n };\n return sizeMap[this.size()];\n });\n\n readonly iconClasses = computed(() => {\n const colorMap: Record<TailwindColor, string> = {\n primary: 'text-primary-600',\n secondary: 'text-secondary-600',\n success: 'text-success-600',\n warning: 'text-warning-600',\n danger: 'text-danger-600',\n info: 'text-info-600',\n transparent: 'text-neutral-400'\n };\n\n return `animate-spin ${colorMap[this.color()]}`;\n });\n\n readonly labelClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-lg'\n };\n\n return `${sizeMap[this.size()]} ${this.color()} font-medium`;\n });\n}\n","<div [class]=\"containerClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <tailwind-icon icon=\"arrow-path\" [size]=\"iconPixelSize()\" [class]=\"iconClasses()\" />\n\n @if (label()) {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { TailwindSize } from '../../models';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindModal extends TailwindComponent {\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Whether to show close button in header */\n readonly showCloseButton = input<boolean>(true);\n /** Whether clicking backdrop closes the modal */\n readonly closeOnBackdrop = input<boolean>(true);\n /** Whether pressing Escape closes the modal */\n readonly closeOnEscape = input<boolean>(true);\n\n /** Open/close state */\n readonly isOpen = signal(false);\n /** Visibility for animation */\n readonly isVisible = signal(false);\n\n /** Emitted when the modal is fully closed (after exit animation) */\n readonly onClose = output<void>();\n\n private readonly modalPanel = viewChild<ElementRef>('modalPanel');\n\n readonly panelClasses = computed(() => {\n const base = ['relative bg-white rounded-xl shadow-2xl', 'w-full transform transition-all duration-200'];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'max-w-sm',\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl'\n };\n\n const animation = this.isVisible() ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\n\n return [...base, sizeMap[this.size()], animation].join(' ');\n });\n\n constructor() {\n super();\n effect(() => {\n if (this.isOpen()) {\n requestAnimationFrame(() => {\n this.isVisible.set(true);\n this.modalPanel()?.nativeElement?.focus();\n });\n }\n });\n }\n\n /** Open the modal */\n open(): void {\n this.isOpen.set(true);\n }\n\n /** Close the modal (plays exit animation then emits onClose) */\n close(): void {\n this.isVisible.set(false);\n setTimeout(() => {\n this.isOpen.set(false);\n this.onClose.emit();\n }, 200);\n }\n}\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-1040 transition-opacity duration-200\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Modal -->\n <div\n role=\"dialog\"\n class=\"fixed inset-0 z-1050 overflow-y-auto\"\n [attr.aria-modal]=\"true\"\n (keydown.escape)=\"closeOnEscape() && close()\">\n <div class=\"flex min-h-full items-center justify-center p-4\">\n <div #modalPanel [class]=\"panelClasses()\" tabindex=\"-1\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-neutral-200\">\n <h2 class=\"text-lg font-semibold text-neutral-900 pr-2\">\n <ng-content />\n </h2>\n @if (showCloseButton()) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 -m-1.5\"\n ariaLabel=\"Close\"\n (onClick)=\"close()\" />\n }\n </div>\n\n <!-- Body -->\n <div class=\"px-6 py-5\">\n <ng-content select=\"[tailwind-modal-content]\" />\n </div>\n\n <!-- Footer -->\n <div class=\"border-t border-neutral-200 px-6 py-4\">\n <ng-content select=\"[tailwind-modal-footer]\" />\n </div>\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-tab',\n templateUrl: './tab.component.html',\n styleUrl: './tab.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTab extends TailwindComponent {\n /** Tab label */\n readonly label = input.required<string>();\n /** Tab icon (optional, CSS class or content) */\n readonly icon = input<string>('');\n /** Whether the tab is disabled */\n readonly disabled = input<boolean>(false);\n /** Whether this tab is the currently active one (set by parent) */\n readonly isActive = signal(false);\n}\n","@if (isActive()) {\n <div role=\"tabpanel\" [attr.aria-labelledby]=\"id() ? 'tab-' + id() : null\">\n <ng-content />\n </div>\n}\n","import { ChangeDetectionStrategy, Component, contentChildren, input, model, effect } from '@angular/core';\nimport { TailwindTab } from './tab.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrl: './tab-group.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTabGroup extends TailwindComponent {\n /** Accessible label for the tab list */\n readonly ariaLabel = input<string>('');\n /** Whether tabs can scroll horizontally */\n readonly scrollable = input<boolean>(false);\n\n /** Currently active tab index (two-way) */\n readonly activeIndex = model<number>(0);\n\n /** Query all child TailwindTab components */\n readonly tabs = contentChildren(TailwindTab);\n\n constructor() {\n super();\n effect(() => {\n const allTabs = this.tabs();\n const idx = this.activeIndex();\n allTabs.forEach((tab, i) => tab.isActive.set(i === idx));\n });\n }\n\n selectTab(index: number): void {\n this.activeIndex.set(index);\n }\n}\n","<!-- Tab Headers -->\n<div class=\"border-b border-neutral-200\">\n <nav\n class=\"flex -mb-px gap-1\"\n [class.overflow-x-auto]=\"scrollable()\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel() || null\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.id]=\"tab.id() ? 'tab-' + tab.id() : null\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"tab.id() ? tab.id() : null\"\n [disabled]=\"tab.disabled()\"\n class=\"group relative px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 focus-visible:rounded-t-lg\"\n [class.text-primary-600]=\"activeIndex() === i\"\n [class.text-neutral-500]=\"activeIndex() !== i\"\n [class.hover:text-neutral-700]=\"activeIndex() !== i && !tab.disabled()\"\n [class.opacity-50]=\"tab.disabled()\"\n [class.cursor-not-allowed]=\"tab.disabled()\"\n (click)=\"!tab.disabled() && selectTab(i)\">\n {{ tab.label() }}\n <!-- Active indicator -->\n <span\n class=\"absolute bottom-0 left-0 right-0 h-0.5 rounded-full transition-all duration-200\"\n [class.bg-primary-600]=\"activeIndex() === i\"\n [class.scale-x-100]=\"activeIndex() === i\"\n [class.scale-x-0]=\"activeIndex() !== i\"></span>\n </button>\n }\n </nav>\n</div>\n\n<!-- Tab Content -->\n<div class=\"pt-4\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrl: './progress-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindProgressBar extends TailwindComponent {\n /** Current value (0-100) */\n readonly value = input<number>(0);\n /** Label text */\n readonly label = input<string>('');\n /** Show the label row */\n readonly showLabel = input<boolean>(true);\n /** Show percentage value */\n readonly showValue = input<boolean>(true);\n /** Color variant */\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Indeterminate mode (animated) */\n readonly indeterminate = input<boolean>(false);\n /** Whether to use striped pattern */\n readonly striped = input<boolean>(false);\n\n readonly clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\n\n readonly trackClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-2.5',\n lg: 'h-4',\n xl: 'h-5'\n };\n\n return `w-full bg-neutral-200 rounded-full overflow-hidden ${sizeMap[this.size()]}`;\n });\n\n readonly barClasses = computed(() => {\n const variantMap: Record<string, string> = {\n primary: 'bg-primary-600',\n success: 'bg-success-600',\n warning: 'bg-warning-500',\n danger: 'bg-danger-600',\n info: 'bg-info-600'\n };\n\n const base = [\n 'h-full rounded-full transition-all duration-300 ease-out',\n variantMap[this.variant()] ?? variantMap['primary']\n ];\n\n if (this.indeterminate()) {\n base.push('tailwind-progress-indeterminate');\n }\n\n if (this.striped()) {\n base.push('bg-gradient-to-r from-transparent via-white/20 to-transparent bg-[length:1rem_100%]');\n }\n\n return base.join(' ');\n });\n}\n","<div class=\"w-full\">\n @if (showLabel()) {\n <div class=\"flex justify-between items-center mb-1.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-neutral-700\">{{ label() }}</span>\n }\n @if (showValue()) {\n <span class=\"text-sm font-medium text-neutral-600\">{{ clampedValue() }}%</span>\n }\n </div>\n }\n\n <div\n [class]=\"trackClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"label() || 'Progress'\">\n <div [class]=\"barClasses()\" [style.width.%]=\"indeterminate() ? 100 : clampedValue()\"></div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindMenuItem, TailwindPosition } from '../../models';\n\n/** Matches previous `min-w-48` floor when the anchor is narrower. */\nconst MIN_PANEL_WIDTH_PX = 192;\n\n@Component({\n selector: 'tailwind-menu',\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindMenu extends TailwindComponent implements OnDestroy, OnInit {\n private openScheduleId: ReturnType<typeof setTimeout> | undefined;\n private anchorEl: HTMLElement | null = null;\n\n private readonly onScrollReposition = (): void => {\n if (this.isOpen()) {\n this.updatePanelPosition();\n }\n };\n\n readonly items = input<TailwindMenuItem[]>([]);\n readonly align = input<'left' | 'right'>('left');\n /** `bottom` opens under the anchor; `right` opens beside it (e.g. vertical toolbar rail). */\n readonly placement = input<Extract<TailwindPosition, 'bottom' | 'right'>>('bottom');\n\n readonly onSelect = output<TailwindMenuItem>();\n\n readonly isOpen = signal(false);\n\n /** Popover box in coordinates relative to the `position: fixed` containing block (often viewport, not under transformed Docs wrappers). */\n readonly panelLayout = signal<{\n top: number;\n left?: number;\n right?: number;\n minWidth: number;\n } | null>(null);\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n ngOnInit(): void {\n document.addEventListener('scroll', this.onScrollReposition, true);\n }\n\n ngOnDestroy(): void {\n document.removeEventListener('scroll', this.onScrollReposition, true);\n if (this.openScheduleId != null) {\n clearTimeout(this.openScheduleId);\n }\n }\n\n /**\n * Opens the menu under `anchor` (toggle element).\n * Pass the click event from the button, e.g. `(click)=\"menu.open($event)\"`, or an `HTMLElement`.\n * After the first open with an anchor, `open()` without arguments reuses the last anchor.\n *\n * Opening is deferred one macrotask so the same `click` is not closed immediately by `document:click`.\n */\n open(anchor?: Event | HTMLElement): void {\n if (anchor !== undefined) {\n this.storeAnchor(anchor);\n }\n if (!this.anchorEl) {\n return;\n }\n if (this.isOpen()) {\n return;\n }\n this.scheduleOpen();\n }\n\n close(): void {\n this.isOpen.set(false);\n this.panelLayout.set(null);\n }\n\n toggle(anchor?: Event | HTMLElement): void {\n if (this.isOpen()) {\n this.close();\n return;\n }\n if (anchor !== undefined) {\n this.storeAnchor(anchor);\n }\n if (!this.anchorEl) {\n return;\n }\n this.scheduleOpen();\n }\n\n private storeAnchor(anchor: Event | HTMLElement): void {\n if (anchor instanceof HTMLElement) {\n this.anchorEl = anchor;\n return;\n }\n const target = anchor.currentTarget;\n if (target instanceof HTMLElement) {\n this.anchorEl = target;\n }\n }\n\n private scheduleOpen(): void {\n if (this.openScheduleId != null) {\n clearTimeout(this.openScheduleId);\n }\n this.openScheduleId = setTimeout(() => {\n this.openScheduleId = undefined;\n this.isOpen.set(true);\n this.updatePanelPosition();\n requestAnimationFrame(() => this.updatePanelPosition());\n }, 0);\n }\n\n private updatePanelPosition(): void {\n const anchor = this.anchorEl;\n if (!anchor) {\n this.panelLayout.set(null);\n return;\n }\n const panelEl = this.panelRef()?.nativeElement;\n const cbRoot = panelEl\n ? this.getFixedPositioningContainingBlock(panelEl)\n : this.getFixedPositioningContainingBlock(anchor);\n const cbRect = cbRoot.getBoundingClientRect();\n const rect = anchor.getBoundingClientRect();\n const minWidth = Math.max(rect.width, MIN_PANEL_WIDTH_PX);\n\n if (this.placement() === 'right') {\n this.panelLayout.set({\n top: rect.top - cbRect.top,\n left: rect.right - cbRect.left,\n minWidth\n });\n return;\n }\n\n const top = rect.bottom - cbRect.top;\n if (this.align() === 'right') {\n this.panelLayout.set({\n top,\n right: cbRect.right - rect.right,\n minWidth\n });\n } else {\n this.panelLayout.set({\n top,\n left: rect.left - cbRect.left,\n minWidth\n });\n }\n }\n\n selectItem(item: TailwindMenuItem): void {\n if (!item.disabled) {\n this.onSelect.emit(item);\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onDocumentEscape(): void {\n if (!this.isOpen()) {\n return;\n }\n this.close();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n if (!this.isOpen()) {\n return;\n }\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n const panelEl = this.panelRef()?.nativeElement;\n const inPanel = panelEl?.contains(target) ?? false;\n const inAnchor = this.anchorEl?.contains(target) ?? false;\n if (!inPanel && !inAnchor) {\n this.close();\n }\n }\n\n @HostListener('window:resize')\n onWindowResize(): void {\n if (this.isOpen()) {\n this.updatePanelPosition();\n }\n }\n\n /** Ancestor that becomes the containing block for `position: fixed` (e.g. Storybook Docs wrappers with `transform`). */\n private createsFixedContainingBlock(el: HTMLElement): boolean {\n const s = getComputedStyle(el);\n if (s.transform && s.transform !== 'none') {\n return true;\n }\n if (s.perspective && s.perspective !== 'none') {\n return true;\n }\n if (s.filter && s.filter !== 'none') {\n return true;\n }\n const contain = s.contain;\n if (contain && contain !== 'none' && contain.split(/\\s+/).includes('paint')) {\n return true;\n }\n return false;\n }\n\n private getFixedPositioningContainingBlock(from: HTMLElement): HTMLElement {\n for (let p = from.parentElement; p; p = p.parentElement) {\n if (this.createsFixedContainingBlock(p)) {\n return p;\n }\n }\n return document.documentElement;\n }\n}\n","@if (isOpen() && panelLayout(); as layout) {\n <div\n #panel\n role=\"menu\"\n class=\"fixed z-1000 bg-white rounded-xl border border-neutral-200 shadow-lg py-1 animate-in fade-in slide-in-from-top-1\"\n [style.top.px]=\"layout.top\"\n [style.left.px]=\"layout.left ?? null\"\n [style.right.px]=\"layout.right ?? null\"\n [style.minWidth.px]=\"layout.minWidth\">\n @for (item of items(); track $index) {\n @if (item.divider) {\n <hr class=\"my-1 border-neutral-100\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [disabled]=\"!!item.disabled\"\n class=\"w-full text-left px-4 py-2 text-sm text-neutral-700 hover:bg-neutral-50 hover:text-neutral-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { TailwindPosition } from '../../models';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-drawer',\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDrawer extends TailwindComponent {\n /** Drawer title */\n readonly title = input<string>('');\n /** Position (left or right) */\n readonly position = input<'left' | 'right'>('right');\n /** Width class */\n readonly width = input<string>('max-w-md');\n /** Whether clicking backdrop closes */\n readonly closeOnBackdrop = input<boolean>(true);\n\n /** Open/close state */\n readonly isOpen = signal(false);\n /** Visibility for animation */\n readonly isVisible = signal(false);\n\n /** Emitted when closed */\n readonly onClose = output<void>();\n\n readonly panelClasses = computed(() => {\n const base = [\n 'fixed top-0 bottom-0 z-[1050]',\n 'flex flex-col w-full bg-white shadow-2xl',\n 'transition-transform duration-300 ease-in-out',\n this.width()\n ];\n\n const pos = this.position();\n\n if (pos === 'right') {\n base.push('right-0');\n base.push(this.isVisible() ? 'translate-x-0' : 'translate-x-full');\n } else {\n base.push('left-0');\n base.push(this.isVisible() ? 'translate-x-0' : '-translate-x-full');\n }\n\n return base.join(' ');\n });\n\n open(): void {\n this.isOpen.set(true);\n requestAnimationFrame(() => {\n this.isVisible.set(true);\n });\n }\n\n close(): void {\n this.isVisible.set(false);\n setTimeout(() => {\n this.isOpen.set(false);\n this.onClose.emit();\n }, 300);\n }\n}\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/40 backdrop-blur-sm z-1040 transition-opacity duration-300\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Drawer Panel -->\n <div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"true\" [attr.aria-label]=\"title()\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-neutral-200\">\n @if (title()) {\n <h2 class=\"text-lg font-semibold text-neutral-900\">{{ title() }}</h2>\n }\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"ml-auto shrink-0 -m-1.5\"\n ariaLabel=\"Close\"\n (onClick)=\"close()\" />\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-5\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n <ng-content select=\"[tailwind-drawer-footer]\" />\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TailwindBreadcrumbItem } from './interfaces/breadcrumb-item.interface';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { RouterLink } from '@angular/router';\n\nexport type { TailwindBreadcrumbItem };\n\n@Component({\n imports: [RouterLink, TailwindIcon],\n selector: 'tailwind-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindBreadcrumb extends TailwindComponent {\n readonly items = input<TailwindBreadcrumbItem[]>([]);\n readonly separator = input<string>('>');\n readonly ariaLabel = input<string>('Breadcrumb');\n}\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"flex\">\n <ol class=\"inline-flex items-center text-sm\">\n @for (item of items(); track item.label; let last = $last; let first = $first) {\n <li class=\"inline-flex items-center\">\n @if (!first) {\n <span class=\"mx-2 text-neutral-400\" aria-hidden=\"true\">\n {{ separator() }}\n </span>\n }\n @if (item.link && !last) {\n <a\n [routerLink]=\"item.link\"\n class=\"inline-flex items-center gap-1 text-neutral-500 hover:text-primary-600 transition-colors font-medium\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span\n class=\"inline-flex items-center gap-1 font-medium\"\n [class.text-neutral-900]=\"last\"\n [class.text-neutral-500]=\"!last\"\n [attr.aria-current]=\"last ? 'page' : null\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\n }\n {{ item.label }}\n </span>\n }\n </li>\n }\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model, output } from '@angular/core';\nimport { TailwindOption } from '../../models';\nimport { TAILWIND_PAGINATION_SUMMARY } from '../../tokens';\nimport { TailwindSelect } from '../select/select.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { Pagination } from './interfaces/pagination.interface';\nexport type { Pagination };\n\nexport const DEFAULT_PAGINATION_LENGTH_OPTIONS = [5, 10, 25, 50] as const;\n\n@Component({\n selector: 'tailwind-pagination',\n imports: [TailwindSelect, TailwindButton],\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindPagination extends TailwindComponent {\n private readonly tailwindPaginationSummary = inject(TAILWIND_PAGINATION_SUMMARY, { optional: true });\n\n readonly totalItems = input.required<Pagination['totalItems']>();\n readonly pageSize = model<Pagination['pageSize']>(10);\n readonly lengthOptions = input<readonly number[]>([...DEFAULT_PAGINATION_LENGTH_OPTIONS]);\n readonly currentPage = model<Pagination['currentPage']>(1);\n readonly ariaLabel = input<Pagination['ariaLabel']>('Pagination');\n /** Placeholders `{start}`, `{end}`, `{total}`; default from `TAILWIND_PAGINATION_SUMMARY` or English copy. */\n readonly summary = input<Pagination['summary']>(this.tailwindPaginationSummary ?? 'Showing {start}-{end} of {total}');\n\n readonly onPageChange = output<number>();\n readonly onPageSizeChange = output<number>();\n\n readonly pageSizeOptions = computed(() => {\n const options = [...this.lengthOptions()];\n const current = this.pageSize();\n if (!options.includes(current)) {\n options.push(current);\n options.sort((a, b) => a - b);\n }\n return options;\n });\n\n readonly pageSizeSelectOptions = computed((): TailwindOption<number>[] =>\n this.pageSizeOptions().map(size => ({ value: size, label: String(size) }))\n );\n\n readonly totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n\n readonly visiblePages = computed(() => {\n const total = this.totalPages();\n return Array.from({ length: total }, (_, i) => i + 1);\n });\n\n readonly summaryText = computed(() => {\n const total = this.totalItems();\n if (total === 0) return this.summary().replace('{start}', '0').replace('{end}', '0').replace('{total}', '0');\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\n const end = Math.min(this.currentPage() * this.pageSize(), total);\n return this.summary()\n .replace('{start}', start.toString())\n .replace('{end}', end.toString())\n .replace('{total}', total.toString());\n });\n\n goToPage(page: number): void {\n if (page >= 1 && page <= this.totalPages()) {\n this.currentPage.set(page);\n this.onPageChange.emit(page);\n }\n }\n\n pageButtonAriaLabel(page: number): string {\n return page === this.currentPage() ? `Page ${page}, current page` : `Page ${page}`;\n }\n\n onPageSizeValueChange(value: number | number[] | null): void {\n if (typeof value !== 'number') return;\n this.setPageSize(value);\n }\n\n setPageSize(size: number): void {\n if (!Number.isFinite(size) || size <= 0 || size === this.pageSize()) return;\n this.pageSize.set(size);\n this.onPageSizeChange.emit(size);\n if (this.currentPage() !== 1) {\n this.currentPage.set(1);\n this.onPageChange.emit(1);\n }\n }\n}\n","<div class=\"flex flex-wrap items-center justify-between gap-4 w-full\">\n <div class=\"flex flex-wrap items-center gap-3 min-w-0\">\n @if (summary()) {\n <span class=\"text-sm text-neutral-700 dark:text-neutral-300\">\n {{ summaryText() }}\n </span>\n }\n\n @if (lengthOptions().length > 0) {\n <div class=\"w-20 shrink-0\">\n <tailwind-select\n size=\"sm\"\n ariaLabel=\"Rows per page\"\n [options]=\"pageSizeSelectOptions()\"\n [value]=\"pageSize()\"\n (valueChange)=\"onPageSizeValueChange($event)\" />\n </div>\n }\n </div>\n\n <nav [attr.aria-label]=\"ariaLabel()\" class=\"flex items-center gap-1\">\n <!-- Previous -->\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-left\"\n [disabled]=\"currentPage() <= 1\"\n ariaLabel=\"Previous page\"\n (onClick)=\"goToPage(currentPage() - 1)\" />\n\n @for (page of visiblePages(); track page) {\n <tailwind-button\n size=\"sm\"\n [kind]=\"page === currentPage() ? 'flat' : 'ghost'\"\n [color]=\"page === currentPage() ? 'primary' : 'secondary'\"\n class=\"min-w-8\"\n [ariaLabel]=\"pageButtonAriaLabel(page)\"\n (onClick)=\"goToPage(page)\">\n {{ page }}\n </tailwind-button>\n }\n\n <!-- Next -->\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-right\"\n [disabled]=\"currentPage() >= totalPages()\"\n ariaLabel=\"Next page\"\n (onClick)=\"goToPage(currentPage() + 1)\" />\n </nav>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-tag',\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTag extends TailwindComponent {\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('neutral');\n\n readonly computedClasses = computed(() => {\n const variantMap: Record<string, string> = {\n primary: 'bg-primary-600 text-on-primary-600',\n neutral: 'bg-neutral-600 text-on-neutral-600',\n success: 'bg-success-700 text-on-success-700',\n warning: 'bg-warning-500 text-on-warning-500',\n danger: 'bg-danger-700 text-on-danger-700',\n info: 'bg-info-600 text-on-info-600'\n };\n return `inline-flex items-center text-[11px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded ${variantMap[this.variant()]}`;\n });\n}\n","<span [class]=\"computedClasses()\"><ng-content /></span>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { DEFAULT_PAGINATION_LENGTH_OPTIONS, Pagination, TailwindPagination } from '../pagination/pagination.component';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindTableSortHost } from './interfaces/tailwind-table-sort-host';\nimport { TailwindTableRowDirective } from '../../directives/table/tailwind-table-row.directive';\nimport { TAILWIND_PAGINATION_SUMMARY } from '../../tokens';\nexport type { TailwindTableSortHost };\n\n@Component({\n selector: 'tailwind-table',\n imports: [NgTemplateOutlet, TailwindPagination, TailwindIcon],\n templateUrl: './table.component.html',\n styleUrl: './table.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-tw-sort-key]': 'sortKey()',\n '[attr.data-tw-sort-dir]': 'sortDir()'\n }\n})\nexport class TailwindTable extends TailwindComponent implements TailwindTableSortHost {\n private readonly tailwindPaginationSummary = inject(TAILWIND_PAGINATION_SUMMARY, { optional: true });\n\n readonly data = input<any[]>([]);\n readonly selectable = input<boolean>(false);\n readonly striped = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly emptyMessage = input<string>('No data available');\n /** Match your column count so the empty state spans the full table width. */\n readonly emptyColspan = input<number>(1);\n\n readonly paginated = input<boolean>(true);\n readonly pagination = input<Pagination>();\n readonly paginationSummary = computed(\n () => this.pagination()?.summary ?? this.tailwindPaginationSummary ?? 'Showing {start}-{end} of {total}'\n );\n readonly paginationLengthOptions = computed(\n () => this.pagination()?.lengthOptions ?? [...DEFAULT_PAGINATION_LENGTH_OPTIONS]\n );\n\n readonly onSortChange = output<{ key: string; direction: 'asc' | 'desc' }>();\n readonly onSelectionChange = output<Set<number>>();\n\n readonly rowTemplate = contentChild.required(TailwindTableRowDirective);\n\n rowContext(row: Record<string, unknown>, index: number): Record<string, unknown> {\n return {\n $implicit: row,\n index,\n stripedRow: this.striped() && index % 2 === 1,\n selected: this.selectedRows().has(index),\n selectable: this.selectable(),\n toggleRow: () => {\n if (!this.selectable()) return;\n this.toggleSelection(index);\n }\n };\n }\n\n readonly sortKey = signal<string>('');\n readonly sortDir = signal<'asc' | 'desc'>('asc');\n readonly selectedRows = signal<Set<number>>(new Set());\n readonly currentPage = signal<number>(1);\n readonly pageSize = signal<number>(10);\n\n constructor() {\n super();\n effect(() => {\n const fromInput = this.pagination()?.currentPage;\n if (fromInput != null && fromInput >= 1) {\n this.currentPage.set(fromInput);\n }\n });\n effect(() => {\n const fromInput = this.pagination()?.pageSize;\n if (fromInput != null && fromInput > 0) {\n this.pageSize.set(fromInput);\n }\n });\n }\n\n readonly sortedData = computed(() => {\n let rows = [...this.data()];\n const key = this.sortKey();\n if (key) {\n const dir = this.sortDir() === 'asc' ? 1 : -1;\n rows.sort((a, b) => {\n const va = a[key],\n vb = b[key];\n const sa = va == null ? '' : String(va);\n const sb = vb == null ? '' : String(vb);\n const cmp = sa.localeCompare(sb, undefined, { numeric: true, sensitivity: 'base' });\n return dir * cmp;\n });\n }\n return rows;\n });\n\n readonly displayedData = computed(() => {\n const rows = this.sortedData();\n if (!this.paginated()) return rows;\n const size = this.pageSize();\n const page = this.currentPage();\n return rows.slice((page - 1) * size, page * size);\n });\n\n sort(key: string): void {\n if (this.sortKey() === key) {\n this.sortDir.update(d => (d === 'asc' ? 'desc' : 'asc'));\n } else {\n this.sortKey.set(key);\n this.sortDir.set('asc');\n }\n this.currentPage.set(1);\n this.onSortChange.emit({ key: this.sortKey(), direction: this.sortDir() });\n }\n\n toggleSelection(index: number): void {\n this.selectedRows.update(s => {\n const next = new Set(s);\n if (next.has(index)) next.delete(index);\n else next.add(index);\n return next;\n });\n this.onSelectionChange.emit(this.selectedRows());\n }\n\n @HostListener('click', ['$event'])\n protected onSortZoneClick(ev: Event): void {\n this.delegateSortFromEvent(ev);\n }\n\n @HostListener('keydown', ['$event'])\n protected onSortZoneKeydown(ev: KeyboardEvent): void {\n if (ev.key !== 'Enter' && ev.key !== ' ') return;\n const target = ev.target as HTMLElement | null;\n if (!target?.closest?.('[tailwindSortHeader]')) return;\n if (ev.key === ' ') ev.preventDefault();\n this.delegateSortFromEvent(ev);\n }\n\n private delegateSortFromEvent(ev: Event): void {\n const host = ev.currentTarget as HTMLElement;\n const target = ev.target as HTMLElement | null;\n const header = target?.closest?.('[tailwindSortHeader]') as HTMLElement | null;\n if (!header || !host.contains(header)) return;\n if (header.closest('tailwind-table') !== host) return;\n const key = header.getAttribute('data-sort-key');\n if (key) this.sort(key);\n }\n}\n","<div class=\"w-full overflow-x-auto rounded-lg border border-neutral-200\">\n @if (loading()) {\n <div class=\"flex items-center justify-center py-16 text-neutral-400\">\n <tailwind-icon icon=\"arrow-path\" [size]=\"24\" class=\"animate-spin mr-2 text-neutral-400\" />\n Loading...\n </div>\n } @else {\n <!-- `table-fixed`: consente `w-*` / `min-w-*` / `max-w-*` sulle celle e sugli `th` proiettati. -->\n <table class=\"w-full min-w-0 table-fixed text-sm text-left divide-y divide-neutral-100\">\n <ng-content select=\"thead\" />\n @for (row of displayedData(); track $index; let i = $index) {\n <ng-container *ngTemplateOutlet=\"rowTemplate().templateRef; context: rowContext(row, i)\" />\n } @empty {\n <tbody>\n <tr>\n <td [attr.colspan]=\"emptyColspan()\">\n {{ emptyMessage() }}\n </td>\n </tr>\n </tbody>\n }\n </table>\n\n @if (paginated() && data().length > 0) {\n <div class=\"px-4 py-3 border-t border-neutral-200 bg-white\">\n <tailwind-pagination\n [totalItems]=\"pagination()?.totalItems ?? data().length\"\n [pageSize]=\"pageSize()\"\n (pageSizeChange)=\"pageSize.set($event)\"\n [lengthOptions]=\"paginationLengthOptions()\"\n [currentPage]=\"currentPage()\"\n (onPageChange)=\"currentPage.set($event)\"\n [ariaLabel]=\"pagination()?.ariaLabel ?? 'Pagination'\"\n [summary]=\"paginationSummary()\">\n </tailwind-pagination>\n </div>\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\ntype Lang = 'it' | 'en';\n\nconst I18N: Record<\n Lang,\n { months: string[]; weekDays: string[]; today: string; confirm: string; placeholder: string }\n> = {\n it: {\n months: [\n 'Gennaio',\n 'Febbraio',\n 'Marzo',\n 'Aprile',\n 'Maggio',\n 'Giugno',\n 'Luglio',\n 'Agosto',\n 'Settembre',\n 'Ottobre',\n 'Novembre',\n 'Dicembre'\n ],\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\n today: 'Oggi',\n confirm: 'Applica',\n placeholder: 'Seleziona data'\n },\n en: {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\n today: 'Today',\n confirm: 'Apply',\n placeholder: 'Select date'\n }\n};\n\n@Component({\n imports: [TailwindIcon, TailwindButton],\n selector: 'tailwind-date-picker',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDatePicker), multi: true }],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\n\n protected readonly i18n = I18N[this.lang];\n protected readonly weekDays = this.i18n.weekDays;\n\n readonly label = input<string>('');\n readonly placeholder = input<string | undefined>(undefined);\n readonly format = input<string>('dd/MM/yyyy');\n\n readonly value = model<Date | null>(null);\n /** Working selection while the panel is open; committed on Apply. */\n readonly draft = signal<Date | null>(null);\n\n readonly isDisabled = signal(false);\n readonly showCalendar = signal(false);\n readonly viewMonth = signal(new Date().getMonth());\n readonly viewYear = signal(new Date().getFullYear());\n\n readonly effectivePlaceholder = computed(() => {\n const p = this.placeholder();\n return p?.trim() ? p : this.i18n.placeholder;\n });\n\n readonly displayValue = computed(() => {\n const d = this.value();\n if (!d) return '';\n const fmt = this.format();\n try {\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\n } catch {\n return formatDate(d, fmt, 'en-US');\n }\n });\n\n readonly monthYearLabel = computed(() => `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`);\n\n readonly calendarDays = computed(() => {\n const y = this.viewYear(),\n m = this.viewMonth();\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\n const total = new Date(y, m + 1, 0).getDate();\n const days: number[] = Array(offset).fill(0);\n for (let i = 1; i <= total; i++) days.push(i);\n return days;\n });\n\n private onChange: (v: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(v: Date | null): void {\n this.value.set(v ?? null);\n if (v && !isNaN(v.getTime())) {\n this.viewMonth.set(v.getMonth());\n this.viewYear.set(v.getFullYear());\n }\n }\n\n registerOnChange(fn: (v: Date | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(d: boolean): void {\n this.isDisabled.set(d);\n }\n\n toggleCalendar(): void {\n if (this.isDisabled()) return;\n if (!this.showCalendar()) {\n this.draft.set(this.value());\n const ref = this.value() ?? new Date();\n this.viewMonth.set(ref.getMonth());\n this.viewYear.set(ref.getFullYear());\n }\n this.showCalendar.update(v => !v);\n }\n\n apply(): void {\n const d = this.draft();\n this.value.set(d);\n this.onChange(d);\n this.onTouched();\n this.showCalendar.set(false);\n }\n\n prevMonth(): void {\n if (this.viewMonth() === 0) {\n this.viewMonth.set(11);\n this.viewYear.update(y => y - 1);\n } else {\n this.viewMonth.update(m => m - 1);\n }\n }\n\n nextMonth(): void {\n if (this.viewMonth() === 11) {\n this.viewMonth.set(0);\n this.viewYear.update(y => y + 1);\n } else {\n this.viewMonth.update(m => m + 1);\n }\n }\n\n selectDay(day: number): void {\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day));\n }\n\n isSelected(day: number): boolean {\n const d = this.draft();\n if (!d) return false;\n return d.getFullYear() === this.viewYear() && d.getMonth() === this.viewMonth() && d.getDate() === day;\n }\n\n isToday(day: number): boolean {\n const t = new Date();\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\n }\n\n goToToday(): void {\n const t = new Date();\n this.viewMonth.set(t.getMonth());\n this.viewYear.set(t.getFullYear());\n this.selectDay(t.getDate());\n }\n\n @HostListener('document:pointerdown', ['$event'])\n onDocumentPointerDown(event: PointerEvent): void {\n if (!this.showCalendar()) return;\n const t = event.target;\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\n this.showCalendar.set(false);\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocumentKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || !this.showCalendar()) return;\n event.stopPropagation();\n this.showCalendar.set(false);\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-neutral-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-neutral-300 rounded-md px-3 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-neutral-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleCalendar()\" />\n <tailwind-icon\n icon=\"calendar-days\"\n [size]=\"16\"\n class=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 pointer-events-none\" />\n </div>\n\n @if (showCalendar()) {\n <div class=\"absolute z-popover mt-1 bg-white rounded-xl border border-neutral-200 shadow-xl p-4 w-72\">\n <!-- Month/Year nav -->\n <div class=\"flex items-center justify-between mb-3\">\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-left\"\n ariaLabel=\"Previous month\"\n (onClick)=\"prevMonth()\" />\n <span class=\"text-sm font-semibold text-neutral-800\">{{ monthYearLabel() }}</span>\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-right\"\n ariaLabel=\"Next month\"\n (onClick)=\"nextMonth()\" />\n </div>\n <!-- Weekdays -->\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track $index) {\n <div class=\"text-center text-xs font-medium text-neutral-400 py-1\">{{ day }}</div>\n }\n </div>\n <!-- Days -->\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-neutral-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-neutral-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-2 pt-2 border-t border-neutral-100 flex items-center justify-between gap-2\">\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"xs\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"goToToday()\">\n {{ i18n.today }}\n </tailwind-button>\n <tailwind-button\n kind=\"solid\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled() || !draft()\"\n (onClick)=\"apply()\">\n {{ i18n.confirm }}\n </tailwind-button>\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\ntype Lang = 'it' | 'en';\ntype TimeDraft = { h: number; m: number };\n\nconst I18N: Record<Lang, { placeholder: string; now: string; apply: string }> = {\n it: { placeholder: 'Seleziona ora', now: 'Adesso', apply: 'Applica' },\n en: { placeholder: 'Select time', now: 'Now', apply: 'Apply' }\n};\n\n@Component({\n selector: 'tailwind-time-picker',\n imports: [TailwindIcon, TailwindButton],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindTimePicker), multi: true }],\n templateUrl: './time-picker.component.html',\n styleUrl: './time-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTimePicker extends TailwindComponent implements ControlValueAccessor {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\n\n protected readonly i18n = I18N[this.lang];\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\n\n readonly label = input<string>('');\n readonly value = model<string>('');\n readonly isDisabled = signal(false);\n readonly showPanel = signal(false);\n readonly draft = signal<TimeDraft | null>(null);\n\n readonly displayValue = computed(() => this.value());\n\n private onChange: (v: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(v: string): void {\n this.value.set(v ?? '');\n }\n registerOnChange(fn: (v: string) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(d: boolean): void {\n this.isDisabled.set(d);\n }\n\n togglePanel(): void {\n if (this.isDisabled()) return;\n const opening = !this.showPanel();\n if (opening) {\n const v = this.value();\n const parts = v ? v.split(':') : null;\n const now = new Date();\n this.draft.set({\n h: parts ? parseInt(parts[0], 10) || 0 : now.getHours(),\n m: parts ? parseInt(parts[1], 10) || 0 : now.getMinutes()\n });\n }\n this.showPanel.set(opening);\n }\n\n apply(): void {\n const d = this.draft();\n if (!d) return;\n const val = `${d.h.toString().padStart(2, '0')}:${d.m.toString().padStart(2, '0')}`;\n this.value.set(val);\n this.onChange(val);\n this.onTouched();\n this.showPanel.set(false);\n }\n\n goToNow(): void {\n const now = new Date();\n this.draft.set({ h: now.getHours(), m: now.getMinutes() });\n }\n\n onHourChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n this.draft.set({ ...cur, h: Number((e.target as HTMLSelectElement).value) });\n }\n\n onMinuteChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n this.draft.set({ ...cur, m: Number((e.target as HTMLSelectElement).value) });\n }\n\n @HostListener('document:pointerdown', ['$event'])\n onDocumentPointerDown(event: PointerEvent): void {\n if (!this.showPanel()) return;\n const t = event.target;\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\n this.showPanel.set(false);\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocumentKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || !this.showPanel()) return;\n event.stopPropagation();\n this.showPanel.set(false);\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-neutral-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"i18n.placeholder\"\n [disabled]=\"isDisabled()\"\n class=\"block w-full bg-white border border-neutral-300 rounded-md px-3 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-neutral-50 disabled:cursor-not-allowed pr-10\"\n (click)=\"togglePanel()\" />\n <tailwind-icon\n icon=\"clock\"\n [size]=\"16\"\n class=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 pointer-events-none\" />\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-52 rounded-xl border border-neutral-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center gap-2\">\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.h ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-neutral-400 text-sm shrink-0\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.m ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-neutral-100 flex items-center justify-between gap-2\">\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"xs\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"goToNow()\">\n {{ i18n.now }}\n </tailwind-button>\n <tailwind-button\n kind=\"solid\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"apply()\">\n {{ i18n.apply }}\n </tailwind-button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { formatDate } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\ntype Lang = 'it' | 'en';\n\nconst I18N: Record<\n Lang,\n { months: string[]; weekDays: string[]; time: string; today: string; confirm: string; placeholder: string }\n> = {\n it: {\n months: [\n 'Gennaio',\n 'Febbraio',\n 'Marzo',\n 'Aprile',\n 'Maggio',\n 'Giugno',\n 'Luglio',\n 'Agosto',\n 'Settembre',\n 'Ottobre',\n 'Novembre',\n 'Dicembre'\n ],\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\n time: 'Ora',\n today: 'Oggi',\n confirm: 'Applica',\n placeholder: 'Seleziona data e ora'\n },\n en: {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\n time: 'Time',\n today: 'Today',\n confirm: 'Apply',\n placeholder: 'Select date and time'\n }\n};\n\n@Component({\n selector: 'tailwind-datetime-picker',\n imports: [TailwindIcon, TailwindButton],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDateTimePicker), multi: true }],\n templateUrl: './datetime-picker.component.html',\n styleUrl: './datetime-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDateTimePicker extends TailwindComponent implements ControlValueAccessor {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\n\n protected readonly i18n = I18N[this.lang];\n protected readonly weekDays = this.i18n.weekDays;\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\n\n readonly label = input<string>('');\n readonly placeholder = input<string | undefined>(undefined);\n /** Angular [DatePipe](https://angular.dev/api/common/DatePipe) format string. */\n readonly format = input<string>('dd/MM/yyyy HH:mm');\n\n readonly selected = signal<Date | null>(null);\n readonly draft = signal<Date | null>(null);\n readonly isDisabled = signal(false);\n readonly showPanel = signal(false);\n readonly viewMonth = signal(new Date().getMonth());\n readonly viewYear = signal(new Date().getFullYear());\n\n readonly effectivePlaceholder = computed(() => {\n const p = this.placeholder();\n return p?.trim() ? p : this.i18n.placeholder;\n });\n\n readonly displayValue = computed(() => {\n const d = this.selected();\n if (!d) return '';\n // formatDate richiede registerLocaleData per locale non-EN: leggiamo format fuori dal try\n // per non richiamare signal dentro il catch (contesto reattivo non garantito dopo un throw).\n // Per i formati numerici (default dd/MM/yyyy HH:mm) il risultato è identico in ogni locale.\n const fmt = this.format();\n try {\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\n } catch {\n return formatDate(d, fmt, 'en-US');\n }\n });\n\n readonly monthYearLabel = computed(() => `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`);\n\n readonly calendarDays = computed(() => {\n const y = this.viewYear(),\n m = this.viewMonth();\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\n const total = new Date(y, m + 1, 0).getDate();\n const days: number[] = Array(offset).fill(0);\n for (let i = 1; i <= total; i++) days.push(i);\n return days;\n });\n\n private onChange: (v: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(v: Date | null | undefined): void {\n const d = v ? new Date(v.getTime()) : null;\n this.selected.set(d);\n if (this.showPanel()) this.draft.set(d ? new Date(d.getTime()) : null);\n const ref = d ?? new Date();\n this.viewMonth.set(ref.getMonth());\n this.viewYear.set(ref.getFullYear());\n }\n\n registerOnChange(fn: (v: Date | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n togglePanel(): void {\n if (this.isDisabled()) return;\n const opening = !this.showPanel();\n if (opening) {\n const s = this.selected();\n const ref = s ? new Date(s.getTime()) : this.todayNow();\n this.draft.set(ref);\n this.viewMonth.set(ref.getMonth());\n this.viewYear.set(ref.getFullYear());\n }\n this.showPanel.set(opening);\n }\n\n apply(): void {\n const d = this.draft();\n this.selected.set(d ? new Date(d.getTime()) : null);\n this.emitValue(this.selected());\n this.showPanel.set(false);\n }\n\n prevMonth(): void {\n if (this.viewMonth() === 0) {\n this.viewMonth.set(11);\n this.viewYear.update(y => y - 1);\n } else {\n this.viewMonth.update(m => m - 1);\n }\n }\n\n nextMonth(): void {\n if (this.viewMonth() === 11) {\n this.viewMonth.set(0);\n this.viewYear.update(y => y + 1);\n } else {\n this.viewMonth.update(m => m + 1);\n }\n }\n\n selectDay(day: number): void {\n const cur = this.draft();\n this.draft.set(\n new Date(this.viewYear(), this.viewMonth(), day, cur?.getHours() ?? 0, cur?.getMinutes() ?? 0, 0, 0)\n );\n }\n\n isSelected(day: number): boolean {\n const v = this.draft();\n return !!v && v.getFullYear() === this.viewYear() && v.getMonth() === this.viewMonth() && v.getDate() === day;\n }\n\n isToday(day: number): boolean {\n const t = new Date();\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\n }\n\n goToToday(): void {\n const t = this.todayNow();\n this.viewMonth.set(t.getMonth());\n this.viewYear.set(t.getFullYear());\n this.draft.set(t);\n }\n\n onHourChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n const h = Number((e.target as HTMLSelectElement).value);\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), h, cur.getMinutes(), 0, 0));\n }\n\n onMinuteChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n const min = Number((e.target as HTMLSelectElement).value);\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), cur.getHours(), min, 0, 0));\n }\n\n private todayNow(): Date {\n const t = new Date();\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), 0, 0);\n }\n\n private emitValue(d: Date | null): void {\n this.onChange(d ? new Date(d.getTime()) : null);\n this.onTouched();\n }\n\n @HostListener('document:pointerdown', ['$event'])\n onDocumentPointerDown(event: PointerEvent): void {\n if (!this.showPanel()) return;\n const t = event.target;\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\n this.showPanel.set(false);\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocumentKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || !this.showPanel()) return;\n event.stopPropagation();\n this.showPanel.set(false);\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-neutral-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-neutral-300 rounded-md px-3 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-neutral-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"togglePanel()\" />\n <tailwind-icon\n icon=\"calendar-days\"\n [size]=\"16\"\n class=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 pointer-events-none\" />\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-80 max-w-full rounded-xl border border-neutral-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center justify-between mb-3\">\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-left\"\n ariaLabel=\"Previous month\"\n (onClick)=\"prevMonth()\" />\n <span class=\"text-sm font-semibold text-neutral-800\">{{ monthYearLabel() }}</span>\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-right\"\n ariaLabel=\"Next month\"\n (onClick)=\"nextMonth()\" />\n </div>\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track day) {\n <div class=\"text-center text-xs font-medium text-neutral-400 py-1\">{{ day }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-neutral-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-neutral-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-3 pt-3 border-t border-neutral-100 flex items-center gap-2\">\n <span class=\"text-xs font-medium text-neutral-600 shrink-0\">{{ i18n.time }}</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.getHours() ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-neutral-400 text-sm\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.getMinutes() ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-neutral-100 flex items-center justify-between gap-2\">\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"xs\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"goToToday()\">\n {{ i18n.today }}\n </tailwind-button>\n <tailwind-button\n kind=\"solid\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled() || !draft()\"\n (onClick)=\"apply()\">\n {{ i18n.confirm }}\n </tailwind-button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-step',\n templateUrl: './step.component.html',\n styleUrl: './step.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindStep extends TailwindComponent {\n readonly label = input.required<string>();\n readonly description = input<string>('');\n readonly optional = input<boolean>(false);\n readonly completed = signal(false);\n readonly isActive = signal(false);\n}\n","@if (isActive()) {\n <div class=\"py-4\"><ng-content /></div>\n}\n","import { ChangeDetectionStrategy, Component, contentChildren, input, model, effect } from '@angular/core';\nimport { TailwindStep } from './step.component';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-stepper',\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindStepper extends TailwindComponent {\n readonly activeIndex = model<number>(0);\n readonly linear = input<boolean>(false);\n\n readonly steps = contentChildren(TailwindStep);\n\n constructor() {\n super();\n effect(() => {\n const allSteps = this.steps();\n const idx = this.activeIndex();\n allSteps.forEach((s, i) => s.isActive.set(i === idx));\n });\n }\n\n goToStep(index: number): void {\n if (!this.linear() || index <= this.activeIndex()) {\n this.activeIndex.set(index);\n }\n }\n\n next(): void {\n const s = this.steps();\n if (this.activeIndex() < s.length - 1) {\n s[this.activeIndex()].completed.set(true);\n this.activeIndex.update(v => v + 1);\n }\n }\n\n previous(): void {\n if (this.activeIndex() > 0) this.activeIndex.update(v => v - 1);\n }\n}\n","<!-- Step indicators -->\n<div class=\"flex items-center mb-6\">\n @for (step of steps(); track step.label(); let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <button\n type=\"button\"\n (click)=\"goToStep(i)\"\n class=\"flex items-center gap-2 cursor-pointer group\"\n [attr.aria-current]=\"activeIndex() === i ? 'step' : null\">\n <div\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-all duration-200\"\n [class.bg-primary-600]=\"i <= activeIndex()\"\n [class.border-primary-600]=\"i <= activeIndex()\"\n [class.text-white]=\"i <= activeIndex()\"\n [class.border-neutral-300]=\"i > activeIndex()\"\n [class.text-neutral-500]=\"i > activeIndex()\">\n @if (step.completed()) {\n <tailwind-icon icon=\"check\" [size]=\"16\" />\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"hidden sm:block\">\n <p\n class=\"text-sm font-medium\"\n [class.text-primary-600]=\"i <= activeIndex()\"\n [class.text-neutral-500]=\"i > activeIndex()\">\n {{ step.label() }}\n </p>\n @if (step.description()) {\n <p class=\"text-xs text-neutral-400\">{{ step.description() }}</p>\n }\n </div>\n </button>\n @if (!last) {\n <div\n class=\"flex-1 h-0.5 mx-3 rounded-full transition-colors duration-200\"\n [class.bg-primary-600]=\"i < activeIndex()\"\n [class.bg-neutral-200]=\"i >= activeIndex()\"></div>\n }\n </div>\n }\n</div>\n<!-- Step content -->\n<ng-content />\n","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule, TailwindIcon],\n selector: 'tailwind-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindAccordionItem extends TailwindComponent {\n readonly title = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly isExpanded = signal(false);\n\n readonly onToggle = output<void>();\n\n toggle(): void {\n if (!this.disabled()) {\n this.isExpanded.update(v => !v);\n this.onToggle.emit();\n }\n }\n}\n","<div [id]=\"id()\" [ngClass]=\"class()\" class=\"border-b border-neutral-200 last:border-b-0\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"flex items-center justify-between w-full px-5 py-4 text-left text-sm font-medium text-neutral-800 hover:bg-neutral-50 transition-colors cursor-pointer\"\n [attr.aria-expanded]=\"isExpanded()\">\n <span>{{ title() }}</span>\n <tailwind-icon\n icon=\"chevron-down\"\n [size]=\"16\"\n class=\"text-neutral-400 transition-transform duration-200\"\n [class.rotate-180]=\"isExpanded()\" />\n </button>\n @if (isExpanded()) {\n <div class=\"px-5 py-4 text-sm text-neutral-600\">\n <ng-content />\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, contentChildren } from '@angular/core';\nimport { TailwindAccordionItem } from './accordion-item.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule],\n selector: 'tailwind-accordion',\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindAccordion extends TailwindComponent {\n readonly items = contentChildren(TailwindAccordionItem);\n}\n","<div\n [id]=\"id()\"\n [ngClass]=\"class()\"\n class=\"border border-neutral-200 rounded-md overflow-hidden divide-y divide-neutral-200\">\n <ng-content />\n</div>\n","export class TailwindModalRef<R = any> {\n private _closeFn!: () => void;\n private _result: R | undefined;\n\n /** @internal called by the service after component creation */\n _init(closeFn: () => void): void {\n this._closeFn = closeFn;\n }\n\n /** Close the modal resolving with the given result */\n close(result?: R): void {\n this._result = result;\n this._closeFn();\n }\n\n /** @internal read by the service after the close animation */\n _getResult(): R | undefined {\n return this._result;\n }\n}\n","import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n Type\n} from '@angular/core';\nimport { TailwindModal } from '../../components/modal/modal.component';\nimport { TailwindModalConfig } from '../../components/modal/interfaces/modal-config.interface';\nimport { TailwindModalRef } from '../../ref/modal/modal.ref';\nimport { TAILWIND_MODAL_DATA } from '../../tokens/tokens';\n\nexport type { TailwindModalConfig };\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindModalService {\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n /**\n * Open a modal programmatically.\n *\n * The `component` is instantiated and its slot elements are projected into\n * TailwindModal's ng-content slots (attribute selectors on direct children):\n * - `[tailwind-modal-title]` → header title area\n * - `[tailwind-modal-content]` → body area\n * - `[tailwind-modal-footer]` → footer area\n *\n * The component can inject `TailwindModalRef<R>` to close with a typed result\n * and `TAILWIND_MODAL_DATA` to receive the `config.data` payload.\n *\n * @returns Promise that resolves with `R` on `close(result)` or `undefined` on dismiss.\n */\n open<R = any, D = any>(component: Type<unknown>, config: TailwindModalConfig<D> = {}): Promise<R | undefined> {\n return new Promise<R | undefined>(resolve => {\n const modalRef = new TailwindModalRef<R>();\n\n const injector = Injector.create({\n providers: [\n { provide: TailwindModalRef, useValue: modalRef },\n { provide: TAILWIND_MODAL_DATA, useValue: config.data ?? null }\n ],\n parent: this.environmentInjector\n });\n\n // ── Step 1: create and render the user component ─────────────────────\n const userComp = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: injector\n });\n this.appRef.attachView(userComp.hostView);\n userComp.changeDetectorRef.detectChanges();\n\n // ── Step 2: extract slot elements from the rendered host ──────────────\n const host = userComp.location.nativeElement as HTMLElement;\n const nodes = (sel: string) => Array.from(host.querySelectorAll(`:scope > ${sel}`));\n\n // ── Step 3: create TailwindModal projecting the slot nodes ────────────\n // projectableNodes[0] → <ng-content /> (title / catch-all)\n // projectableNodes[1] → <ng-content select=\"[tailwind-modal-content]\" />\n // projectableNodes[2] → <ng-content select=\"[tailwind-modal-footer]\" />\n const modalComp = createComponent(TailwindModal, {\n environmentInjector: this.environmentInjector,\n elementInjector: injector,\n projectableNodes: [\n nodes('[tailwind-modal-title]'),\n nodes('[tailwind-modal-content]'),\n nodes('[tailwind-modal-footer]')\n ]\n });\n\n modalComp.setInput('size', config.size ?? 'md');\n modalComp.setInput('showCloseButton', config.showCloseButton ?? true);\n modalComp.setInput('closeOnBackdrop', config.closeOnBackdrop ?? true);\n modalComp.setInput('closeOnEscape', config.closeOnEscape ?? true);\n\n this.appRef.attachView(modalComp.hostView);\n document.body.appendChild(modalComp.location.nativeElement);\n\n // ── Step 4: wire close ────────────────────────────────────────────────\n modalRef._init(() => modalComp.instance.close());\n\n const sub = modalComp.instance.onClose.subscribe(() => {\n sub.unsubscribe();\n resolve(modalRef._getResult());\n modalComp.location.nativeElement.remove();\n this.appRef.detachView(modalComp.hostView);\n this.appRef.detachView(userComp.hostView);\n modalComp.destroy();\n userComp.destroy();\n });\n\n modalComp.instance.open();\n });\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { TailwindToastItem } from '../../components/toast/interfaces/toast-item.interface';\nimport { TailwindToastConfig } from '../../components/toast/interfaces/toast-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindToastService {\n private nextId = 0;\n readonly toasts = signal<TailwindToastItem[]>([]);\n\n show(config: TailwindToastConfig): number {\n const id = this.nextId++;\n const toast: TailwindToastItem = { id, severity: 'info', duration: 4000, dismissible: true, ...config };\n this.toasts.update(list => [...list, toast]);\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n success(message: string, title?: string): number {\n return this.show({ message, title, severity: 'success' });\n }\n warning(message: string, title?: string): number {\n return this.show({ message, title, severity: 'warning' });\n }\n danger(message: string, title?: string): number {\n return this.show({ message, title, severity: 'danger' });\n }\n info(message: string, title?: string): number {\n return this.show({ message, title, severity: 'info' });\n }\n\n dismiss(id: number): void {\n this.toasts.update(list => list.filter(t => t.id !== id));\n }\n clear(): void {\n this.toasts.set([]);\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindButton } from '../button/button.component';\n\nimport { TailwindToastConfig } from './interfaces/toast-config.interface';\nimport { TailwindToastItem } from './interfaces/toast-item.interface';\nimport { TailwindToastService } from '../../services';\nexport type { TailwindToastConfig, TailwindToastItem };\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-toast',\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindToast extends TailwindComponent {\n readonly toastService = inject(TailwindToastService);\n}\n","<div class=\"fixed bottom-4 right-4 z-1080 flex flex-col gap-2 max-w-sm w-full pointer-events-none\">\n @for (toast of toastService.toasts(); track toast.id) {\n <div\n class=\"pointer-events-auto rounded-xl border shadow-lg p-4 flex gap-3 animate-in slide-in-from-right-full duration-300\"\n [class.bg-success-50]=\"toast.severity === 'success'\"\n [class.border-success-200]=\"toast.severity === 'success'\"\n [class.bg-warning-50]=\"toast.severity === 'warning'\"\n [class.border-warning-200]=\"toast.severity === 'warning'\"\n [class.bg-danger-50]=\"toast.severity === 'danger'\"\n [class.border-danger-200]=\"toast.severity === 'danger'\"\n [class.bg-info-50]=\"toast.severity === 'info'\"\n [class.border-info-200]=\"toast.severity === 'info'\"\n role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (toast.title) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ toast.title }}</p>\n }\n <p class=\"text-sm\">{{ toast.message }}</p>\n </div>\n @if (toast.dismissible) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 opacity-60 hover:opacity-100\"\n ariaLabel=\"Dismiss\"\n (onClick)=\"toastService.dismiss(toast.id)\" />\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindNotification extends TailwindComponent {\n readonly title = input<string>('');\n readonly severity = input<TailwindSeverity>('info');\n readonly dismissible = input<boolean>(true);\n readonly showActions = input<boolean>(false);\n\n readonly onDismiss = output<void>();\n\n readonly computedClasses = computed(() => {\n const variantMap: Record<TailwindSeverity, string> = {\n success: 'bg-success-50 border-success-200 text-success-800',\n warning: 'bg-warning-50 border-warning-200 text-warning-800',\n danger: 'bg-danger-50 border-danger-200 text-danger-800',\n info: 'bg-info-50 border-info-200 text-info-800'\n };\n return `flex items-start rounded-lg border p-4 ${variantMap[this.severity()]}`;\n });\n}\n","<div [class]=\"computedClasses()\" role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ title() }}</p>\n }\n <p class=\"text-sm\"><ng-content /></p>\n @if (showActions()) {\n <div class=\"pt-3\">\n <ng-content select=\"[tailwind-notification-actions]\" />\n </div>\n }\n </div>\n @if (dismissible()) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 -m-1 opacity-60 hover:opacity-100\"\n ariaLabel=\"Dismiss\"\n (onClick)=\"onDismiss.emit()\" />\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-message',\n templateUrl: './message.component.html',\n styleUrl: './message.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindMessage extends TailwindComponent {\n readonly severity = input<TailwindSeverity>('info');\n\n readonly computedClasses = computed(() => {\n const variantMap: Record<TailwindSeverity, string> = {\n success: 'bg-success-50 text-success-700 border-success-200',\n warning: 'bg-warning-50 text-warning-700 border-warning-200',\n danger: 'bg-danger-50 text-danger-700 border-danger-200',\n info: 'bg-info-50 text-info-700 border-info-200'\n };\n return `text-sm px-3 py-2 rounded-lg border ${variantMap[this.severity()]}`;\n });\n}\n","<div [class]=\"computedClasses()\" role=\"status\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSkeleton extends TailwindComponent {\n readonly variant = input<'text' | 'circle' | 'rect' | 'rounded'>('text');\n readonly width = input<string>('100%');\n readonly height = input<string>('');\n\n readonly computedClasses = computed(() => {\n const base = 'tailwind-skeleton-pulse';\n const variantMap: Record<string, string> = {\n text: 'h-4 rounded',\n circle: 'rounded-full',\n rect: 'rounded-none',\n rounded: 'rounded-xl'\n };\n return `${base} ${variantMap[this.variant()]}`;\n });\n}\n","<div\n [style.width]=\"width()\"\n [style.height]=\"height() || (variant() === 'circle' ? width() : '1.5rem')\"\n [class]=\"computedClasses()\"\n aria-hidden=\"true\"></div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TailwindMenuItem, TailwindSeverity } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindMenu } from '../menu/menu.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon, TailwindMenu],\n selector: 'tailwind-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrl: './toolbar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindToolbar extends TailwindComponent {\n /** When true, uses rounded corners (`rounded-xl`). */\n readonly rounded = input<boolean>(true);\n /**\n * Orizzontale: `full` = `w-full`; `container` = larghezza responsiva (95% / 85% / 75%) centrata.\n * Verticale: ignorato per l’altezza — il rail è sempre `h-full w-full` nella colonna.\n */\n readonly width = input<'full' | 'container'>('full');\n /** Applies a stronger drop shadow. */\n readonly elevated = input<boolean>(false);\n /**\n * Colore di superficie della barra: `default` mantiene sfondo bianco;\n * i valori `TailwindSeverity` applicano tinte semantiche (come alert/notification).\n */\n readonly variant = input<TailwindSeverity | 'default'>('default');\n /** `horizontal` for a top app bar; `vertical` for a side rail (logo → menu → end). */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /** Navigation / actions rendered between logo and end slots. */\n readonly menu = input<TailwindMenuItem[]>([]);\n\n /** Emitted when a non-disabled, non-divider menu entry is activated. */\n readonly onMenuSelect = output<TailwindMenuItem>();\n\n /** Flat list for the mobile hamburger (submenu children promoted one level). */\n readonly mobileMenuItems = computed(() => this.flattenMenuItems(this.menu()));\n\n readonly submenuPlacement = computed((): 'bottom' | 'right' =>\n this.orientation() === 'horizontal' ? 'bottom' : 'right'\n );\n\n readonly submenuChevronIcon = computed(() =>\n this.orientation() === 'horizontal' ? 'chevron-down' : 'chevron-right'\n );\n\n readonly menuItemWithSubmenuClasses = computed(() => {\n const horizontal = this.orientation() === 'horizontal';\n return horizontal ? 'relative inline-flex shrink-0' : 'relative w-full';\n });\n\n readonly menuContainerClasses = computed(() =>\n this.orientation() === 'horizontal'\n ? 'min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1'\n : 'min-w-0 flex-1 flex flex-col gap-1.5 overflow-y-auto min-h-0'\n );\n\n /** Foreground on semantic surface (`text-on-*`), aligned with solid toolbar shade per variant. */\n readonly variantContrastTextClass = computed((): string | null => {\n const v = this.variant();\n if (v === 'default') {\n return null;\n }\n const map: Record<TailwindSeverity, string> = {\n success: 'text-on-success-600',\n warning: 'text-on-warning-500',\n danger: 'text-on-danger-600',\n info: 'text-on-info-600'\n };\n return map[v];\n });\n\n /** On light-on-color variants, tint masked icons to match `text-on-*`. */\n readonly menuItemIconClasses = computed(() =>\n this.variant() !== 'default' && this.variant() !== 'warning' ? 'toolbar-menu-icon-on-light' : ''\n );\n\n readonly menuItemToneClasses = computed(() => {\n const contrast = this.variantContrastTextClass();\n if (!contrast) {\n return 'text-neutral-700 hover:bg-neutral-100 hover:text-neutral-900';\n }\n return `${contrast} hover:bg-white/12`;\n });\n\n readonly menuItemButtonClasses = computed(() => {\n const horizontal = this.orientation() === 'horizontal';\n const layout = horizontal\n ? 'inline-flex shrink-0 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium'\n : 'inline-flex w-full items-center gap-2 rounded-md px-3 py-3 text-left text-sm font-medium';\n const rest =\n 'disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent';\n return [layout, this.menuItemToneClasses(), rest].join(' ');\n });\n\n readonly mobileMenuToggleClasses = computed(() =>\n [\n 'inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-2 transition-colors',\n this.menuItemToneClasses()\n ].join(' ')\n );\n\n readonly menuDividerLineClasses = computed(() =>\n this.variant() === 'default'\n ? 'mx-0.5 h-5 w-px shrink-0 self-center bg-neutral-200'\n : 'mx-0.5 h-5 w-px shrink-0 self-center bg-white/30'\n );\n\n readonly menuDividerRuleClasses = computed(() =>\n this.variant() === 'default'\n ? 'my-1 w-full border-0 border-t border-neutral-100'\n : 'my-1 w-full border-0 border-t border-white/25'\n );\n\n readonly rootClasses = computed(() => {\n const horizontal = this.orientation() === 'horizontal';\n const sizeClasses = horizontal\n ? this.width() === 'full'\n ? 'w-full h-16'\n : 'container mx-auto h-16'\n : 'h-full w-full';\n\n const variant = this.variant();\n const surfaceMap: Record<TailwindSeverity | 'default', string> = {\n default: 'bg-white border border-neutral-200',\n success: 'bg-success-600 border border-white/20',\n warning: 'bg-warning-500 border border-white/20',\n danger: 'bg-danger-600 border border-white/20',\n info: 'bg-info-600 border border-white/20'\n };\n\n const base = [\n surfaceMap[variant] ?? surfaceMap.default,\n this.variantContrastTextClass() ?? '',\n 'flex',\n sizeClasses,\n this.rounded() ? 'rounded-xl' : 'rounded-none',\n this.elevated() ? 'shadow-lg' : 'shadow-sm'\n ];\n\n if (horizontal) {\n base.push('flex-row items-center gap-3 px-4 py-3');\n } else {\n base.push('flex-col items-stretch gap-3 px-3 py-4 min-h-0');\n }\n\n return base.filter(Boolean).join(' ');\n });\n\n hasSubmenu(item: TailwindMenuItem): boolean {\n return Array.isArray(item.items) && item.items.length > 0;\n }\n\n selectMenuItem(item: TailwindMenuItem): void {\n if (item.divider || item.disabled || this.hasSubmenu(item)) {\n return;\n }\n this.onMenuSelect.emit(item);\n }\n\n private flattenMenuItems(items: TailwindMenuItem[]): TailwindMenuItem[] {\n const flat: TailwindMenuItem[] = [];\n for (const item of items) {\n if (this.hasSubmenu(item)) {\n flat.push(...item.items!);\n } else {\n flat.push(item);\n }\n }\n return flat;\n }\n\n /** True when `label` is a non-empty string after trim (icon-only entries omit or blank `label`). */\n menuItemHasVisibleLabel(item: TailwindMenuItem): boolean {\n const label = item.label;\n return typeof label === 'string' && label.trim().length > 0;\n }\n\n /** Accessible name when there is no visible label (`value`, trimmed). */\n menuItemAriaLabel(item: TailwindMenuItem): string | null {\n if (this.menuItemHasVisibleLabel(item)) {\n return null;\n }\n const v = item.value;\n return v != null && String(v).trim().length > 0 ? String(v).trim() : null;\n }\n\n menuTrackKey(index: number, item: TailwindMenuItem): string {\n return item.value ?? item.label ?? String(index);\n }\n}\n","<div [class]=\"rootClasses()\">\n <div class=\"shrink-0\">\n <ng-content select=\"[tailwind-toolbar-logo]\" />\n </div>\n @if (orientation() === 'horizontal') {\n <nav class=\"min-w-0 flex flex-1 flex-row flex-wrap items-center gap-1\" [attr.aria-label]=\"'Toolbar menu'\">\n @if (menu().length) {\n <div class=\"flex shrink-0 items-center md:hidden\">\n <button\n type=\"button\"\n [class]=\"mobileMenuToggleClasses()\"\n [attr.aria-expanded]=\"mobileToolbarMenu.isOpen()\"\n aria-haspopup=\"menu\"\n aria-label=\"Open navigation menu\"\n (click)=\"mobileToolbarMenu.toggle($event)\">\n <tailwind-icon icon=\"bars-3\" [size]=\"22\" [class]=\"menuItemIconClasses()\" />\n </button>\n <tailwind-menu\n #mobileToolbarMenu\n [items]=\"mobileMenuItems()\"\n align=\"left\"\n (onSelect)=\"selectMenuItem($event)\" />\n </div>\n }\n <div class=\"hidden min-w-0 flex-1 flex-row flex-wrap items-center gap-1 md:flex\">\n @for (item of menu(); track menuTrackKey($index, item)) {\n @if (item.divider) {\n <span [class]=\"menuDividerLineClasses()\" aria-hidden=\"true\"></span>\n } @else if (hasSubmenu(item)) {\n <div [class]=\"menuItemWithSubmenuClasses()\">\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.px-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [class.py-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n [attr.aria-expanded]=\"itemMenu.isOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"itemMenu.toggle($event)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"20\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n {{ item.label }}\n }\n <tailwind-icon [icon]=\"submenuChevronIcon()\" [size]=\"16\" [class]=\"menuItemIconClasses()\" />\n </button>\n <tailwind-menu\n #itemMenu\n [items]=\"item.items!\"\n [placement]=\"submenuPlacement()\"\n align=\"left\"\n (onSelect)=\"selectMenuItem($event)\" />\n </div>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.px-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [class.py-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n (click)=\"selectMenuItem(item)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"20\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n {{ item.label }}\n }\n </button>\n }\n }\n </div>\n </nav>\n } @else {\n <nav [class]=\"menuContainerClasses()\" [attr.aria-label]=\"'Toolbar menu'\">\n @for (item of menu(); track menuTrackKey($index, item)) {\n @if (item.divider) {\n <hr [class]=\"menuDividerRuleClasses()\" />\n } @else if (hasSubmenu(item)) {\n <div [class]=\"menuItemWithSubmenuClasses()\">\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.justify-center]=\"!menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n [attr.aria-expanded]=\"itemMenu.isOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"itemMenu.toggle($event)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"22\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n <span class=\"min-w-0 flex-1\">{{ item.label }}</span>\n }\n <tailwind-icon\n [icon]=\"submenuChevronIcon()\"\n [size]=\"18\"\n [class]=\"menuItemIconClasses()\"\n [class.ml-auto]=\"menuItemHasVisibleLabel(item)\" />\n </button>\n <tailwind-menu\n #itemMenu\n [items]=\"item.items!\"\n [placement]=\"submenuPlacement()\"\n align=\"left\"\n (onSelect)=\"selectMenuItem($event)\" />\n </div>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.justify-center]=\"!menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n (click)=\"selectMenuItem(item)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"22\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n {{ item.label }}\n }\n </button>\n }\n }\n </nav>\n }\n <div\n class=\"flex flex-wrap items-center gap-2 shrink-0\"\n [class.toolbar-end-vertical]=\"orientation() === 'vertical'\"\n [class.justify-end]=\"orientation() === 'horizontal'\"\n [class.mt-auto]=\"orientation() === 'vertical'\"\n [class.w-full]=\"orientation() === 'vertical'\"\n [class.justify-center]=\"orientation() === 'vertical'\">\n <ng-content select=\"[tailwind-toolbar-end]\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-divider',\n templateUrl: './divider.component.html',\n styleUrl: './divider.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDivider extends TailwindComponent {\n /** Rule direction */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n /** Adds horizontal margin to the rule (horizontal orientation only). */\n readonly inset = input<boolean>(false);\n /** Border style for the rule */\n readonly variant = input<'solid' | 'dashed'>('solid');\n /** Centered text between two lines (horizontal only; ignored when empty). */\n readonly label = input<string>('');\n\n readonly isLabeledHorizontal = computed(() => this.orientation() === 'horizontal' && !!this.label()?.trim());\n\n readonly ruleClasses = computed(() => {\n const inset = this.inset() && this.orientation() === 'horizontal' ? 'mx-4' : '';\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\n\n if (this.orientation() === 'vertical') {\n return ['self-stretch shrink-0 w-px min-h-full border-0 border-l', variant, 'border-neutral-200'].join(' ');\n }\n\n return ['w-full border-0 border-t', variant, 'border-neutral-200', 'my-4', inset].filter(Boolean).join(' ');\n });\n\n /** Top rule for labeled horizontal layout */\n readonly ruleLineClass = computed(() => {\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\n return ['border-neutral-200', variant].join(' ');\n });\n\n readonly labeledRowClass = computed(() =>\n ['flex items-center gap-3 w-full my-4', this.inset() ? 'mx-4' : ''].filter(Boolean).join(' ')\n );\n}\n","@if (isLabeledHorizontal()) {\n <div [class]=\"labeledRowClass()\" role=\"separator\" [attr.aria-label]=\"label()\">\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\n <span class=\"text-xs font-medium text-neutral-500 shrink-0\">{{ label() }}</span>\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\n </div>\n} @else {\n <div [class]=\"ruleClasses()\" role=\"separator\"></div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSize, TailwindSeverity } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindMeterSegment } from './interfaces/meter-segment.interface';\n\n@Component({\n selector: 'tailwind-meter',\n templateUrl: './meter.component.html',\n styleUrl: './meter.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindMeter extends TailwindComponent {\n /** Segments rendered as proportional blocks in the bar. */\n readonly segments = input<TailwindMeterSegment[]>([]);\n /**\n * Scale maximum. Each segment `value` is shown as `value / max` of the bar width.\n * Default 100 (percent-style values).\n */\n readonly max = input<number>(100);\n /** Show a simple legend under the bar */\n readonly showLabels = input<boolean>(true);\n /** Track height */\n readonly size = input<TailwindSize>('md');\n\n readonly trackHeightClass = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'h-1.5',\n sm: 'h-2',\n md: 'h-2.5',\n lg: 'h-3.5',\n xl: 'h-4'\n };\n return map[this.size()];\n });\n\n readonly totalValue = computed(() => this.segments().reduce((s, x) => s + Math.max(0, x.value), 0));\n\n readonly scaleMax = computed(() => {\n const m = this.max();\n if (m > 0) {\n return m;\n }\n const t = this.totalValue();\n return t > 0 ? t : 1;\n });\n\n readonly segmentLayouts = computed(() => {\n const cap = this.scaleMax();\n return this.segments().map(seg => {\n const pct = cap > 0 ? (Math.max(0, seg.value) / cap) * 100 : 0;\n const variant = seg.variant ?? 'primary';\n return { ...seg, widthPct: pct, barClass: this.variantToBarClass(variant) };\n });\n });\n\n readonly trackContainerClasses = computed(\n () => `flex w-full overflow-hidden rounded-full bg-neutral-200 ${this.trackHeightClass()}`\n );\n\n legendSwatchClass(variant?: TailwindSeverity | 'primary'): string {\n return this.variantToBarClass(variant ?? 'primary');\n }\n\n private variantToBarClass(variant: TailwindSeverity | 'primary'): string {\n const map: Record<string, string> = {\n primary: 'bg-primary-600',\n success: 'bg-success-600',\n warning: 'bg-warning-500',\n danger: 'bg-danger-600',\n info: 'bg-info-600'\n };\n return map[variant] ?? map['primary'];\n }\n}\n","<div class=\"w-full space-y-2\">\n <div\n [class]=\"trackContainerClasses()\"\n role=\"meter\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"scaleMax()\"\n [attr.aria-valuenow]=\"totalValue()\"\n [attr.aria-label]=\"'Meter'\">\n @for (seg of segmentLayouts(); track $index) {\n @if (seg.widthPct > 0) {\n <div\n class=\"h-full min-w-0 transition-all duration-300 ease-out\"\n [class]=\"seg.barClass\"\n [style.width.%]=\"seg.widthPct\"\n [attr.title]=\"seg.label + ': ' + seg.value\"></div>\n }\n }\n </div>\n\n @if (showLabels()) {\n <div class=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-neutral-600\">\n @for (seg of segments(); track $index) {\n <span class=\"inline-flex items-center gap-1.5\">\n <span class=\"inline-block size-2 rounded-sm shrink-0\" [class]=\"legendSwatchClass(seg.variant)\"></span>\n <span>{{ seg.label }}</span>\n <span class=\"text-neutral-400\">({{ seg.value }})</span>\n </span>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSeverity, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n/** Value model: single number or sorted pair when `range` is true */\nexport type TailwindSliderValue = number | [number, number];\n\n@Component({\n selector: 'tailwind-slider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindSlider),\n multi: true\n }\n ],\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSlider extends TailwindComponent implements ControlValueAccessor {\n /** Minimum bound */\n readonly min = input<number>(0);\n /** Maximum bound */\n readonly max = input<number>(100);\n /** Step increment */\n readonly step = input<number>(1);\n /** Two-thumb range mode */\n readonly range = input<boolean>(false);\n /** Layout */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n /** Tick marks at each step */\n readonly showTicks = input<boolean>(false);\n /** Control size */\n readonly size = input<TailwindSize>('md');\n /** Track fill / thumb color */\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\n\n readonly trackRef = viewChild<ElementRef<HTMLElement>>('track');\n\n /** Single-thumb value */\n readonly singleValue = signal(0);\n /** Range: lower value */\n readonly rangeLow = signal(0);\n /** Range: upper value */\n readonly rangeHigh = signal(100);\n\n /** Disabled via template (combined with form `setDisabledState`) */\n readonly hostDisabled = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n readonly isDisabled = signal(false);\n\n readonly isEffectivelyDisabled = computed(() => this.isDisabled() || this.hostDisabled());\n\n private onChange: (v: TailwindSliderValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly activeThumb = signal<null | 0 | 1>(null);\n\n readonly thumbSizeClass = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6'\n };\n return map[this.size()];\n });\n\n readonly trackThickness = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-2.5',\n xl: 'h-3'\n };\n return map[this.size()];\n });\n\n readonly verticalTrackThickness = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'w-1',\n sm: 'w-1.5',\n md: 'w-2',\n lg: 'w-2.5',\n xl: 'w-3'\n };\n return map[this.size()];\n });\n\n /**\n * Uses theme CSS variables (`--color-*`) so accent colors work even when dynamic\n * `bg-*` utilities are not present in the compiled stylesheet (Tailwind content scan).\n */\n readonly accentVars = computed(() => {\n const name = this.variant();\n return {\n fill: `var(--color-${name}-500)`,\n thumb: `var(--color-${name}-600)`,\n ring: `var(--color-${name}-500)`\n };\n });\n\n readonly singlePct = computed(() => this.valueToPct(this.singleValue()));\n\n readonly lowPct = computed(() => this.valueToPct(this.rangeLow()));\n readonly highPct = computed(() => this.valueToPct(this.rangeHigh()));\n\n readonly fillStartPct = computed(() => (this.range() ? Math.min(this.lowPct(), this.highPct()) : 0));\n\n readonly fillWidthPct = computed(() => (this.range() ? Math.abs(this.highPct() - this.lowPct()) : this.singlePct()));\n\n readonly tickPositions = computed(() => {\n if (!this.showTicks()) {\n return [] as number[];\n }\n const lo = this.min();\n const hi = this.max();\n const st = this.step();\n if (st <= 0 || hi < lo) {\n return [];\n }\n const steps = Math.round((hi - lo) / st);\n const out: number[] = [];\n for (let i = 0; i <= steps; i++) {\n out.push(this.valueToPct(lo + i * st));\n }\n return out;\n });\n\n writeValue(value: TailwindSliderValue | null): void {\n const lo = this.min();\n const hi = this.max();\n if (this.range()) {\n const pair = Array.isArray(value) ? value : [lo, hi];\n const a = this.snap(Math.min(pair[0] ?? lo, pair[1] ?? hi));\n const b = this.snap(Math.max(pair[0] ?? lo, pair[1] ?? hi));\n this.rangeLow.set(Math.min(a, b));\n this.rangeHigh.set(Math.max(a, b));\n } else {\n const n = Array.isArray(value) ? value[0] : value;\n const num = typeof n === 'number' && !Number.isNaN(n) ? n : lo;\n this.singleValue.set(this.snap(num));\n }\n }\n\n registerOnChange(fn: (v: TailwindSliderValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n valueToPct(v: number): number {\n const lo = this.min();\n const hi = this.max();\n if (hi === lo) {\n return 0;\n }\n return ((this.snap(v) - lo) / (hi - lo)) * 100;\n }\n\n snap(raw: number): number {\n const lo = this.min();\n const hi = this.max();\n const st = this.step();\n if (st <= 0) {\n return Math.min(hi, Math.max(lo, raw));\n }\n const stepped = Math.round((raw - lo) / st) * st + lo;\n const rounded = Math.round(stepped * 1e6) / 1e6;\n return Math.min(hi, Math.max(lo, rounded));\n }\n\n pctToValue(pct: number): number {\n const lo = this.min();\n const hi = this.max();\n const v = lo + (pct / 100) * (hi - lo);\n return this.snap(v);\n }\n\n onThumbPointerDown(event: PointerEvent, thumbIndex: 0 | 1): void {\n event.stopPropagation();\n this.onTrackPointerDown(event, thumbIndex);\n }\n\n onTrackPointerDown(event: PointerEvent, thumbIndex: 0 | 1 | null): void {\n if (this.isEffectivelyDisabled()) {\n return;\n }\n event.preventDefault();\n const track = this.trackRef()?.nativeElement;\n if (!track) {\n return;\n }\n\n let thumb: 0 | 1 | null = thumbIndex;\n if (!this.range()) {\n thumb = null;\n } else if (thumb === null) {\n const v = this.readValueFromPointer(event, track);\n const low = this.rangeLow();\n const high = this.rangeHigh();\n const d0 = Math.abs(v - low);\n const d1 = Math.abs(v - high);\n thumb = d0 <= d1 ? 0 : 1;\n }\n\n this.activeThumb.set(thumb);\n this.applyPointer(event, track, thumb);\n\n if (typeof track.setPointerCapture === 'function') {\n track.setPointerCapture(event.pointerId);\n }\n\n const move = (ev: PointerEvent) => this.applyPointer(ev, track, thumb);\n const up = (ev: PointerEvent) => {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', up);\n document.removeEventListener('pointercancel', up);\n try {\n track.releasePointerCapture(ev.pointerId);\n } catch {\n /* ignore */\n }\n this.activeThumb.set(null);\n this.onTouched();\n };\n document.addEventListener('pointermove', move);\n document.addEventListener('pointerup', up);\n document.addEventListener('pointercancel', up);\n }\n\n private readValueFromPointer(event: PointerEvent, track: HTMLElement): number {\n const rect = track.getBoundingClientRect();\n const horizontal = this.orientation() === 'horizontal';\n let ratio: number;\n if (horizontal) {\n ratio = (event.clientX - rect.left) / rect.width;\n } else {\n ratio = 1 - (event.clientY - rect.top) / rect.height;\n }\n ratio = Math.min(1, Math.max(0, ratio));\n return this.pctToValue(ratio * 100);\n }\n\n private applyPointer(event: PointerEvent, track: HTMLElement, thumbIndex: 0 | 1 | null): void {\n const next = this.readValueFromPointer(event, track);\n if (this.range()) {\n const idx = thumbIndex ?? 0;\n if (idx === 0) {\n const hi = this.rangeHigh();\n this.rangeLow.set(this.snap(Math.min(next, hi)));\n } else {\n const lo = this.rangeLow();\n this.rangeHigh.set(this.snap(Math.max(next, lo)));\n }\n this.onChange([this.rangeLow(), this.rangeHigh()]);\n } else {\n this.singleValue.set(next);\n this.onChange(this.singleValue());\n }\n }\n\n onKeyDown(event: KeyboardEvent, thumbIndex: 0 | 1): void {\n if (this.isEffectivelyDisabled()) {\n return;\n }\n const keys = ['ArrowLeft', 'ArrowRight', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\n if (!keys.includes(event.key)) {\n return;\n }\n event.preventDefault();\n const lo = this.min();\n const hi = this.max();\n const st = this.step();\n const horizontal = this.orientation() === 'horizontal';\n const decKey = horizontal ? 'ArrowLeft' : 'ArrowDown';\n const incKey = horizontal ? 'ArrowRight' : 'ArrowUp';\n\n const delta = (key: string) => {\n if (key === 'Home') {\n return lo - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\n }\n if (key === 'End') {\n return hi - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\n }\n if (key === decKey) {\n return -st;\n }\n if (key === incKey) {\n return st;\n }\n return 0;\n };\n\n const d = delta(event.key);\n if (d === 0) {\n return;\n }\n\n if (this.range()) {\n if (thumbIndex === 0) {\n const next = this.snap(this.rangeLow() + d);\n this.rangeLow.set(Math.min(next, this.rangeHigh()));\n } else {\n const next = this.snap(this.rangeHigh() + d);\n this.rangeHigh.set(Math.max(next, this.rangeLow()));\n }\n this.onChange([this.rangeLow(), this.rangeHigh()]);\n } else {\n this.singleValue.set(this.snap(this.singleValue() + d));\n this.onChange(this.singleValue());\n }\n }\n}\n","@if (orientation() === 'horizontal') {\n <div\n #track\n class=\"relative w-full touch-none select-none py-3\"\n [class.opacity-50]=\"isEffectivelyDisabled()\"\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\n <div class=\"relative h-6 w-full\">\n <!-- rail -->\n <div\n class=\"pointer-events-none absolute left-0 right-0 top-1/2 -translate-y-1/2 rounded-full bg-neutral-200\"\n [class]=\"trackThickness()\"></div>\n\n @if (showTicks()) {\n @for (p of tickPositions(); track $index) {\n <div\n class=\"pointer-events-none absolute top-1/2 h-2 w-px -translate-x-1/2 -translate-y-1/2 bg-neutral-300\"\n [style.left.%]=\"p\"></div>\n }\n }\n\n <!-- fill -->\n <div\n class=\"pointer-events-none absolute top-1/2 z-1 -translate-y-1/2 rounded-full\"\n [class]=\"trackThickness()\"\n [style.background-color]=\"accentVars().fill\"\n [style.left.%]=\"fillStartPct()\"\n [style.width.%]=\"fillWidthPct()\"></div>\n\n @if (range()) {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.left.%]=\"lowPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeLow()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.left.%]=\"highPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeHigh()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\n (keydown)=\"onKeyDown($event, 1)\"></button>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.left.%]=\"singlePct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"singleValue()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n }\n </div>\n </div>\n} @else {\n <div\n #track\n class=\"relative mx-auto h-52 w-10 touch-none select-none\"\n [class.opacity-50]=\"isEffectivelyDisabled()\"\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\n <div class=\"relative h-full w-full\">\n <div\n class=\"pointer-events-none absolute bottom-0 left-1/2 top-0 -translate-x-1/2 rounded-full bg-neutral-200\"\n [class]=\"verticalTrackThickness()\"></div>\n\n @if (showTicks()) {\n @for (p of tickPositions(); track $index) {\n <div\n class=\"pointer-events-none absolute left-1/2 w-2 h-px -translate-x-1/2 translate-y-1/2 bg-neutral-300\"\n [style.bottom.%]=\"p\"></div>\n }\n }\n\n <div\n class=\"pointer-events-none absolute bottom-0 left-1/2 z-1 -translate-x-1/2 rounded-full\"\n [class]=\"verticalTrackThickness()\"\n [style.background-color]=\"accentVars().fill\"\n [style.bottom.%]=\"fillStartPct()\"\n [style.height.%]=\"fillWidthPct()\"></div>\n\n @if (range()) {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.bottom.%]=\"lowPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeLow()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.bottom.%]=\"highPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeHigh()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\n (keydown)=\"onKeyDown($event, 1)\"></button>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.bottom.%]=\"singlePct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"singleValue()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n }\n </div>\n </div>\n}\n","// Batch 1 — Foundation\nexport * from './button/button.component';\nexport * from './icon/icon.component';\nexport * from './input/input.component';\nexport * from './textarea/textarea.component';\nexport * from './upload/upload.component';\nexport * from './input-otp/input-otp.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio-group.component';\nexport * from './select/select.component';\nexport * from './autocomplete/autocomplete.component';\nexport * from './toggle/toggle.component';\nexport * from './badge/badge.component';\nexport * from './title/title.component';\nexport * from './card/card.component';\nexport * from './alert/alert.component';\nexport * from './spinner/spinner.component';\n\n// Batch 2 — Intermediate\nexport * from './modal/modal.component';\nexport * from './tabs/tab.component';\nexport * from './tabs/tab-group.component';\nexport * from './tooltip/tooltip.component';\nexport * from '../directives/tooltip/tooltip.directive';\nexport * from './progress-bar/progress-bar.component';\nexport * from './menu/menu.component';\nexport * from './drawer/drawer.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './pagination/pagination.component';\nexport * from './tag/tag.component';\n\n// Batch 3 — Advanced\nexport * from './table/table.component';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './stepper/step.component';\nexport * from './stepper/stepper.component';\nexport * from './accordion/accordion-item.component';\nexport * from './accordion/accordion.component';\nexport * from './toast/toast.component';\nexport * from './notification/notification.component';\nexport * from './message/message.component';\nexport * from './skeleton/skeleton.component';\nexport * from './toolbar/toolbar.component';\nexport * from './divider/divider.component';\nexport * from './meter/interfaces/meter-segment.interface';\nexport * from './meter/meter.component';\nexport * from './slider/slider.component';\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n inject,\n makeEnvironmentProviders,\n PLATFORM_ID,\n provideAppInitializer,\n type EnvironmentProviders,\n type Provider\n} from '@angular/core';\nimport {\n TAILWIND_BUTTON_KIND,\n TAILWIND_COMPONENTS_SIZE,\n TAILWIND_DATETIME_LANGUAGE,\n TAILWIND_ICON_SIZE,\n TAILWIND_PAGINATION_SUMMARY\n} from '../tokens';\nimport { TailwindComponentsConfig, TailwindDefineThemeConfig } from './interfaces/theme-config.interface';\nimport {\n TailwindThemeColorShade,\n TailwindThemeSemantic,\n TailwindThemeSemanticPaletteObject,\n TailwindThemeSemanticShades,\n TailwindThemeSeverityColor\n} from './types/theme-config.types';\n\n/**\n * Builds `Provider` entries for each set field on `config`.\n * Used by {@link defineTheme} and {@link provideTailwindComponents}.\n */\nfunction providersFromTailwindComponentsConfig(config: TailwindComponentsConfig): Provider[] {\n const providers: Provider[] = [];\n\n if (config.iconSize !== undefined) {\n providers.push({ provide: TAILWIND_ICON_SIZE, useValue: config.iconSize });\n }\n if (config.datetimeLanguage !== undefined) {\n providers.push({ provide: TAILWIND_DATETIME_LANGUAGE, useValue: config.datetimeLanguage });\n }\n if (config.componentsSize !== undefined) {\n providers.push({ provide: TAILWIND_COMPONENTS_SIZE, useValue: config.componentsSize });\n }\n if (config.buttonKind !== undefined) {\n providers.push({ provide: TAILWIND_BUTTON_KIND, useValue: config.buttonKind });\n }\n if (config.paginationSummary !== undefined) {\n providers.push({ provide: TAILWIND_PAGINATION_SUMMARY, useValue: config.paginationSummary });\n }\n\n return providers;\n}\n\n/**\n * Registers environment-scoped providers for library injection tokens only (no theme `colors`).\n * Prefer {@link defineTheme}, which registers the same tokens when set plus optional CSS variables.\n *\n * @deprecated Use {@link defineTheme} with the same fields (`iconSize`, `datetimeLanguage`, etc.).\n */\nexport function provideTailwindComponents(config: TailwindComponentsConfig): EnvironmentProviders {\n return makeEnvironmentProviders(providersFromTailwindComponentsConfig(config));\n}\n\nconst SHADES_WITH_950 = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;\nconst SHADES_TO_900 = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900] as const;\n\nfunction shadesForSemantic(semantic: TailwindThemeSemantic): readonly number[] {\n switch (semantic) {\n case 'success':\n case 'warning':\n case 'danger':\n case 'info':\n return SHADES_TO_900;\n default:\n return SHADES_WITH_950;\n }\n}\n\nfunction isValidShadeKey(key: string): key is TailwindThemeColorShade {\n return (\n key === '50' ||\n key === '100' ||\n key === '200' ||\n key === '300' ||\n key === '400' ||\n key === '500' ||\n key === '600' ||\n key === '700' ||\n key === '800' ||\n key === '900' ||\n key === '950'\n );\n}\n\nfunction isSemanticPaletteObject(value: object): value is TailwindThemeSemanticPaletteObject {\n return (\n 'shades' in value &&\n typeof (value as TailwindThemeSemanticPaletteObject).shades === 'object' &&\n (value as TailwindThemeSemanticPaletteObject).shades !== null\n );\n}\n\n/**\n * Normalizes object `colors` values: legacy flat shade map vs `{ shades, on? }`.\n */\nfunction normalizeSemanticColorObject(value: Exclude<TailwindThemeSeverityColor, string>): {\n shades: TailwindThemeSemanticShades;\n on?: TailwindThemeSemanticShades;\n} {\n if (isSemanticPaletteObject(value)) {\n return { shades: value.shades, on: value.on };\n }\n return { shades: value as TailwindThemeSemanticShades };\n}\n\nfunction pushShadeVariables(\n semantic: TailwindThemeSemantic,\n shades: TailwindThemeSemanticShades,\n entries: Array<[string, string]>\n): void {\n for (const [shade, color] of Object.entries(shades)) {\n if (!isValidShadeKey(shade) || color === undefined || color === '') {\n continue;\n }\n entries.push([`--color-${semantic}-${shade}`, color]);\n }\n}\n\nfunction pushOnShadeVariables(\n semantic: TailwindThemeSemantic,\n on: TailwindThemeSemanticShades | undefined,\n entries: Array<[string, string]>\n): void {\n if (!on) {\n return;\n }\n for (const [shade, color] of Object.entries(on)) {\n if (!isValidShadeKey(shade) || color === undefined || color === '') {\n continue;\n }\n entries.push([`--color-on-${semantic}-${shade}`, color]);\n }\n}\n\n/**\n * Builds `[CSS custom property name, value]` pairs for {@link defineTheme}.\n * Exported for unit tests.\n */\nexport function buildTailwindThemeVariableEntries(config: TailwindDefineThemeConfig): Array<[string, string]> {\n const colors = config.colors;\n if (!colors) {\n return [];\n }\n\n const entries: Array<[string, string]> = [];\n const dangerOrError = colors.danger ?? colors.error;\n\n const pairs: Array<[TailwindThemeSemantic, TailwindThemeSeverityColor | undefined]> = [\n ['primary', colors.primary],\n ['neutral', colors.neutral],\n ['success', colors.success],\n ['warning', colors.warning],\n ['danger', dangerOrError],\n ['info', colors.info]\n ];\n\n for (const [semantic, value] of pairs) {\n if (value === undefined) {\n continue;\n }\n if (typeof value === 'string') {\n const palette = value.trim();\n if (!palette) {\n continue;\n }\n for (const shade of shadesForSemantic(semantic)) {\n entries.push([`--color-${semantic}-${shade}`, `var(--color-${palette}-${shade})`]);\n }\n } else {\n const { shades, on } = normalizeSemanticColorObject(value);\n pushShadeVariables(semantic, shades, entries);\n pushOnShadeVariables(semantic, on, entries);\n }\n }\n\n return entries;\n}\n\nfunction applyTailwindThemeToElement(element: HTMLElement, config: TailwindDefineThemeConfig): void {\n for (const [prop, val] of buildTailwindThemeVariableEntries(config)) {\n element.style.setProperty(prop, val);\n }\n}\n\n/**\n * Registers environment-scoped library defaults: optional **injection tokens** from {@link TailwindComponentsConfig}\n * plus an app initializer that applies optional **`colors`** on\n * `document.documentElement` in the browser. Add as a single entry in `providers` (no spread).\n *\n * Palette **strings** (e.g. `'indigo'`) rely on `--color-indigo-*` existing in the CSS bundle; the\n * library stylesheet safelists Tailwind’s default palette names for that reason.\n */\nexport function defineTheme(config: TailwindDefineThemeConfig): EnvironmentProviders {\n const tokenProviders: Provider[] = providersFromTailwindComponentsConfig(config);\n\n return makeEnvironmentProviders([\n ...tokenProviders,\n provideAppInitializer(() => {\n const platformId = inject(PLATFORM_ID);\n if (!isPlatformBrowser(platformId)) {\n return;\n }\n const doc = inject(DOCUMENT);\n applyTailwindThemeToElement(doc.documentElement, config);\n })\n ]);\n}\n","/*\n * Public API Surface of angular-tailwind-components\n */\n\n// Models & Types\nexport * from './lib/models';\n\n// Directives\nexport * from './lib/directives';\n\n// Components\nexport * from './lib/components';\n\n// Services\nexport * from './lib/services';\n\n// Tokens\nexport * from './lib/tokens';\n\n// App-level providers\nexport * from './lib/providers';\n\n// Refs\nexport * from './lib/ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["I18N"],"mappings":"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"}
1
+ {"version":3,"file":"angular-tailwind-components.mjs","sources":["../../../projects/angular-tailwind-components/src/lib/models/types.ts","../../../projects/angular-tailwind-components/src/lib/models/icons.ts","../../../projects/angular-tailwind-components/src/lib/components/tailwind.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/angular-tailwind-components/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-table-row.directive.ts","../../../projects/angular-tailwind-components/src/lib/tokens/tokens.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.html","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-sort-header.directive.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.html","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.html","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.ts","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.html","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.ts","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.html","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.html","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.ts","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.html","../../../projects/angular-tailwind-components/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/angular-tailwind-components/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.html","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.ts","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.html","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.ts","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.html","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.html","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.ts","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.html","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.ts","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.ts","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.html","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.html","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.ts","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.html","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.html","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.ts","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.html","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.html","../../../projects/angular-tailwind-components/src/lib/ref/modal/modal.ref.ts","../../../projects/angular-tailwind-components/src/lib/services/modal/modal.service.ts","../../../projects/angular-tailwind-components/src/lib/services/toast/toast.service.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.html","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.ts","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.html","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.ts","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.html","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.html","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.html","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.ts","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.html","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.html","../../../projects/angular-tailwind-components/src/lib/components/index.ts","../../../projects/angular-tailwind-components/src/lib/providers/theme-define.provider.ts","../../../projects/angular-tailwind-components/src/public-api.ts","../../../projects/angular-tailwind-components/src/angular-tailwind-components.ts"],"sourcesContent":["/** Common types used across all components */\n\n/** Size variants for components */\nexport type TailwindSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Color variants for buttons and interactive elements */\nexport type TailwindColor = 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info' | 'transparent';\n\n/** Button kinds */\nexport type TailwindButtonKind = 'solid' | 'flat' | 'outlined' | 'ghost' | 'text';\n\n/** ARIA role for `TailwindButton` */\nexport type TailwindButtonRole = 'button' | 'menuitem' | 'tab' | 'switch' | 'checkbox' | 'radio';\n\n/** Alert/feedback color variants */\nexport type TailwindSeverity = 'success' | 'warning' | 'danger' | 'info';\n\n/** Position variants for overlays */\nexport type TailwindPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/** Icon placement relative to button label */\nexport type TailwindIconPosition = 'left' | 'right';\n\n/** Shape variants */\nexport type TailwindShape = 'rounded' | 'pill' | 'square';\n\n/** Semantic heading level for `TailwindTitle` */\nexport type TailwindTitleTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/**\n * Pixel width and height for `TailwindIcon`. Intended range **16–64**; values outside it are clamped at runtime.\n */\nexport type TailwindIconSize = number;\n\n/** Option interface for select/radio/checkbox groups */\nexport interface TailwindOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TailwindOptionGroup<T = unknown> extends TailwindOption<T> {\n description?: string;\n}\n\nexport interface TailwindMenuItem {\n label?: string;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n value?: string;\n items?: Exclude<TailwindMenuItem, 'items'>[];\n}\n","/**\n * Heroicons outline icon names (kebab-case). SVG assets in `public/tailwind-icons/`.\n * Generated by scripts/copy-icons.js sync — do not edit manually.\n *\n * Icons: Heroicons (Tailwind Labs), MIT — https://heroicons.com/\n */\nexport const TAILWIND_HEROICON_NAMES = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-small-down',\n 'arrow-small-left',\n 'arrow-small-right',\n 'arrow-small-up',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'book-open',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'minus-small',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'plus-small',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\n/** Use names listed in {@link TAILWIND_HEROICON_NAMES} (compile-time union omitted — large sets break Angular template inference). */\nexport type TailwindHeroicon = string;\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n host: {\n '[attr.id]': 'id() || null',\n '[class]': 'class() || null'\n }\n})\nexport abstract class TailwindComponent {\n /** Optional ID for the component */\n readonly id = input<string>();\n\n /** Custom CSS classes to append */\n readonly class = input<string>(undefined, { alias: 'class' });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n OnDestroy,\n AfterViewInit,\n NgZone,\n ElementRef,\n viewChild\n} from '@angular/core';\nimport { TailwindPosition } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { DOCUMENT } from '@angular/common';\n\n@Component({\n selector: 'tailwind-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTooltip extends TailwindComponent implements AfterViewInit, OnDestroy {\n /** Tooltip text */\n readonly text = input.required<string>();\n /** Position relative to trigger */\n readonly position = input<TailwindPosition>('top');\n\n readonly isVisible = signal(false);\n readonly topPos = signal<number>(0);\n readonly leftPos = signal<number>(0);\n\n private targetElement: HTMLElement | null = null;\n\n private document = inject(DOCUMENT);\n private ngZone = inject(NgZone);\n private el = inject(ElementRef);\n\n readonly tooltipEl = viewChild.required<ElementRef<HTMLDivElement>>('tooltipEl');\n\n private scrollListener = () => this.updatePosition();\n\n readonly tooltipClasses = computed(() => {\n const base = [\n 'fixed z-[1070] px-3 py-1.5',\n 'text-xs font-medium text-white bg-neutral-900 rounded-lg',\n 'shadow-lg whitespace-nowrap pointer-events-none',\n 'transition-opacity duration-150',\n this.isVisible() ? 'opacity-100' : 'opacity-0'\n ];\n return base.join(' ');\n });\n\n readonly arrowClasses = computed(() => {\n const base = 'absolute w-2 h-2 bg-neutral-900 rotate-45';\n\n const posMap: Record<TailwindPosition, string> = {\n top: 'top-full left-1/2 -translate-x-1/2 -mt-1',\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-1',\n left: 'left-full top-1/2 -translate-y-1/2 -ml-1',\n right: 'right-full top-1/2 -translate-y-1/2 -mr-1'\n };\n\n return `${base} ${posMap[this.position()]}`;\n });\n\n ngAfterViewInit() {\n this.updatePosition();\n }\n\n ngOnDestroy() {\n this.hide();\n }\n\n setTarget(el: HTMLElement) {\n this.targetElement = el;\n this.updatePosition();\n }\n\n private getFixedOrigin(): { top: number; left: number } {\n const dummy = this.document.createElement('div');\n dummy.style.position = 'fixed';\n dummy.style.top = '0';\n dummy.style.left = '0';\n this.el.nativeElement.appendChild(dummy);\n const rect = dummy.getBoundingClientRect();\n this.el.nativeElement.removeChild(dummy);\n return { top: rect.top, left: rect.left };\n }\n\n updatePosition(): void {\n if (!this.targetElement) return;\n\n const origin = this.getFixedOrigin();\n const targetRect = this.targetElement.getBoundingClientRect();\n const tooltipRect = this.tooltipEl().nativeElement.getBoundingClientRect();\n\n let top = 0;\n let left = 0;\n\n switch (this.position()) {\n case 'top':\n top = targetRect.top - tooltipRect.height - 8;\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\n break;\n case 'bottom':\n top = targetRect.bottom + 8;\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\n break;\n case 'left':\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\n left = targetRect.left - tooltipRect.width - 8;\n break;\n case 'right':\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\n left = targetRect.right + 8;\n break;\n }\n\n this.ngZone.run(() => {\n this.topPos.set(top - origin.top);\n this.leftPos.set(left - origin.left);\n });\n }\n\n show(): void {\n this.updatePosition();\n this.ngZone.run(() => {\n this.isVisible.set(true);\n });\n this.ngZone.runOutsideAngular(() => {\n window.addEventListener('scroll', this.scrollListener, true);\n window.addEventListener('resize', this.scrollListener, true);\n });\n }\n\n hide(): void {\n this.ngZone.run(() => {\n this.isVisible.set(false);\n });\n window.removeEventListener('scroll', this.scrollListener, true);\n window.removeEventListener('resize', this.scrollListener, true);\n }\n}\n","<div #tooltipEl role=\"tooltip\" [class]=\"tooltipClasses()\" [style.top.px]=\"topPos()\" [style.left.px]=\"leftPos()\">\n {{ text() }}\n <!-- Arrow -->\n <div [class]=\"arrowClasses()\"></div>\n</div>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n OnDestroy,\n ViewContainerRef,\n inject,\n input\n} from '@angular/core';\nimport { TailwindTooltip } from '../../components/tooltip/tooltip.component';\nimport { TailwindPosition } from '../../models';\n\n@Directive({\n selector: '[tooltip]',\n standalone: true\n})\nexport class TailwindTooltipDirective implements OnDestroy {\n /** Tooltip text */\n readonly tooltip = input.required<string>();\n /** Position relative to the trigger */\n readonly tooltipPosition = input<TailwindPosition>('top');\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private componentRef: ComponentRef<TailwindTooltip> | null = null;\n\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject(ElementRef);\n\n private get host(): HTMLElement {\n return this.el.nativeElement;\n }\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n show(): void {\n this.clearHideTimeout();\n\n if (this.componentRef) {\n this.updateTooltipComponent();\n this.componentRef.instance.show();\n return;\n }\n\n if (this.showTimeout) {\n return;\n }\n\n this.showTimeout = setTimeout(() => {\n this.showTimeout = null;\n this.createComponent();\n }, 200);\n }\n\n @HostListener('mouseleave')\n hideFromPointer(): void {\n this.hide();\n }\n\n @HostListener('focusout', ['$event'])\n hideFromFocus(event: FocusEvent): void {\n const related = event.relatedTarget as Node | null;\n if (related && this.host.contains(related)) {\n return;\n }\n\n queueMicrotask(() => {\n if (!this.host.contains(document.activeElement)) {\n this.hide();\n }\n });\n }\n\n private hide(): void {\n this.clearShowTimeout();\n\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.instance.hide();\n\n this.hideTimeout = setTimeout(() => {\n this.hideTimeout = null;\n this.destroyComponent();\n }, 150);\n }\n\n private clearShowTimeout(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n }\n\n private clearHideTimeout(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n private createComponent(): void {\n if (this.componentRef) {\n this.destroyComponent();\n }\n\n this.componentRef = this.viewContainerRef.createComponent(TailwindTooltip);\n this.updateTooltipComponent();\n\n setTimeout(() => {\n if (this.componentRef) {\n this.componentRef.instance.show();\n }\n });\n }\n\n private updateTooltipComponent(): void {\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.setInput('text', this.tooltip());\n this.componentRef.setInput('position', this.tooltipPosition());\n this.componentRef.instance.setTarget(this.host);\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n private destroyComponent(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngOnDestroy(): void {\n this.clearShowTimeout();\n this.clearHideTimeout();\n this.destroyComponent();\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/**\n * Row definition for `TailwindTable`. Prefer structural syntax on `<tbody>`:\n * `<tbody *tailwindTableRow=\"let row\">...</tbody>` — each rendered fragment is one `<tbody>` per data row.\n *\n * Legacy: `<ng-template tailwindTableRow let-row>` with only `<td>` cells still works.\n */\n@Directive({\n selector: '[tailwindTableRow]',\n standalone: true\n})\nexport class TailwindTableRowDirective {\n readonly templateRef = inject(TemplateRef<{ $implicit: any; index: number }>);\n}\n\n/** @deprecated Use TailwindTableRowDirective instead. */\nexport { TailwindTableRowDirective as TailwindTableRowTemplateDirective };\n","import { InjectionToken } from '@angular/core';\nimport { TailwindButtonKind, TailwindSize } from '../models';\n\nexport const TAILWIND_MODAL_DATA = new InjectionToken<unknown>('TAILWIND_MODAL_DATA');\n\n/** Default pixel size for `tailwind-icon` when `size` is omitted (typically 16–64). */\nexport const TAILWIND_ICON_SIZE = new InjectionToken<number>('TAILWIND_ICON_SIZE');\n\nexport const TAILWIND_DATETIME_LANGUAGE = new InjectionToken<'it' | 'en'>('TAILWIND_DATETIME_LANGUAGE');\n\nexport const TAILWIND_COMPONENTS_SIZE = new InjectionToken<TailwindSize>('TAILWIND_COMPONENTS_SIZE');\n\n/** Default `kind` for `tailwind-button` when the `kind` input is omitted. */\nexport const TAILWIND_BUTTON_KIND = new InjectionToken<TailwindButtonKind>('TAILWIND_BUTTON_KIND');\n\n/**\n * Default template for `tailwind-pagination` **summary** when the `summary` input is omitted.\n * Use placeholders `{start}`, `{end}`, `{total}` (same rules as the `summary` input).\n */\nexport const TAILWIND_PAGINATION_SUMMARY = new InjectionToken<string>('TAILWIND_PAGINATION_SUMMARY');\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport type { TailwindHeroicon, TailwindIconSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TAILWIND_ICON_SIZE } from '../../tokens';\n\nconst clampIconSize = (value: number): number => {\n if (!Number.isFinite(value)) return 24;\n const rounded = Math.round(value);\n return Math.min(64, Math.max(16, rounded));\n};\n\n@Component({\n selector: 'tailwind-icon',\n host: {\n '[class]': 'hostClasses()'\n },\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindIcon extends TailwindComponent {\n private readonly iconSize = inject(TAILWIND_ICON_SIZE, { optional: true });\n\n /** Heroicons outline icon name; SVG path `/tailwind-icons/<name>.svg` */\n readonly icon = input.required<TailwindHeroicon>();\n /** Width and height in px (16–64, clamped); default from `TAILWIND_ICON_SIZE` or **24** */\n readonly size = input<TailwindIconSize>(clampIconSize(this.iconSize ?? 24));\n\n readonly src = computed(() => `/tailwind-icons/${this.icon()}.svg`);\n\n readonly pixelSize = computed(() => clampIconSize(this.size()));\n\n /** Layout-only; custom `class` is applied to the inner glyph (color, spacing, etc.). */\n readonly hostClasses = computed(() => 'inline-flex shrink-0 items-center justify-center');\n\n /** Tailwind classes from `class` input, merged with the masked glyph base. */\n readonly glyphClasses = computed(() => {\n const custom = this.class();\n return custom ? `tailwind-icon-glyph ${custom}` : 'tailwind-icon-glyph';\n });\n\n readonly maskImage = computed(() => `url(\"${this.src()}\")`);\n}\n","<span\n [class]=\"glyphClasses()\"\n [style.width.px]=\"pixelSize()\"\n [style.height.px]=\"pixelSize()\"\n [style.mask-image]=\"maskImage()\"\n [style.-webkit-mask-image]=\"maskImage()\"\n [attr.aria-hidden]=\"true\"\n [attr.aria-label]=\"icon()\"></span>\n","import {\n ApplicationRef,\n afterNextRender,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\n Injector,\n Renderer2,\n createComponent,\n inject,\n input\n} from '@angular/core';\nimport { TailwindIcon } from '../../components/icon/icon.component';\n/** Host attributes on `<tailwind-table>`; kept in sync for sort-header observers. */\nexport const TW_TABLE_SORT_KEY_ATTR = 'data-tw-sort-key';\nexport const TW_TABLE_SORT_DIR_ATTR = 'data-tw-sort-dir';\n\nconst MAX_TABLE_RESOLVE_ATTEMPTS = 24;\n\n/**\n * Sortable column header: put on `<th>` (plain header text + directive). Not sortable columns omit this directive.\n * Sorting is handled by the nearest `tailwind-table` host (event delegation); do not pass a table reference.\n */\n@Directive({\n selector: '[tailwindSortHeader]',\n standalone: true,\n host: {\n class: 'cursor-pointer whitespace-nowrap text-left select-none hover:text-neutral-900',\n '[attr.tabindex]': '0',\n '[attr.data-sort-key]': 'sortKey()'\n }\n})\nexport class TailwindSortHeaderDirective {\n /** Property key on each row used for sorting. */\n readonly sortKey = input.required<string>();\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private labelWrapper?: HTMLElement;\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly injector = inject(Injector);\n\n private iconRef?: ComponentRef<TailwindIcon>;\n private mo?: MutationObserver;\n private destroyed = false;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n this.destroyed = true;\n this.mo?.disconnect();\n this.mo = undefined;\n this.iconRef?.destroy();\n this.iconRef = undefined;\n });\n\n afterNextRender(\n () => {\n if (!this.destroyed) {\n this.resolveTableAndAttach(0);\n }\n },\n { injector: this.injector }\n );\n }\n\n /**\n * After first render the projected `<th>` may still not be under `<tailwind-table>` in the DOM\n * for one frame; retry with `requestAnimationFrame` until `closest` succeeds.\n */\n private resolveTableAndAttach(attempt: number): void {\n if (this.destroyed || this.mo) return;\n\n const tableEl = this.host.nativeElement.closest('tailwind-table');\n if (!tableEl) {\n if (attempt < MAX_TABLE_RESOLVE_ATTEMPTS) {\n requestAnimationFrame(() => this.resolveTableAndAttach(attempt + 1));\n }\n return;\n }\n\n const sync = (): void => {\n if (this.destroyed || !this.iconRef) return;\n\n const columnKey = this.sortKey();\n const activeKey = tableEl.getAttribute(TW_TABLE_SORT_KEY_ATTR) ?? '';\n const dirRaw = tableEl.getAttribute(TW_TABLE_SORT_DIR_ATTR) ?? 'asc';\n const asc = dirRaw === 'asc';\n const active = activeKey === columnKey;\n\n const icon = active ? (asc ? 'chevron-up' : 'chevron-down') : 'chevron-up-down';\n this.iconRef.setInput('icon', icon);\n this.iconRef.setInput('size', 14);\n this.iconRef.setInput('class', active ? 'shrink-0 text-primary-600' : 'shrink-0 text-neutral-600');\n\n this.renderer.setAttribute(\n this.host.nativeElement,\n 'aria-label',\n active ? `Sorted ${asc ? 'ascending' : 'descending'}, activate to reverse` : `Sort by ${columnKey}`\n );\n\n this.iconRef.changeDetectorRef.detectChanges();\n };\n\n if (!this.iconRef) {\n const labelHost = this.ensureLabelWrapper();\n this.iconRef = createComponent(TailwindIcon, {\n environmentInjector: this.environmentInjector,\n elementInjector: this.injector\n });\n this.renderer.appendChild(labelHost, this.iconRef.location.nativeElement);\n this.appRef.attachView(this.iconRef.hostView);\n }\n\n sync();\n\n this.mo = new MutationObserver(() => sync());\n this.mo.observe(tableEl, {\n attributes: true,\n attributeFilter: [TW_TABLE_SORT_KEY_ATTR, TW_TABLE_SORT_DIR_ATTR]\n });\n }\n\n /** Keep `th` as `display: table-cell`; flex only on an inner wrapper (label + icon). */\n private ensureLabelWrapper(): HTMLElement {\n if (this.labelWrapper) return this.labelWrapper;\n\n const th = this.host.nativeElement;\n const existing = th.querySelector('[data-tw-sort-header-label]');\n if (existing instanceof HTMLElement) {\n this.labelWrapper = existing;\n return existing;\n }\n\n const wrapper = this.renderer.createElement('span');\n this.renderer.setAttribute(wrapper, 'data-tw-sort-header-label', '');\n this.renderer.addClass(wrapper, 'inline-flex');\n this.renderer.addClass(wrapper, 'items-center');\n this.renderer.addClass(wrapper, 'gap-1.5');\n this.renderer.addClass(wrapper, 'justify-start');\n\n for (const child of Array.from(th.childNodes)) {\n this.renderer.appendChild(wrapper, child);\n }\n this.renderer.appendChild(th, wrapper);\n this.labelWrapper = wrapper;\n return wrapper;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport type { TailwindHeroicon, TailwindIconPosition } from '../../models';\nimport { TailwindSize, TailwindColor, TailwindButtonKind, TailwindButtonRole } from '../../models';\nimport { TAILWIND_BUTTON_KIND } from '../../tokens';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindIcon } from '../icon/icon.component';\n\nconst iconPixelSizeMap: Record<TailwindSize, number> = {\n xs: 14,\n sm: 16,\n md: 18,\n lg: 20,\n xl: 22\n};\n\n/** Always transparent background; no tint on hover, focus, or active. */\nconst transparentColorClasses =\n 'bg-transparent hover:bg-transparent active:bg-transparent focus:bg-transparent border-transparent shadow-none text-neutral-600 focus-visible:outline-neutral-400';\n\n@Component({\n imports: [NgClass, TailwindIcon],\n selector: 'tailwind-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindButton extends TailwindComponent {\n private readonly defaultKind = inject(TAILWIND_BUTTON_KIND, { optional: true });\n\n /** Visual color */\n readonly color = input<TailwindColor>('primary');\n /**\n * Visual kind: `flat` = filled like `solid` without border, shadow, or hover/active background change;\n * `ghost` = transparent with hover tint; `text` = text color only, no hover background.\n * Default from {@link TAILWIND_BUTTON_KIND} or `'solid'`.\n */\n readonly kind = input<TailwindButtonKind>(this.defaultKind ?? 'solid');\n /** Size of the button */\n readonly size = input<TailwindSize>('md');\n /** Whether the button is disabled */\n readonly disabled = input<boolean>(false);\n /** HTML button type attribute */\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** ARIA role attribute */\n readonly role = input<TailwindButtonRole>('button');\n /** Optional Heroicons outline icon inside the button */\n readonly icon = input<TailwindHeroicon | undefined>();\n /** Icon placement when both icon and label are shown */\n readonly iconPosition = input<TailwindIconPosition>('left');\n /** Accessible name for icon-only buttons */\n readonly ariaLabel = input<string>('');\n\n /** Emitted when the button is clicked (not disabled). */\n readonly onClick = output<MouseEvent>();\n\n readonly iconPixelSize = computed(() => iconPixelSizeMap[this.size()]);\n\n /** Computed Tailwind classes based on color, kind, size, and state */\n readonly computedClasses = computed(() => {\n const base = [\n 'inline-flex items-center justify-center',\n 'font-medium',\n 'transition-all duration-150 ease-in-out',\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'cursor-pointer',\n 'border'\n ];\n\n const solidMap: Record<TailwindColor, string> = {\n primary:\n 'bg-primary-600 text-on-primary-600 hover:bg-primary-700 hover:text-on-primary-700 active:bg-primary-800 active:text-on-primary-800 border-transparent focus-visible:outline-primary-600 shadow-sm',\n secondary:\n 'bg-neutral-100 text-neutral-800 hover:bg-neutral-200 active:bg-neutral-300 border-neutral-300 focus-visible:outline-neutral-500 shadow-sm',\n danger:\n 'bg-danger-600 text-on-danger-600 hover:bg-danger-700 hover:text-on-danger-700 active:bg-danger-800 active:text-on-danger-800 border-transparent focus-visible:outline-danger-700 shadow-sm',\n success:\n 'bg-success-700 text-on-success-700 hover:bg-success-800 hover:text-on-success-800 active:bg-success-900 active:text-on-success-900 border-transparent focus-visible:outline-success-600 shadow-sm',\n warning:\n 'bg-warning-500 text-on-warning-500 hover:bg-warning-600 hover:text-on-warning-600 active:bg-warning-700 active:text-on-warning-700 border-transparent focus-visible:outline-warning-600 shadow-sm',\n info: 'bg-info-600 text-on-info-600 hover:bg-info-700 hover:text-on-info-700 active:bg-info-800 active:text-on-info-800 border-transparent focus-visible:outline-info-600 shadow-sm',\n transparent: transparentColorClasses\n };\n\n /** Filled surface like `solid`, without box shadow, border, or hover/active tint. */\n const flatMap: Record<TailwindColor, string> = {\n primary:\n 'bg-primary-600 text-on-primary-600 border-0 shadow-none focus-visible:outline-primary-600',\n secondary: 'bg-neutral-100 text-neutral-800 border-0 shadow-none focus-visible:outline-neutral-500',\n danger: 'bg-danger-600 text-on-danger-600 border-0 shadow-none focus-visible:outline-danger-600',\n success: 'bg-success-700 text-on-success-700 border-0 shadow-none focus-visible:outline-success-600',\n warning: 'bg-warning-500 text-on-warning-500 border-0 shadow-none focus-visible:outline-warning-600',\n info: 'bg-info-600 text-on-info-600 border-0 shadow-none focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n const outlinedMap: Record<TailwindColor, string> = {\n primary:\n 'bg-transparent text-primary-600 border-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\n secondary:\n 'bg-transparent text-neutral-700 border-neutral-300 hover:bg-neutral-50 active:bg-neutral-100 focus-visible:outline-neutral-500',\n danger:\n 'bg-transparent text-danger-800 border-danger-700 hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\n success:\n 'bg-transparent text-success-800 border-success-700 hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\n warning:\n 'bg-transparent text-warning-800 border-warning-700 hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-700',\n info: 'bg-transparent text-info-800 border-info-700 hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n /** Transparent + hover/active background tint (former `text` look). */\n const ghostMap: Record<TailwindColor, string> = {\n primary:\n 'bg-transparent text-primary-600 border-transparent hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\n secondary:\n 'bg-transparent text-neutral-700 border-transparent hover:bg-neutral-100 active:bg-neutral-200 focus-visible:outline-neutral-500',\n danger:\n 'bg-transparent text-danger-800 border-transparent hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\n success:\n 'bg-transparent text-success-800 border-transparent hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\n warning:\n 'bg-transparent text-warning-800 border-transparent hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-700',\n info: 'bg-transparent text-info-800 border-transparent hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n /** Text color from severity only; background stays transparent on hover/active. */\n const textMap: Record<TailwindColor, string> = {\n primary: 'bg-transparent text-primary-600 border-transparent focus-visible:outline-primary-600',\n secondary: 'bg-transparent text-neutral-700 border-transparent focus-visible:outline-neutral-500',\n danger: 'bg-transparent text-danger-800 border-transparent focus-visible:outline-danger-600',\n success: 'bg-transparent text-success-800 border-transparent focus-visible:outline-success-600',\n warning: 'bg-transparent text-warning-800 border-transparent focus-visible:outline-warning-700',\n info: 'bg-transparent text-info-800 border-transparent focus-visible:outline-info-600',\n transparent: transparentColorClasses\n };\n\n const styleMap = {\n solid: solidMap,\n flat: flatMap,\n outlined: outlinedMap,\n ghost: ghostMap,\n text: textMap\n };\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm',\n sm: 'text-sm px-3 py-1.5 rounded-md',\n md: 'text-sm px-4 py-2 rounded-md',\n lg: 'text-base px-5 py-2.5 rounded-lg',\n xl: 'text-base px-6 py-3 rounded-lg'\n };\n\n /** Square padding when `icon` is set and projected label is empty (icon-only). */\n const iconOnlySizeMap: Record<TailwindSize, string> = {\n xs: 'has-[.tailwind-button-label:empty]:p-1 has-[.tailwind-button-label:empty]:px-1',\n sm: 'has-[.tailwind-button-label:empty]:p-1.5 has-[.tailwind-button-label:empty]:px-1.5',\n md: 'has-[.tailwind-button-label:empty]:p-2 has-[.tailwind-button-label:empty]:px-2',\n lg: 'has-[.tailwind-button-label:empty]:p-2.5 has-[.tailwind-button-label:empty]:px-2.5',\n xl: 'has-[.tailwind-button-label:empty]:p-3 has-[.tailwind-button-label:empty]:px-3'\n };\n\n const size = this.size();\n const sizeClasses = [sizeMap[size], this.icon() ? iconOnlySizeMap[size] : ''].filter(Boolean).join(' ');\n\n return [...base, styleMap[this.kind()][this.color()] || styleMap['solid']['primary'], sizeClasses].join(' ');\n });\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.onClick.emit(event);\n }\n }\n}\n","<button\n [ngClass]=\"computedClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [attr.role]=\"role()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\">\n <span class=\"inline-flex min-w-0 items-center justify-center gap-2\">\n @if (icon() && iconPosition() === 'left') {\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconPixelSize()\" class=\"shrink-0\" />\n }\n <span class=\"tailwind-button-label inline-flex min-w-0 items-center empty:hidden\">\n <ng-content />\n </span>\n @if (icon() && iconPosition() === 'right') {\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconPixelSize()\" class=\"shrink-0\" />\n }\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-input',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindInput),\n multi: true\n }\n ],\n templateUrl: './input.component.html',\n styleUrl: './input.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindInput extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Placeholder text */\n readonly placeholder = input<string>('');\n /** Input type */\n readonly type = input<'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'>('text');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Whether the input is readonly */\n readonly readonly = input<boolean>(false);\n /** Helper text shown below input */\n readonly helperText = input<string>('');\n /** Error text shown when hasError is true */\n readonly errorText = input<string>('');\n /** Whether the input is in error state */\n readonly hasError = input<boolean>(false);\n\n /** Two-way bound value */\n readonly value = model<string>('');\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Computed input classes */\n readonly inputClasses = computed(() => {\n const base = [\n 'block w-full bg-white',\n 'border transition-colors duration-150',\n 'placeholder:text-neutral-400',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed'\n ];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm',\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\n md: 'text-sm px-3 py-2 rounded-md',\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\n xl: 'text-base px-4 py-3 rounded-lg'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\n\n return [...base, sizeMap[this.size()], stateClass].join(' ');\n });\n\n // CVA\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n this.onChange(val);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div class=\"tailwind-input-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-neutral-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"inputClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\" />\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-textarea',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindTextarea),\n multi: true\n }\n ],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTextarea extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Placeholder text */\n readonly placeholder = input<string>('');\n /** Visible row count */\n readonly rows = input<number>(4);\n /** Optional maximum width in columns */\n readonly cols = input<number | undefined>(undefined);\n /** Maximum character length (HTML maxlength) */\n readonly maxlength = input<number | undefined>(undefined);\n /** Resize behavior */\n readonly resize = input<'vertical' | 'none' | 'both' | 'horizontal'>('vertical');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Whether the textarea is readonly */\n readonly readonly = input<boolean>(false);\n /** Helper text shown below field */\n readonly helperText = input<string>('');\n /** Error text shown when hasError is true */\n readonly errorText = input<string>('');\n /** Whether the textarea is in error state */\n readonly hasError = input<boolean>(false);\n\n /** Two-way bound value */\n readonly value = model<string>('');\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Computed textarea classes */\n readonly textareaClasses = computed(() => {\n const base = [\n 'block w-full bg-white',\n 'border transition-colors duration-150',\n 'placeholder:text-neutral-400',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed'\n ];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm min-h-[4.5rem]',\n sm: 'text-sm px-2.5 py-1.5 rounded-md min-h-[5rem]',\n md: 'text-sm px-3 py-2 rounded-md min-h-[5.5rem]',\n lg: 'text-base px-3.5 py-2.5 rounded-lg min-h-[6.5rem]',\n xl: 'text-base px-4 py-3 rounded-lg min-h-[7.5rem]'\n };\n\n const resizeMap: Record<'vertical' | 'none' | 'both' | 'horizontal', string> = {\n vertical: 'resize-y',\n none: 'resize-none',\n both: 'resize',\n horizontal: 'resize-x'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\n\n return [...base, sizeMap[this.size()], resizeMap[this.resize()], stateClass].join(' ');\n });\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLTextAreaElement).value;\n this.value.set(val);\n this.onChange(val);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div class=\"tailwind-textarea-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-neutral-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <textarea\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [placeholder]=\"placeholder()\"\n [rows]=\"rows()\"\n [attr.cols]=\"cols() ?? null\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"textareaClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"></textarea>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n model,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-upload',\n imports: [TailwindIcon, TailwindButton],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindUpload),\n multi: true\n }\n ],\n templateUrl: './upload.component.html',\n styleUrl: './upload.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindUpload extends TailwindComponent implements ControlValueAccessor {\n private static nextId = 0;\n private readonly fallbackFileId = `tw-upload-${TailwindUpload.nextId++}`;\n\n readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>('fileInput');\n\n /** Visual layout: compact button or drop zone */\n readonly variant = input<'button' | 'area'>('area');\n /** Field label */\n readonly label = input<string>('');\n /** Button label when `variant` is `button` */\n readonly buttonLabel = input<string>('Choose file');\n /** Drop zone title when `variant` is `area` */\n readonly areaTitle = input<string>('Drag and drop a file');\n /** Drop zone hint when `variant` is `area` */\n readonly areaHint = input<string>('or click to browse');\n /** Accepted MIME types / extensions (native `accept`) */\n readonly accept = input<string | undefined>(undefined);\n /** Allow multiple files */\n readonly multiple = input<boolean>(false);\n /** Max size per file (bytes); if any file exceeds it, selection is rejected */\n readonly maxFileSizeBytes = input<number | undefined>(undefined);\n /** Button / control size */\n readonly size = input<TailwindSize>('md');\n /** Show a clear control when there is a value */\n readonly showClear = input<boolean>(true);\n /** Label for the clear action (i18n) */\n readonly clearText = input<string>('clear');\n readonly helperText = input<string>('');\n readonly errorText = input<string>('');\n readonly hasError = input<boolean>(false);\n\n /** Data URL (`data:<mime>;base64,...`) — forms / `[(value)]`; with `multiple`, only the first file is stored here */\n readonly value = model<string>('');\n\n /** Raw files after a successful selection */\n readonly filesSelected = output<File[]>();\n /** Human-readable validation message when selection is rejected */\n readonly validationError = output<string>();\n\n readonly isDisabled = signal(false);\n readonly isDragOver = signal(false);\n readonly selectedNames = signal<string[]>([]);\n\n private dragDepth = 0;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly fileInputId = computed(() => this.id() ?? this.fallbackFileId);\n\n readonly areaClasses = computed(() => {\n const base = [\n 'flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center',\n 'transition-colors duration-150 outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2'\n ];\n\n if (this.isDisabled()) {\n return [...base, 'cursor-not-allowed opacity-50 bg-neutral-50 border-neutral-200 text-neutral-500'].join(' ');\n }\n if (this.isDragOver()) {\n return [\n ...base,\n 'cursor-pointer border-primary-500 bg-primary-50/60 text-neutral-800 focus-visible:outline-primary-500'\n ].join(' ');\n }\n if (this.hasError()) {\n return [\n ...base,\n 'cursor-pointer border-danger-400 bg-danger-50/40 text-danger-900 focus-visible:outline-danger-500 hover:border-danger-500'\n ].join(' ');\n }\n return [\n ...base,\n 'cursor-pointer border-neutral-300 bg-neutral-50/50 text-neutral-800 focus-visible:outline-primary-500',\n 'hover:border-primary-400 hover:bg-primary-50/30'\n ].join(' ');\n });\n\n writeValue(obj: string | null): void {\n this.value.set(obj ?? '');\n if (!obj) {\n this.selectedNames.set([]);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n triggerPicker(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (this.isDisabled()) return;\n this.fileInput().nativeElement.click();\n }\n\n onKeydownArea(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.triggerPicker();\n }\n }\n\n onDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.isDisabled()) return;\n this.dragDepth++;\n this.isDragOver.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragDepth = Math.max(0, this.dragDepth - 1);\n if (this.dragDepth === 0) {\n this.isDragOver.set(false);\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragDepth = 0;\n this.isDragOver.set(false);\n if (this.isDisabled()) return;\n const files = event.dataTransfer?.files;\n if (files?.length) {\n void this.handleFiles(files);\n }\n }\n\n onNativeChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const files = input.files;\n if (files?.length) {\n void this.handleFiles(files);\n }\n input.value = '';\n }\n\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (this.isDisabled()) return;\n this.selectedNames.set([]);\n this.value.set('');\n this.onChange('');\n this.fileInput().nativeElement.value = '';\n }\n\n blurHost(): void {\n this.onTouched();\n }\n\n private validate(files: File[]): string | null {\n const max = this.maxFileSizeBytes();\n if (max == null) return null;\n const tooLarge = files.filter(f => f.size > max);\n if (tooLarge.length === 0) return null;\n const maxLabel =\n max >= 1024 * 1024\n ? `${(max / (1024 * 1024)).toFixed(1)} MB`\n : max >= 1024\n ? `${Math.round(max / 1024)} KB`\n : `${max} bytes`;\n return tooLarge.length === 1\n ? `File exceeds maximum size (${maxLabel}).`\n : `${tooLarge.length} files exceed maximum size (${maxLabel}).`;\n }\n\n private async handleFiles(fileList: FileList): Promise<void> {\n let files = Array.from(fileList);\n if (!this.multiple() && files.length > 1) {\n files = [files[0]];\n }\n\n const err = this.validate(files);\n if (err) {\n this.validationError.emit(err);\n return;\n }\n\n this.selectedNames.set(files.map(f => f.name));\n\n try {\n const dataUrls = await Promise.all(files.map(f => this.readAsDataUrl(f)));\n this.filesSelected.emit(files);\n\n const primary = dataUrls[0] ?? '';\n this.value.set(primary);\n this.onChange(primary);\n } catch {\n this.validationError.emit('Could not read file.');\n }\n }\n\n private readAsDataUrl(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result;\n if (typeof result === 'string') {\n resolve(result);\n } else {\n reject(new Error('Unexpected read result'));\n }\n };\n reader.onerror = () => reject(reader.error ?? new Error('read error'));\n reader.readAsDataURL(file);\n });\n }\n}\n","<div class=\"tailwind-upload-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"fileInputId()\" class=\"text-sm font-medium text-neutral-700\" [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n #fileInput\n type=\"file\"\n class=\"sr-only\"\n [attr.id]=\"fileInputId()\"\n [accept]=\"accept() ?? null\"\n [attr.multiple]=\"multiple() ? '' : null\"\n [disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"helperText() || errorText() ? fileInputId() + '-helper' : null\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"blurHost()\" />\n\n @if (variant() === 'button') {\n <div class=\"flex flex-wrap items-center gap-2\">\n <tailwind-button\n type=\"button\"\n color=\"primary\"\n kind=\"solid\"\n [size]=\"size()\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"triggerPicker($event)\">\n {{ buttonLabel() }}\n </tailwind-button>\n @if (showClear() && value()) {\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"clear($event)\">\n {{ clearText() }}\n </tailwind-button>\n }\n </div>\n } @else {\n <div class=\"flex flex-col gap-2\">\n <div\n role=\"button\"\n tabindex=\"0\"\n [class]=\"areaClasses()\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n (click)=\"triggerPicker($event)\"\n (keydown)=\"onKeydownArea($event)\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event)\">\n <tailwind-icon icon=\"cloud-arrow-up\" [size]=\"40\" />\n <span class=\"text-sm font-medium\">{{ areaTitle() }}</span>\n <span class=\"text-xs text-neutral-500\">{{ areaHint() }}</span>\n </div>\n @if (showClear() && value()) {\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"sm\"\n class=\"self-start\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"clear($event)\">\n {{ clearText() }}\n </tailwind-button>\n }\n </div>\n }\n\n @if (selectedNames().length) {\n <p class=\"truncate text-xs text-neutral-600\" [attr.title]=\"selectedNames().join(', ')\">\n {{ selectedNames().join(', ') }}\n </p>\n }\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n output,\n signal,\n viewChildren,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-input-otp',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindInputOtp),\n multi: true\n }\n ],\n templateUrl: './input-otp.component.html',\n styleUrl: './input-otp.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindInputOtp extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Number of character slots */\n readonly length = input<number>(6);\n /** Allow only digits */\n readonly integerOnly = input<boolean>(true);\n /** Mask digits (password bullets) */\n readonly mask = input<boolean>(false);\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Slots are read-only (navigation still allowed) */\n readonly readonly = input<boolean>(false);\n /** Helper text shown below */\n readonly helperText = input<string>('');\n /** Error text when hasError is true */\n readonly errorText = input<string>('');\n /** Error state styling */\n readonly hasError = input<boolean>(false);\n /** Accessible label for the group (used when label is empty) */\n readonly ariaLabel = input<string>('Verification code');\n /** Separator string; empty hides */\n readonly separator = input<string>('');\n /** 0-based slot index after which the separator is rendered */\n readonly separatorAfterIndex = input<number | null>(null);\n /** Hint for browsers / SMS autofill (first slot only) */\n readonly autocomplete = input<string>('one-time-code');\n\n /** Two-way bound full code string */\n readonly value = model<string>('');\n\n /** Emitted when all slots are filled */\n readonly completed = output<string>();\n\n readonly isDisabled = signal(false);\n\n readonly slotIndexes = computed(() => {\n const n = Math.max(1, Math.min(32, Math.floor(this.length())));\n return Array.from({ length: n }, (_, i) => i);\n });\n\n readonly otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpDigit');\n\n readonly cellClasses = computed(() => {\n const base = [\n 'block w-10 text-center font-mono tabular-nums bg-white',\n 'border transition-colors duration-150',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed'\n ];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-1 py-1 rounded-sm min-w-7',\n sm: 'text-sm px-1.5 py-1.5 rounded-md min-w-8',\n md: 'text-sm px-2 py-2 rounded-md min-w-10',\n lg: 'text-base px-2.5 py-2.5 rounded-lg min-w-11',\n xl: 'text-base px-3 py-3 rounded-lg min-w-12'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\n\n return [...base, sizeMap[this.size()], stateClass].join(' ');\n });\n\n readonly groupAriaLabel = computed(() => this.label() || this.ariaLabel());\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(this.normalizeIncoming(value ?? ''));\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n maxSlots(): number {\n return this.slotIndexes().length;\n }\n\n digitAt(index: number): string {\n return this.value()[index] ?? '';\n }\n\n showSeparatorAfter(index: number): boolean {\n const sep = this.separator();\n const pos = this.separatorAfterIndex();\n return !!sep && pos !== null && pos === index;\n }\n\n inputType(): string {\n return this.mask() ? 'password' : 'text';\n }\n\n inputMode(): 'numeric' | 'text' {\n return this.integerOnly() ? 'numeric' : 'text';\n }\n\n autocompleteForSlot(index: number): string | null {\n return index === 0 ? this.autocomplete() : null;\n }\n\n cellId(index: number): string {\n const base = this.id() ?? 'tailwind-input-otp';\n return `${base}-digit-${index}`;\n }\n\n onSlotFocus(index: number): void {\n this.onTouched();\n const len = this.value().length;\n if (index > len) {\n queueMicrotask(() => this.focusSlot(Math.min(len, this.maxSlots() - 1)));\n }\n }\n\n onInput(event: Event, index: number): void {\n if (this.readonly()) {\n return;\n }\n const inputEl = event.target as HTMLInputElement;\n let raw = inputEl.value;\n if (this.integerOnly()) {\n raw = raw.replace(/\\D/g, '');\n }\n const char = raw.slice(-1);\n\n let v = this.value();\n const max = this.maxSlots();\n\n if (char && index > v.length) {\n queueMicrotask(() => this.focusSlot(v.length));\n inputEl.value = this.digitAt(index);\n return;\n }\n\n if (!char) {\n if (index < v.length) {\n v = v.slice(0, index) + v.slice(index + 1);\n }\n } else {\n if (index < v.length) {\n v = v.slice(0, index) + char + v.slice(index + 1);\n } else if (index === v.length) {\n v = v + char;\n }\n v = v.slice(0, max);\n }\n\n v = this.normalizeIncoming(v);\n this.commit(v);\n\n queueMicrotask(() => {\n inputEl.value = this.digitAt(index);\n if (char && index < max - 1) {\n this.focusSlot(index + 1);\n }\n });\n }\n\n onPaste(event: ClipboardEvent, index: number): void {\n if (this.readonly() || this.isDisabled()) {\n return;\n }\n event.preventDefault();\n const text = event.clipboardData?.getData('text') ?? '';\n let cleaned = this.integerOnly() ? text.replace(/\\D/g, '') : text.replace(/\\s/g, '');\n const max = this.maxSlots();\n cleaned = cleaned.slice(0, max - index);\n const merged = this.normalizeIncoming(this.value().slice(0, index) + cleaned);\n this.commit(merged);\n\n queueMicrotask(() => this.focusSlot(cleaned.length ? Math.min(index + cleaned.length - 1, max - 1) : index));\n }\n\n onKeydown(event: KeyboardEvent, index: number): void {\n const max = this.maxSlots();\n const v = this.value();\n\n if (event.key === 'Backspace') {\n const cur = this.digitAt(index);\n if (!cur && index > 0) {\n event.preventDefault();\n const nextVal = this.normalizeIncoming(v.slice(0, index - 1) + v.slice(index));\n this.commit(nextVal);\n queueMicrotask(() => this.focusSlot(index - 1));\n } else if (cur) {\n event.preventDefault();\n const nextVal = this.normalizeIncoming(v.slice(0, index) + v.slice(index + 1));\n this.commit(nextVal);\n queueMicrotask(() => {\n const el = this.otpInputs()[index]?.nativeElement;\n if (el) {\n el.value = this.digitAt(index);\n }\n });\n }\n return;\n }\n\n if (event.key === 'ArrowLeft' && index > 0) {\n event.preventDefault();\n this.focusSlot(index - 1);\n } else if (event.key === 'ArrowRight' && index < max - 1) {\n event.preventDefault();\n this.focusSlot(index + 1);\n }\n }\n\n private commit(joined: string): void {\n const prev = this.value();\n this.value.set(joined);\n this.onChange(joined);\n const max = this.maxSlots();\n if (joined.length === max && prev.length !== max) {\n this.completed.emit(joined);\n }\n }\n\n private normalizeIncoming(v: string): string {\n const max = Math.max(1, Math.min(32, Math.floor(this.length())));\n let s = v ?? '';\n if (this.integerOnly()) {\n s = s.replace(/\\D/g, '');\n }\n return s.slice(0, max);\n }\n\n private focusSlot(index: number): void {\n queueMicrotask(() => {\n const list = this.otpInputs();\n const el = list[index]?.nativeElement;\n el?.focus();\n el?.select();\n });\n }\n}\n","<div class=\"tailwind-input-otp-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"cellId(0)\" class=\"text-sm font-medium text-neutral-700\" [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <div role=\"group\" [attr.aria-label]=\"groupAriaLabel()\" class=\"flex flex-wrap items-center gap-2\">\n @for (idx of slotIndexes(); track idx) {\n <input\n #otpDigit\n [attr.id]=\"cellId(idx)\"\n [type]=\"inputType()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.autocomplete]=\"autocompleteForSlot(idx)\"\n [attr.aria-label]=\"'Digit ' + (idx + 1) + ' of ' + slotIndexes().length\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n maxlength=\"1\"\n spellcheck=\"false\"\n [class]=\"cellClasses()\"\n [value]=\"digitAt(idx)\"\n (input)=\"onInput($event, idx)\"\n (keydown)=\"onKeydown($event, idx)\"\n (paste)=\"onPaste($event, idx)\"\n (focus)=\"onSlotFocus(idx)\" />\n @if (showSeparatorAfter(idx)) {\n <span class=\"select-none text-neutral-500\" aria-hidden=\"true\">{{ separator() }}</span>\n }\n }\n </div>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-checkbox',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindCheckbox),\n multi: true\n }\n ],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindCheckbox extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Description text */\n readonly description = input<string>('');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Unique ID */\n\n /** Two-way bound checked state */\n readonly checked = model<boolean>(false);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Box size class based on size input */\n readonly boxSizeClass = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-7 h-7'\n };\n return sizeMap[this.size()];\n });\n\n readonly checkIconSize = computed(() => {\n const sizeMap: Record<TailwindSize, number> = {\n xs: 16,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 28\n };\n return sizeMap[this.size()];\n });\n\n // CVA\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onCheckboxChange(event: Event): void {\n const val = (event.target as HTMLInputElement).checked;\n this.checked.set(val);\n this.onChange(val);\n this.onTouched();\n }\n}\n","<div class=\"inline-flex items-center gap-2.5 select-none\" [class.opacity-50]=\"isDisabled()\">\n <label\n class=\"relative flex items-center justify-center shrink-0\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [attr.for]=\"id() ? id() + '-inner' : null\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-describedby]=\"description() && id() ? id() + '-desc' : null\"\n [attr.aria-labelledby]=\"label() && id() ? id() + '-label' : null\"\n (change)=\"onCheckboxChange($event)\" />\n <div\n class=\"w-full h-full border-2 transition-all duration-150 flex items-center justify-center peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1\"\n [class.rounded-sm]=\"size() === 'xs' || size() === 'sm'\"\n [class.rounded-md]=\"size() !== 'xs' && size() !== 'sm'\"\n [class.border-neutral-300]=\"!checked()\"\n [class.bg-white]=\"!checked()\"\n [class.border-primary-600]=\"checked()\"\n [class.bg-primary-600]=\"checked()\">\n @if (checked()) {\n <tailwind-icon icon=\"check\" [size]=\"checkIconSize()\" class=\"text-white shrink-0\" />\n }\n </div>\n </label>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-neutral-800 leading-tight\">{{\n label()\n }}</span>\n }\n @if (description()) {\n <span [attr.id]=\"id() ? id() + '-desc' : null\" class=\"text-xs text-neutral-500 leading-snug\">\n {{ description() }}\n </span>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindOptionGroup, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-radio-group',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindRadioGroup),\n multi: true\n }\n ],\n templateUrl: './radio-group.component.html',\n styleUrl: './radio-group.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindRadioGroup<T = unknown> extends TailwindComponent implements ControlValueAccessor {\n /** Label for the radio group */\n readonly label = input<string>('');\n /** Aria label for accessibility */\n readonly ariaLabel = input<string>('');\n /** Name for the radio group (used for native radio grouping) */\n readonly name = input<string>();\n /** Available options */\n readonly options = input<TailwindOptionGroup<T>[]>([]);\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Layout orientation */\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n\n /** Currently selected value */\n readonly value = model<T | null>(null);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Radio button outer ring size */\n readonly radioSizeClass = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-7 h-7'\n };\n return sizeMap[this.size()];\n });\n\n /** Inner dot size */\n readonly dotSizeClass = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-1.5 h-1.5',\n sm: 'w-2 h-2',\n md: 'w-2.5 h-2.5',\n lg: 'w-3 h-3',\n xl: 'w-3.5 h-3.5'\n };\n return sizeMap[this.size()];\n });\n\n // CVA\n private onChange: (value: T) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: T): void {\n this.value.set(value ?? null);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n onRadioChange(optionValue: T): void {\n this.value.set(optionValue);\n this.onChange(optionValue);\n this.onTouched();\n }\n}\n","<fieldset\n class=\"flex gap-3\"\n [class.flex-col]=\"orientation() === 'vertical'\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"radiogroup\">\n @if (label()) {\n <legend class=\"text-sm font-medium text-neutral-700 mb-2\">{{ label() }}</legend>\n }\n\n @for (option of options(); track option.value) {\n <label\n class=\"inline-flex items-start gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled() || option.disabled\"\n [class.opacity-50]=\"isDisabled() || option.disabled\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"radioSizeClass()\">\n <input\n type=\"radio\"\n class=\"peer sr-only\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"onRadioChange(option.value)\" />\n <div\n class=\"w-full h-full rounded-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1 flex items-center justify-center\"\n [class.border-neutral-300]=\"value() !== option.value\"\n [class.border-primary-600]=\"value() === option.value\">\n @if (value() === option.value) {\n <div\n class=\"rounded-full bg-primary-600 transition-transform duration-150 scale-100\"\n [class]=\"dotSizeClass()\"></div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n <span class=\"text-sm font-medium text-neutral-800 leading-tight\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"text-xs text-neutral-500 leading-snug\">{{ option.description }}</span>\n }\n </div>\n </label>\n }\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n TemplateRef,\n ViewContainerRef,\n viewChild\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindOption, TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-select',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindSelect),\n multi: true\n }\n ],\n templateUrl: './select.component.html',\n styleUrl: './select.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSelect<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n /** Label text */\n readonly label = input<string>('');\n /** Accessible name for the combobox when `label` is omitted */\n readonly ariaLabel = input<string>('');\n /** Placeholder text */\n readonly placeholder = input<string>('');\n /** Available options */\n readonly options = input<TailwindOption<T>[]>([]);\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Helper text */\n readonly helperText = input<string>('');\n /** Error text */\n readonly errorText = input<string>('');\n /** Whether in error state */\n readonly hasError = input<boolean>(false);\n /** When true, value is `T[]` and several options can be selected */\n readonly multiple = input(false);\n\n /** Selected value: `T | null` when single, `T[]` when `multiple` */\n readonly value = model<T | T[] | null>(null);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Whether the dropdown panel is open */\n readonly isOpen = signal(false);\n\n /** Keyboard-highlighted option index (-1 = none) */\n readonly activeIndex = signal(-1);\n\n /** The currently selected option object (single mode only) */\n readonly selectedOption = computed(() => {\n if (this.multiple()) return null;\n const v = this.value();\n if (v == null || Array.isArray(v)) return null;\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\n });\n\n /** Accessible name for the combobox when there is no visible `label` */\n readonly comboboxAriaLabel = computed(() => {\n if (this.label()) return null;\n const base = this.ariaLabel();\n if (!base) return null;\n if (this.multiple()) {\n const count = this.selectedOptions().length;\n return count > 0 ? `${base}, ${count} selected` : base;\n }\n const selected = this.selectedOption();\n return selected ? `${base}, ${selected.label}` : base;\n });\n\n /** Selected option objects in `options()` order (multiple mode only) */\n readonly selectedOptions = computed(() => {\n if (!this.multiple()) return [];\n const v = this.value();\n const arr = Array.isArray(v) ? v : [];\n return this.options().filter(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\n });\n\n /** Classes for the trigger button */\n readonly triggerClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs px-2 py-1 rounded-sm',\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\n md: 'text-sm px-3 py-2 rounded-md',\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\n xl: 'text-base px-4 py-3 rounded-lg'\n };\n\n const stateClass = this.hasError()\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\n : 'border-neutral-300 focus:outline-primary-500';\n\n const layout = this.multiple() ? 'items-start' : 'items-center';\n\n return [\n 'flex justify-between w-full bg-white border transition-colors duration-150',\n layout,\n 'pr-3 cursor-pointer text-left',\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed',\n sizeMap[this.size()],\n stateClass\n ].join(' ');\n });\n\n private optionValueEquals(a: unknown, b: unknown): boolean {\n return Object.is(a, b);\n }\n\n /** Used in the template to compare option values */\n isOptionSelected(option: TailwindOption<T>): boolean {\n if (this.multiple()) {\n const v = this.value();\n const arr = Array.isArray(v) ? v : [];\n return arr.some(sv => this.optionValueEquals(option.value, sv));\n }\n const v = this.value();\n if (v == null || Array.isArray(v)) return false;\n return this.optionValueEquals(option.value, v);\n }\n\n /** Classes for a single option row */\n optionClasses(index: number, option: TailwindOption<T>): string {\n const isSelected = this.isOptionSelected(option);\n const isActive = this.activeIndex() === index;\n const isDisabled = !!option.disabled;\n\n return [\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\n isDisabled\n ? 'text-neutral-400 cursor-not-allowed'\n : isSelected\n ? 'bg-primary-50 text-primary-700 font-medium'\n : isActive\n ? 'bg-neutral-100 text-neutral-900'\n : 'text-neutral-800 hover:bg-neutral-50'\n ].join(' ');\n }\n\n // CVA\n private onChange: (value: T | T[] | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: T | T[] | null | undefined): void {\n if (this.multiple()) {\n if (value == null) this.value.set([]);\n else this.value.set(Array.isArray(value) ? [...value] : []);\n } else {\n if (Array.isArray(value)) this.value.set(null);\n else this.value.set(value ?? null);\n }\n }\n\n registerOnChange(fn: (value: T | T[] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n ngOnDestroy(): void {\n this.closeDropdown();\n }\n\n private openDropdown(): void {\n if (this.overlayRef) return;\n\n const trigger =\n (this.elRef.nativeElement.querySelector('button[role=\"combobox\"]') as HTMLElement) ?? this.elRef.nativeElement;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withPositions([\n // Preferred: open downward\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n // Fallback: open upward\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\n ])\n .withFlexibleDimensions(false)\n .withPush(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n width: trigger.offsetWidth,\n minWidth: 'w-full'\n });\n\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\n this.overlayRef.attach(portal);\n\n const pane = this.overlayRef.overlayElement;\n this.outsideSub = new Subscription();\n\n // Close on outside click (capture: trigger + panel are excluded; avoids CDK edge cases)\n this.outsideSub.add(\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\n const t = ev.target as Node;\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\n this.closeDropdown();\n })\n );\n\n this.outsideSub.add(\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\n if (ev.key === 'Escape') {\n ev.preventDefault();\n this.closeDropdown();\n }\n })\n );\n\n this.isOpen.set(true);\n\n const opts = this.options();\n let initial = -1;\n if (this.multiple()) {\n const v = this.value();\n const arr = Array.isArray(v) ? v : [];\n initial = opts.findIndex(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\n } else {\n const v = this.value();\n if (v != null && !Array.isArray(v)) {\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\n }\n }\n this.activeIndex.set(initial >= 0 ? initial : -1);\n }\n\n private closeDropdown(): void {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n }\n\n toggleDropdown(): void {\n if (this.isDisabled()) return;\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n selectOption(option: TailwindOption<T>): void {\n if (option.disabled) return;\n if (this.multiple()) {\n const v = this.value();\n const current = Array.isArray(v) ? [...v] : [];\n const idx = current.findIndex(sv => this.optionValueEquals(sv, option.value));\n if (idx >= 0) current.splice(idx, 1);\n else current.push(option.value);\n this.value.set(current);\n this.onChange(current);\n this.onTouched();\n return;\n }\n const val = option.value;\n this.value.set(val);\n this.onChange(val);\n this.onTouched();\n this.closeDropdown();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n const opts = this.options();\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n return;\n }\n let next = this.activeIndex() + 1;\n while (next < opts.length && opts[next].disabled) next++;\n if (next < opts.length) this.activeIndex.set(next);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n return;\n }\n let prev = this.activeIndex() - 1;\n while (prev >= 0 && opts[prev].disabled) prev--;\n if (prev >= 0) this.activeIndex.set(prev);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n return;\n }\n const active = this.activeIndex();\n if (active >= 0 && active < opts.length) {\n this.selectOption(opts[active]);\n }\n break;\n }\n case 'Escape':\n case 'Tab': {\n this.closeDropdown();\n break;\n }\n }\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-neutral-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <!-- Trigger button -->\n <button\n type=\"button\"\n [attr.id]=\"id() ? id() + '-inner' : null\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"comboboxAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [disabled]=\"isDisabled()\"\n [class]=\"triggerClasses()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeydown($event)\">\n @if (multiple()) {\n <span class=\"flex flex-wrap gap-1 flex-1 min-w-0 mr-2\" [class.text-neutral-400]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length === 0) {\n {{ placeholder() }}\n } @else {\n @for (opt of selectedOptions(); track opt) {\n <span class=\"rounded-md bg-neutral-100 px-2 py-0.5 text-sm text-neutral-800\">{{ opt.label }}</span>\n }\n }\n </span>\n } @else {\n <span [class.text-neutral-400]=\"!selectedOption()\">\n {{ selectedOption()?.label ?? placeholder() }}\n </span>\n }\n\n <tailwind-icon\n icon=\"chevron-down\"\n [size]=\"16\"\n class=\"shrink-0 ml-2 text-neutral-600 transition-transform duration-150\"\n [class.rotate-180]=\"isOpen()\"\n aria-hidden=\"true\" />\n </button>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">{{ helperText() }}</p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\n }\n</div>\n\n<!-- Dropdown panel — rendered via CDK Overlay outside the component DOM -->\n<ng-template #panelTemplate>\n <ul\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n class=\"w-full bg-white border border-neutral-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\n @if (placeholder()) {\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-neutral-400 cursor-default select-none\">\n {{ placeholder() }}\n </li>\n }\n @for (option of options(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [class]=\"optionClasses(i, option)\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\n <span>{{ option.label }}</span>\n\n @if (isOptionSelected(option)) {\n <tailwind-icon icon=\"check\" [size]=\"16\" class=\"text-primary-600 shrink-0\" aria-hidden=\"true\" />\n }\n </li>\n }\n </ul>\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n NgZone,\r\n OnDestroy,\r\n output,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { TailwindOption, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\n\r\n/** Context passed to the `#item` ng-template. */\r\nexport interface TailwindAutocompleteItemContext<T = unknown> {\r\n $implicit: TailwindOption<T>;\r\n option: TailwindOption<T>;\r\n index: number;\r\n selected: boolean;\r\n active: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [NgTemplateOutlet, TailwindIcon],\r\n selector: 'tailwind-autocomplete',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindAutocomplete),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './autocomplete.component.html',\r\n styleUrl: './autocomplete.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TailwindAutocomplete<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\r\n private static nextId = 0;\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n private readonly ngZone = inject(NgZone);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const opts = this.filteredOptions();\r\n if (!this.isOpen()) return;\r\n\r\n const v = this.value();\r\n let initial = -1;\r\n if (v != null) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n } else if (opts.length > 0) {\r\n initial = 0;\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideSub: Subscription | null = null;\r\n private searchDebounceTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n private readonly instanceListboxId = `tailwind-autocomplete-listbox-${++TailwindAutocomplete.nextId}`;\r\n\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Available options */\r\n readonly options = input<TailwindOption<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Helper text */\r\n readonly helperText = input<string>('');\r\n /** Error text */\r\n readonly errorText = input<string>('');\r\n /** Whether in error state */\r\n readonly hasError = input<boolean>(false);\r\n /** Filter options locally by label when typing */\r\n readonly filterLocally = input(true);\r\n /** Minimum query length before opening panel and emitting onSearch */\r\n readonly minSearchLength = input(0);\r\n /** Debounce delay (ms) for onSearch emission only */\r\n readonly debounceMs = input(0);\r\n /** On blur, reset input to selected option label or clear invalid text */\r\n readonly forceSelection = input(true);\r\n\r\n /** Selected value (form control) — set only when an option is chosen */\r\n readonly value = model<T | null>(null);\r\n\r\n /** Emits the current search query (after debounce / minSearchLength) */\r\n readonly onSearch = output<string>();\r\n\r\n /** Custom option row template (`ng-template` with `#item`) */\r\n readonly itemTemplate = contentChild('item', { read: TemplateRef });\r\n\r\n /** Text shown in the input */\r\n readonly searchQuery = signal('');\r\n\r\n readonly isDisabled = signal(false);\r\n readonly isOpen = signal(false);\r\n readonly activeIndex = signal(-1);\r\n\r\n readonly listboxId = computed(() => (this.id() ? `${this.id()}-listbox` : this.instanceListboxId));\r\n\r\n readonly selectedOption = computed(() => {\r\n const v = this.value();\r\n if (v == null) return null;\r\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\r\n });\r\n\r\n readonly filteredOptions = computed(() => {\r\n const opts = this.options();\r\n if (!this.filterLocally()) return opts;\r\n const q = this.searchQuery().trim().toLowerCase();\r\n if (!q) return opts;\r\n return opts.filter(o => o.label.toLowerCase().includes(q));\r\n });\r\n\r\n readonly inputClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-neutral-300 focus:outline-primary-500 text-neutral-900';\r\n\r\n return [\r\n 'block w-full bg-white border transition-colors duration-150',\r\n 'placeholder:text-neutral-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed',\r\n sizeMap[this.size()],\r\n stateClass\r\n ].join(' ');\r\n });\r\n\r\n private onChange: (value: T | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | null | undefined): void {\r\n this.value.set(value ?? null);\r\n const opt = this.options().find(o => this.optionValueEquals(o.value, value));\r\n this.searchQuery.set(opt?.label ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.searchDebounceTimer != null) {\r\n clearTimeout(this.searchDebounceTimer);\r\n }\r\n this.closePanel();\r\n }\r\n\r\n isOptionSelected(option: TailwindOption<T>): boolean {\r\n const v = this.value();\r\n if (v == null) return false;\r\n return this.optionValueEquals(option.value, v);\r\n }\r\n\r\n optionClasses(index: number, option: TailwindOption<T>): string {\r\n const isSelected = this.isOptionSelected(option);\r\n const isActive = this.activeIndex() === index;\r\n const isDisabled = !!option.disabled;\r\n\r\n return [\r\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\r\n isDisabled\r\n ? 'text-neutral-400 cursor-not-allowed'\r\n : isSelected\r\n ? 'bg-primary-50 text-primary-700 font-medium'\r\n : isActive\r\n ? 'bg-neutral-100 text-neutral-900'\r\n : 'text-neutral-800 hover:bg-neutral-50'\r\n ].join(' ');\r\n }\r\n\r\n itemContext(option: TailwindOption<T>, index: number): TailwindAutocompleteItemContext<T> {\r\n return {\r\n $implicit: option,\r\n option,\r\n index,\r\n selected: this.isOptionSelected(option),\r\n active: this.activeIndex() === index\r\n };\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const query = (event.target as HTMLInputElement).value;\r\n this.searchQuery.set(query);\r\n this.cdr.markForCheck();\r\n\r\n const selected = this.selectedOption();\r\n if (selected && query !== selected.label) {\r\n this.value.set(null);\r\n this.onChange(null);\r\n }\r\n\r\n this.emitSearch(query);\r\n\r\n if (query.length >= this.minSearchLength()) {\r\n this.openPanel();\r\n } else {\r\n this.closePanel();\r\n }\r\n }\r\n\r\n onFocus(): void {\r\n if (this.isDisabled()) return;\r\n if (this.searchQuery().length >= this.minSearchLength()) {\r\n this.openPanel();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n queueMicrotask(() => this.applyForceSelectionOnBlur());\r\n }\r\n\r\n private applyForceSelectionOnBlur(): void {\r\n if (!this.forceSelection() || this.isOpen()) return;\r\n\r\n const active = document.activeElement;\r\n const host = this.elRef.nativeElement;\r\n const pane = this.overlayRef?.overlayElement;\r\n if (active && (host.contains(active) || pane?.contains(active))) return;\r\n\r\n const selected = this.selectedOption();\r\n const query = this.searchQuery();\r\n\r\n if (selected) {\r\n if (query !== selected.label) {\r\n this.searchQuery.set(selected.label);\r\n }\r\n return;\r\n }\r\n\r\n if (query) {\r\n this.searchQuery.set('');\r\n }\r\n }\r\n\r\n selectOption(option: TailwindOption<T>): void {\r\n if (option.disabled) return;\r\n this.value.set(option.value);\r\n this.searchQuery.set(option.label);\r\n this.onChange(option.value);\r\n this.onTouched();\r\n this.closePanel();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.isDisabled()) return;\r\n const opts = this.filteredOptions();\r\n\r\n switch (event.key) {\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openPanel();\r\n return;\r\n }\r\n let next = this.activeIndex() + 1;\r\n while (next < opts.length && opts[next].disabled) next++;\r\n if (next < opts.length) this.activeIndex.set(next);\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openPanel();\r\n return;\r\n }\r\n let prev = this.activeIndex() - 1;\r\n while (prev >= 0 && opts[prev].disabled) prev--;\r\n if (prev >= 0) this.activeIndex.set(prev);\r\n break;\r\n }\r\n case 'Enter': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openPanel();\r\n return;\r\n }\r\n const active = this.activeIndex();\r\n if (active >= 0 && active < opts.length) {\r\n this.selectOption(opts[active]);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n case 'Tab': {\r\n this.closePanel();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private optionValueEquals(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n }\r\n\r\n private emitSearch(query: string): void {\r\n if (query.length < this.minSearchLength()) return;\r\n\r\n const debounce = this.debounceMs();\r\n if (this.searchDebounceTimer != null) {\r\n clearTimeout(this.searchDebounceTimer);\r\n this.searchDebounceTimer = null;\r\n }\r\n\r\n if (debounce <= 0) {\r\n this.onSearch.emit(query);\r\n return;\r\n }\r\n\r\n this.searchDebounceTimer = setTimeout(() => {\r\n this.ngZone.run(() => {\r\n this.onSearch.emit(query);\r\n this.cdr.markForCheck();\r\n });\r\n this.searchDebounceTimer = null;\r\n }, debounce);\r\n }\r\n\r\n private openPanel(): void {\r\n if (this.overlayRef || this.isDisabled()) return;\r\n if (this.searchQuery().length < this.minSearchLength()) return;\r\n\r\n const trigger = this.elRef.nativeElement.querySelector('input[role=\"combobox\"]') as HTMLElement;\r\n if (!trigger) return;\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger)\r\n .withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n width: trigger.offsetWidth\r\n });\r\n\r\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n const pane = this.overlayRef.overlayElement;\r\n this.outsideSub = new Subscription();\r\n\r\n this.outsideSub.add(\r\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\r\n const t = ev.target as Node;\r\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\r\n this.closePanel();\r\n })\r\n );\r\n\r\n this.outsideSub.add(\r\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\r\n if (ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.closePanel();\r\n }\r\n })\r\n );\r\n\r\n this.isOpen.set(true);\r\n\r\n const opts = this.filteredOptions();\r\n const v = this.value();\r\n let initial = -1;\r\n if (v != null) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n }\r\n\r\n private closePanel(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = null;\r\n this.outsideSub?.unsubscribe();\r\n this.outsideSub = null;\r\n this.isOpen.set(false);\r\n this.activeIndex.set(-1);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"id() ? id() + '-inner' : null\"\r\n class=\"text-sm font-medium text-neutral-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <input\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n [attr.id]=\"id() ? id() + '-inner' : null\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-controls]=\"listboxId()\"\r\n [attr.aria-activedescendant]=\"\r\n isOpen() && activeIndex() >= 0 ? listboxId() + '-option-' + activeIndex() : null\r\n \"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"isDisabled()\"\r\n [value]=\"searchQuery()\"\r\n [class]=\"inputClasses()\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keydown)=\"onKeydown($event)\" />\r\n\r\n <ng-content />\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-neutral-500\">{{ helperText() }}</p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\r\n }\r\n</div>\r\n\r\n<ng-template #panelTemplate>\r\n <ul\r\n role=\"listbox\"\r\n [attr.id]=\"listboxId()\"\r\n class=\"w-full bg-white border border-neutral-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\r\n @for (option of filteredOptions(); track option.value; let i = $index) {\r\n <li\r\n role=\"option\"\r\n [attr.id]=\"listboxId() + '-option-' + i\"\r\n [attr.aria-selected]=\"isOptionSelected(option)\"\r\n [attr.aria-disabled]=\"option.disabled || null\"\r\n [class]=\"optionClasses(i, option)\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (click)=\"selectOption(option)\"\r\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\r\n @if (itemTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate()!; context: itemContext(option, i)\" />\r\n } @else {\r\n <span>{{ option.label }}</span>\r\n @if (isOptionSelected(option)) {\r\n <tailwind-icon icon=\"check\" [size]=\"16\" class=\"text-primary-600 shrink-0\" aria-hidden=\"true\" />\r\n }\r\n }\r\n </li>\r\n } @empty {\r\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-neutral-400 cursor-default select-none\">\r\n {{ placeholder() || 'Nessun risultato' }}\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-toggle',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindToggle),\n multi: true\n }\n ],\n templateUrl: './toggle.component.html',\n styleUrl: './toggle.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindToggle extends TailwindComponent implements ControlValueAccessor {\n /** Label text */\n readonly label = input<string>('');\n /** Aria label for accessibility */\n readonly ariaLabel = input<string>('');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n\n /** Two-way bound checked state */\n readonly checked = model<boolean>(false);\n\n /** Internal disabled state */\n readonly isDisabled = signal(false);\n\n /** Track (background) classes */\n readonly trackClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'w-7 h-4',\n sm: 'w-8 h-5',\n md: 'w-11 h-6',\n lg: 'w-14 h-7',\n xl: 'w-16 h-8'\n };\n\n const base = [\n 'relative inline-flex shrink-0 rounded-full',\n 'border-2 border-transparent',\n 'transition-colors duration-200 ease-in-out',\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600',\n 'cursor-pointer disabled:cursor-not-allowed'\n ];\n\n const stateClass = this.checked() ? 'bg-primary-600' : 'bg-neutral-300';\n\n return [...base, sizeMap[this.size()], stateClass].join(' ');\n });\n\n /** `aria-label` / `aria-labelledby` for the switch (label text is not a hit target) */\n readonly switchAria = computed(() => {\n const al = this.ariaLabel();\n if (al) {\n return { label: al, labelledBy: null as string | null };\n }\n const lb = this.label();\n const sid = this.id();\n if (lb && sid) {\n return { label: null, labelledBy: `${sid}-label` };\n }\n if (lb) {\n return { label: lb, labelledBy: null };\n }\n return { label: 'Toggle', labelledBy: null };\n });\n\n /** Thumb (knob) classes */\n readonly thumbClasses = computed(() => {\n const sizeMap: Record<TailwindSize, { thumb: string; translateOn: string }> = {\n xs: { thumb: 'w-3 h-3', translateOn: 'translate-x-3' },\n sm: { thumb: 'w-4 h-4', translateOn: 'translate-x-3' },\n md: { thumb: 'w-5 h-5', translateOn: 'translate-x-5' },\n lg: { thumb: 'w-6 h-6', translateOn: 'translate-x-7' },\n xl: { thumb: 'w-7 h-7', translateOn: 'translate-x-8' }\n };\n\n const config = sizeMap[this.size()];\n\n const base = [\n 'pointer-events-none inline-block rounded-full',\n 'bg-white shadow-md',\n 'transform transition-transform duration-200 ease-in-out'\n ];\n\n const translateClass = this.checked() ? config.translateOn : 'translate-x-0';\n\n return [...base, config.thumb, translateClass].join(' ');\n });\n\n // CVA\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n toggle(): void {\n if (this.isDisabled()) return;\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n}\n","<div class=\"inline-flex items-center gap-3 select-none\" [class.opacity-50]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-label]=\"switchAria().label\"\n [attr.aria-labelledby]=\"switchAria().labelledBy\"\n [disabled]=\"isDisabled()\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\">\n <span [class]=\"thumbClasses()\" aria-hidden=\"true\"></span>\n </button>\n\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-neutral-800\">{{ label() }}</span>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-badge',\n templateUrl: './badge.component.html',\n styleUrl: './badge.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindBadge extends TailwindComponent {\n /** Color variant */\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('primary');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Show a dot indicator */\n readonly dot = input<boolean>(false);\n /** Shape variant */\n readonly rounded = input<boolean>(false);\n /** Accessible label */\n readonly ariaLabel = input<string>('');\n\n readonly computedClasses = computed(() => {\n const base = ['inline-flex items-center gap-1 font-medium', 'leading-none'];\n\n const variantMap: Record<string, string> = {\n primary: 'bg-primary-100 text-primary-700',\n neutral: 'bg-neutral-100 text-neutral-700',\n success: 'bg-success-100 text-success-700',\n warning: 'bg-warning-100 text-warning-800',\n danger: 'bg-danger-100 text-danger-700',\n info: 'bg-info-100 text-info-700'\n };\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-[10px] px-1.5 py-0.5',\n sm: 'text-xs px-2 py-0.5',\n md: 'text-xs px-2.5 py-1',\n lg: 'text-sm px-3 py-1',\n xl: 'text-sm px-3.5 py-1.5'\n };\n\n const shape = this.rounded() ? 'rounded-full' : 'rounded-md';\n\n return [...base, variantMap[this.variant()] ?? variantMap['primary'], sizeMap[this.size()], shape].join(' ');\n });\n}\n","<span [class]=\"computedClasses()\" [attr.aria-label]=\"ariaLabel()\">\n @if (dot()) {\n <span class=\"w-1.5 h-1.5 rounded-full bg-current\"></span>\n }\n <ng-content />\n</span>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { TailwindHeroicon, TailwindTitleTag } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindIcon } from '../icon/icon.component';\n\n@Component({\n selector: 'tailwind-title',\n imports: [NgTemplateOutlet, TailwindIcon],\n templateUrl: './title.component.html',\n styleUrl: './title.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTitle extends TailwindComponent {\n /** Visible title text */\n readonly text = input.required<string>();\n\n /** Optional Heroicons outline icon name (shown before `text`) */\n readonly icon = input<TailwindHeroicon | undefined>();\n\n /** HTML heading element */\n readonly titleTag = input<TailwindTitleTag>('h2');\n\n readonly headingClasses = computed(() => {\n const tag = this.titleTag();\n const scale: Record<TailwindTitleTag, string> = {\n h1: 'text-3xl font-bold tracking-tight text-neutral-900',\n h2: 'text-2xl font-semibold tracking-tight text-neutral-900',\n h3: 'text-xl font-semibold tracking-tight text-neutral-900',\n h4: 'text-lg font-normal text-neutral-900',\n h5: 'text-base font-normal text-neutral-900',\n h6: 'text-sm font-normal text-neutral-800 uppercase tracking-wide'\n };\n const layout = 'inline-flex items-center gap-2 min-w-0';\n const extra = this.class();\n const base = `${scale[tag]} ${layout}`.trim();\n return extra ? `${base} ${extra}`.trim() : base;\n });\n\n readonly iconSize = computed(() => {\n const tag = this.titleTag();\n const size: Record<TailwindTitleTag, number> = {\n h1: 32,\n h2: 24,\n h3: 20,\n h4: 18,\n h5: 16,\n h6: 14\n };\n return size[tag];\n });\n}\n","@switch (titleTag()) {\n @case ('h1') {\n <h1 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h1>\n }\n @case ('h2') {\n <h2 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h2>\n }\n @case ('h3') {\n <h3 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h3>\n }\n @case ('h4') {\n <h4 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h4>\n }\n @case ('h5') {\n <h5 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h5>\n }\n @case ('h6') {\n <h6 [class]=\"headingClasses()\">\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\n </h6>\n }\n}\n\n<ng-template #titleBody>\n @if (icon()) {\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconSize()\" />\n }\n <span class=\"min-w-0\">{{ text() }}</span>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-card',\n templateUrl: './card.component.html',\n styleUrl: './card.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindCard extends TailwindComponent {\n /** Whether the card has elevated shadow */\n readonly elevated = input<boolean>(false);\n /** Whether to show hover shadow effect */\n readonly hoverable = input<boolean>(false);\n /** Whether to show header background */\n readonly headerBg = input<boolean>(false);\n /** Whether the card has a header */\n readonly hasHeader = input<boolean>(true);\n /** Whether the card has a footer */\n readonly hasFooter = input<boolean>(true);\n}\n","<div\n class=\"bg-white rounded-xl border border-neutral-200 overflow-hidden transition-shadow duration-200\"\n [class.shadow-sm]=\"!elevated()\"\n [class.shadow-lg]=\"elevated()\"\n [class.hover:shadow-md]=\"hoverable() && !elevated()\"\n [class.hover:shadow-xl]=\"hoverable() && elevated()\">\n @if (hasHeader()) {\n <!-- Header slot (always rendered; only visible when content is projected) -->\n <div class=\"px-6 pt-4 pb-2 border-b border-neutral-100\" [class.bg-neutral-50]=\"headerBg()\">\n <ng-content select=\"[tailwind-card-header]\" />\n </div>\n }\n\n <!-- Image slot -->\n <ng-content select=\"[tailwind-card-image]\" />\n\n <!-- Body -->\n <div class=\"p-6\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <!-- Footer slot -->\n <div class=\"px-6 py-4 border-t border-neutral-100 bg-neutral-50/50\">\n <ng-content select=\"[tailwind-card-footer]\" />\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon, TailwindButton],\n selector: 'tailwind-alert',\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindAlert extends TailwindComponent {\n /** Severity / color variant */\n readonly severity = input<TailwindSeverity>('info');\n /** Alert title */\n readonly title = input<string>('');\n /** Whether the alert can be dismissed */\n readonly dismissible = input<boolean>(false);\n /** Whether to show a border on the left */\n readonly bordered = input<boolean>(true);\n\n /** Emitted when the alert is dismissed */\n readonly onDismiss = output<void>();\n\n /** Internal dismissed state */\n readonly dismissed = signal(false);\n\n readonly computedClasses = computed(() => {\n const base = 'flex gap-3 p-4 rounded-lg';\n\n const variantMap: Record<TailwindSeverity, string> = {\n success: 'bg-success-50 text-success-800 border-success-200',\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\n info: 'bg-info-50 text-info-800 border-info-200'\n };\n\n const borderClass = this.bordered() ? 'border-l-4' : 'border';\n\n return `${base} ${variantMap[this.severity()]} ${borderClass}`;\n });\n\n dismiss(): void {\n this.dismissed.set(true);\n this.onDismiss.emit();\n }\n}\n","@if (!dismissed()) {\n <div [class]=\"computedClasses()\" role=\"alert\" [attr.aria-live]=\"severity() === 'danger' ? 'assertive' : 'polite'\">\n <!-- Icon -->\n <div class=\"shrink-0 mt-0.5\">\n @switch (severity()) {\n @case ('success') {\n <tailwind-icon icon=\"check-circle\" [size]=\"20\" />\n }\n @case ('warning') {\n <tailwind-icon icon=\"exclamation-triangle\" [size]=\"20\" />\n }\n @case ('danger') {\n <tailwind-icon icon=\"x-circle\" [size]=\"20\" />\n }\n @case ('info') {\n <tailwind-icon icon=\"information-circle\" [size]=\"20\" />\n }\n }\n </div>\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <h3 class=\"text-sm font-semibold mb-0.5\">{{ title() }}</h3>\n }\n <div class=\"text-sm\">\n <ng-content />\n </div>\n </div>\n\n <!-- Dismiss button -->\n @if (dismissible()) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 -m-1 opacity-70 hover:opacity-100\"\n ariaLabel=\"Dismiss alert\"\n (onClick)=\"dismiss()\" />\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindColor, TailwindSize } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-spinner',\n templateUrl: './spinner.component.html',\n styleUrl: './spinner.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSpinner extends TailwindComponent {\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Color uses Tailwind text color class */\n readonly color = input<TailwindColor>('primary');\n /** Optional label text */\n readonly label = input<string>('');\n /** Aria label for accessibility */\n readonly ariaLabel = input<string>('Loading');\n /** Layout orientation */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly containerClasses = computed(() => {\n const base = 'inline-flex items-center gap-2';\n const orient = this.orientation() === 'vertical' ? 'flex-col' : '';\n return `${base} ${orient}`;\n });\n\n readonly iconPixelSize = computed(() => {\n const sizeMap: Record<TailwindSize, number> = {\n xs: 16,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48\n };\n return sizeMap[this.size()];\n });\n\n readonly iconClasses = computed(() => {\n const colorMap: Record<TailwindColor, string> = {\n primary: 'text-primary-600',\n secondary: 'text-secondary-600',\n success: 'text-success-600',\n warning: 'text-warning-600',\n danger: 'text-danger-600',\n info: 'text-info-600',\n transparent: 'text-neutral-400'\n };\n\n return `animate-spin ${colorMap[this.color()]}`;\n });\n\n readonly labelClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-lg'\n };\n\n return `${sizeMap[this.size()]} ${this.color()} font-medium`;\n });\n}\n","<div [class]=\"containerClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <tailwind-icon icon=\"arrow-path\" [size]=\"iconPixelSize()\" [class]=\"iconClasses()\" />\n\n @if (label()) {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { TailwindSize } from '../../models';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindModal extends TailwindComponent {\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Whether to show close button in header */\n readonly showCloseButton = input<boolean>(true);\n /** Whether clicking backdrop closes the modal */\n readonly closeOnBackdrop = input<boolean>(true);\n /** Whether pressing Escape closes the modal */\n readonly closeOnEscape = input<boolean>(true);\n\n /** Open/close state */\n readonly isOpen = signal(false);\n /** Visibility for animation */\n readonly isVisible = signal(false);\n\n /** Emitted when the modal is fully closed (after exit animation) */\n readonly onClose = output<void>();\n\n private readonly modalPanel = viewChild<ElementRef>('modalPanel');\n\n readonly panelClasses = computed(() => {\n const base = ['relative bg-white rounded-xl shadow-2xl', 'w-full transform transition-all duration-200'];\n\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'max-w-sm',\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl'\n };\n\n const animation = this.isVisible() ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\n\n return [...base, sizeMap[this.size()], animation].join(' ');\n });\n\n constructor() {\n super();\n effect(() => {\n if (this.isOpen()) {\n requestAnimationFrame(() => {\n this.isVisible.set(true);\n this.modalPanel()?.nativeElement?.focus();\n });\n }\n });\n }\n\n /** Open the modal */\n open(): void {\n this.isOpen.set(true);\n }\n\n /** Close the modal (plays exit animation then emits onClose) */\n close(): void {\n this.isVisible.set(false);\n setTimeout(() => {\n this.isOpen.set(false);\n this.onClose.emit();\n }, 200);\n }\n}\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-1040 transition-opacity duration-200\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Modal -->\n <div\n role=\"dialog\"\n class=\"fixed inset-0 z-1050 overflow-y-auto\"\n [attr.aria-modal]=\"true\"\n (keydown.escape)=\"closeOnEscape() && close()\">\n <div class=\"flex min-h-full items-center justify-center p-4\">\n <div #modalPanel [class]=\"panelClasses()\" tabindex=\"-1\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-neutral-200\">\n <h2 class=\"text-lg font-semibold text-neutral-900 pr-2\">\n <ng-content />\n </h2>\n @if (showCloseButton()) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 -m-1.5\"\n ariaLabel=\"Close\"\n (onClick)=\"close()\" />\n }\n </div>\n\n <!-- Body -->\n <div class=\"px-6 py-5\">\n <ng-content select=\"[tailwind-modal-content]\" />\n </div>\n\n <!-- Footer -->\n <div class=\"border-t border-neutral-200 px-6 py-4\">\n <ng-content select=\"[tailwind-modal-footer]\" />\n </div>\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-tab',\n templateUrl: './tab.component.html',\n styleUrl: './tab.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTab extends TailwindComponent {\n /** Tab label */\n readonly label = input.required<string>();\n /** Tab icon (optional, CSS class or content) */\n readonly icon = input<string>('');\n /** Whether the tab is disabled */\n readonly disabled = input<boolean>(false);\n /** Whether this tab is the currently active one (set by parent) */\n readonly isActive = signal(false);\n}\n","@if (isActive()) {\n <div role=\"tabpanel\" [attr.aria-labelledby]=\"id() ? 'tab-' + id() : null\">\n <ng-content />\n </div>\n}\n","import { ChangeDetectionStrategy, Component, contentChildren, input, model, effect } from '@angular/core';\nimport { TailwindTab } from './tab.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrl: './tab-group.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTabGroup extends TailwindComponent {\n /** Accessible label for the tab list */\n readonly ariaLabel = input<string>('');\n /** Whether tabs can scroll horizontally */\n readonly scrollable = input<boolean>(false);\n\n /** Currently active tab index (two-way) */\n readonly activeIndex = model<number>(0);\n\n /** Query all child TailwindTab components */\n readonly tabs = contentChildren(TailwindTab);\n\n constructor() {\n super();\n effect(() => {\n const allTabs = this.tabs();\n const idx = this.activeIndex();\n allTabs.forEach((tab, i) => tab.isActive.set(i === idx));\n });\n }\n\n selectTab(index: number): void {\n this.activeIndex.set(index);\n }\n}\n","<!-- Tab Headers -->\n<div class=\"border-b border-neutral-200\">\n <nav\n class=\"flex -mb-px gap-1\"\n [class.overflow-x-auto]=\"scrollable()\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel() || null\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.id]=\"tab.id() ? 'tab-' + tab.id() : null\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"tab.id() ? tab.id() : null\"\n [disabled]=\"tab.disabled()\"\n class=\"group relative px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 focus-visible:rounded-t-lg\"\n [class.text-primary-600]=\"activeIndex() === i\"\n [class.text-neutral-500]=\"activeIndex() !== i\"\n [class.hover:text-neutral-700]=\"activeIndex() !== i && !tab.disabled()\"\n [class.opacity-50]=\"tab.disabled()\"\n [class.cursor-not-allowed]=\"tab.disabled()\"\n (click)=\"!tab.disabled() && selectTab(i)\">\n {{ tab.label() }}\n <!-- Active indicator -->\n <span\n class=\"absolute bottom-0 left-0 right-0 h-0.5 rounded-full transition-all duration-200\"\n [class.bg-primary-600]=\"activeIndex() === i\"\n [class.scale-x-100]=\"activeIndex() === i\"\n [class.scale-x-0]=\"activeIndex() !== i\"></span>\n </button>\n }\n </nav>\n</div>\n\n<!-- Tab Content -->\n<div class=\"pt-4\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrl: './progress-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindProgressBar extends TailwindComponent {\n /** Current value (0-100) */\n readonly value = input<number>(0);\n /** Label text */\n readonly label = input<string>('');\n /** Show the label row */\n readonly showLabel = input<boolean>(true);\n /** Show percentage value */\n readonly showValue = input<boolean>(true);\n /** Color variant */\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\n /** Size variant */\n readonly size = input<TailwindSize>('md');\n /** Indeterminate mode (animated) */\n readonly indeterminate = input<boolean>(false);\n /** Whether to use striped pattern */\n readonly striped = input<boolean>(false);\n\n readonly clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\n\n readonly trackClasses = computed(() => {\n const sizeMap: Record<TailwindSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-2.5',\n lg: 'h-4',\n xl: 'h-5'\n };\n\n return `w-full bg-neutral-200 rounded-full overflow-hidden ${sizeMap[this.size()]}`;\n });\n\n readonly barClasses = computed(() => {\n const variantMap: Record<string, string> = {\n primary: 'bg-primary-600',\n success: 'bg-success-600',\n warning: 'bg-warning-500',\n danger: 'bg-danger-600',\n info: 'bg-info-600'\n };\n\n const base = [\n 'h-full rounded-full transition-all duration-300 ease-out',\n variantMap[this.variant()] ?? variantMap['primary']\n ];\n\n if (this.indeterminate()) {\n base.push('tailwind-progress-indeterminate');\n }\n\n if (this.striped()) {\n base.push('bg-gradient-to-r from-transparent via-white/20 to-transparent bg-[length:1rem_100%]');\n }\n\n return base.join(' ');\n });\n}\n","<div class=\"w-full\">\n @if (showLabel()) {\n <div class=\"flex justify-between items-center mb-1.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-neutral-700\">{{ label() }}</span>\n }\n @if (showValue()) {\n <span class=\"text-sm font-medium text-neutral-600\">{{ clampedValue() }}%</span>\n }\n </div>\n }\n\n <div\n [class]=\"trackClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"label() || 'Progress'\">\n <div [class]=\"barClasses()\" [style.width.%]=\"indeterminate() ? 100 : clampedValue()\"></div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindMenuItem, TailwindPosition } from '../../models';\n\n/** Matches previous `min-w-48` floor when the anchor is narrower. */\nconst MIN_PANEL_WIDTH_PX = 192;\n\n@Component({\n selector: 'tailwind-menu',\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindMenu extends TailwindComponent implements OnDestroy, OnInit {\n private openScheduleId: ReturnType<typeof setTimeout> | undefined;\n private anchorEl: HTMLElement | null = null;\n\n private readonly onScrollReposition = (): void => {\n if (this.isOpen()) {\n this.updatePanelPosition();\n }\n };\n\n readonly items = input<TailwindMenuItem[]>([]);\n readonly align = input<'left' | 'right'>('left');\n /** `bottom` opens under the anchor; `right` opens beside it (e.g. vertical toolbar rail). */\n readonly placement = input<Extract<TailwindPosition, 'bottom' | 'right'>>('bottom');\n\n readonly onSelect = output<TailwindMenuItem>();\n\n readonly isOpen = signal(false);\n\n /** Popover box in coordinates relative to the `position: fixed` containing block (often viewport, not under transformed Docs wrappers). */\n readonly panelLayout = signal<{\n top: number;\n left?: number;\n right?: number;\n minWidth: number;\n } | null>(null);\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n ngOnInit(): void {\n document.addEventListener('scroll', this.onScrollReposition, true);\n }\n\n ngOnDestroy(): void {\n document.removeEventListener('scroll', this.onScrollReposition, true);\n if (this.openScheduleId != null) {\n clearTimeout(this.openScheduleId);\n }\n }\n\n /**\n * Opens the menu under `anchor` (toggle element).\n * Pass the click event from the button, e.g. `(click)=\"menu.open($event)\"`, or an `HTMLElement`.\n * After the first open with an anchor, `open()` without arguments reuses the last anchor.\n *\n * Opening is deferred one macrotask so the same `click` is not closed immediately by `document:click`.\n */\n open(anchor?: Event | HTMLElement): void {\n if (anchor !== undefined) {\n this.storeAnchor(anchor);\n }\n if (!this.anchorEl) {\n return;\n }\n if (this.isOpen()) {\n return;\n }\n this.scheduleOpen();\n }\n\n close(): void {\n this.isOpen.set(false);\n this.panelLayout.set(null);\n }\n\n toggle(anchor?: Event | HTMLElement): void {\n if (this.isOpen()) {\n this.close();\n return;\n }\n if (anchor !== undefined) {\n this.storeAnchor(anchor);\n }\n if (!this.anchorEl) {\n return;\n }\n this.scheduleOpen();\n }\n\n private storeAnchor(anchor: Event | HTMLElement): void {\n if (anchor instanceof HTMLElement) {\n this.anchorEl = anchor;\n return;\n }\n const target = anchor.currentTarget;\n if (target instanceof HTMLElement) {\n this.anchorEl = target;\n }\n }\n\n private scheduleOpen(): void {\n if (this.openScheduleId != null) {\n clearTimeout(this.openScheduleId);\n }\n this.openScheduleId = setTimeout(() => {\n this.openScheduleId = undefined;\n this.isOpen.set(true);\n this.updatePanelPosition();\n requestAnimationFrame(() => this.updatePanelPosition());\n }, 0);\n }\n\n private updatePanelPosition(): void {\n const anchor = this.anchorEl;\n if (!anchor) {\n this.panelLayout.set(null);\n return;\n }\n const panelEl = this.panelRef()?.nativeElement;\n const cbRoot = panelEl\n ? this.getFixedPositioningContainingBlock(panelEl)\n : this.getFixedPositioningContainingBlock(anchor);\n const cbRect = cbRoot.getBoundingClientRect();\n const rect = anchor.getBoundingClientRect();\n const minWidth = Math.max(rect.width, MIN_PANEL_WIDTH_PX);\n\n if (this.placement() === 'right') {\n this.panelLayout.set({\n top: rect.top - cbRect.top,\n left: rect.right - cbRect.left,\n minWidth\n });\n return;\n }\n\n const top = rect.bottom - cbRect.top;\n if (this.align() === 'right') {\n this.panelLayout.set({\n top,\n right: cbRect.right - rect.right,\n minWidth\n });\n } else {\n this.panelLayout.set({\n top,\n left: rect.left - cbRect.left,\n minWidth\n });\n }\n }\n\n selectItem(item: TailwindMenuItem): void {\n if (!item.disabled) {\n this.onSelect.emit(item);\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onDocumentEscape(): void {\n if (!this.isOpen()) {\n return;\n }\n this.close();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n if (!this.isOpen()) {\n return;\n }\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n const panelEl = this.panelRef()?.nativeElement;\n const inPanel = panelEl?.contains(target) ?? false;\n const inAnchor = this.anchorEl?.contains(target) ?? false;\n if (!inPanel && !inAnchor) {\n this.close();\n }\n }\n\n @HostListener('window:resize')\n onWindowResize(): void {\n if (this.isOpen()) {\n this.updatePanelPosition();\n }\n }\n\n /** Ancestor that becomes the containing block for `position: fixed` (e.g. Storybook Docs wrappers with `transform`). */\n private createsFixedContainingBlock(el: HTMLElement): boolean {\n const s = getComputedStyle(el);\n if (s.transform && s.transform !== 'none') {\n return true;\n }\n if (s.perspective && s.perspective !== 'none') {\n return true;\n }\n if (s.filter && s.filter !== 'none') {\n return true;\n }\n const contain = s.contain;\n if (contain && contain !== 'none' && contain.split(/\\s+/).includes('paint')) {\n return true;\n }\n return false;\n }\n\n private getFixedPositioningContainingBlock(from: HTMLElement): HTMLElement {\n for (let p = from.parentElement; p; p = p.parentElement) {\n if (this.createsFixedContainingBlock(p)) {\n return p;\n }\n }\n return document.documentElement;\n }\n}\n","@if (isOpen() && panelLayout(); as layout) {\n <div\n #panel\n role=\"menu\"\n class=\"fixed z-1000 bg-white rounded-xl border border-neutral-200 shadow-lg py-1 animate-in fade-in slide-in-from-top-1\"\n [style.top.px]=\"layout.top\"\n [style.left.px]=\"layout.left ?? null\"\n [style.right.px]=\"layout.right ?? null\"\n [style.minWidth.px]=\"layout.minWidth\">\n @for (item of items(); track $index) {\n @if (item.divider) {\n <hr class=\"my-1 border-neutral-100\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [disabled]=\"!!item.disabled\"\n class=\"w-full text-left px-4 py-2 text-sm text-neutral-700 hover:bg-neutral-50 hover:text-neutral-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { TailwindPosition } from '../../models';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-drawer',\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDrawer extends TailwindComponent {\n /** Drawer title */\n readonly title = input<string>('');\n /** Position (left or right) */\n readonly position = input<'left' | 'right'>('right');\n /** Width class */\n readonly width = input<string>('max-w-md');\n /** Whether clicking backdrop closes */\n readonly closeOnBackdrop = input<boolean>(true);\n\n /** Open/close state */\n readonly isOpen = signal(false);\n /** Visibility for animation */\n readonly isVisible = signal(false);\n\n /** Emitted when closed */\n readonly onClose = output<void>();\n\n readonly panelClasses = computed(() => {\n const base = [\n 'fixed top-0 bottom-0 z-[1050]',\n 'flex flex-col w-full bg-white shadow-2xl',\n 'transition-transform duration-300 ease-in-out',\n this.width()\n ];\n\n const pos = this.position();\n\n if (pos === 'right') {\n base.push('right-0');\n base.push(this.isVisible() ? 'translate-x-0' : 'translate-x-full');\n } else {\n base.push('left-0');\n base.push(this.isVisible() ? 'translate-x-0' : '-translate-x-full');\n }\n\n return base.join(' ');\n });\n\n open(): void {\n this.isOpen.set(true);\n requestAnimationFrame(() => {\n this.isVisible.set(true);\n });\n }\n\n close(): void {\n this.isVisible.set(false);\n setTimeout(() => {\n this.isOpen.set(false);\n this.onClose.emit();\n }, 300);\n }\n}\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/40 backdrop-blur-sm z-1040 transition-opacity duration-300\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Drawer Panel -->\n <div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"true\" [attr.aria-label]=\"title()\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-neutral-200\">\n @if (title()) {\n <h2 class=\"text-lg font-semibold text-neutral-900\">{{ title() }}</h2>\n }\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"ml-auto shrink-0 -m-1.5\"\n ariaLabel=\"Close\"\n (onClick)=\"close()\" />\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-5\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n <ng-content select=\"[tailwind-drawer-footer]\" />\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TailwindBreadcrumbItem } from './interfaces/breadcrumb-item.interface';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { RouterLink } from '@angular/router';\n\nexport type { TailwindBreadcrumbItem };\n\n@Component({\n imports: [RouterLink, TailwindIcon],\n selector: 'tailwind-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindBreadcrumb extends TailwindComponent {\n readonly items = input<TailwindBreadcrumbItem[]>([]);\n readonly separator = input<string>('>');\n readonly ariaLabel = input<string>('Breadcrumb');\n}\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"flex\">\n <ol class=\"inline-flex items-center text-sm\">\n @for (item of items(); track item.label; let last = $last; let first = $first) {\n <li class=\"inline-flex items-center\">\n @if (!first) {\n <span class=\"mx-2 text-neutral-400\" aria-hidden=\"true\">\n {{ separator() }}\n </span>\n }\n @if (item.link && !last) {\n <a\n [routerLink]=\"item.link\"\n class=\"inline-flex items-center gap-1 text-neutral-500 hover:text-primary-600 transition-colors font-medium\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span\n class=\"inline-flex items-center gap-1 font-medium\"\n [class.text-neutral-900]=\"last\"\n [class.text-neutral-500]=\"!last\"\n [attr.aria-current]=\"last ? 'page' : null\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\n }\n {{ item.label }}\n </span>\n }\n </li>\n }\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model, output } from '@angular/core';\nimport { TailwindOption } from '../../models';\nimport { TAILWIND_PAGINATION_SUMMARY } from '../../tokens';\nimport { TailwindSelect } from '../select/select.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { Pagination } from './interfaces/pagination.interface';\nexport type { Pagination };\n\nexport const DEFAULT_PAGINATION_LENGTH_OPTIONS = [5, 10, 25, 50] as const;\n\n@Component({\n selector: 'tailwind-pagination',\n imports: [TailwindSelect, TailwindButton],\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindPagination extends TailwindComponent {\n private readonly tailwindPaginationSummary = inject(TAILWIND_PAGINATION_SUMMARY, { optional: true });\n\n readonly totalItems = input.required<Pagination['totalItems']>();\n readonly pageSize = model<Pagination['pageSize']>(10);\n readonly lengthOptions = input<readonly number[]>([...DEFAULT_PAGINATION_LENGTH_OPTIONS]);\n readonly currentPage = model<Pagination['currentPage']>(1);\n readonly ariaLabel = input<Pagination['ariaLabel']>('Pagination');\n /** Placeholders `{start}`, `{end}`, `{total}`; default from `TAILWIND_PAGINATION_SUMMARY` or English copy. */\n readonly summary = input<Pagination['summary']>(this.tailwindPaginationSummary ?? 'Showing {start}-{end} of {total}');\n\n readonly onPageChange = output<number>();\n readonly onPageSizeChange = output<number>();\n\n readonly pageSizeOptions = computed(() => {\n const options = [...this.lengthOptions()];\n const current = this.pageSize();\n if (!options.includes(current)) {\n options.push(current);\n options.sort((a, b) => a - b);\n }\n return options;\n });\n\n readonly pageSizeSelectOptions = computed((): TailwindOption<number>[] =>\n this.pageSizeOptions().map(size => ({ value: size, label: String(size) }))\n );\n\n readonly totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n\n readonly visiblePages = computed(() => {\n const total = this.totalPages();\n return Array.from({ length: total }, (_, i) => i + 1);\n });\n\n readonly summaryText = computed(() => {\n const total = this.totalItems();\n if (total === 0) return this.summary().replace('{start}', '0').replace('{end}', '0').replace('{total}', '0');\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\n const end = Math.min(this.currentPage() * this.pageSize(), total);\n return this.summary()\n .replace('{start}', start.toString())\n .replace('{end}', end.toString())\n .replace('{total}', total.toString());\n });\n\n goToPage(page: number): void {\n if (page >= 1 && page <= this.totalPages()) {\n this.currentPage.set(page);\n this.onPageChange.emit(page);\n }\n }\n\n pageButtonAriaLabel(page: number): string {\n return page === this.currentPage() ? `Page ${page}, current page` : `Page ${page}`;\n }\n\n onPageSizeValueChange(value: number | number[] | null): void {\n if (typeof value !== 'number') return;\n this.setPageSize(value);\n }\n\n setPageSize(size: number): void {\n if (!Number.isFinite(size) || size <= 0 || size === this.pageSize()) return;\n this.pageSize.set(size);\n this.onPageSizeChange.emit(size);\n if (this.currentPage() !== 1) {\n this.currentPage.set(1);\n this.onPageChange.emit(1);\n }\n }\n}\n","<div class=\"flex flex-wrap items-center justify-between gap-4 w-full\">\n <div class=\"flex flex-wrap items-center gap-3 min-w-0\">\n @if (summary()) {\n <span class=\"text-sm text-neutral-700 dark:text-neutral-300\">\n {{ summaryText() }}\n </span>\n }\n\n @if (lengthOptions().length > 0) {\n <div class=\"w-20 shrink-0\">\n <tailwind-select\n size=\"sm\"\n ariaLabel=\"Rows per page\"\n [options]=\"pageSizeSelectOptions()\"\n [value]=\"pageSize()\"\n (valueChange)=\"onPageSizeValueChange($event)\" />\n </div>\n }\n </div>\n\n <nav [attr.aria-label]=\"ariaLabel()\" class=\"flex items-center gap-1\">\n <!-- Previous -->\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-left\"\n [disabled]=\"currentPage() <= 1\"\n ariaLabel=\"Previous page\"\n (onClick)=\"goToPage(currentPage() - 1)\" />\n\n @for (page of visiblePages(); track page) {\n <tailwind-button\n size=\"sm\"\n [kind]=\"page === currentPage() ? 'flat' : 'ghost'\"\n [color]=\"page === currentPage() ? 'primary' : 'secondary'\"\n class=\"min-w-8\"\n [ariaLabel]=\"pageButtonAriaLabel(page)\"\n (onClick)=\"goToPage(page)\">\n {{ page }}\n </tailwind-button>\n }\n\n <!-- Next -->\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-right\"\n [disabled]=\"currentPage() >= totalPages()\"\n ariaLabel=\"Next page\"\n (onClick)=\"goToPage(currentPage() + 1)\" />\n </nav>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-tag',\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTag extends TailwindComponent {\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('neutral');\n\n readonly computedClasses = computed(() => {\n const variantMap: Record<string, string> = {\n primary: 'bg-primary-600 text-on-primary-600',\n neutral: 'bg-neutral-600 text-on-neutral-600',\n success: 'bg-success-700 text-on-success-700',\n warning: 'bg-warning-500 text-on-warning-500',\n danger: 'bg-danger-700 text-on-danger-700',\n info: 'bg-info-600 text-on-info-600'\n };\n return `inline-flex items-center text-[11px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded ${variantMap[this.variant()]}`;\n });\n}\n","<span [class]=\"computedClasses()\"><ng-content /></span>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { DEFAULT_PAGINATION_LENGTH_OPTIONS, Pagination, TailwindPagination } from '../pagination/pagination.component';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindTableSortHost } from './interfaces/tailwind-table-sort-host';\nimport { TailwindTableRowDirective } from '../../directives/table/tailwind-table-row.directive';\nimport { TAILWIND_PAGINATION_SUMMARY } from '../../tokens';\nexport type { TailwindTableSortHost };\n\n@Component({\n selector: 'tailwind-table',\n imports: [NgTemplateOutlet, TailwindPagination, TailwindIcon],\n templateUrl: './table.component.html',\n styleUrl: './table.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-tw-sort-key]': 'sortKey()',\n '[attr.data-tw-sort-dir]': 'sortDir()'\n }\n})\nexport class TailwindTable extends TailwindComponent implements TailwindTableSortHost {\n private readonly tailwindPaginationSummary = inject(TAILWIND_PAGINATION_SUMMARY, { optional: true });\n\n readonly data = input<any[]>([]);\n readonly selectable = input<boolean>(false);\n readonly striped = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly emptyMessage = input<string>('No data available');\n /** Match your column count so the empty state spans the full table width. */\n readonly emptyColspan = input<number>(1);\n\n readonly paginated = input<boolean>(true);\n readonly pagination = input<Pagination>();\n readonly paginationSummary = computed(\n () => this.pagination()?.summary ?? this.tailwindPaginationSummary ?? 'Showing {start}-{end} of {total}'\n );\n readonly paginationLengthOptions = computed(\n () => this.pagination()?.lengthOptions ?? [...DEFAULT_PAGINATION_LENGTH_OPTIONS]\n );\n\n readonly onSortChange = output<{ key: string; direction: 'asc' | 'desc' }>();\n readonly onSelectionChange = output<Set<number>>();\n\n readonly rowTemplate = contentChild.required(TailwindTableRowDirective);\n\n rowContext(row: Record<string, unknown>, index: number): Record<string, unknown> {\n return {\n $implicit: row,\n index,\n stripedRow: this.striped() && index % 2 === 1,\n selected: this.selectedRows().has(index),\n selectable: this.selectable(),\n toggleRow: () => {\n if (!this.selectable()) return;\n this.toggleSelection(index);\n }\n };\n }\n\n readonly sortKey = signal<string>('');\n readonly sortDir = signal<'asc' | 'desc'>('asc');\n readonly selectedRows = signal<Set<number>>(new Set());\n readonly currentPage = signal<number>(1);\n readonly pageSize = signal<number>(10);\n\n constructor() {\n super();\n effect(() => {\n const fromInput = this.pagination()?.currentPage;\n if (fromInput != null && fromInput >= 1) {\n this.currentPage.set(fromInput);\n }\n });\n effect(() => {\n const fromInput = this.pagination()?.pageSize;\n if (fromInput != null && fromInput > 0) {\n this.pageSize.set(fromInput);\n }\n });\n }\n\n readonly sortedData = computed(() => {\n let rows = [...this.data()];\n const key = this.sortKey();\n if (key) {\n const dir = this.sortDir() === 'asc' ? 1 : -1;\n rows.sort((a, b) => {\n const va = a[key],\n vb = b[key];\n const sa = va == null ? '' : String(va);\n const sb = vb == null ? '' : String(vb);\n const cmp = sa.localeCompare(sb, undefined, { numeric: true, sensitivity: 'base' });\n return dir * cmp;\n });\n }\n return rows;\n });\n\n readonly displayedData = computed(() => {\n const rows = this.sortedData();\n if (!this.paginated()) return rows;\n const size = this.pageSize();\n const page = this.currentPage();\n return rows.slice((page - 1) * size, page * size);\n });\n\n sort(key: string): void {\n if (this.sortKey() === key) {\n this.sortDir.update(d => (d === 'asc' ? 'desc' : 'asc'));\n } else {\n this.sortKey.set(key);\n this.sortDir.set('asc');\n }\n this.currentPage.set(1);\n this.onSortChange.emit({ key: this.sortKey(), direction: this.sortDir() });\n }\n\n toggleSelection(index: number): void {\n this.selectedRows.update(s => {\n const next = new Set(s);\n if (next.has(index)) next.delete(index);\n else next.add(index);\n return next;\n });\n this.onSelectionChange.emit(this.selectedRows());\n }\n\n @HostListener('click', ['$event'])\n protected onSortZoneClick(ev: Event): void {\n this.delegateSortFromEvent(ev);\n }\n\n @HostListener('keydown', ['$event'])\n protected onSortZoneKeydown(ev: KeyboardEvent): void {\n if (ev.key !== 'Enter' && ev.key !== ' ') return;\n const target = ev.target as HTMLElement | null;\n if (!target?.closest?.('[tailwindSortHeader]')) return;\n if (ev.key === ' ') ev.preventDefault();\n this.delegateSortFromEvent(ev);\n }\n\n private delegateSortFromEvent(ev: Event): void {\n const host = ev.currentTarget as HTMLElement;\n const target = ev.target as HTMLElement | null;\n const header = target?.closest?.('[tailwindSortHeader]') as HTMLElement | null;\n if (!header || !host.contains(header)) return;\n if (header.closest('tailwind-table') !== host) return;\n const key = header.getAttribute('data-sort-key');\n if (key) this.sort(key);\n }\n}\n","<div class=\"w-full overflow-x-auto rounded-lg border border-neutral-200\">\n @if (loading()) {\n <div class=\"flex items-center justify-center py-16 text-neutral-400\">\n <tailwind-icon icon=\"arrow-path\" [size]=\"24\" class=\"animate-spin mr-2 text-neutral-400\" />\n Loading...\n </div>\n } @else {\n <!-- `table-fixed`: consente `w-*` / `min-w-*` / `max-w-*` sulle celle e sugli `th` proiettati. -->\n <table class=\"w-full min-w-0 table-fixed text-sm text-left divide-y divide-neutral-100\">\n <ng-content select=\"thead\" />\n @for (row of displayedData(); track $index; let i = $index) {\n <ng-container *ngTemplateOutlet=\"rowTemplate().templateRef; context: rowContext(row, i)\" />\n } @empty {\n <tbody>\n <tr>\n <td [attr.colspan]=\"emptyColspan()\">\n {{ emptyMessage() }}\n </td>\n </tr>\n </tbody>\n }\n </table>\n\n @if (paginated() && data().length > 0) {\n <div class=\"px-4 py-3 border-t border-neutral-200 bg-white\">\n <tailwind-pagination\n [totalItems]=\"pagination()?.totalItems ?? data().length\"\n [pageSize]=\"pageSize()\"\n (pageSizeChange)=\"pageSize.set($event)\"\n [lengthOptions]=\"paginationLengthOptions()\"\n [currentPage]=\"currentPage()\"\n (onPageChange)=\"currentPage.set($event)\"\n [ariaLabel]=\"pagination()?.ariaLabel ?? 'Pagination'\"\n [summary]=\"paginationSummary()\">\n </tailwind-pagination>\n </div>\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\ntype Lang = 'it' | 'en';\n\nconst I18N: Record<\n Lang,\n { months: string[]; weekDays: string[]; today: string; confirm: string; placeholder: string }\n> = {\n it: {\n months: [\n 'Gennaio',\n 'Febbraio',\n 'Marzo',\n 'Aprile',\n 'Maggio',\n 'Giugno',\n 'Luglio',\n 'Agosto',\n 'Settembre',\n 'Ottobre',\n 'Novembre',\n 'Dicembre'\n ],\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\n today: 'Oggi',\n confirm: 'Applica',\n placeholder: 'Seleziona data'\n },\n en: {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\n today: 'Today',\n confirm: 'Apply',\n placeholder: 'Select date'\n }\n};\n\n@Component({\n imports: [TailwindIcon, TailwindButton],\n selector: 'tailwind-date-picker',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDatePicker), multi: true }],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\n\n protected readonly i18n = I18N[this.lang];\n protected readonly weekDays = this.i18n.weekDays;\n\n readonly label = input<string>('');\n readonly placeholder = input<string | undefined>(undefined);\n readonly format = input<string>('dd/MM/yyyy');\n\n readonly value = model<Date | null>(null);\n /** Working selection while the panel is open; committed on Apply. */\n readonly draft = signal<Date | null>(null);\n\n readonly isDisabled = signal(false);\n readonly showCalendar = signal(false);\n readonly viewMonth = signal(new Date().getMonth());\n readonly viewYear = signal(new Date().getFullYear());\n\n readonly effectivePlaceholder = computed(() => {\n const p = this.placeholder();\n return p?.trim() ? p : this.i18n.placeholder;\n });\n\n readonly displayValue = computed(() => {\n const d = this.value();\n if (!d) return '';\n const fmt = this.format();\n try {\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\n } catch {\n return formatDate(d, fmt, 'en-US');\n }\n });\n\n readonly monthYearLabel = computed(() => `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`);\n\n readonly calendarDays = computed(() => {\n const y = this.viewYear(),\n m = this.viewMonth();\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\n const total = new Date(y, m + 1, 0).getDate();\n const days: number[] = Array(offset).fill(0);\n for (let i = 1; i <= total; i++) days.push(i);\n return days;\n });\n\n private onChange: (v: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(v: Date | null): void {\n this.value.set(v ?? null);\n if (v && !isNaN(v.getTime())) {\n this.viewMonth.set(v.getMonth());\n this.viewYear.set(v.getFullYear());\n }\n }\n\n registerOnChange(fn: (v: Date | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(d: boolean): void {\n this.isDisabled.set(d);\n }\n\n toggleCalendar(): void {\n if (this.isDisabled()) return;\n if (!this.showCalendar()) {\n this.draft.set(this.value());\n const ref = this.value() ?? new Date();\n this.viewMonth.set(ref.getMonth());\n this.viewYear.set(ref.getFullYear());\n }\n this.showCalendar.update(v => !v);\n }\n\n apply(): void {\n const d = this.draft();\n this.value.set(d);\n this.onChange(d);\n this.onTouched();\n this.showCalendar.set(false);\n }\n\n prevMonth(): void {\n if (this.viewMonth() === 0) {\n this.viewMonth.set(11);\n this.viewYear.update(y => y - 1);\n } else {\n this.viewMonth.update(m => m - 1);\n }\n }\n\n nextMonth(): void {\n if (this.viewMonth() === 11) {\n this.viewMonth.set(0);\n this.viewYear.update(y => y + 1);\n } else {\n this.viewMonth.update(m => m + 1);\n }\n }\n\n selectDay(day: number): void {\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day));\n }\n\n isSelected(day: number): boolean {\n const d = this.draft();\n if (!d) return false;\n return d.getFullYear() === this.viewYear() && d.getMonth() === this.viewMonth() && d.getDate() === day;\n }\n\n isToday(day: number): boolean {\n const t = new Date();\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\n }\n\n goToToday(): void {\n const t = new Date();\n this.viewMonth.set(t.getMonth());\n this.viewYear.set(t.getFullYear());\n this.selectDay(t.getDate());\n }\n\n @HostListener('document:pointerdown', ['$event'])\n onDocumentPointerDown(event: PointerEvent): void {\n if (!this.showCalendar()) return;\n const t = event.target;\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\n this.showCalendar.set(false);\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocumentKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || !this.showCalendar()) return;\n event.stopPropagation();\n this.showCalendar.set(false);\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-neutral-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-neutral-300 rounded-md px-3 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-neutral-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleCalendar()\" />\n <tailwind-icon\n icon=\"calendar-days\"\n [size]=\"16\"\n class=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 pointer-events-none\" />\n </div>\n\n @if (showCalendar()) {\n <div class=\"absolute z-popover mt-1 bg-white rounded-xl border border-neutral-200 shadow-xl p-4 w-72\">\n <!-- Month/Year nav -->\n <div class=\"flex items-center justify-between mb-3\">\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-left\"\n ariaLabel=\"Previous month\"\n (onClick)=\"prevMonth()\" />\n <span class=\"text-sm font-semibold text-neutral-800\">{{ monthYearLabel() }}</span>\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-right\"\n ariaLabel=\"Next month\"\n (onClick)=\"nextMonth()\" />\n </div>\n <!-- Weekdays -->\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track $index) {\n <div class=\"text-center text-xs font-medium text-neutral-400 py-1\">{{ day }}</div>\n }\n </div>\n <!-- Days -->\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-neutral-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-neutral-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-2 pt-2 border-t border-neutral-100 flex items-center justify-between gap-2\">\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"xs\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"goToToday()\">\n {{ i18n.today }}\n </tailwind-button>\n <tailwind-button\n kind=\"solid\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled() || !draft()\"\n (onClick)=\"apply()\">\n {{ i18n.confirm }}\n </tailwind-button>\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\ntype Lang = 'it' | 'en';\ntype TimeDraft = { h: number; m: number };\n\nconst I18N: Record<Lang, { placeholder: string; now: string; apply: string }> = {\n it: { placeholder: 'Seleziona ora', now: 'Adesso', apply: 'Applica' },\n en: { placeholder: 'Select time', now: 'Now', apply: 'Apply' }\n};\n\n@Component({\n selector: 'tailwind-time-picker',\n imports: [TailwindIcon, TailwindButton],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindTimePicker), multi: true }],\n templateUrl: './time-picker.component.html',\n styleUrl: './time-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindTimePicker extends TailwindComponent implements ControlValueAccessor {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\n\n protected readonly i18n = I18N[this.lang];\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\n\n readonly label = input<string>('');\n readonly value = model<string>('');\n readonly isDisabled = signal(false);\n readonly showPanel = signal(false);\n readonly draft = signal<TimeDraft | null>(null);\n\n readonly displayValue = computed(() => this.value());\n\n private onChange: (v: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(v: string): void {\n this.value.set(v ?? '');\n }\n registerOnChange(fn: (v: string) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(d: boolean): void {\n this.isDisabled.set(d);\n }\n\n togglePanel(): void {\n if (this.isDisabled()) return;\n const opening = !this.showPanel();\n if (opening) {\n const v = this.value();\n const parts = v ? v.split(':') : null;\n const now = new Date();\n this.draft.set({\n h: parts ? parseInt(parts[0], 10) || 0 : now.getHours(),\n m: parts ? parseInt(parts[1], 10) || 0 : now.getMinutes()\n });\n }\n this.showPanel.set(opening);\n }\n\n apply(): void {\n const d = this.draft();\n if (!d) return;\n const val = `${d.h.toString().padStart(2, '0')}:${d.m.toString().padStart(2, '0')}`;\n this.value.set(val);\n this.onChange(val);\n this.onTouched();\n this.showPanel.set(false);\n }\n\n goToNow(): void {\n const now = new Date();\n this.draft.set({ h: now.getHours(), m: now.getMinutes() });\n }\n\n onHourChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n this.draft.set({ ...cur, h: Number((e.target as HTMLSelectElement).value) });\n }\n\n onMinuteChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n this.draft.set({ ...cur, m: Number((e.target as HTMLSelectElement).value) });\n }\n\n @HostListener('document:pointerdown', ['$event'])\n onDocumentPointerDown(event: PointerEvent): void {\n if (!this.showPanel()) return;\n const t = event.target;\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\n this.showPanel.set(false);\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocumentKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || !this.showPanel()) return;\n event.stopPropagation();\n this.showPanel.set(false);\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-neutral-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"i18n.placeholder\"\n [disabled]=\"isDisabled()\"\n class=\"block w-full bg-white border border-neutral-300 rounded-md px-3 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-neutral-50 disabled:cursor-not-allowed pr-10\"\n (click)=\"togglePanel()\" />\n <tailwind-icon\n icon=\"clock\"\n [size]=\"16\"\n class=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 pointer-events-none\" />\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-52 rounded-xl border border-neutral-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center gap-2\">\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.h ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-neutral-400 text-sm shrink-0\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.m ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-neutral-100 flex items-center justify-between gap-2\">\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"xs\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"goToNow()\">\n {{ i18n.now }}\n </tailwind-button>\n <tailwind-button\n kind=\"solid\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"apply()\">\n {{ i18n.apply }}\n </tailwind-button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { formatDate } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\ntype Lang = 'it' | 'en';\n\nconst I18N: Record<\n Lang,\n { months: string[]; weekDays: string[]; time: string; today: string; confirm: string; placeholder: string }\n> = {\n it: {\n months: [\n 'Gennaio',\n 'Febbraio',\n 'Marzo',\n 'Aprile',\n 'Maggio',\n 'Giugno',\n 'Luglio',\n 'Agosto',\n 'Settembre',\n 'Ottobre',\n 'Novembre',\n 'Dicembre'\n ],\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\n time: 'Ora',\n today: 'Oggi',\n confirm: 'Applica',\n placeholder: 'Seleziona data e ora'\n },\n en: {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\n time: 'Time',\n today: 'Today',\n confirm: 'Apply',\n placeholder: 'Select date and time'\n }\n};\n\n@Component({\n selector: 'tailwind-datetime-picker',\n imports: [TailwindIcon, TailwindButton],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDateTimePicker), multi: true }],\n templateUrl: './datetime-picker.component.html',\n styleUrl: './datetime-picker.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDateTimePicker extends TailwindComponent implements ControlValueAccessor {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\n\n protected readonly i18n = I18N[this.lang];\n protected readonly weekDays = this.i18n.weekDays;\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\n\n readonly label = input<string>('');\n readonly placeholder = input<string | undefined>(undefined);\n /** Angular [DatePipe](https://angular.dev/api/common/DatePipe) format string. */\n readonly format = input<string>('dd/MM/yyyy HH:mm');\n\n readonly selected = signal<Date | null>(null);\n readonly draft = signal<Date | null>(null);\n readonly isDisabled = signal(false);\n readonly showPanel = signal(false);\n readonly viewMonth = signal(new Date().getMonth());\n readonly viewYear = signal(new Date().getFullYear());\n\n readonly effectivePlaceholder = computed(() => {\n const p = this.placeholder();\n return p?.trim() ? p : this.i18n.placeholder;\n });\n\n readonly displayValue = computed(() => {\n const d = this.selected();\n if (!d) return '';\n // formatDate richiede registerLocaleData per locale non-EN: leggiamo format fuori dal try\n // per non richiamare signal dentro il catch (contesto reattivo non garantito dopo un throw).\n // Per i formati numerici (default dd/MM/yyyy HH:mm) il risultato è identico in ogni locale.\n const fmt = this.format();\n try {\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\n } catch {\n return formatDate(d, fmt, 'en-US');\n }\n });\n\n readonly monthYearLabel = computed(() => `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`);\n\n readonly calendarDays = computed(() => {\n const y = this.viewYear(),\n m = this.viewMonth();\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\n const total = new Date(y, m + 1, 0).getDate();\n const days: number[] = Array(offset).fill(0);\n for (let i = 1; i <= total; i++) days.push(i);\n return days;\n });\n\n private onChange: (v: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(v: Date | null | undefined): void {\n const d = v ? new Date(v.getTime()) : null;\n this.selected.set(d);\n if (this.showPanel()) this.draft.set(d ? new Date(d.getTime()) : null);\n const ref = d ?? new Date();\n this.viewMonth.set(ref.getMonth());\n this.viewYear.set(ref.getFullYear());\n }\n\n registerOnChange(fn: (v: Date | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n togglePanel(): void {\n if (this.isDisabled()) return;\n const opening = !this.showPanel();\n if (opening) {\n const s = this.selected();\n const ref = s ? new Date(s.getTime()) : this.todayNow();\n this.draft.set(ref);\n this.viewMonth.set(ref.getMonth());\n this.viewYear.set(ref.getFullYear());\n }\n this.showPanel.set(opening);\n }\n\n apply(): void {\n const d = this.draft();\n this.selected.set(d ? new Date(d.getTime()) : null);\n this.emitValue(this.selected());\n this.showPanel.set(false);\n }\n\n prevMonth(): void {\n if (this.viewMonth() === 0) {\n this.viewMonth.set(11);\n this.viewYear.update(y => y - 1);\n } else {\n this.viewMonth.update(m => m - 1);\n }\n }\n\n nextMonth(): void {\n if (this.viewMonth() === 11) {\n this.viewMonth.set(0);\n this.viewYear.update(y => y + 1);\n } else {\n this.viewMonth.update(m => m + 1);\n }\n }\n\n selectDay(day: number): void {\n const cur = this.draft();\n this.draft.set(\n new Date(this.viewYear(), this.viewMonth(), day, cur?.getHours() ?? 0, cur?.getMinutes() ?? 0, 0, 0)\n );\n }\n\n isSelected(day: number): boolean {\n const v = this.draft();\n return !!v && v.getFullYear() === this.viewYear() && v.getMonth() === this.viewMonth() && v.getDate() === day;\n }\n\n isToday(day: number): boolean {\n const t = new Date();\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\n }\n\n goToToday(): void {\n const t = this.todayNow();\n this.viewMonth.set(t.getMonth());\n this.viewYear.set(t.getFullYear());\n this.draft.set(t);\n }\n\n onHourChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n const h = Number((e.target as HTMLSelectElement).value);\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), h, cur.getMinutes(), 0, 0));\n }\n\n onMinuteChange(e: Event): void {\n const cur = this.draft();\n if (!cur) return;\n const min = Number((e.target as HTMLSelectElement).value);\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), cur.getHours(), min, 0, 0));\n }\n\n private todayNow(): Date {\n const t = new Date();\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), 0, 0);\n }\n\n private emitValue(d: Date | null): void {\n this.onChange(d ? new Date(d.getTime()) : null);\n this.onTouched();\n }\n\n @HostListener('document:pointerdown', ['$event'])\n onDocumentPointerDown(event: PointerEvent): void {\n if (!this.showPanel()) return;\n const t = event.target;\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\n this.showPanel.set(false);\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocumentKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || !this.showPanel()) return;\n event.stopPropagation();\n this.showPanel.set(false);\n }\n}\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-neutral-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-neutral-300 rounded-md px-3 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-neutral-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"togglePanel()\" />\n <tailwind-icon\n icon=\"calendar-days\"\n [size]=\"16\"\n class=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 pointer-events-none\" />\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-80 max-w-full rounded-xl border border-neutral-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center justify-between mb-3\">\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-left\"\n ariaLabel=\"Previous month\"\n (onClick)=\"prevMonth()\" />\n <span class=\"text-sm font-semibold text-neutral-800\">{{ monthYearLabel() }}</span>\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"chevron-right\"\n ariaLabel=\"Next month\"\n (onClick)=\"nextMonth()\" />\n </div>\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track day) {\n <div class=\"text-center text-xs font-medium text-neutral-400 py-1\">{{ day }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-neutral-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-neutral-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-3 pt-3 border-t border-neutral-100 flex items-center gap-2\">\n <span class=\"text-xs font-medium text-neutral-600 shrink-0\">{{ i18n.time }}</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.getHours() ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-neutral-400 text-sm\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-neutral-300 rounded-md px-2 py-1.5 text-sm text-neutral-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-neutral-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.getMinutes() ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-neutral-100 flex items-center justify-between gap-2\">\n <tailwind-button\n kind=\"text\"\n color=\"primary\"\n size=\"xs\"\n [disabled]=\"isDisabled()\"\n (onClick)=\"goToToday()\">\n {{ i18n.today }}\n </tailwind-button>\n <tailwind-button\n kind=\"solid\"\n color=\"primary\"\n size=\"sm\"\n [disabled]=\"isDisabled() || !draft()\"\n (onClick)=\"apply()\">\n {{ i18n.confirm }}\n </tailwind-button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-step',\n templateUrl: './step.component.html',\n styleUrl: './step.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindStep extends TailwindComponent {\n readonly label = input.required<string>();\n readonly description = input<string>('');\n readonly optional = input<boolean>(false);\n readonly completed = signal(false);\n readonly isActive = signal(false);\n}\n","@if (isActive()) {\n <div class=\"py-4\"><ng-content /></div>\n}\n","import { ChangeDetectionStrategy, Component, contentChildren, input, model, effect } from '@angular/core';\nimport { TailwindStep } from './step.component';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon],\n selector: 'tailwind-stepper',\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindStepper extends TailwindComponent {\n readonly activeIndex = model<number>(0);\n readonly linear = input<boolean>(false);\n\n readonly steps = contentChildren(TailwindStep);\n\n constructor() {\n super();\n effect(() => {\n const allSteps = this.steps();\n const idx = this.activeIndex();\n allSteps.forEach((s, i) => s.isActive.set(i === idx));\n });\n }\n\n goToStep(index: number): void {\n if (!this.linear() || index <= this.activeIndex()) {\n this.activeIndex.set(index);\n }\n }\n\n next(): void {\n const s = this.steps();\n if (this.activeIndex() < s.length - 1) {\n s[this.activeIndex()].completed.set(true);\n this.activeIndex.update(v => v + 1);\n }\n }\n\n previous(): void {\n if (this.activeIndex() > 0) this.activeIndex.update(v => v - 1);\n }\n}\n","<!-- Step indicators -->\n<div class=\"flex items-center mb-6\">\n @for (step of steps(); track step.label(); let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <button\n type=\"button\"\n (click)=\"goToStep(i)\"\n class=\"flex items-center gap-2 cursor-pointer group\"\n [attr.aria-current]=\"activeIndex() === i ? 'step' : null\">\n <div\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-all duration-200\"\n [class.bg-primary-600]=\"i <= activeIndex()\"\n [class.border-primary-600]=\"i <= activeIndex()\"\n [class.text-on-primary-600]=\"i <= activeIndex()\"\n [class.border-neutral-300]=\"i > activeIndex()\"\n [class.text-neutral-600]=\"i > activeIndex()\">\n @if (step.completed()) {\n <tailwind-icon icon=\"check\" [size]=\"16\" />\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"hidden sm:block\">\n <p\n class=\"text-sm font-medium\"\n [class.text-primary-700]=\"i <= activeIndex()\"\n [class.text-neutral-700]=\"i > activeIndex()\">\n {{ step.label() }}\n </p>\n @if (step.description()) {\n <p class=\"text-xs text-neutral-500\">{{ step.description() }}</p>\n }\n </div>\n </button>\n @if (!last) {\n <div\n class=\"flex-1 h-0.5 mx-3 rounded-full transition-colors duration-200\"\n [class.bg-primary-600]=\"i < activeIndex()\"\n [class.bg-neutral-200]=\"i >= activeIndex()\"></div>\n }\n </div>\n }\n</div>\n<!-- Step content -->\n<ng-content />\n","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule, TailwindIcon],\n selector: 'tailwind-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindAccordionItem extends TailwindComponent {\n readonly title = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly isExpanded = signal(false);\n\n readonly onToggle = output<void>();\n\n toggle(): void {\n if (!this.disabled()) {\n this.isExpanded.update(v => !v);\n this.onToggle.emit();\n }\n }\n}\n","<div [id]=\"id()\" [ngClass]=\"class()\" class=\"border-b border-neutral-200 last:border-b-0\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"flex items-center justify-between w-full px-5 py-4 text-left text-sm font-medium text-neutral-800 hover:bg-neutral-50 transition-colors cursor-pointer\"\n [attr.aria-expanded]=\"isExpanded()\">\n <span>{{ title() }}</span>\n <tailwind-icon\n icon=\"chevron-down\"\n [size]=\"16\"\n class=\"text-neutral-400 transition-transform duration-200\"\n [class.rotate-180]=\"isExpanded()\" />\n </button>\n @if (isExpanded()) {\n <div class=\"px-5 py-4 text-sm text-neutral-600\">\n <ng-content />\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, contentChildren } from '@angular/core';\nimport { TailwindAccordionItem } from './accordion-item.component';\nimport { TailwindComponent } from '../tailwind.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule],\n selector: 'tailwind-accordion',\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindAccordion extends TailwindComponent {\n readonly items = contentChildren(TailwindAccordionItem);\n}\n","<div\n [id]=\"id()\"\n [ngClass]=\"class()\"\n class=\"border border-neutral-200 rounded-md overflow-hidden divide-y divide-neutral-200\">\n <ng-content />\n</div>\n","export class TailwindModalRef<R = any> {\n private _closeFn!: () => void;\n private _result: R | undefined;\n\n /** @internal called by the service after component creation */\n _init(closeFn: () => void): void {\n this._closeFn = closeFn;\n }\n\n /** Close the modal resolving with the given result */\n close(result?: R): void {\n this._result = result;\n this._closeFn();\n }\n\n /** @internal read by the service after the close animation */\n _getResult(): R | undefined {\n return this._result;\n }\n}\n","import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n Type\n} from '@angular/core';\nimport { TailwindModal } from '../../components/modal/modal.component';\nimport { TailwindModalConfig } from '../../components/modal/interfaces/modal-config.interface';\nimport { TailwindModalRef } from '../../ref/modal/modal.ref';\nimport { TAILWIND_MODAL_DATA } from '../../tokens/tokens';\n\nexport type { TailwindModalConfig };\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindModalService {\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n /**\n * Open a modal programmatically.\n *\n * The `component` is instantiated and its slot elements are projected into\n * TailwindModal's ng-content slots (attribute selectors on direct children):\n * - `[tailwind-modal-title]` → header title area\n * - `[tailwind-modal-content]` → body area\n * - `[tailwind-modal-footer]` → footer area\n *\n * The component can inject `TailwindModalRef<R>` to close with a typed result\n * and `TAILWIND_MODAL_DATA` to receive the `config.data` payload.\n *\n * @returns Promise that resolves with `R` on `close(result)` or `undefined` on dismiss.\n */\n open<R = any, D = any>(component: Type<unknown>, config: TailwindModalConfig<D> = {}): Promise<R | undefined> {\n return new Promise<R | undefined>(resolve => {\n const modalRef = new TailwindModalRef<R>();\n\n const injector = Injector.create({\n providers: [\n { provide: TailwindModalRef, useValue: modalRef },\n { provide: TAILWIND_MODAL_DATA, useValue: config.data ?? null }\n ],\n parent: this.environmentInjector\n });\n\n // ── Step 1: create and render the user component ─────────────────────\n const userComp = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: injector\n });\n this.appRef.attachView(userComp.hostView);\n userComp.changeDetectorRef.detectChanges();\n\n // ── Step 2: extract slot elements from the rendered host ──────────────\n const host = userComp.location.nativeElement as HTMLElement;\n const nodes = (sel: string) => Array.from(host.querySelectorAll(`:scope > ${sel}`));\n\n // ── Step 3: create TailwindModal projecting the slot nodes ────────────\n // projectableNodes[0] → <ng-content /> (title / catch-all)\n // projectableNodes[1] → <ng-content select=\"[tailwind-modal-content]\" />\n // projectableNodes[2] → <ng-content select=\"[tailwind-modal-footer]\" />\n const modalComp = createComponent(TailwindModal, {\n environmentInjector: this.environmentInjector,\n elementInjector: injector,\n projectableNodes: [\n nodes('[tailwind-modal-title]'),\n nodes('[tailwind-modal-content]'),\n nodes('[tailwind-modal-footer]')\n ]\n });\n\n modalComp.setInput('size', config.size ?? 'md');\n modalComp.setInput('showCloseButton', config.showCloseButton ?? true);\n modalComp.setInput('closeOnBackdrop', config.closeOnBackdrop ?? true);\n modalComp.setInput('closeOnEscape', config.closeOnEscape ?? true);\n\n this.appRef.attachView(modalComp.hostView);\n document.body.appendChild(modalComp.location.nativeElement);\n\n // ── Step 4: wire close ────────────────────────────────────────────────\n modalRef._init(() => modalComp.instance.close());\n\n const sub = modalComp.instance.onClose.subscribe(() => {\n sub.unsubscribe();\n resolve(modalRef._getResult());\n modalComp.location.nativeElement.remove();\n this.appRef.detachView(modalComp.hostView);\n this.appRef.detachView(userComp.hostView);\n modalComp.destroy();\n userComp.destroy();\n });\n\n modalComp.instance.open();\n });\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { TailwindToastItem } from '../../components/toast/interfaces/toast-item.interface';\nimport { TailwindToastConfig } from '../../components/toast/interfaces/toast-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindToastService {\n private nextId = 0;\n readonly toasts = signal<TailwindToastItem[]>([]);\n\n show(config: TailwindToastConfig): number {\n const id = this.nextId++;\n const toast: TailwindToastItem = { id, severity: 'info', duration: 4000, dismissible: true, ...config };\n this.toasts.update(list => [...list, toast]);\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n success(message: string, title?: string): number {\n return this.show({ message, title, severity: 'success' });\n }\n warning(message: string, title?: string): number {\n return this.show({ message, title, severity: 'warning' });\n }\n danger(message: string, title?: string): number {\n return this.show({ message, title, severity: 'danger' });\n }\n info(message: string, title?: string): number {\n return this.show({ message, title, severity: 'info' });\n }\n\n dismiss(id: number): void {\n this.toasts.update(list => list.filter(t => t.id !== id));\n }\n clear(): void {\n this.toasts.set([]);\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindButton } from '../button/button.component';\n\nimport { TailwindToastConfig } from './interfaces/toast-config.interface';\nimport { TailwindToastItem } from './interfaces/toast-item.interface';\nimport { TailwindToastService } from '../../services';\nexport type { TailwindToastConfig, TailwindToastItem };\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-toast',\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindToast extends TailwindComponent {\n readonly toastService = inject(TailwindToastService);\n}\n","<div class=\"fixed bottom-4 right-4 z-1080 flex flex-col gap-2 max-w-sm w-full pointer-events-none\">\n @for (toast of toastService.toasts(); track toast.id) {\n <div\n class=\"pointer-events-auto rounded-xl border shadow-lg p-4 flex gap-3 animate-in slide-in-from-right-full duration-300\"\n [class.bg-success-50]=\"toast.severity === 'success'\"\n [class.border-success-200]=\"toast.severity === 'success'\"\n [class.bg-warning-50]=\"toast.severity === 'warning'\"\n [class.border-warning-200]=\"toast.severity === 'warning'\"\n [class.bg-danger-50]=\"toast.severity === 'danger'\"\n [class.border-danger-200]=\"toast.severity === 'danger'\"\n [class.bg-info-50]=\"toast.severity === 'info'\"\n [class.border-info-200]=\"toast.severity === 'info'\"\n role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (toast.title) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ toast.title }}</p>\n }\n <p class=\"text-sm\">{{ toast.message }}</p>\n </div>\n @if (toast.dismissible) {\n <tailwind-button\n kind=\"ghost\"\n color=\"transparent\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 opacity-60 hover:opacity-100\"\n ariaLabel=\"Dismiss\"\n (onClick)=\"toastService.dismiss(toast.id)\" />\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindButton } from '../button/button.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindButton],\n selector: 'tailwind-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindNotification extends TailwindComponent {\n readonly title = input<string>('');\n readonly severity = input<TailwindSeverity>('info');\n readonly dismissible = input<boolean>(true);\n readonly showActions = input<boolean>(false);\n\n readonly onDismiss = output<void>();\n\n readonly computedClasses = computed(() => {\n const variantMap: Record<TailwindSeverity, string> = {\n success: 'bg-success-50 border-success-200 text-on-success-50',\n warning: 'bg-warning-50 border-warning-200 text-on-warning-50',\n danger: 'bg-danger-50 border-danger-200 text-on-danger-50',\n info: 'bg-info-50 border-info-200 text-on-info-50'\n };\n return `flex items-start rounded-lg border p-4 ${variantMap[this.severity()]}`;\n });\n}\n","<div [class]=\"computedClasses()\" role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ title() }}</p>\n }\n <p class=\"text-sm\"><ng-content /></p>\n @if (showActions()) {\n <div class=\"pt-3\">\n <ng-content select=\"[tailwind-notification-actions]\" />\n </div>\n }\n </div>\n @if (dismissible()) {\n <tailwind-button\n kind=\"ghost\"\n color=\"secondary\"\n size=\"sm\"\n icon=\"x-mark\"\n class=\"shrink-0 -m-1\"\n ariaLabel=\"Dismiss\"\n (onClick)=\"onDismiss.emit()\" />\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSeverity } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-message',\n templateUrl: './message.component.html',\n styleUrl: './message.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindMessage extends TailwindComponent {\n readonly severity = input<TailwindSeverity>('info');\n\n readonly computedClasses = computed(() => {\n const variantMap: Record<TailwindSeverity, string> = {\n success: 'bg-success-50 text-success-700 border-success-200',\n warning: 'bg-warning-50 text-warning-700 border-warning-200',\n danger: 'bg-danger-50 text-danger-700 border-danger-200',\n info: 'bg-info-50 text-info-700 border-info-200'\n };\n return `text-sm px-3 py-2 rounded-lg border ${variantMap[this.severity()]}`;\n });\n}\n","<div [class]=\"computedClasses()\" role=\"status\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSkeleton extends TailwindComponent {\n readonly variant = input<'text' | 'circle' | 'rect' | 'rounded'>('text');\n readonly width = input<string>('100%');\n readonly height = input<string>('');\n\n readonly computedClasses = computed(() => {\n const base = 'tailwind-skeleton-pulse';\n const variantMap: Record<string, string> = {\n text: 'h-4 rounded',\n circle: 'rounded-full',\n rect: 'rounded-none',\n rounded: 'rounded-xl'\n };\n return `${base} ${variantMap[this.variant()]}`;\n });\n}\n","<div\n [style.width]=\"width()\"\n [style.height]=\"height() || (variant() === 'circle' ? width() : '1.5rem')\"\n [class]=\"computedClasses()\"\n aria-hidden=\"true\"></div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TailwindMenuItem, TailwindSeverity } from '../../models';\nimport { TailwindIcon } from '../icon/icon.component';\nimport { TailwindMenu } from '../menu/menu.component';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n imports: [TailwindIcon, TailwindMenu],\n selector: 'tailwind-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrl: './toolbar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindToolbar extends TailwindComponent {\n /** When true, uses rounded corners (`rounded-xl`). */\n readonly rounded = input<boolean>(true);\n /**\n * Orizzontale: `full` = `w-full`; `container` = larghezza responsiva (95% / 85% / 75%) centrata.\n * Verticale: ignorato per l’altezza — il rail è sempre `h-full w-full` nella colonna.\n */\n readonly width = input<'full' | 'container'>('full');\n /** Applies a stronger drop shadow. */\n readonly elevated = input<boolean>(false);\n /**\n * Colore di superficie della barra: `default` mantiene sfondo bianco;\n * i valori `TailwindSeverity` applicano tinte semantiche (come alert/notification).\n */\n readonly variant = input<TailwindSeverity | 'default'>('default');\n /** `horizontal` for a top app bar; `vertical` for a side rail (logo → menu → end). */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /** Navigation / actions rendered between logo and end slots. */\n readonly menu = input<TailwindMenuItem[]>([]);\n\n /** Emitted when a non-disabled, non-divider menu entry is activated. */\n readonly onMenuSelect = output<TailwindMenuItem>();\n\n /** Flat list for the mobile hamburger (submenu children promoted one level). */\n readonly mobileMenuItems = computed(() => this.flattenMenuItems(this.menu()));\n\n readonly submenuPlacement = computed((): 'bottom' | 'right' =>\n this.orientation() === 'horizontal' ? 'bottom' : 'right'\n );\n\n readonly submenuChevronIcon = computed(() =>\n this.orientation() === 'horizontal' ? 'chevron-down' : 'chevron-right'\n );\n\n readonly menuItemWithSubmenuClasses = computed(() => {\n const horizontal = this.orientation() === 'horizontal';\n return horizontal ? 'relative inline-flex shrink-0' : 'relative w-full';\n });\n\n readonly menuContainerClasses = computed(() =>\n this.orientation() === 'horizontal'\n ? 'min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1'\n : 'min-w-0 flex-1 flex flex-col gap-1.5 overflow-y-auto min-h-0'\n );\n\n /** Foreground on semantic surface (`text-on-*`), aligned with solid toolbar shade per variant. */\n readonly variantContrastTextClass = computed((): string | null => {\n const v = this.variant();\n if (v === 'default') {\n return null;\n }\n const map: Record<TailwindSeverity, string> = {\n success: 'text-on-success-600',\n warning: 'text-on-warning-500',\n danger: 'text-on-danger-600',\n info: 'text-on-info-600'\n };\n return map[v];\n });\n\n /** On light-on-color variants, tint masked icons to match `text-on-*`. */\n readonly menuItemIconClasses = computed(() =>\n this.variant() !== 'default' && this.variant() !== 'warning' ? 'toolbar-menu-icon-on-light' : ''\n );\n\n readonly menuItemToneClasses = computed(() => {\n const contrast = this.variantContrastTextClass();\n if (!contrast) {\n return 'text-neutral-700 hover:bg-neutral-100 hover:text-neutral-900';\n }\n return `${contrast} hover:bg-white/12`;\n });\n\n readonly menuItemButtonClasses = computed(() => {\n const horizontal = this.orientation() === 'horizontal';\n const layout = horizontal\n ? 'inline-flex shrink-0 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium'\n : 'inline-flex w-full items-center gap-2 rounded-md px-3 py-3 text-left text-sm font-medium';\n const rest =\n 'disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent';\n return [layout, this.menuItemToneClasses(), rest].join(' ');\n });\n\n readonly mobileMenuToggleClasses = computed(() =>\n [\n 'inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-2 transition-colors',\n this.menuItemToneClasses()\n ].join(' ')\n );\n\n readonly menuDividerLineClasses = computed(() =>\n this.variant() === 'default'\n ? 'mx-0.5 h-5 w-px shrink-0 self-center bg-neutral-200'\n : 'mx-0.5 h-5 w-px shrink-0 self-center bg-white/30'\n );\n\n readonly menuDividerRuleClasses = computed(() =>\n this.variant() === 'default'\n ? 'my-1 w-full border-0 border-t border-neutral-100'\n : 'my-1 w-full border-0 border-t border-white/25'\n );\n\n readonly rootClasses = computed(() => {\n const horizontal = this.orientation() === 'horizontal';\n const sizeClasses = horizontal\n ? this.width() === 'full'\n ? 'w-full h-16'\n : 'container mx-auto h-16'\n : 'h-full w-full';\n\n const variant = this.variant();\n const surfaceMap: Record<TailwindSeverity | 'default', string> = {\n default: 'bg-white border border-neutral-200',\n success: 'bg-success-600 border border-white/20',\n warning: 'bg-warning-500 border border-white/20',\n danger: 'bg-danger-600 border border-white/20',\n info: 'bg-info-600 border border-white/20'\n };\n\n const base = [\n surfaceMap[variant] ?? surfaceMap.default,\n this.variantContrastTextClass() ?? '',\n 'flex',\n sizeClasses,\n this.rounded() ? 'rounded-xl' : 'rounded-none',\n this.elevated() ? 'shadow-lg' : 'shadow-sm'\n ];\n\n if (horizontal) {\n base.push('flex-row items-center gap-3 px-4 py-3');\n } else {\n base.push('flex-col items-stretch gap-3 px-3 py-4 min-h-0');\n }\n\n return base.filter(Boolean).join(' ');\n });\n\n hasSubmenu(item: TailwindMenuItem): boolean {\n return Array.isArray(item.items) && item.items.length > 0;\n }\n\n selectMenuItem(item: TailwindMenuItem): void {\n if (item.divider || item.disabled || this.hasSubmenu(item)) {\n return;\n }\n this.onMenuSelect.emit(item);\n }\n\n private flattenMenuItems(items: TailwindMenuItem[]): TailwindMenuItem[] {\n const flat: TailwindMenuItem[] = [];\n for (const item of items) {\n if (this.hasSubmenu(item)) {\n flat.push(...item.items!);\n } else {\n flat.push(item);\n }\n }\n return flat;\n }\n\n /** True when `label` is a non-empty string after trim (icon-only entries omit or blank `label`). */\n menuItemHasVisibleLabel(item: TailwindMenuItem): boolean {\n const label = item.label;\n return typeof label === 'string' && label.trim().length > 0;\n }\n\n /** Accessible name when there is no visible label (`value`, trimmed). */\n menuItemAriaLabel(item: TailwindMenuItem): string | null {\n if (this.menuItemHasVisibleLabel(item)) {\n return null;\n }\n const v = item.value;\n return v != null && String(v).trim().length > 0 ? String(v).trim() : null;\n }\n\n menuTrackKey(index: number, item: TailwindMenuItem): string {\n return item.value ?? item.label ?? String(index);\n }\n}\n","<div [class]=\"rootClasses()\">\n <div class=\"shrink-0\">\n <ng-content select=\"[tailwind-toolbar-logo]\" />\n </div>\n @if (orientation() === 'horizontal') {\n <nav class=\"min-w-0 flex flex-1 flex-row flex-wrap items-center gap-1\" [attr.aria-label]=\"'Toolbar menu'\">\n @if (menu().length) {\n <div class=\"flex shrink-0 items-center md:hidden\">\n <button\n type=\"button\"\n [class]=\"mobileMenuToggleClasses()\"\n [attr.aria-expanded]=\"mobileToolbarMenu.isOpen()\"\n aria-haspopup=\"menu\"\n aria-label=\"Open navigation menu\"\n (click)=\"mobileToolbarMenu.toggle($event)\">\n <tailwind-icon icon=\"bars-3\" [size]=\"22\" [class]=\"menuItemIconClasses()\" />\n </button>\n <tailwind-menu\n #mobileToolbarMenu\n [items]=\"mobileMenuItems()\"\n align=\"left\"\n (onSelect)=\"selectMenuItem($event)\" />\n </div>\n }\n <div class=\"hidden min-w-0 flex-1 flex-row flex-wrap items-center gap-1 md:flex\">\n @for (item of menu(); track menuTrackKey($index, item)) {\n @if (item.divider) {\n <span [class]=\"menuDividerLineClasses()\" aria-hidden=\"true\"></span>\n } @else if (hasSubmenu(item)) {\n <div [class]=\"menuItemWithSubmenuClasses()\">\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.px-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [class.py-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n [attr.aria-expanded]=\"itemMenu.isOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"itemMenu.toggle($event)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"20\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n {{ item.label }}\n }\n <tailwind-icon [icon]=\"submenuChevronIcon()\" [size]=\"16\" [class]=\"menuItemIconClasses()\" />\n </button>\n <tailwind-menu\n #itemMenu\n [items]=\"item.items!\"\n [placement]=\"submenuPlacement()\"\n align=\"left\"\n (onSelect)=\"selectMenuItem($event)\" />\n </div>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.px-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [class.py-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n (click)=\"selectMenuItem(item)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"20\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n {{ item.label }}\n }\n </button>\n }\n }\n </div>\n </nav>\n } @else {\n <nav [class]=\"menuContainerClasses()\" [attr.aria-label]=\"'Toolbar menu'\">\n @for (item of menu(); track menuTrackKey($index, item)) {\n @if (item.divider) {\n <hr [class]=\"menuDividerRuleClasses()\" />\n } @else if (hasSubmenu(item)) {\n <div [class]=\"menuItemWithSubmenuClasses()\">\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.justify-center]=\"!menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n [attr.aria-expanded]=\"itemMenu.isOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"itemMenu.toggle($event)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"22\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n <span class=\"min-w-0 flex-1\">{{ item.label }}</span>\n }\n <tailwind-icon\n [icon]=\"submenuChevronIcon()\"\n [size]=\"18\"\n [class]=\"menuItemIconClasses()\"\n [class.ml-auto]=\"menuItemHasVisibleLabel(item)\" />\n </button>\n <tailwind-menu\n #itemMenu\n [items]=\"item.items!\"\n [placement]=\"submenuPlacement()\"\n align=\"left\"\n (onSelect)=\"selectMenuItem($event)\" />\n </div>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"!!item.disabled\"\n [class]=\"menuItemButtonClasses()\"\n [class.justify-center]=\"!menuItemHasVisibleLabel(item)\"\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\n (click)=\"selectMenuItem(item)\">\n @if (item.icon) {\n <tailwind-icon [icon]=\"item.icon\" [size]=\"22\" [class]=\"menuItemIconClasses()\" />\n }\n @if (menuItemHasVisibleLabel(item)) {\n {{ item.label }}\n }\n </button>\n }\n }\n </nav>\n }\n <div\n class=\"flex flex-wrap items-center gap-2 shrink-0\"\n [class.toolbar-end-vertical]=\"orientation() === 'vertical'\"\n [class.justify-end]=\"orientation() === 'horizontal'\"\n [class.mt-auto]=\"orientation() === 'vertical'\"\n [class.w-full]=\"orientation() === 'vertical'\"\n [class.justify-center]=\"orientation() === 'vertical'\">\n <ng-content select=\"[tailwind-toolbar-end]\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindComponent } from '../tailwind.component';\n\n@Component({\n selector: 'tailwind-divider',\n templateUrl: './divider.component.html',\n styleUrl: './divider.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindDivider extends TailwindComponent {\n /** Rule direction */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n /** Adds horizontal margin to the rule (horizontal orientation only). */\n readonly inset = input<boolean>(false);\n /** Border style for the rule */\n readonly variant = input<'solid' | 'dashed'>('solid');\n /** Centered text between two lines (horizontal only; ignored when empty). */\n readonly label = input<string>('');\n\n readonly isLabeledHorizontal = computed(() => this.orientation() === 'horizontal' && !!this.label()?.trim());\n\n readonly ruleClasses = computed(() => {\n const inset = this.inset() && this.orientation() === 'horizontal' ? 'mx-4' : '';\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\n\n if (this.orientation() === 'vertical') {\n return ['self-stretch shrink-0 w-px min-h-full border-0 border-l', variant, 'border-neutral-200'].join(' ');\n }\n\n return ['w-full border-0 border-t', variant, 'border-neutral-200', 'my-4', inset].filter(Boolean).join(' ');\n });\n\n /** Top rule for labeled horizontal layout */\n readonly ruleLineClass = computed(() => {\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\n return ['border-neutral-200', variant].join(' ');\n });\n\n readonly labeledRowClass = computed(() =>\n ['flex items-center gap-3 w-full my-4', this.inset() ? 'mx-4' : ''].filter(Boolean).join(' ')\n );\n}\n","@if (isLabeledHorizontal()) {\n <div [class]=\"labeledRowClass()\" role=\"separator\" [attr.aria-label]=\"label()\">\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\n <span class=\"text-xs font-medium text-neutral-500 shrink-0\">{{ label() }}</span>\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\n </div>\n} @else {\n <div [class]=\"ruleClasses()\" role=\"separator\"></div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { TailwindSize, TailwindSeverity } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\nimport { TailwindMeterSegment } from './interfaces/meter-segment.interface';\n\n@Component({\n selector: 'tailwind-meter',\n templateUrl: './meter.component.html',\n styleUrl: './meter.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindMeter extends TailwindComponent {\n /** Segments rendered as proportional blocks in the bar. */\n readonly segments = input<TailwindMeterSegment[]>([]);\n /**\n * Scale maximum. Each segment `value` is shown as `value / max` of the bar width.\n * Default 100 (percent-style values).\n */\n readonly max = input<number>(100);\n /** Show a simple legend under the bar */\n readonly showLabels = input<boolean>(true);\n /** Track height */\n readonly size = input<TailwindSize>('md');\n\n readonly trackHeightClass = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'h-1.5',\n sm: 'h-2',\n md: 'h-2.5',\n lg: 'h-3.5',\n xl: 'h-4'\n };\n return map[this.size()];\n });\n\n readonly totalValue = computed(() => this.segments().reduce((s, x) => s + Math.max(0, x.value), 0));\n\n readonly scaleMax = computed(() => {\n const m = this.max();\n if (m > 0) {\n return m;\n }\n const t = this.totalValue();\n return t > 0 ? t : 1;\n });\n\n readonly segmentLayouts = computed(() => {\n const cap = this.scaleMax();\n return this.segments().map(seg => {\n const pct = cap > 0 ? (Math.max(0, seg.value) / cap) * 100 : 0;\n const variant = seg.variant ?? 'primary';\n return { ...seg, widthPct: pct, barClass: this.variantToBarClass(variant) };\n });\n });\n\n readonly trackContainerClasses = computed(\n () => `flex w-full overflow-hidden rounded-full bg-neutral-200 ${this.trackHeightClass()}`\n );\n\n legendSwatchClass(variant?: TailwindSeverity | 'primary'): string {\n return this.variantToBarClass(variant ?? 'primary');\n }\n\n private variantToBarClass(variant: TailwindSeverity | 'primary'): string {\n const map: Record<string, string> = {\n primary: 'bg-primary-600',\n success: 'bg-success-600',\n warning: 'bg-warning-500',\n danger: 'bg-danger-600',\n info: 'bg-info-600'\n };\n return map[variant] ?? map['primary'];\n }\n}\n","<div class=\"w-full space-y-2\">\n <div\n [class]=\"trackContainerClasses()\"\n role=\"meter\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"scaleMax()\"\n [attr.aria-valuenow]=\"totalValue()\"\n [attr.aria-label]=\"'Meter'\">\n @for (seg of segmentLayouts(); track $index) {\n @if (seg.widthPct > 0) {\n <div\n class=\"h-full min-w-0 transition-all duration-300 ease-out\"\n [class]=\"seg.barClass\"\n [style.width.%]=\"seg.widthPct\"\n [attr.title]=\"seg.label + ': ' + seg.value\"></div>\n }\n }\n </div>\n\n @if (showLabels()) {\n <div class=\"flex flex-wrap gap-x-4 gap-y-1 text-xs\">\n @for (seg of segments(); track $index) {\n <span class=\"inline-flex items-center gap-1.5\">\n <span class=\"inline-block size-2 rounded-sm shrink-0\" [class]=\"legendSwatchClass(seg.variant)\"></span>\n <span class=\"text-neutral-700\">{{ seg.label }}</span>\n <span class=\"text-neutral-500\">({{ seg.value }})</span>\n </span>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TailwindSeverity, TailwindSize } from '../../models';\nimport { TailwindComponent } from '../tailwind.component';\n\n/** Value model: single number or sorted pair when `range` is true */\nexport type TailwindSliderValue = number | [number, number];\n\n@Component({\n selector: 'tailwind-slider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TailwindSlider),\n multi: true\n }\n ],\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TailwindSlider extends TailwindComponent implements ControlValueAccessor {\n /** Minimum bound */\n readonly min = input<number>(0);\n /** Maximum bound */\n readonly max = input<number>(100);\n /** Step increment */\n readonly step = input<number>(1);\n /** Two-thumb range mode */\n readonly range = input<boolean>(false);\n /** Layout */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n /** Tick marks at each step */\n readonly showTicks = input<boolean>(false);\n /** Control size */\n readonly size = input<TailwindSize>('md');\n /** Track fill / thumb color */\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\n\n readonly trackRef = viewChild<ElementRef<HTMLElement>>('track');\n\n /** Single-thumb value */\n readonly singleValue = signal(0);\n /** Range: lower value */\n readonly rangeLow = signal(0);\n /** Range: upper value */\n readonly rangeHigh = signal(100);\n\n /** Disabled via template (combined with form `setDisabledState`) */\n readonly hostDisabled = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n readonly isDisabled = signal(false);\n\n readonly isEffectivelyDisabled = computed(() => this.isDisabled() || this.hostDisabled());\n\n private onChange: (v: TailwindSliderValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly activeThumb = signal<null | 0 | 1>(null);\n\n readonly thumbSizeClass = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6'\n };\n return map[this.size()];\n });\n\n readonly trackThickness = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-2.5',\n xl: 'h-3'\n };\n return map[this.size()];\n });\n\n readonly verticalTrackThickness = computed(() => {\n const map: Record<TailwindSize, string> = {\n xs: 'w-1',\n sm: 'w-1.5',\n md: 'w-2',\n lg: 'w-2.5',\n xl: 'w-3'\n };\n return map[this.size()];\n });\n\n /**\n * Uses theme CSS variables (`--color-*`) so accent colors work even when dynamic\n * `bg-*` utilities are not present in the compiled stylesheet (Tailwind content scan).\n */\n readonly accentVars = computed(() => {\n const name = this.variant();\n return {\n fill: `var(--color-${name}-500)`,\n thumb: `var(--color-${name}-600)`,\n ring: `var(--color-${name}-500)`\n };\n });\n\n readonly singlePct = computed(() => this.valueToPct(this.singleValue()));\n\n readonly lowPct = computed(() => this.valueToPct(this.rangeLow()));\n readonly highPct = computed(() => this.valueToPct(this.rangeHigh()));\n\n readonly fillStartPct = computed(() => (this.range() ? Math.min(this.lowPct(), this.highPct()) : 0));\n\n readonly fillWidthPct = computed(() => (this.range() ? Math.abs(this.highPct() - this.lowPct()) : this.singlePct()));\n\n readonly tickPositions = computed(() => {\n if (!this.showTicks()) {\n return [] as number[];\n }\n const lo = this.min();\n const hi = this.max();\n const st = this.step();\n if (st <= 0 || hi < lo) {\n return [];\n }\n const steps = Math.round((hi - lo) / st);\n const out: number[] = [];\n for (let i = 0; i <= steps; i++) {\n out.push(this.valueToPct(lo + i * st));\n }\n return out;\n });\n\n writeValue(value: TailwindSliderValue | null): void {\n const lo = this.min();\n const hi = this.max();\n if (this.range()) {\n const pair = Array.isArray(value) ? value : [lo, hi];\n const a = this.snap(Math.min(pair[0] ?? lo, pair[1] ?? hi));\n const b = this.snap(Math.max(pair[0] ?? lo, pair[1] ?? hi));\n this.rangeLow.set(Math.min(a, b));\n this.rangeHigh.set(Math.max(a, b));\n } else {\n const n = Array.isArray(value) ? value[0] : value;\n const num = typeof n === 'number' && !Number.isNaN(n) ? n : lo;\n this.singleValue.set(this.snap(num));\n }\n }\n\n registerOnChange(fn: (v: TailwindSliderValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.isDisabled.set(disabled);\n }\n\n valueToPct(v: number): number {\n const lo = this.min();\n const hi = this.max();\n if (hi === lo) {\n return 0;\n }\n return ((this.snap(v) - lo) / (hi - lo)) * 100;\n }\n\n snap(raw: number): number {\n const lo = this.min();\n const hi = this.max();\n const st = this.step();\n if (st <= 0) {\n return Math.min(hi, Math.max(lo, raw));\n }\n const stepped = Math.round((raw - lo) / st) * st + lo;\n const rounded = Math.round(stepped * 1e6) / 1e6;\n return Math.min(hi, Math.max(lo, rounded));\n }\n\n pctToValue(pct: number): number {\n const lo = this.min();\n const hi = this.max();\n const v = lo + (pct / 100) * (hi - lo);\n return this.snap(v);\n }\n\n onThumbPointerDown(event: PointerEvent, thumbIndex: 0 | 1): void {\n event.stopPropagation();\n this.onTrackPointerDown(event, thumbIndex);\n }\n\n onTrackPointerDown(event: PointerEvent, thumbIndex: 0 | 1 | null): void {\n if (this.isEffectivelyDisabled()) {\n return;\n }\n event.preventDefault();\n const track = this.trackRef()?.nativeElement;\n if (!track) {\n return;\n }\n\n let thumb: 0 | 1 | null = thumbIndex;\n if (!this.range()) {\n thumb = null;\n } else if (thumb === null) {\n const v = this.readValueFromPointer(event, track);\n const low = this.rangeLow();\n const high = this.rangeHigh();\n const d0 = Math.abs(v - low);\n const d1 = Math.abs(v - high);\n thumb = d0 <= d1 ? 0 : 1;\n }\n\n this.activeThumb.set(thumb);\n this.applyPointer(event, track, thumb);\n\n if (typeof track.setPointerCapture === 'function') {\n track.setPointerCapture(event.pointerId);\n }\n\n const move = (ev: PointerEvent) => this.applyPointer(ev, track, thumb);\n const up = (ev: PointerEvent) => {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', up);\n document.removeEventListener('pointercancel', up);\n try {\n track.releasePointerCapture(ev.pointerId);\n } catch {\n /* ignore */\n }\n this.activeThumb.set(null);\n this.onTouched();\n };\n document.addEventListener('pointermove', move);\n document.addEventListener('pointerup', up);\n document.addEventListener('pointercancel', up);\n }\n\n private readValueFromPointer(event: PointerEvent, track: HTMLElement): number {\n const rect = track.getBoundingClientRect();\n const horizontal = this.orientation() === 'horizontal';\n let ratio: number;\n if (horizontal) {\n ratio = (event.clientX - rect.left) / rect.width;\n } else {\n ratio = 1 - (event.clientY - rect.top) / rect.height;\n }\n ratio = Math.min(1, Math.max(0, ratio));\n return this.pctToValue(ratio * 100);\n }\n\n private applyPointer(event: PointerEvent, track: HTMLElement, thumbIndex: 0 | 1 | null): void {\n const next = this.readValueFromPointer(event, track);\n if (this.range()) {\n const idx = thumbIndex ?? 0;\n if (idx === 0) {\n const hi = this.rangeHigh();\n this.rangeLow.set(this.snap(Math.min(next, hi)));\n } else {\n const lo = this.rangeLow();\n this.rangeHigh.set(this.snap(Math.max(next, lo)));\n }\n this.onChange([this.rangeLow(), this.rangeHigh()]);\n } else {\n this.singleValue.set(next);\n this.onChange(this.singleValue());\n }\n }\n\n onKeyDown(event: KeyboardEvent, thumbIndex: 0 | 1): void {\n if (this.isEffectivelyDisabled()) {\n return;\n }\n const keys = ['ArrowLeft', 'ArrowRight', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\n if (!keys.includes(event.key)) {\n return;\n }\n event.preventDefault();\n const lo = this.min();\n const hi = this.max();\n const st = this.step();\n const horizontal = this.orientation() === 'horizontal';\n const decKey = horizontal ? 'ArrowLeft' : 'ArrowDown';\n const incKey = horizontal ? 'ArrowRight' : 'ArrowUp';\n\n const delta = (key: string) => {\n if (key === 'Home') {\n return lo - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\n }\n if (key === 'End') {\n return hi - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\n }\n if (key === decKey) {\n return -st;\n }\n if (key === incKey) {\n return st;\n }\n return 0;\n };\n\n const d = delta(event.key);\n if (d === 0) {\n return;\n }\n\n if (this.range()) {\n if (thumbIndex === 0) {\n const next = this.snap(this.rangeLow() + d);\n this.rangeLow.set(Math.min(next, this.rangeHigh()));\n } else {\n const next = this.snap(this.rangeHigh() + d);\n this.rangeHigh.set(Math.max(next, this.rangeLow()));\n }\n this.onChange([this.rangeLow(), this.rangeHigh()]);\n } else {\n this.singleValue.set(this.snap(this.singleValue() + d));\n this.onChange(this.singleValue());\n }\n }\n}\n","@if (orientation() === 'horizontal') {\n <div\n #track\n class=\"relative w-full touch-none select-none py-3\"\n [class.opacity-50]=\"isEffectivelyDisabled()\"\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\n <div class=\"relative h-6 w-full\">\n <!-- rail -->\n <div\n class=\"pointer-events-none absolute left-0 right-0 top-1/2 -translate-y-1/2 rounded-full bg-neutral-200\"\n [class]=\"trackThickness()\"></div>\n\n @if (showTicks()) {\n @for (p of tickPositions(); track $index) {\n <div\n class=\"pointer-events-none absolute top-1/2 h-2 w-px -translate-x-1/2 -translate-y-1/2 bg-neutral-300\"\n [style.left.%]=\"p\"></div>\n }\n }\n\n <!-- fill -->\n <div\n class=\"pointer-events-none absolute top-1/2 z-1 -translate-y-1/2 rounded-full\"\n [class]=\"trackThickness()\"\n [style.background-color]=\"accentVars().fill\"\n [style.left.%]=\"fillStartPct()\"\n [style.width.%]=\"fillWidthPct()\"></div>\n\n @if (range()) {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.left.%]=\"lowPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeLow()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.left.%]=\"highPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeHigh()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\n (keydown)=\"onKeyDown($event, 1)\"></button>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.left.%]=\"singlePct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"singleValue()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n }\n </div>\n </div>\n} @else {\n <div\n #track\n class=\"relative mx-auto h-52 w-10 touch-none select-none\"\n [class.opacity-50]=\"isEffectivelyDisabled()\"\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\n <div class=\"relative h-full w-full\">\n <div\n class=\"pointer-events-none absolute bottom-0 left-1/2 top-0 -translate-x-1/2 rounded-full bg-neutral-200\"\n [class]=\"verticalTrackThickness()\"></div>\n\n @if (showTicks()) {\n @for (p of tickPositions(); track $index) {\n <div\n class=\"pointer-events-none absolute left-1/2 w-2 h-px -translate-x-1/2 translate-y-1/2 bg-neutral-300\"\n [style.bottom.%]=\"p\"></div>\n }\n }\n\n <div\n class=\"pointer-events-none absolute bottom-0 left-1/2 z-1 -translate-x-1/2 rounded-full\"\n [class]=\"verticalTrackThickness()\"\n [style.background-color]=\"accentVars().fill\"\n [style.bottom.%]=\"fillStartPct()\"\n [style.height.%]=\"fillWidthPct()\"></div>\n\n @if (range()) {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.bottom.%]=\"lowPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeLow()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.bottom.%]=\"highPct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"rangeHigh()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\n (keydown)=\"onKeyDown($event, 1)\"></button>\n } @else {\n <button\n type=\"button\"\n [disabled]=\"isEffectivelyDisabled()\"\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\n [class]=\"thumbSizeClass()\"\n [style.background-color]=\"accentVars().thumb\"\n [style.--slider-ring]=\"accentVars().ring\"\n [style.bottom.%]=\"singlePct()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"singleValue()\"\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"></button>\n }\n </div>\n </div>\n}\n","// Batch 1 — Foundation\nexport * from './button/button.component';\nexport * from './icon/icon.component';\nexport * from './input/input.component';\nexport * from './textarea/textarea.component';\nexport * from './upload/upload.component';\nexport * from './input-otp/input-otp.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio-group.component';\nexport * from './select/select.component';\nexport * from './autocomplete/autocomplete.component';\nexport * from './toggle/toggle.component';\nexport * from './badge/badge.component';\nexport * from './title/title.component';\nexport * from './card/card.component';\nexport * from './alert/alert.component';\nexport * from './spinner/spinner.component';\n\n// Batch 2 — Intermediate\nexport * from './modal/modal.component';\nexport * from './tabs/tab.component';\nexport * from './tabs/tab-group.component';\nexport * from './tooltip/tooltip.component';\nexport * from '../directives/tooltip/tooltip.directive';\nexport * from './progress-bar/progress-bar.component';\nexport * from './menu/menu.component';\nexport * from './drawer/drawer.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './pagination/pagination.component';\nexport * from './tag/tag.component';\n\n// Batch 3 — Advanced\nexport * from './table/table.component';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './stepper/step.component';\nexport * from './stepper/stepper.component';\nexport * from './accordion/accordion-item.component';\nexport * from './accordion/accordion.component';\nexport * from './toast/toast.component';\nexport * from './notification/notification.component';\nexport * from './message/message.component';\nexport * from './skeleton/skeleton.component';\nexport * from './toolbar/toolbar.component';\nexport * from './divider/divider.component';\nexport * from './meter/interfaces/meter-segment.interface';\nexport * from './meter/meter.component';\nexport * from './slider/slider.component';\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n inject,\n makeEnvironmentProviders,\n PLATFORM_ID,\n provideAppInitializer,\n type EnvironmentProviders,\n type Provider\n} from '@angular/core';\nimport {\n TAILWIND_BUTTON_KIND,\n TAILWIND_COMPONENTS_SIZE,\n TAILWIND_DATETIME_LANGUAGE,\n TAILWIND_ICON_SIZE,\n TAILWIND_PAGINATION_SUMMARY\n} from '../tokens';\nimport { TailwindComponentsConfig, TailwindDefineThemeConfig } from './interfaces/theme-config.interface';\nimport {\n TailwindThemeColorShade,\n TailwindThemeSemantic,\n TailwindThemeSemanticPaletteObject,\n TailwindThemeSemanticShades,\n TailwindThemeSeverityColor\n} from './types/theme-config.types';\n\n/**\n * Builds `Provider` entries for each set field on `config`.\n * Used by {@link defineTheme} and {@link provideTailwindComponents}.\n */\nfunction providersFromTailwindComponentsConfig(config: TailwindComponentsConfig): Provider[] {\n const providers: Provider[] = [];\n\n if (config.iconSize !== undefined) {\n providers.push({ provide: TAILWIND_ICON_SIZE, useValue: config.iconSize });\n }\n if (config.datetimeLanguage !== undefined) {\n providers.push({ provide: TAILWIND_DATETIME_LANGUAGE, useValue: config.datetimeLanguage });\n }\n if (config.componentsSize !== undefined) {\n providers.push({ provide: TAILWIND_COMPONENTS_SIZE, useValue: config.componentsSize });\n }\n if (config.buttonKind !== undefined) {\n providers.push({ provide: TAILWIND_BUTTON_KIND, useValue: config.buttonKind });\n }\n if (config.paginationSummary !== undefined) {\n providers.push({ provide: TAILWIND_PAGINATION_SUMMARY, useValue: config.paginationSummary });\n }\n\n return providers;\n}\n\n/**\n * Registers environment-scoped providers for library injection tokens only (no theme `colors`).\n * Prefer {@link defineTheme}, which registers the same tokens when set plus optional CSS variables.\n *\n * @deprecated Use {@link defineTheme} with the same fields (`iconSize`, `datetimeLanguage`, etc.).\n */\nexport function provideTailwindComponents(config: TailwindComponentsConfig): EnvironmentProviders {\n return makeEnvironmentProviders(providersFromTailwindComponentsConfig(config));\n}\n\nconst SHADES_WITH_950 = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;\nconst SHADES_TO_900 = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900] as const;\n\nfunction shadesForSemantic(semantic: TailwindThemeSemantic): readonly number[] {\n switch (semantic) {\n case 'success':\n case 'warning':\n case 'danger':\n case 'info':\n return SHADES_TO_900;\n default:\n return SHADES_WITH_950;\n }\n}\n\nfunction isValidShadeKey(key: string): key is TailwindThemeColorShade {\n return (\n key === '50' ||\n key === '100' ||\n key === '200' ||\n key === '300' ||\n key === '400' ||\n key === '500' ||\n key === '600' ||\n key === '700' ||\n key === '800' ||\n key === '900' ||\n key === '950'\n );\n}\n\nfunction isSemanticPaletteObject(value: object): value is TailwindThemeSemanticPaletteObject {\n return (\n 'shades' in value &&\n typeof (value as TailwindThemeSemanticPaletteObject).shades === 'object' &&\n (value as TailwindThemeSemanticPaletteObject).shades !== null\n );\n}\n\n/**\n * Normalizes object `colors` values: legacy flat shade map vs `{ shades, on? }`.\n */\nfunction normalizeSemanticColorObject(value: Exclude<TailwindThemeSeverityColor, string>): {\n shades: TailwindThemeSemanticShades;\n on?: TailwindThemeSemanticShades;\n} {\n if (isSemanticPaletteObject(value)) {\n return { shades: value.shades, on: value.on };\n }\n return { shades: value as TailwindThemeSemanticShades };\n}\n\nfunction pushShadeVariables(\n semantic: TailwindThemeSemantic,\n shades: TailwindThemeSemanticShades,\n entries: Array<[string, string]>\n): void {\n for (const [shade, color] of Object.entries(shades)) {\n if (!isValidShadeKey(shade) || color === undefined || color === '') {\n continue;\n }\n entries.push([`--color-${semantic}-${shade}`, color]);\n }\n}\n\nfunction pushOnShadeVariables(\n semantic: TailwindThemeSemantic,\n on: TailwindThemeSemanticShades | undefined,\n entries: Array<[string, string]>\n): void {\n if (!on) {\n return;\n }\n for (const [shade, color] of Object.entries(on)) {\n if (!isValidShadeKey(shade) || color === undefined || color === '') {\n continue;\n }\n entries.push([`--color-on-${semantic}-${shade}`, color]);\n }\n}\n\n/**\n * Builds `[CSS custom property name, value]` pairs for {@link defineTheme}.\n * Exported for unit tests.\n */\nexport function buildTailwindThemeVariableEntries(config: TailwindDefineThemeConfig): Array<[string, string]> {\n const colors = config.colors;\n if (!colors) {\n return [];\n }\n\n const entries: Array<[string, string]> = [];\n const dangerOrError = colors.danger ?? colors.error;\n\n const pairs: Array<[TailwindThemeSemantic, TailwindThemeSeverityColor | undefined]> = [\n ['primary', colors.primary],\n ['neutral', colors.neutral],\n ['success', colors.success],\n ['warning', colors.warning],\n ['danger', dangerOrError],\n ['info', colors.info]\n ];\n\n for (const [semantic, value] of pairs) {\n if (value === undefined) {\n continue;\n }\n if (typeof value === 'string') {\n const palette = value.trim();\n if (!palette) {\n continue;\n }\n for (const shade of shadesForSemantic(semantic)) {\n entries.push([`--color-${semantic}-${shade}`, `var(--color-${palette}-${shade})`]);\n }\n } else {\n const { shades, on } = normalizeSemanticColorObject(value);\n pushShadeVariables(semantic, shades, entries);\n pushOnShadeVariables(semantic, on, entries);\n }\n }\n\n return entries;\n}\n\nfunction applyTailwindThemeToElement(element: HTMLElement, config: TailwindDefineThemeConfig): void {\n for (const [prop, val] of buildTailwindThemeVariableEntries(config)) {\n element.style.setProperty(prop, val);\n }\n}\n\n/**\n * Registers environment-scoped library defaults: optional **injection tokens** from {@link TailwindComponentsConfig}\n * plus an app initializer that applies optional **`colors`** on\n * `document.documentElement` in the browser. Add as a single entry in `providers` (no spread).\n *\n * Palette **strings** (e.g. `'indigo'`) rely on `--color-indigo-*` existing in the CSS bundle; the\n * library stylesheet safelists Tailwind’s default palette names for that reason.\n */\nexport function defineTheme(config: TailwindDefineThemeConfig): EnvironmentProviders {\n const tokenProviders: Provider[] = providersFromTailwindComponentsConfig(config);\n\n return makeEnvironmentProviders([\n ...tokenProviders,\n provideAppInitializer(() => {\n const platformId = inject(PLATFORM_ID);\n if (!isPlatformBrowser(platformId)) {\n return;\n }\n const doc = inject(DOCUMENT);\n applyTailwindThemeToElement(doc.documentElement, config);\n })\n ]);\n}\n","/*\n * Public API Surface of angular-tailwind-components\n */\n\n// Models & Types\nexport * from './lib/models';\n\n// Directives\nexport * from './lib/directives';\n\n// Components\nexport * from './lib/components';\n\n// Services\nexport * from './lib/services';\n\n// Tokens\nexport * from './lib/tokens';\n\n// App-level providers\nexport * from './lib/providers';\n\n// Refs\nexport * from './lib/ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["I18N"],"mappings":";;;;;;;;;;AAAA;;ACAA;;;;;AAKG;AACI,MAAM,uBAAuB,GAAG;IACrC,cAAc;IACd,wBAAwB;IACxB,sBAAsB;IACtB,aAAa;IACb,wBAAwB;IACxB,oBAAoB;IACpB,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,sBAAsB;IACtB,4BAA4B;IAC5B,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,mBAAmB;IACnB,6BAA6B;IAC7B,yBAAyB;IACzB,+BAA+B;IAC/B,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,2BAA2B;IAC3B,aAAa;IACb,oBAAoB;IACpB,8BAA8B;IAC9B,0BAA0B;IAC1B,gCAAgC;IAChC,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,2BAA2B;IAC3B,qBAAqB;IACrB,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,UAAU;IACV,iBAAiB;IACjB,eAAe;IACf,oBAAoB;IACpB,0BAA0B;IAC1B,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,QAAQ;IACR,iBAAiB;IACjB,eAAe;IACf,WAAW;IACX,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;IACX,SAAS;IACT,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;IACrB,MAAM;IACN,YAAY;IACZ,UAAU;IACV,qBAAqB;IACrB,eAAe;IACf,QAAQ;IACR,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,2BAA2B;IAC3B,gCAAgC;IAChC,kBAAkB;IAClB,2BAA2B;IAC3B,wBAAwB;IACxB,uBAAuB;IACvB,gCAAgC;IAChC,OAAO;IACP,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,WAAW;IACX,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,OAAO;IACP,OAAO;IACP,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,qBAAqB;IACrB,KAAK;IACL,aAAa;IACb,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,aAAa;IACb,MAAM;IACN,kBAAkB;IAClB,sBAAsB;IACtB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,QAAQ;IACR,UAAU;IACV,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,gBAAgB;IAChB,+BAA+B;IAC/B,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,uBAAuB;IACvB,oBAAoB;IACpB,2BAA2B;IAC3B,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,qBAAqB;IACrB,4BAA4B;IAC5B,mBAAmB;IACnB,UAAU;IACV,eAAe;IACf,QAAQ;IACR,oBAAoB;IACpB,sBAAsB;IACtB,KAAK;IACL,aAAa;IACb,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,cAAc;IACd,MAAM;IACN,MAAM;IACN,QAAQ;IACR,mBAAmB;IACnB,cAAc;IACd,aAAa;IACb,aAAa;IACb,SAAS;IACT,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,sBAAsB;IACtB,qBAAqB;IACrB,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,OAAO;IACP,MAAM;IACN,aAAa;IACb,gBAAgB;IAChB,OAAO;IACP,kBAAkB;IAClB,aAAa;IACb,oBAAoB;IACpB,QAAQ;IACR,KAAK;IACL,UAAU;IACV,UAAU;IACV,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,aAAa;IACb,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,yBAAyB;IACzB,wBAAwB;IACxB,uBAAuB;IACvB,KAAK;IACL,SAAS;IACT,WAAW;IACX,YAAY;IACZ,OAAO;IACP,cAAc;IACd,aAAa;IACb,MAAM;IACN,cAAc;IACd,WAAW;IACX,WAAW;IACX,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,OAAO;IACP,cAAc;IACd,QAAQ;IACR,eAAe;IACf,eAAe;IACf,OAAO;IACP,uBAAuB;IACvB,sBAAsB;IACtB,cAAc;IACd,OAAO;IACP,MAAM;IACN,aAAa;IACb,YAAY;IACZ,MAAM;IACN,aAAa;IACb,YAAY;IACZ,OAAO;IACP,wBAAwB;IACxB,yBAAyB;IACzB,SAAS;IACT,cAAc;IACd,SAAS;IACT,sBAAsB;IACtB,YAAY;IACZ,OAAO;IACP,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,KAAK;IACL,OAAO;IACP,UAAU;IACV,QAAQ;IACR,cAAc;IACd,OAAO;IACP,cAAc;IACd,oBAAoB;IACpB,cAAc;IACd,eAAe;IACf,QAAQ;IACR,cAAc;IACd,OAAO;IACP,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,aAAa;IACb,cAAc;IACd,MAAM;IACN,MAAM;IACN,aAAa;IACb,eAAe;IACf,KAAK;IACL,QAAQ;IACR,aAAa;IACb,KAAK;IACL,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,WAAW;IACX,MAAM;IACN,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,OAAO;IACP,UAAU;IACV,cAAc;IACd,oBAAoB;IACpB,cAAc;IACd,mBAAmB;IACnB,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,UAAU;IACV,QAAQ;;;MClUY,iBAAiB,CAAA;;IAE5B,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGpB,KAAK,GAAG,KAAK,CAAS,SAAS,6EAAI,KAAK,EAAE,OAAO,EAAA,CAAG;wGALzC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,SAAA,EAAA,cAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,cAAc;AAC3B,wBAAA,SAAS,EAAE;AACZ;AACF,iBAAA;;;ACgBK,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;;AAE/B,IAAA,QAAQ,GAAG,KAAK,CAAmB,KAAK,+EAAC;AAEzC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,MAAM,GAAG,MAAM,CAAS,CAAC,6EAAC;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAS,CAAC,8EAAC;IAE5B,aAAa,GAAuB,IAAI;AAExC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEtB,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA6B,WAAW,CAAC;IAExE,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AAE3C,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,IAAI,GAAG;YACX,4BAA4B;YAC5B,0DAA0D;YAC1D,iDAAiD;YACjD,iCAAiC;YACjC,IAAI,CAAC,SAAS,EAAE,GAAG,aAAa,GAAG;SACpC;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,qFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,IAAI,GAAG,2CAA2C;AAExD,QAAA,MAAM,MAAM,GAAqC;AAC/C,YAAA,GAAG,EAAE,0CAA0C;AAC/C,YAAA,MAAM,EAAE,6CAA6C;AACrD,YAAA,IAAI,EAAE,0CAA0C;AAChD,YAAA,KAAK,EAAE;SACR;QAED,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE;AAC7C,IAAA,CAAC,mFAAC;IAEF,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE;IACb;AAEA,IAAA,SAAS,CAAC,EAAe,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,QAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAC9B,QAAA,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AACrB,QAAA,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;QACtB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE;QAC1C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,QAAA,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;IAC3C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAE1E,IAAI,GAAG,GAAG,CAAC;QACX,IAAI,IAAI,GAAG,CAAC;AAEZ,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,KAAK;gBACR,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,gBAAA,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBACnE;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;AAC3B,gBAAA,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBACnE;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;gBACnE,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;gBAC9C;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AACnE,gBAAA,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;gBAC3B;;AAGJ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;YAC5D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;QAC/D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IACjE;wGAxHW,eAAe,EAAA,IAAA,EAAA,IAAA,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,4dCvB5B,gNAKA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDkBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;8PAkBqB,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEtBpE,wBAAwB,CAAA;;AAE1B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;;AAElC,IAAA,eAAe,GAAG,KAAK,CAAmB,KAAK,sFAAC;IAEjD,WAAW,GAAyC,IAAI;IACxD,WAAW,GAAyC,IAAI;IACxD,YAAY,GAAyC,IAAI;AAEzD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa;IAC9B;IAIA,IAAI,GAAA;QACF,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,eAAe,EAAE;QACxB,CAAC,EAAE,GAAG,CAAC;IACT;IAGA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,EAAE;IACb;AAGA,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC7B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B;QAClD,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC1C;QACF;QAEA,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAC/C,IAAI,CAAC,IAAI,EAAE;YACb;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,IAAI,GAAA;QACV,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;AAEjC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,gBAAgB,EAAE;QACzB,CAAC,EAAE,GAAG,CAAC;IACT;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;IACF;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAEA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;QAC1E,IAAI,CAAC,sBAAsB,EAAE;QAE7B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;YACnC;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACrD;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,gBAAgB,EAAE;IACzB;wGA3HW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,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,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,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAkBE,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,SAAS;;sBAoBtB,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AC1DtC;;;;;AAKG;MAKU,yBAAyB,CAAA;AAC3B,IAAA,WAAW,GAAG,MAAM,EAAC,WAA8C,EAAC;wGADlE,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,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCRY,mBAAmB,GAAG,IAAI,cAAc,CAAU,qBAAqB;AAEpF;MACa,kBAAkB,GAAG,IAAI,cAAc,CAAS,oBAAoB;MAEpE,0BAA0B,GAAG,IAAI,cAAc,CAAc,4BAA4B;MAEzF,wBAAwB,GAAG,IAAI,cAAc,CAAe,0BAA0B;AAEnG;MACa,oBAAoB,GAAG,IAAI,cAAc,CAAqB,sBAAsB;AAEjG;;;AAGG;MACU,2BAA2B,GAAG,IAAI,cAAc,CAAS,6BAA6B;;ACdnG,MAAM,aAAa,GAAG,CAAC,KAAa,KAAY;AAC9C,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAWK,MAAO,YAAa,SAAQ,iBAAiB,CAAA;IAChC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGjE,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAoB;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAmB,aAAa,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAElE,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,EAAE,CAAA,IAAA,CAAM,0EAAC;AAE1D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gFAAC;;IAGtD,WAAW,GAAG,QAAQ,CAAC,MAAM,kDAAkD,kFAAC;;AAGhF,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;QAC3B,OAAO,MAAM,GAAG,CAAA,oBAAA,EAAuB,MAAM,CAAA,CAAE,GAAG,qBAAqB;AACzE,IAAA,CAAC,mFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,EAAE,CAAA,EAAA,CAAI,gFAAC;wGArBhD,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,yYCpBzB,2QAQA,EAAA,MAAA,EAAA,CAAA,qOAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDYa,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,IAAA,EACnB;AACJ,wBAAA,SAAS,EAAE;qBACZ,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2QAAA,EAAA,MAAA,EAAA,CAAA,qOAAA,CAAA,EAAA;;;AEHjD;AACO,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;AAEtC,MAAM,0BAA0B,GAAG,EAAE;AAErC;;;AAGG;MAUU,2BAA2B,CAAA;;AAE7B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;AAE1B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;AACtC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACrC,IAAA,YAAY;AACH,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpC,IAAA,OAAO;AACP,IAAA,EAAE;IACF,SAAS,GAAG,KAAK;AAEzB,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE;AACrB,YAAA,IAAI,CAAC,EAAE,GAAG,SAAS;AACnB,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AAC1B,QAAA,CAAC,CAAC;QAEF,eAAe,CACb,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/B;QACF,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;AAEA;;;AAGG;AACK,IAAA,qBAAqB,CAAC,OAAe,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;YAAE;AAE/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,OAAO,GAAG,0BAA0B,EAAE;AACxC,gBAAA,qBAAqB,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACtE;YACA;QACF;QAEA,MAAM,IAAI,GAAG,MAAW;AACtB,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AAErC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;YAChC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,EAAE;YACpE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,KAAK;AACpE,YAAA,MAAM,GAAG,GAAG,MAAM,KAAK,KAAK;AAC5B,YAAA,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS;YAEtC,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG,GAAG,YAAY,GAAG,cAAc,IAAI,iBAAiB;YAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,2BAA2B,GAAG,2BAA2B,CAAC;AAElG,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EACvB,YAAY,EACZ,MAAM,GAAG,CAAA,OAAA,EAAU,GAAG,GAAG,WAAW,GAAG,YAAY,CAAA,qBAAA,CAAuB,GAAG,CAAA,QAAA,EAAW,SAAS,CAAA,CAAE,CACpG;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAChD,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,YAAY,EAAE;gBAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,eAAe,EAAE,IAAI,CAAC;AACvB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC/C;AAEA,QAAA,IAAI,EAAE;AAEN,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;AACvB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,eAAe,EAAE,CAAC,sBAAsB,EAAE,sBAAsB;AACjE,SAAA,CAAC;IACJ;;IAGQ,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY;AAE/C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC,6BAA6B,CAAC;AAChE,QAAA,IAAI,QAAQ,YAAY,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,OAAO,QAAQ;QACjB;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,EAAE,EAAE,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;AAEhD,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;YAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAC3C;QACA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO;AAC3B,QAAA,OAAO,OAAO;IAChB;wGAnHW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,GAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,+EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,+EAA+E;AACtF,wBAAA,iBAAiB,EAAE,GAAG;AACtB,wBAAA,sBAAsB,EAAE;AACzB;AACF,iBAAA;;;ACzBD,MAAM,gBAAgB,GAAiC;AACrD,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE;CACL;AAED;AACA,MAAM,uBAAuB,GAC3B,kKAAkK;AAS9J,MAAO,cAAe,SAAQ,iBAAiB,CAAA;IAClC,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGtE,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,4EAAC;AAChD;;;;AAIG;IACM,IAAI,GAAG,KAAK,CAAqB,IAAI,CAAC,WAAW,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAE7D,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,2EAAC;;AAErD,IAAA,IAAI,GAAG,KAAK,CAAqB,QAAQ,2EAAC;;IAE1C,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgC;;AAE5C,IAAA,YAAY,GAAG,KAAK,CAAuB,MAAM,mFAAC;;AAElD,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;IAG7B,OAAO,GAAG,MAAM,EAAc;AAE9B,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,oFAAC;;AAG7D,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG;YACX,yCAAyC;YACzC,aAAa;YACb,yCAAyC;YACzC,wDAAwD;YACxD,iDAAiD;YACjD,gBAAgB;YAChB;SACD;AAED,QAAA,MAAM,QAAQ,GAAkC;AAC9C,YAAA,OAAO,EACL,mMAAmM;AACrM,YAAA,SAAS,EACP,2IAA2I;AAC7I,YAAA,MAAM,EACJ,4LAA4L;AAC9L,YAAA,OAAO,EACL,mMAAmM;AACrM,YAAA,OAAO,EACL,mMAAmM;AACrM,YAAA,IAAI,EAAE,8KAA8K;AACpL,YAAA,WAAW,EAAE;SACd;;AAGD,QAAA,MAAM,OAAO,GAAkC;AAC7C,YAAA,OAAO,EACL,2FAA2F;AAC7F,YAAA,SAAS,EAAE,wFAAwF;AACnG,YAAA,MAAM,EAAE,wFAAwF;AAChG,YAAA,OAAO,EAAE,2FAA2F;AACpG,YAAA,OAAO,EAAE,2FAA2F;AACpG,YAAA,IAAI,EAAE,kFAAkF;AACxF,YAAA,WAAW,EAAE;SACd;AAED,QAAA,MAAM,WAAW,GAAkC;AACjD,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,SAAS,EACP,gIAAgI;AAClI,YAAA,MAAM,EACJ,2HAA2H;AAC7H,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,IAAI,EAAE,iHAAiH;AACvH,YAAA,WAAW,EAAE;SACd;;AAGD,QAAA,MAAM,QAAQ,GAAkC;AAC9C,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,SAAS,EACP,iIAAiI;AACnI,YAAA,MAAM,EACJ,4HAA4H;AAC9H,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,IAAI,EAAE,oHAAoH;AAC1H,YAAA,WAAW,EAAE;SACd;;AAGD,QAAA,MAAM,OAAO,GAAkC;AAC7C,YAAA,OAAO,EAAE,sFAAsF;AAC/F,YAAA,SAAS,EAAE,sFAAsF;AACjG,YAAA,MAAM,EAAE,oFAAoF;AAC5F,YAAA,OAAO,EAAE,sFAAsF;AAC/F,YAAA,OAAO,EAAE,sFAAsF;AAC/F,YAAA,IAAI,EAAE,gFAAgF;AACtF,YAAA,WAAW,EAAE;SACd;AAED,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,gCAAgC;AACpC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE;SACL;;AAGD,QAAA,MAAM,eAAe,GAAiC;AACpD,YAAA,EAAE,EAAE,gFAAgF;AACpF,YAAA,EAAE,EAAE,oFAAoF;AACxF,YAAA,EAAE,EAAE,gFAAgF;AACpF,YAAA,EAAE,EAAE,oFAAoF;AACxF,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEvG,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9G,IAAA,CAAC,sFAAC;AAEF,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;wGAnJW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,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,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,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B3B,4vBAoBA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCY,OAAO,oFAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;8BACC,CAAC,OAAO,EAAE,YAAY,CAAC,YACtB,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4vBAAA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA;;;AEP3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAsE,MAAM,2EAAC;;AAEzF,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAGzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,IAAI,GAAG;YACX,uBAAuB;YACvB,uCAAuC;YACvC,8BAA8B;YAC9B,mEAAmE;YACnE;SACD;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,oCAAoC;AACxC,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;AAEnE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACpD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGA7EW,aAAa,EAAA,IAAA,EAAA,IAAA,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,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,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,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,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,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAXb;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,8jCAkCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDhBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,SAAA,EACf;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8jCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEE3C,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,2EAAC;;AAEvB,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;;AAE3C,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,gFAAC;;AAEhD,IAAA,MAAM,GAAG,KAAK,CAA8C,UAAU,6EAAC;;AAEvE,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAGzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG;YACX,uBAAuB;YACvB,uCAAuC;YACvC,8BAA8B;YAC9B,mEAAmE;YACnE;SACD;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,6CAA6C;AACjD,YAAA,EAAE,EAAE,+CAA+C;AACnD,YAAA,EAAE,EAAE,6CAA6C;AACjD,YAAA,EAAE,EAAE,mDAAmD;AACvD,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,SAAS,GAAgE;AAC7E,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE;SACb;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;QAEnE,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxF,IAAA,CAAC,sFAAC;AAEM,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA8B,CAAC,KAAK;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGAzFW,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,mBAAA,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,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,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,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAXhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,kqCAoCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDlBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAClB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kqCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEgB3C,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,OAAO,MAAM,GAAG,CAAC;AACR,IAAA,cAAc,GAAG,CAAA,UAAA,EAAa,cAAc,CAAC,MAAM,EAAE,EAAE;AAE/D,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA+B,WAAW,CAAC;;AAGzE,IAAA,OAAO,GAAG,KAAK,CAAoB,MAAM,8EAAC;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,aAAa,kFAAC;;AAE1C,IAAA,SAAS,GAAG,KAAK,CAAS,sBAAsB,gFAAC;;AAEjD,IAAA,QAAQ,GAAG,KAAK,CAAS,oBAAoB,+EAAC;;AAE9C,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,6EAAC;;AAE7C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,uFAAC;;AAEvD,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAS,OAAO,gFAAC;AAClC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;IAGzB,aAAa,GAAG,MAAM,EAAU;;IAEhC,eAAe,GAAG,MAAM,EAAU;AAElC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,aAAa,GAAG,MAAM,CAAW,EAAE,oFAAC;IAErC,SAAS,GAAG,CAAC;AACb,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAE/B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,kFAAC;AAE9D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,IAAI,GAAG;YACX,0GAA0G;YAC1G;SACD;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,IAAI,EAAE,iFAAiF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/G;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO;AACL,gBAAA,GAAG,IAAI;gBACP;AACD,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC;QACb;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,OAAO;AACL,gBAAA,GAAG,IAAI;gBACP;AACD,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC;QACb;QACA,OAAO;AACL,YAAA,GAAG,IAAI;YACP,uGAAuG;YACvG;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,kFAAC;AAEF,IAAA,UAAU,CAAC,GAAkB,EAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,KAAK,EAAE,cAAc,EAAE;QACvB,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QACvB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACF;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK;AACvC,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9B;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9B;AACA,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;IAClB;AAEA,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,KAAK,EAAE,cAAc,EAAE;QACvB,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;IAC3C;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;IAClB;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,IAAI,GAAG,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI;AAC5B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAChD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AACtC,QAAA,MAAM,QAAQ,GACZ,GAAG,IAAI,IAAI,GAAG;AACZ,cAAE,CAAA,EAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA;cACnC,GAAG,IAAI;kBACL,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA,GAAA;AAC3B,kBAAE,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ;AACtB,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK;cACvB,CAAA,2BAAA,EAA8B,QAAQ,CAAA,EAAA;cACtC,GAAG,QAAQ,CAAC,MAAM,CAAA,4BAAA,EAA+B,QAAQ,IAAI;IACnE;IAEQ,MAAM,WAAW,CAAC,QAAkB,EAAA;QAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;AAAE,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACnD;IACF;AAEQ,IAAA,aAAa,CAAC,IAAU,EAAA;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,gBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;oBAC9B,OAAO,CAAC,MAAM,CAAC;gBACjB;qBAAO;AACL,oBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC7C;AACF,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACtE,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5B,QAAA,CAAC,CAAC;IACJ;wGAhOW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,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,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,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,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,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,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAXd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,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,EC3BH,k0FA0FA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtEY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAY3B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,SAAA,EAC5B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k0FAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;uEAMuB,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,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,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,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,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,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,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,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,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,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,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,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,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,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEP7E,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,MAAM,GAAG,KAAK,CAAS,CAAC,6EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;;AAElC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;;AAE5B,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAS,mBAAmB,gFAAC;;AAE9C,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,mBAAmB,GAAG,KAAK,CAAgB,IAAI,0FAAC;;AAEhD,IAAA,YAAY,GAAG,KAAK,CAAS,eAAe,mFAAC;;AAG7C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;IAGzB,SAAS,GAAG,MAAM,EAAU;AAE5B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAE1B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9D,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAA,CAAC,kFAAC;AAEO,IAAA,SAAS,GAAG,YAAY,CAA+B,UAAU,gFAAC;AAElE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,IAAI,GAAG;YACX,wDAAwD;YACxD,uCAAuC;YACvC,mEAAmE;YACnE;SACD;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,sCAAsC;AAC1C,YAAA,EAAE,EAAE,0CAA0C;AAC9C,YAAA,EAAE,EAAE,uCAAuC;AAC3C,YAAA,EAAE,EAAE,6CAA6C;AACjD,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;AAEnE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAA,CAAC,kFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,qFAAC;AAElE,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrD;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;IAClC;AAEA,IAAA,OAAO,CAAC,KAAa,EAAA;QACnB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;IAClC;AAEA,IAAA,kBAAkB,CAAC,KAAa,EAAA;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACtC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;IAC/C;IAEA,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,MAAM;IAC1C;IAEA,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM;IAChD;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI;IACjD;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,oBAAoB;AAC9C,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,OAAA,EAAU,KAAK,EAAE;IACjC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,SAAS,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;AAC/B,QAAA,IAAI,KAAK,GAAG,GAAG,EAAE;YACf,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E;IACF;IAEA,OAAO,CAAC,KAAY,EAAE,KAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AACA,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAA0B;AAChD,QAAA,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9B;QACA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE3B,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;AAC5B,YAAA,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC;QACF;QAEA,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;AACpB,gBAAA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YAC5C;QACF;aAAO;AACL,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;gBACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YACnD;AAAO,iBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE;AAC7B,gBAAA,CAAC,GAAG,CAAC,GAAG,IAAI;YACd;YACA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACrB;AAEA,QAAA,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEd,cAAc,CAAC,MAAK;YAClB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,CAAC,KAAqB,EAAE,KAAa,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACxC;QACF;QACA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;AACvD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACpF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;AAC7E,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAEnB,QAAA,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC9G;IAEA,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AAEtB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;gBACrB,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACpB,gBAAA,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACjD;iBAAO,IAAI,GAAG,EAAE;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACpB,cAAc,CAAC,MAAK;oBAClB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa;oBACjD,IAAI,EAAE,EAAE;wBACN,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAChC;AACF,gBAAA,CAAC,CAAC;YACJ;YACA;QACF;QAEA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;YACxD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B;IACF;AAEQ,IAAA,MAAM,CAAC,MAAc,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B;IACF;AAEQ,IAAA,iBAAiB,CAAC,CAAS,EAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AACf,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1B;QACA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IACxB;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;QAC7B,cAAc,CAAC,MAAK;AAClB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa;YACrC,EAAE,EAAE,KAAK,EAAE;YACX,EAAE,EAAE,MAAM,EAAE;AACd,QAAA,CAAC,CAAC;IACJ;wGArPW,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,oBAAA,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,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,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAXhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,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,ECxBH,urDA6CA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDhBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,SAAA,EACnB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,urDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;2/CA2CiB,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElDtE,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;;AAIhC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;AAG/B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,mFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oFAAC;;AAGM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;wGA/DW,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,mBAAA,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,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,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,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAXhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfH,6xDA0CA,uFDnCY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAaX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,mBAAmB,EAAA,SAAA,EAClB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6xDAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEA3C,MAAO,kBAAgC,SAAQ,iBAAiB,CAAA;;AAE3D,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;IAE7B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAEtB,IAAA,OAAO,GAAG,KAAK,CAA2B,EAAE,8EAAC;;AAE7C,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,WAAW,GAAG,KAAK,CAA4B,UAAU,kFAAC;;AAG1D,IAAA,KAAK,GAAG,KAAK,CAAW,IAAI,4EAAC;;AAG7B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,qFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAAuB,MAAK,EAAE,CAAC;AACvC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAQ,EAAA;QACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,WAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE;IAClB;wGApEW,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,sBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,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,aAAA,EAAA,EAAA,SAAA,EAXlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,q3DA4CA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD1Ba,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,SAAA,EACrB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,q3DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEqB3C,MAAO,cAA4B,SAAQ,iBAAiB,CAAA;AAC/C,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AACvC,IAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAuB,eAAe,CAAC;IAElF,UAAU,GAAsB,IAAI;IACpC,UAAU,GAAwB,IAAI;;AAGrC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,OAAO,GAAG,KAAK,CAAsB,EAAE,8EAAC;;AAExC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;;AAGvB,IAAA,KAAK,GAAG,KAAK,CAAiB,IAAI,4EAAC;;AAGnC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAGtB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,kFAAC;;AAGxB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;QAC9C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;AAC7E,IAAA,CAAC,qFAAC;;AAGO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM;AAC3C,YAAA,OAAO,KAAK,GAAG,CAAC,GAAG,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,SAAA,CAAW,GAAG,IAAI;QACxD;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,QAAA,OAAO,QAAQ,GAAG,GAAG,IAAI,CAAA,EAAA,EAAK,QAAQ,CAAC,KAAK,CAAA,CAAE,GAAG,IAAI;AACvD,IAAA,CAAC,wFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,EAAE;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACxF,IAAA,CAAC,sFAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,oCAAoC;AACxC,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,8CAA8C;AAElD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,cAAc;QAE/D,OAAO;YACL,4EAA4E;YAC5E,MAAM;YACN,+BAA+B;YAC/B,mEAAmE;YACnE,8EAA8E;AAC9E,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,qFAAC;IAEM,iBAAiB,CAAC,CAAU,EAAE,CAAU,EAAA;QAC9C,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB;;AAGA,IAAA,gBAAgB,CAAC,MAAyB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjE;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD;;IAGA,aAAa,CAAC,KAAa,EAAE,MAAyB,EAAA;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;AAC7C,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ;QAEpC,OAAO;YACL,gFAAgF;YAChF;AACE,kBAAE;AACF,kBAAE;AACA,sBAAE;AACF,sBAAE;AACA,0BAAE;AACF,0BAAE;AACT,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;;AAGQ,IAAA,QAAQ,GAAoC,MAAK,EAAE,CAAC;AACpD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,KAAK,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;;gBAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7D;aAAO;AACL,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;gBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QACpC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAmC,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;IACtB;IAEQ,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,MAAM,OAAO,GACV,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;AAEhH,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;aACR,mBAAmB,CAAC,OAAO;AAC3B,aAAA,aAAa,CAAC;;AAEb,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;;AAE3E,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;SAC1E;aACA,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,KAAK,EAAE,OAAO,CAAC,WAAW;AAC1B,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;AACjE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE;;QAGpC,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,CAAe,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AACjF,YAAA,MAAM,CAAC,GAAG,EAAE,CAAC,MAAc;AAC3B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE;YAC9D,IAAI,CAAC,aAAa,EAAE;QACtB,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,CAAgB,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACvB,EAAE,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,aAAa,EAAE;YACtB;QACF,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAErB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACpF;aAAO;AACL,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnE;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE;QACtB;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEA,IAAA,YAAY,CAAC,MAAyB,EAAA;QACpC,IAAI,MAAM,CAAC,QAAQ;YAAE;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,GAAG,IAAI,CAAC;AAAE,gBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;AAC/B,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;AACA,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAE3B,QAAA,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,WAAW,EAAE;gBAChB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,YAAY,EAAE;oBACnB;gBACF;gBACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;gBACjC,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ;AAAE,oBAAA,IAAI,EAAE;AACxD,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAClD;YACF;YACA,KAAK,SAAS,EAAE;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,YAAY,EAAE;oBACnB;gBACF;gBACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;gBACjC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ;AAAE,oBAAA,IAAI,EAAE;gBAC/C,IAAI,IAAI,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzC;YACF;AACA,YAAA,KAAK,OAAO;YACZ,KAAK,GAAG,EAAE;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,YAAY,EAAE;oBACnB;gBACF;AACA,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;gBACjC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;oBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC;gBACA;YACF;AACA,YAAA,KAAK,QAAQ;YACb,KAAK,KAAK,EAAE;gBACV,IAAI,CAAC,aAAa,EAAE;gBACpB;YACF;;IAEJ;wGAvTW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,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,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,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,aAAA,EAAA,EAAA,SAAA,EAXd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCH,oiGAoFA,gFD5DY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAaX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,iBAAiB,EAAA,SAAA,EAChB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oiGAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;2EAM2B,eAAe,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,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,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,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,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,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,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,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,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEWrF,MAAO,oBAAkC,SAAQ,iBAAiB,CAAA;AAC9D,IAAA,OAAO,MAAM,GAAG,CAAC;AAER,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AACvC,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAuB,eAAe,CAAC;AAE1F,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE;AAEpB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,IAAI,IAAI,EAAE;gBACb,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnE;AAAO,iBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,OAAO,GAAG,CAAC;YACb;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEQ,UAAU,GAAsB,IAAI;IACpC,UAAU,GAAwB,IAAI;IACtC,mBAAmB,GAAyC,IAAI;AAEvD,IAAA,iBAAiB,GAAG,CAAA,8BAAA,EAAiC,EAAE,oBAAoB,CAAC,MAAM,EAAE;;AAG5F,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,OAAO,GAAG,KAAK,CAAsB,EAAE,8EAAC;;AAExC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,oFAAC;;AAE3B,IAAA,eAAe,GAAG,KAAK,CAAC,CAAC,sFAAC;;AAE1B,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,iFAAC;;AAErB,IAAA,cAAc,GAAG,KAAK,CAAC,IAAI,qFAAC;;AAG5B,IAAA,KAAK,GAAG,KAAK,CAAW,IAAI,4EAAC;;IAG7B,QAAQ,GAAG,MAAM,EAAU;;IAG3B,YAAY,GAAG,YAAY,CAAC,MAAM,oFAAI,IAAI,EAAE,WAAW,EAAA,CAAG;;AAG1D,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,kFAAC;AAExB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AACtB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,kFAAC;AAExB,IAAA,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEzF,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;AAC7E,IAAA,CAAC,qFAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,IAAI;AACtC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5D,IAAA,CAAC,sFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,oCAAoC;AACxC,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;QAEnE,OAAO;YACL,6DAA6D;YAC7D,8BAA8B;YAC9B,mEAAmE;YACnE,8EAA8E;AAC9E,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,mFAAC;AAEM,IAAA,QAAQ,GAA8B,MAAK,EAAE,CAAC;AAC9C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAA2B,EAAA;QACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IACxC;AAEA,IAAA,gBAAgB,CAAC,EAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE;AACpC,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACxC;QACA,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,gBAAgB,CAAC,MAAyB,EAAA;AACxC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,KAAK;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD;IAEA,aAAa,CAAC,KAAa,EAAE,MAAyB,EAAA;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;AAC7C,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ;QAEpC,OAAO;YACL,gFAAgF;YAChF;AACE,kBAAE;AACF,kBAAE;AACA,sBAAE;AACF,sBAAE;AACA,0BAAE;AACF,0BAAE;AACT,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;IAEA,WAAW,CAAC,MAAyB,EAAE,KAAa,EAAA;QAClD,OAAO;AACL,YAAA,SAAS,EAAE,MAAM;YACjB,MAAM;YACN,KAAK;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACvC,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK;SAChC;IACH;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;QACtC,IAAI,QAAQ,IAAI,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAEtB,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,EAAE;QAClB;aAAO;YACL,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YACvD,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;QAChB,cAAc,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACxD;IAEQ,yBAAyB,GAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE;AAE7C,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAAE;AAEjE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAEhC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC;YACA;QACF;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B;IACF;AAEA,IAAA,YAAY,CAAC,MAAyB,EAAA;QACpC,IAAI,MAAM,CAAC,QAAQ;YAAE;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AAEnC,QAAA,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,WAAW,EAAE;gBAChB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE;oBAChB;gBACF;gBACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;gBACjC,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ;AAAE,oBAAA,IAAI,EAAE;AACxD,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAClD;YACF;YACA,KAAK,SAAS,EAAE;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE;oBAChB;gBACF;gBACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;gBACjC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ;AAAE,oBAAA,IAAI,EAAE;gBAC/C,IAAI,IAAI,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzC;YACF;YACA,KAAK,OAAO,EAAE;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE;oBAChB;gBACF;AACA,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;gBACjC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;oBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC;gBACA;YACF;AACA,YAAA,KAAK,QAAQ;YACb,KAAK,KAAK,EAAE;gBACV,IAAI,CAAC,UAAU,EAAE;gBACjB;YACF;;IAEJ;IAEQ,iBAAiB,CAAC,CAAU,EAAE,CAAU,EAAA;QAC9C,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;YAAE;AAE3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE;AACpC,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC;AAEA,QAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,MAAK;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC,CAAC,EAAE,QAAQ,CAAC;IACd;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QAC1C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;YAAE;AAExD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAgB;AAC/F,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;aACR,mBAAmB,CAAC,OAAO;AAC3B,aAAA,aAAa,CAAC;AACb,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3E,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;SAC1E;aACA,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,KAAK,EAAE,OAAO,CAAC;AAChB,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;AACjE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE;QAEpC,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,CAAe,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AACjF,YAAA,MAAM,CAAC,GAAG,EAAE,CAAC,MAAc;AAC3B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE;YAC9D,IAAI,CAAC,UAAU,EAAE;QACnB,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,CAAgB,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACvB,EAAE,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE;YACnB;QACF,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAErB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnE;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B;wGAxXW,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAXpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAqEoD,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpHlE,6wFAyEA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCY,gBAAgB,oJAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAa7B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAA,QAAA,EAC/B,uBAAuB,EAAA,SAAA,EACtB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6wFAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;AAU2B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,eAAe,w0CAwDpD,MAAM,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElG9D,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAGhC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;AAG/B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,IAAI,GAAG;YACX,4CAA4C;YAC5C,6BAA6B;YAC7B,4CAA4C;YAC5C,0FAA0F;YAC1F;SACD;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,gBAAgB,GAAG,gBAAgB;AAEvE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAA,CAAC,mFAAC;;AAGO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;QAC3B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAqB,EAAE;QACzD;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE;AACrB,QAAA,IAAI,EAAE,IAAI,GAAG,EAAE;YACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,EAAE;QACpD;QACA,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QACxC;QACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;AAC9C,IAAA,CAAC,iFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiE;YAC5E,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe;SACrD;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAEnC,QAAA,MAAM,IAAI,GAAG;YACX,+CAA+C;YAC/C,oBAAoB;YACpB;SACD;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,GAAG,eAAe;AAE5E,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1D,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;wGAvGW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,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,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,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAXd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,6mBAiBA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDCa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAChB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6mBAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEN3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,OAAO,GAAG,KAAK,CAA2C,SAAS,8EAAC;;AAEpE,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,GAAG,GAAG,KAAK,CAAU,KAAK,0EAAC;;AAE3B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAE7B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG,CAAC,4CAA4C,EAAE,cAAc,CAAC;AAE3E,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,MAAM,EAAE,+BAA+B;AACvC,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,2BAA2B;AAC/B,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,YAAY;AAE5D,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9G,IAAA,CAAC,sFAAC;wGAnCS,aAAa,EAAA,IAAA,EAAA,IAAA,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,otBCV1B,4LAMA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDIa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEK3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;;IAG/B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgC;;AAG5C,IAAA,QAAQ,GAAG,KAAK,CAAmB,IAAI,+EAAC;AAExC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,KAAK,GAAqC;AAC9C,YAAA,EAAE,EAAE,oDAAoD;AACxD,YAAA,EAAE,EAAE,wDAAwD;AAC5D,YAAA,EAAE,EAAE,uDAAuD;AAC3D,YAAA,EAAE,EAAE,sCAAsC;AAC1C,YAAA,EAAE,EAAE,wCAAwC;AAC5C,YAAA,EAAE,EAAE;SACL;QACD,MAAM,MAAM,GAAG,wCAAwC;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,IAAI,EAAE;AAC7C,QAAA,OAAO,KAAK,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC,IAAI,EAAE,GAAG,IAAI;AACjD,IAAA,CAAC,qFAAC;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAqC;AAC7C,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,IAAA,CAAC,+EAAC;wGArCS,aAAa,EAAA,IAAA,EAAA,IAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,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,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1B,29BAuCA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BY,gBAAgB,oJAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAK7B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAA,eAAA,EAGxB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,29BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AEF3C,MAAO,YAAa,SAAQ,iBAAiB,CAAA;;AAExC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAEjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;wGAV9B,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,0vBCTzB,46BA4BA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDnBa,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,46BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEM3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,QAAQ,GAAG,KAAK,CAAmB,MAAM,+EAAC;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,kFAAC;;AAEnC,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,+EAAC;;IAG/B,SAAS,GAAG,MAAM,EAAQ;;AAG1B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AAEzB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,IAAI,GAAG,2BAA2B;AAExC,QAAA,MAAM,UAAU,GAAqC;AACnD,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,MAAM,EAAE,gDAAgD;AACxD,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,YAAY,GAAG,QAAQ;AAE7D,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA,EAAI,WAAW,EAAE;AAChE,IAAA,CAAC,sFAAC;IAEF,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;wGAlCW,aAAa,EAAA,IAAA,EAAA,IAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,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,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1B,+uCA2CA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpCY,YAAY,oFAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAM3B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;8BACC,CAAC,YAAY,EAAE,cAAc,CAAC,YAC7B,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+uCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEC3C,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,4EAAC;;AAEvC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,SAAS,gFAAC;;AAEpC,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;AAE5D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QACxC,MAAM,IAAI,GAAG,gCAAgC;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,GAAG,UAAU,GAAG,EAAE;AAClE,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,EAAE;AAC5B,IAAA,CAAC,uFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oFAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,QAAQ,GAAkC;AAC9C,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,MAAM,EAAE,iBAAiB;AACzB,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,WAAW,EAAE;SACd;QAED,OAAO,CAAA,aAAA,EAAgB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA,CAAE;AACjD,IAAA,CAAC,kFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE;SACL;AAED,QAAA,OAAO,CAAA,EAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE,cAAc;AAC9D,IAAA,CAAC,mFAAC;wGArDS,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,qRAOA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qRAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;;AEY3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;;AAEtC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;;AAEtC,IAAA,aAAa,GAAG,KAAK,CAAU,IAAI,oFAAC;;AAGpC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAEtB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;;IAGzB,OAAO,GAAG,MAAM,EAAQ;AAEhB,IAAA,UAAU,GAAG,SAAS,CAAa,YAAY,iFAAC;AAExD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,IAAI,GAAG,CAAC,yCAAyC,EAAE,8CAA8C,CAAC;AAExG,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,uBAAuB,GAAG,oBAAoB;AAEnF,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7D,IAAA,CAAC,mFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjB,qBAAqB,CAAC,MAAK;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxB,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;AAC3C,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,CAAC,EAAE,GAAG,CAAC;IACT;wGA5DW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB1B,4gDA+CA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BY,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EACf,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4gDAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;mjBAoBK,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE/B5D,MAAO,WAAY,SAAQ,iBAAiB,CAAA;;AAEvC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;;AAEhC,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;;AAExB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;wGARtB,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,wdCTxB,yIAKA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDIa,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yIAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEG3C,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;;AAGlC,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,kFAAC;;AAG9B,IAAA,IAAI,GAAG,eAAe,CAAC,WAAW,2EAAC;AAE5C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;wGAvBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,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,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,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAUK,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB7C,mlDAsCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD5Ba,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mlDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;odAYf,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEVvC,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;;AAE/C,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,4EAAC;;AAExB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,OAAO,GAAG,KAAK,CAA+B,SAAS,8EAAC;;AAExD,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;;AAErC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;IAE/B,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEvE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE;SACL;QAED,OAAO,CAAA,mDAAA,EAAsD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA,CAAE;AACrF,IAAA,CAAC,mFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,IAAI,GAAG;YACX,0DAA0D;YAC1D,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,SAAS;SACnD;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC;QAC9C;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,qFAAqF,CAAC;QAClG;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,iFAAC;wGAvDS,mBAAmB,EAAA,IAAA,EAAA,IAAA,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,6mCCVhC,8sBAsBA,EAAA,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDZa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8sBAAA,EAAA,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA;;;AEOjD;AACA,MAAM,kBAAkB,GAAG,GAAG;AAQxB,MAAO,YAAa,SAAQ,iBAAiB,CAAA;AACzC,IAAA,cAAc;IACd,QAAQ,GAAuB,IAAI;IAE1B,kBAAkB,GAAG,MAAW;AAC/C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;AACF,IAAA,CAAC;AAEQ,IAAA,KAAK,GAAG,KAAK,CAAqB,EAAE,4EAAC;AACrC,IAAA,KAAK,GAAG,KAAK,CAAmB,MAAM,4EAAC;;AAEvC,IAAA,SAAS,GAAG,KAAK,CAAgD,QAAQ,gFAAC;IAE1E,QAAQ,GAAG,MAAM,EAAoB;AAErC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAGtB,IAAA,WAAW,GAAG,MAAM,CAKnB,IAAI,kFAAC;AAEE,IAAA,QAAQ,GAAG,SAAS,CAA0B,OAAO,+EAAC;IAEvE,QAAQ,GAAA;QACN,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;IACpE;IAEA,WAAW,GAAA;QACT,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;AACrE,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;IACF;AAEA;;;;;;AAMG;AACH,IAAA,IAAI,CAAC,MAA4B,EAAA;AAC/B,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB;QACF;QACA,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,MAAM,CAAC,MAA4B,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AACA,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;QACA,IAAI,CAAC,YAAY,EAAE;IACrB;AAEQ,IAAA,WAAW,CAAC,MAA2B,EAAA;AAC7C,QAAA,IAAI,MAAM,YAAY,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;YACtB;QACF;AACA,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa;AACnC,QAAA,IAAI,MAAM,YAAY,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;QACxB;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,qBAAqB,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzD,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;QAC5B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;QACF;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC9C,MAAM,MAAM,GAAG;AACb,cAAE,IAAI,CAAC,kCAAkC,CAAC,OAAO;AACjD,cAAE,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC;AACnD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC7C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAEzD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACnB,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;AAC1B,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;gBAC9B;AACD,aAAA,CAAC;YACF;QACF;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG;AACpC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,GAAG;AACH,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;gBAChC;AACD,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,GAAG;AACH,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;gBAC7B;AACD,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,UAAU,CAAC,IAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB;QACF;QACA,IAAI,CAAC,KAAK,EAAE;IACd;AAGA,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB;QACF;AACA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC9C,MAAM,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK;AAClD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK;AACzD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAGA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;;AAGQ,IAAA,2BAA2B,CAAC,EAAe,EAAA;AACjD,QAAA,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;QACA,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;AAC7C,YAAA,OAAO,IAAI;QACb;QACA,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO;AACzB,QAAA,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3E,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,kCAAkC,CAAC,IAAiB,EAAA;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE;AACvD,YAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE;AACvC,gBAAA,OAAO,CAAC;YACV;QACF;QACA,OAAO,QAAQ,CAAC,eAAe;IACjC;wGA9MW,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,kxBCxBzB,47BAyBA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDDa,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,47BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;iZA6BgB,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA;sBAyHrE,YAAY;uBAAC,yBAAyB;;sBAQtC,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAiBzC,YAAY;uBAAC,eAAe;;;AEzLzB,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,QAAQ,GAAG,KAAK,CAAmB,OAAO,+EAAC;;AAE3C,IAAA,KAAK,GAAG,KAAK,CAAS,UAAU,4EAAC;;AAEjC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;;AAGtC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAEtB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;;IAGzB,OAAO,GAAG,MAAM,EAAQ;AAExB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,IAAI,GAAG;YACX,+BAA+B;YAC/B,0CAA0C;YAC1C,+CAA+C;YAC/C,IAAI,CAAC,KAAK;SACX;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE3B,QAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,GAAG,kBAAkB,CAAC;QACpE;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,GAAG,mBAAmB,CAAC;QACrE;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,mFAAC;IAEF,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,CAAC,EAAE,GAAG,CAAC;IACT;wGApDW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,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,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,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,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,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ3B,ylCAmCA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7BY,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EACf,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ylCAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AEK3C,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAC9C,IAAA,KAAK,GAAG,KAAK,CAA2B,EAAE,4EAAC;AAC3C,IAAA,SAAS,GAAG,KAAK,CAAS,GAAG,gFAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAS,YAAY,gFAAC;wGAHrC,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,qBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf/B,wtCAkCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzBY,UAAU,oOAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;8BACC,CAAC,UAAU,EAAE,YAAY,CAAC,YACzB,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wtCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEJ1C,MAAM,iCAAiC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AASzD,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;IACtC,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE3F,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAA4B;AACvD,IAAA,QAAQ,GAAG,KAAK,CAAyB,EAAE,+EAAC;IAC5C,aAAa,GAAG,KAAK,CAAoB,CAAC,GAAG,iCAAiC,CAAC,oFAAC;AAChF,IAAA,WAAW,GAAG,KAAK,CAA4B,CAAC,kFAAC;AACjD,IAAA,SAAS,GAAG,KAAK,CAA0B,YAAY,gFAAC;;IAExD,OAAO,GAAG,KAAK,CAAwB,IAAI,CAAC,yBAAyB,IAAI,kCAAkC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE5G,YAAY,GAAG,MAAM,EAAU;IAC/B,gBAAgB,GAAG,MAAM,EAAU;AAEnC,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9B,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B;AACA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,sFAAC;AAEO,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,4FAC3E;IAEQ,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3E,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvD,IAAA,CAAC,mFAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AAC5G,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC5D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;QACjE,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE;AACnC,aAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE;aAC/B,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,IAAA,CAAC,kFAAC;AAEF,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B;IACF;AAEA,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,CAAA,KAAA,EAAQ,IAAI,gBAAgB,GAAG,CAAA,KAAA,EAAQ,IAAI,EAAE;IACpF;AAEA,IAAA,qBAAqB,CAAC,KAA+B,EAAA;QACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrE,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B;IACF;wGAtEW,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,qBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,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,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB/B,ooDAsDA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCY,cAAc,oNAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAK7B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,cAAc,EAAE,cAAc,CAAC,EAAA,eAAA,EAGxB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ooDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEN3C,MAAO,WAAY,SAAQ,iBAAiB,CAAA;AACvC,IAAA,OAAO,GAAG,KAAK,CAA2C,SAAS,8EAAC;AAEpE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,MAAM,EAAE,kCAAkC;AAC1C,YAAA,IAAI,EAAE;SACP;QACD,OAAO,CAAA,gGAAA,EAAmG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AACxI,IAAA,CAAC,sFAAC;wGAbS,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,yOCVxB,6DACA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDSa,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEwB3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;IACjC,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE3F,IAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,2EAAC;AACvB,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;AAClC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,YAAY,GAAG,KAAK,CAAS,mBAAmB,mFAAC;;AAEjD,IAAA,YAAY,GAAG,KAAK,CAAS,CAAC,mFAAC;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;AAChC,IAAA,iBAAiB,GAAG,QAAQ,CACnC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC,yBAAyB,IAAI,kCAAkC,wFACzG;AACQ,IAAA,uBAAuB,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,iCAAiC,CAAC,8FACjF;IAEQ,YAAY,GAAG,MAAM,EAA8C;IACnE,iBAAiB,GAAG,MAAM,EAAe;AAEzC,IAAA,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAEvE,UAAU,CAAC,GAA4B,EAAE,KAAa,EAAA;QACpD,OAAO;AACL,YAAA,SAAS,EAAE,GAAG;YACd,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;YAC7C,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,SAAS,EAAE,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7B;SACD;IACH;AAES,IAAA,OAAO,GAAG,MAAM,CAAS,EAAE,8EAAC;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAiB,KAAK,8EAAC;AACvC,IAAA,YAAY,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,mFAAC;AAC7C,IAAA,WAAW,GAAG,MAAM,CAAS,CAAC,kFAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAS,EAAE,+EAAC;AAEtC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW;YAChD,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ;YAC7C,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;AAES,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;QAC1B,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACjB,gBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EACf,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACb,gBAAA,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACvC,gBAAA,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACnF,OAAO,GAAG,GAAG,GAAG;AAClB,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,iFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,IAAI;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;AACnD,IAAA,CAAC,oFAAC;AAEF,IAAA,IAAI,CAAC,GAAW,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;QAC1D;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAG;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAClC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAClD;AAGU,IAAA,eAAe,CAAC,EAAS,EAAA;AACjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAChC;AAGU,IAAA,iBAAiB,CAAC,EAAiB,EAAA;QAC3C,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG;YAAE;AAC1C,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAA4B;AAC9C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB,CAAC;YAAE;AAChD,QAAA,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG;YAAE,EAAE,CAAC,cAAc,EAAE;AACvC,QAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAChC;AAEQ,IAAA,qBAAqB,CAAC,EAAS,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,aAA4B;AAC5C,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAA4B;QAC9C,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,sBAAsB,CAAuB;QAC9E,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE;AACvC,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI;YAAE;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,GAAG;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB;wGAjIW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuBqB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDxE,yjDAuCA,yjBDhBY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASjD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAA,eAAA,EAG5C,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,yBAAyB,EAAE,WAAW;AACtC,wBAAA,yBAAyB,EAAE;AAC5B,qBAAA,EAAA,QAAA,EAAA,yjDAAA,EAAA,MAAA,EAAA,CAAA,igBAAA,CAAA,EAAA;4gCAyB4C,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA;sBAoFrE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAKhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE3HrC,MAAMA,MAAI,GAGN;AACF,IAAA,EAAE,EAAE;AACF,QAAA,MAAM,EAAE;YACN,SAAS;YACT,UAAU;YACV,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,SAAS;YACT,UAAU;YACV;AACD,SAAA;AACD,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,MAAM,EAAE;YACN,SAAS;YACT,UAAU;YACV,OAAO;YACP,OAAO;YACP,KAAK;YACL,MAAM;YACN,MAAM;YACN,QAAQ;YACR,WAAW;YACX,SAAS;YACT,UAAU;YACV;AACD,SAAA;AACD,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,WAAW,EAAE;AACd;CACF;AAUK,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AACtC,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,IAAI,GAAS,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAEzE,IAAA,IAAI,GAAGA,MAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,IAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;AAEvC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;AAClD,IAAA,MAAM,GAAG,KAAK,CAAS,YAAY,6EAAC;AAEpC,IAAA,KAAK,GAAG,KAAK,CAAc,IAAI,4EAAC;;AAEhC,IAAA,KAAK,GAAG,MAAM,CAAc,IAAI,4EAAC;AAEjC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;IAC5B,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACzC,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;AAC9C,IAAA,CAAC,2FAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI;YACF,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;QACnE;AAAE,QAAA,MAAM;YACN,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;QACpC;AACF,IAAA,CAAC,mFAAC;IAEO,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3F,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EACvB,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;QACtB,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;QAC7C,MAAM,IAAI,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,mFAAC;AAEM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,CAAc,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAC,CAAU,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC;IACF;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;IAClE;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;QACpB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IACxG;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IACxG;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7B;AAGA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;AAC1B,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAGA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;QACpD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;wGA7IW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,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,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,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EALlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtE7G,y4GAwFA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAO3B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,QAAA,EAC7B,sBAAsB,EAAA,SAAA,EACrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,kBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAG1F,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y4GAAA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA;;sBAkI9C,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAQ/C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;AE9L9C,MAAMA,MAAI,GAAsE;AAC9E,IAAA,EAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACrE,IAAA,EAAE,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;CAC7D;AAUK,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AACtC,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,IAAI,GAAS,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAEzE,IAAA,IAAI,GAAGA,MAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACtB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAE3D,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,KAAK,GAAG,MAAM,CAAmB,IAAI,4EAAC;IAEtC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE5C,IAAA,QAAQ,GAAwB,MAAK,EAAE,CAAC;AACxC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,CAAS,EAAA;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB;AACA,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAC,CAAU,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;QACjC,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACb,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE;gBACvD,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU;AACxD,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC;YAAE;AACR,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACnF,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;IAC5D;AAEA,IAAA,YAAY,CAAC,CAAQ,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9E;AAEA,IAAA,cAAc,CAAC,CAAQ,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9E;AAGA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AACvB,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAGA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;QACjD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;wGAvFW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EALlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B7G,w/FAmEA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvCY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAM3B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,SAAA,EAC5B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,kBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAG1F,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,w/FAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBA4E9C,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAQ/C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;AEhG9C,MAAM,IAAI,GAGN;AACF,IAAA,EAAE,EAAE;AACF,QAAA,MAAM,EAAE;YACN,SAAS;YACT,UAAU;YACV,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,SAAS;YACT,UAAU;YACV;AACD,SAAA;AACD,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,MAAM,EAAE;YACN,SAAS;YACT,UAAU;YACV,OAAO;YACP,OAAO;YACP,KAAK;YACL,MAAM;YACN,MAAM;YACN,QAAQ;YACR,WAAW;YACX,SAAS;YACT,UAAU;YACV;AACD,SAAA;AACD,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,WAAW,EAAE;AACd;CACF;AAUK,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAC1C,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,IAAI,GAAS,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAEzE,IAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,IAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC7B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAE3D,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;;AAElD,IAAA,MAAM,GAAG,KAAK,CAAS,kBAAkB,6EAAC;AAE1C,IAAA,QAAQ,GAAG,MAAM,CAAc,IAAI,+EAAC;AACpC,IAAA,KAAK,GAAG,MAAM,CAAc,IAAI,4EAAC;AACjC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;IACzB,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACzC,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;AAC9C,IAAA,CAAC,2FAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE;;;;AAIjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI;YACF,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;QACnE;AAAE,QAAA,MAAM;YACN,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;QACpC;AACF,IAAA,CAAC,mFAAC;IAEO,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3F,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EACvB,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;QACtB,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;QAC7C,MAAM,IAAI,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,mFAAC;AAEM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,CAA0B,EAAA;AACnC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;AACtE,QAAA,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;QAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACtC;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;QACjC,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;YACzB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC;IACF;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACrG;IACH;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IAC/G;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IACxG;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB;AAEA,IAAA,YAAY,CAAC,CAAQ,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,MAAM,CAAC,GAAG,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG;AAEA,IAAA,cAAc,CAAC,CAAQ,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,MAAM,GAAG,GAAG,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG;IAEQ,QAAQ,GAAA;AACd,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AACpB,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG;AAEQ,IAAA,SAAS,CAAC,CAAc,EAAA;QAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;IAClB;AAGA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AACvB,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAGA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;QACjD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;wGA7KW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,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,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,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EALtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvEjH,i7JA8GA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxCY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAM3B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,OAAA,EAC3B,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,SAAA,EAC5B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,sBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAG9F,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i7JAAA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA;;sBAkK9C,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAQ/C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;AE3OxC,MAAO,YAAa,SAAQ,iBAAiB,CAAA;AACxC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;wGALtB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,8eCTzB,qEAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDMa,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEK3C,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,kFAAC;AAC9B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,6EAAC;AAE9B,IAAA,KAAK,GAAG,eAAe,CAAC,YAAY,4EAAC;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACvD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE;wGA/BW,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,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,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAIO,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB/C,svDA6CA,gFDvCY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,svDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;2WAMd,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEJzC,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AACjD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;IAE1B,QAAQ,GAAG,MAAM,EAAQ;IAElC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QACtB;IACF;wGAZW,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,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,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,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZlC,mtBAmBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbY,YAAY,6HAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMzB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;8BACC,CAAC,YAAY,EAAE,YAAY,CAAC,YAC3B,yBAAyB,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mtBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEE3C,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAC7C,IAAA,KAAK,GAAG,eAAe,CAAC,qBAAqB,4EAAC;wGAD5C,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,oBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EACK,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbxD,2KAMA,+EDAY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2KAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;6FAGd,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEb3C,gBAAgB,CAAA;AACnB,IAAA,QAAQ;AACR,IAAA,OAAO;;AAGf,IAAA,KAAK,CAAC,OAAmB,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;IACzB;;AAGA,IAAA,KAAK,CAAC,MAAU,EAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,CAAC,QAAQ,EAAE;IACjB;;IAGA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;AACD;;MCFY,oBAAoB,CAAA;AACd,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElE;;;;;;;;;;;;;AAaG;AACH,IAAA,IAAI,CAAmB,SAAwB,EAAE,MAAA,GAAiC,EAAE,EAAA;AAClF,QAAA,OAAO,IAAI,OAAO,CAAgB,OAAO,IAAG;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAK;AAE1C,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC/B,gBAAA,SAAS,EAAE;AACT,oBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;oBACjD,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAC9D,iBAAA;gBACD,MAAM,EAAE,IAAI,CAAC;AACd,aAAA,CAAC;;AAGF,YAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE;gBAC1C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,gBAAA,eAAe,EAAE;AAClB,aAAA,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzC,YAAA,QAAQ,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAG1C,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAA4B;YAC3D,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA,SAAA,EAAY,GAAG,CAAA,CAAE,CAAC,CAAC;;;;;AAMnF,YAAA,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE;gBAC/C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,gBAAA,eAAe,EAAE,QAAQ;AACzB,gBAAA,gBAAgB,EAAE;oBAChB,KAAK,CAAC,wBAAwB,CAAC;oBAC/B,KAAK,CAAC,0BAA0B,CAAC;oBACjC,KAAK,CAAC,yBAAyB;AAChC;AACF,aAAA,CAAC;YAEF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;YAC/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;YACrE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;YACrE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;YAEjE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAG3D,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEhD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;gBACpD,GAAG,CAAC,WAAW,EAAE;AACjB,gBAAA,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B,gBAAA,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;gBACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzC,SAAS,CAAC,OAAO,EAAE;gBACnB,QAAQ,CAAC,OAAO,EAAE;AACpB,YAAA,CAAC,CAAC;AAEF,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;wGA/EW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCXrB,oBAAoB,CAAA;IACvB,MAAM,GAAG,CAAC;AACT,IAAA,MAAM,GAAG,MAAM,CAAsB,EAAE,6EAAC;AAEjD,IAAA,IAAI,CAAC,MAA2B,EAAA;AAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,MAAM,KAAK,GAAsB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE;AACvG,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;AACxC,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;QACpD;AACA,QAAA,OAAO,EAAE;IACX;IAEA,OAAO,CAAC,OAAe,EAAE,KAAc,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC3D;IACA,OAAO,CAAC,OAAe,EAAE,KAAc,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC3D;IACA,MAAM,CAAC,OAAe,EAAE,KAAc,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC1D;IACA,IAAI,CAAC,OAAe,EAAE,KAAc,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxD;AAEA,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D;IACA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;wGAhCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACY5B,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AACzC,IAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,CAAC;wGADzC,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB1B,w3CAgCA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBY,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EACf,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,w3CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AEF3C,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAChD,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAmB,MAAM,+EAAC;AAC1C,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;AAClC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,kFAAC;IAEnC,SAAS,GAAG,MAAM,EAAQ;AAE1B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,UAAU,GAAqC;AACnD,YAAA,OAAO,EAAE,qDAAqD;AAC9D,YAAA,OAAO,EAAE,qDAAqD;AAC9D,YAAA,MAAM,EAAE,kDAAkD;AAC1D,YAAA,IAAI,EAAE;SACP;QACD,OAAO,CAAA,uCAAA,EAA0C,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE;AAChF,IAAA,CAAC,sFAAC;wGAhBS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZjC,ynBAuBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EACf,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ynBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEA3C,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAmB,MAAM,+EAAC;AAE1C,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,UAAU,GAAqC;AACnD,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,MAAM,EAAE,gDAAgD;AACxD,YAAA,IAAI,EAAE;SACP;QACD,OAAO,CAAA,oCAAA,EAAuC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE;AAC7E,IAAA,CAAC,sFAAC;wGAXS,eAAe,EAAA,IAAA,EAAA,IAAA,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,gPCV5B,iFAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDOa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iFAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEC3C,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;AAC5C,IAAA,OAAO,GAAG,KAAK,CAAyC,MAAM,8EAAC;AAC/D,IAAA,KAAK,GAAG,KAAK,CAAS,MAAM,4EAAC;AAC7B,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;AAE1B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,IAAI,GAAG,yBAAyB;AACtC,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,OAAO,EAAE;SACV;QACD,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AAChD,IAAA,CAAC,sFAAC;wGAdS,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,ieCT7B,qLAKA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDIa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qLAAA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA;;;AEM3C,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,OAAO,GAAG,KAAK,CAAU,IAAI,8EAAC;AACvC;;;AAGG;AACM,IAAA,KAAK,GAAG,KAAK,CAAuB,MAAM,4EAAC;;AAE3C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AACzC;;;AAGG;AACM,IAAA,OAAO,GAAG,KAAK,CAA+B,SAAS,8EAAC;;AAExD,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;;AAG5D,IAAA,IAAI,GAAG,KAAK,CAAqB,EAAE,2EAAC;;IAGpC,YAAY,GAAG,MAAM,EAAoB;;AAGzC,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,sFAAC;IAEpE,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACzD;IAEQ,kBAAkB,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,cAAc,GAAG,eAAe,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACvE;AAEQ,IAAA,0BAA0B,GAAG,QAAQ,CAAC,MAAK;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,OAAO,UAAU,GAAG,+BAA+B,GAAG,iBAAiB;AACzE,IAAA,CAAC,iGAAC;IAEO,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,WAAW,EAAE,KAAK;AACrB,UAAE;UACA,8DAA8D,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACnE;;AAGQ,IAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAoB;AAC/D,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,SAAS,EAAE;AACnB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,GAAG,GAAqC;AAC5C,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE;SACP;AACD,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC;AACf,IAAA,CAAC,+FAAC;;AAGO,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS,GAAG,4BAA4B,GAAG,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACjG;AAEQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE;QAChD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,8DAA8D;QACvE;QACA,OAAO,CAAA,EAAG,QAAQ,CAAA,kBAAA,CAAoB;AACxC,IAAA,CAAC,0FAAC;AAEO,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,MAAM,GAAG;AACb,cAAE;cACA,0FAA0F;QAC9F,MAAM,IAAI,GACR,0GAA0G;AAC5G,QAAA,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7D,IAAA,CAAC,4FAAC;AAEO,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MAC1C;QACE,0HAA0H;QAC1H,IAAI,CAAC,mBAAmB;AACzB,KAAA,CAAC,IAAI,CAAC,GAAG,CAAC,8FACZ;IAEQ,sBAAsB,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,OAAO,EAAE,KAAK;AACjB,UAAE;UACA,kDAAkD,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACvD;IAEQ,sBAAsB,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,OAAO,EAAE,KAAK;AACjB,UAAE;UACA,+CAA+C,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACpD;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,WAAW,GAAG;AAClB,cAAE,IAAI,CAAC,KAAK,EAAE,KAAK;AACjB,kBAAE;AACF,kBAAE;cACF,eAAe;AAEnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,UAAU,GAAiD;AAC/D,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,OAAO,EAAE,uCAAuC;AAChD,YAAA,OAAO,EAAE,uCAAuC;AAChD,YAAA,MAAM,EAAE,sCAAsC;AAC9C,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO;AACzC,YAAA,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE;YACrC,MAAM;YACN,WAAW;YACX,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,GAAG,cAAc;YAC9C,IAAI,CAAC,QAAQ,EAAE,GAAG,WAAW,GAAG;SACjC;QAED,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC;QAC7D;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,IAAA,CAAC,kFAAC;AAEF,IAAA,UAAU,CAAC,IAAsB,EAAA;AAC/B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IAC3D;AAEA,IAAA,cAAc,CAAC,IAAsB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC1D;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;AAEQ,IAAA,gBAAgB,CAAC,KAAyB,EAAA;QAChD,MAAM,IAAI,GAAuB,EAAE;AACnC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAM,CAAC;YAC3B;iBAAO;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACjB;QACF;AACA,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,uBAAuB,CAAC,IAAsB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;IAC7D;;AAGA,IAAA,iBAAiB,CAAC,IAAsB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AACpB,QAAA,OAAO,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI;IAC3E;IAEA,YAAY,CAAC,KAAa,EAAE,IAAsB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAClD;wGAlLW,eAAe,EAAA,IAAA,EAAA,IAAA,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,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,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,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,YAAA,EAAA,cAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb5B,q3LA2IA,EAAA,MAAA,EAAA,CAAA,wQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpIY,YAAY,oFAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;8BACC,CAAC,YAAY,EAAE,YAAY,CAAC,YAC3B,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,q3LAAA,EAAA,MAAA,EAAA,CAAA,wQAAA,CAAA,EAAA;;;AEF3C,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;;AAE5D,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,4EAAC;;AAE7B,IAAA,OAAO,GAAG,KAAK,CAAqB,OAAO,8EAAC;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IAEzB,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEnG,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,MAAM,GAAG,EAAE;AAC/E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,GAAG,eAAe,GAAG,cAAc;AAE9E,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;AACrC,YAAA,OAAO,CAAC,yDAAyD,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7G;QAEA,OAAO,CAAC,0BAA0B,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7G,IAAA,CAAC,kFAAC;;AAGO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,GAAG,eAAe,GAAG,cAAc;QAC9E,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClD,IAAA,CAAC,oFAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,CAAC,qCAAqC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,sFAC9F;wGA/BU,eAAe,EAAA,IAAA,EAAA,IAAA,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,umBCT5B,qcASA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDAa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qcAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEI3C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,QAAQ,GAAG,KAAK,CAAyB,EAAE,+EAAC;AACrD;;;AAGG;AACM,IAAA,GAAG,GAAG,KAAK,CAAS,GAAG,0EAAC;;AAExB,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,iFAAC;;AAEjC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;AAEhC,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,uFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,iFAAC;AAE1F,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACT,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,IAAA,CAAC,+EAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;AAC/B,YAAA,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAC9D,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS;AACxC,YAAA,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AAC7E,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,qFAAC;AAEO,IAAA,qBAAqB,GAAG,QAAQ,CACvC,MAAM,CAAA,wDAAA,EAA2D,IAAI,CAAC,gBAAgB,EAAE,CAAA,CAAE,4FAC3F;AAED,IAAA,iBAAiB,CAAC,OAAsC,EAAA;QACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,SAAS,CAAC;IACrD;AAEQ,IAAA,iBAAiB,CAAC,OAAqC,EAAA;AAC7D,QAAA,MAAM,GAAG,GAA2B;AAClC,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,IAAI,EAAE;SACP;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACvC;wGA7DW,aAAa,EAAA,IAAA,EAAA,IAAA,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,4lBCX1B,wkCA+BA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDpBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wkCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEsB3C,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,GAAG,GAAG,KAAK,CAAS,CAAC,0EAAC;;AAEtB,IAAA,GAAG,GAAG,KAAK,CAAS,GAAG,0EAAC;;AAExB,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,2EAAC;;AAEvB,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,4EAAC;;AAE7B,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;;AAE5D,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAEjC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,OAAO,GAAG,KAAK,CAA+B,SAAS,8EAAC;AAExD,IAAA,QAAQ,GAAG,SAAS,CAA0B,OAAO,+EAAC;;AAGtD,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,kFAAC;;AAEvB,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,+EAAC;;AAEpB,IAAA,SAAS,GAAG,MAAM,CAAC,GAAG,gFAAC;;AAGvB,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,GAAG;AAE/E,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAE1B,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,4FAAC;AAEjF,IAAA,QAAQ,GAAqC,MAAK,EAAE,CAAC;AACrD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAE/B,IAAA,WAAW,GAAG,MAAM,CAAe,IAAI,kFAAC;AAExC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,qFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,qFAAC;AAEO,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,6FAAC;AAEF;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,OAAO;YACL,IAAI,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,KAAA,CAAO;YAChC,KAAK,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,KAAA,CAAO;YACjC,IAAI,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,KAAA;SAC1B;AACH,IAAA,CAAC,iFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,gFAAC;AAE/D,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,6EAAC;AACzD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,8EAAC;AAE3D,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,mFAAC;AAE3F,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,mFAAC;AAE3G,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,OAAO,EAAc;QACvB;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;AACtB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACxC,MAAM,GAAG,GAAa,EAAE;AACxB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC;AACA,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,oFAAC;AAEF,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC1C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC;aAAO;AACL,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;YACjD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AAC9D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAoC,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,UAAU,CAAC,CAAS,EAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,IAAI,EAAE,KAAK,EAAE,EAAE;AACb,YAAA,OAAO,CAAC;QACV;QACA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG;IAChD;AAEA,IAAA,IAAI,CAAC,GAAW,EAAA;AACd,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxC;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG;AAC/C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB;IAEA,kBAAkB,CAAC,KAAmB,EAAE,UAAiB,EAAA;QACvD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5C;IAEA,kBAAkB,CAAC,KAAmB,EAAE,UAAwB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC;QACF;QACA,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC5C,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QAEA,IAAI,KAAK,GAAiB,UAAU;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YACjB,KAAK,GAAG,IAAI;QACd;AAAO,aAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;AACjD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7B,YAAA,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;QAC1B;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAEtC,QAAA,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACjD,YAAA,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC1C;AAEA,QAAA,MAAM,IAAI,GAAG,CAAC,EAAgB,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC;AACtE,QAAA,MAAM,EAAE,GAAG,CAAC,EAAgB,KAAI;AAC9B,YAAA,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;AACjD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7C,YAAA,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC;AACjD,YAAA,IAAI;AACF,gBAAA,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,SAAS,CAAC;YAC3C;AAAE,YAAA,MAAM;;YAER;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC;AAC9C,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,EAAE,CAAC;IAChD;IAEQ,oBAAoB,CAAC,KAAmB,EAAE,KAAkB,EAAA;AAClE,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;AACtD,QAAA,IAAI,KAAa;QACjB,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;QAClD;aAAO;AACL,YAAA,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM;QACtD;AACA,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;IACrC;AAEQ,IAAA,YAAY,CAAC,KAAmB,EAAE,KAAkB,EAAE,UAAwB,EAAA;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC;AAC3B,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD;iBAAO;AACL,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC;IACF;IAEA,SAAS,CAAC,KAAoB,EAAE,UAAiB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC;QACF;AACA,QAAA,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC7B;QACF;QACA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW;QACrD,MAAM,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS;AAEpD,QAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;AAC5B,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,OAAO,EAAE,IAAI,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACrE;AACA,YAAA,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,OAAO,EAAE,IAAI,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACrE;AACA,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,OAAO,CAAC,EAAE;YACZ;AACA,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;YACX;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACrD;iBAAO;AACL,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC;IACF;wGA7SW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,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,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAXd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BH,66NA6JA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD9Ha,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAChB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,66NAAA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA;kyBAoBQ,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,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,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEjDhE;;ACyBA;;;AAGG;AACH,SAAS,qCAAqC,CAAC,MAAgC,EAAA;IAC7E,MAAM,SAAS,GAAe,EAAE;AAEhC,IAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;AACjC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5E;AACA,IAAA,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACzC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC5F;AACA,IAAA,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE;AACvC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;IACxF;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;AACnC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAChF;AACA,IAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC1C,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC9F;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA;;;;;AAKG;AACG,SAAU,yBAAyB,CAAC,MAAgC,EAAA;AACxE,IAAA,OAAO,wBAAwB,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;AAChF;AAEA,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;AACvF,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;AAEhF,SAAS,iBAAiB,CAAC,QAA+B,EAAA;IACxD,QAAQ,QAAQ;AACd,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,aAAa;AACtB,QAAA;AACE,YAAA,OAAO,eAAe;;AAE5B;AAEA,SAAS,eAAe,CAAC,GAAW,EAAA;IAClC,QACE,GAAG,KAAK,IAAI;AACZ,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;AACb,QAAA,GAAG,KAAK,KAAK;QACb,GAAG,KAAK,KAAK;AAEjB;AAEA,SAAS,uBAAuB,CAAC,KAAa,EAAA;IAC5C,QACE,QAAQ,IAAI,KAAK;AACjB,QAAA,OAAQ,KAA4C,CAAC,MAAM,KAAK,QAAQ;AACvE,QAAA,KAA4C,CAAC,MAAM,KAAK,IAAI;AAEjE;AAEA;;AAEG;AACH,SAAS,4BAA4B,CAAC,KAAkD,EAAA;AAItF,IAAA,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE;AAClC,QAAA,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;IAC/C;AACA,IAAA,OAAO,EAAE,MAAM,EAAE,KAAoC,EAAE;AACzD;AAEA,SAAS,kBAAkB,CACzB,QAA+B,EAC/B,MAAmC,EACnC,OAAgC,EAAA;AAEhC,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;YAClE;QACF;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC;IACvD;AACF;AAEA,SAAS,oBAAoB,CAC3B,QAA+B,EAC/B,EAA2C,EAC3C,OAAgC,EAAA;IAEhC,IAAI,CAAC,EAAE,EAAE;QACP;IACF;AACA,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC/C,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;YAClE;QACF;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC;IAC1D;AACF;AAEA;;;AAGG;AACG,SAAU,iCAAiC,CAAC,MAAiC,EAAA;AACjF,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;IAC5B,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,OAAO,GAA4B,EAAE;IAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK;AAEnD,IAAA,MAAM,KAAK,GAA2E;AACpF,QAAA,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAA,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAA,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAA,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;QAC3B,CAAC,QAAQ,EAAE,aAAa,CAAC;AACzB,QAAA,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI;KACrB;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE;AACrC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB;QACF;AACA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;YAC5B,IAAI,CAAC,OAAO,EAAE;gBACZ;YACF;YACA,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AAC/C,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,eAAe,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;YACpF;QACF;aAAO;YACL,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,4BAA4B,CAAC,KAAK,CAAC;AAC1D,YAAA,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AAC7C,YAAA,oBAAoB,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC;QAC7C;IACF;AAEA,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,2BAA2B,CAAC,OAAoB,EAAE,MAAiC,EAAA;AAC1F,IAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,iCAAiC,CAAC,MAAM,CAAC,EAAE;QACnE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;IACtC;AACF;AAEA;;;;;;;AAOG;AACG,SAAU,WAAW,CAAC,MAAiC,EAAA;AAC3D,IAAA,MAAM,cAAc,GAAe,qCAAqC,CAAC,MAAM,CAAC;AAEhF,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA,GAAG,cAAc;QACjB,qBAAqB,CAAC,MAAK;AACzB,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;gBAClC;YACF;AACA,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,YAAA,2BAA2B,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC;AAC1D,QAAA,CAAC;AACF,KAAA,CAAC;AACJ;;ACtNA;;AAEG;AAEH;;ACJA;;AAEG;;;;"}