ps-helix 4.0.4 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/fesm2022/ps-helix.mjs +252 -6
- package/fesm2022/ps-helix.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ps-helix.d.ts +84 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps-helix.mjs","sources":["../../../projects/ps-helix/src/lib/components/alert/alert.component.ts","../../../projects/ps-helix/src/lib/components/alert/alert.component.html","../../../projects/ps-helix/src/lib/components/avatar/avatar.component.ts","../../../projects/ps-helix/src/lib/components/avatar/avatar.component.html","../../../projects/ps-helix/src/lib/components/badge/badge.component.ts","../../../projects/ps-helix/src/lib/components/badge/badge.component.html","../../../projects/ps-helix/src/lib/components/button/button.component.ts","../../../projects/ps-helix/src/lib/components/button/button.component.html","../../../projects/ps-helix/src/lib/components/card/card.component.ts","../../../projects/ps-helix/src/lib/components/card/card.component.html","../../../projects/ps-helix/src/lib/components/tag/tag.component.ts","../../../projects/ps-helix/src/lib/components/tag/tag.component.html","../../../projects/ps-helix/src/lib/components/stat-card/stat-card.component.ts","../../../projects/ps-helix/src/lib/components/stat-card/stat-card.component.html","../../../projects/ps-helix/src/lib/components/horizontal-card/horizontal-card.component.ts","../../../projects/ps-helix/src/lib/components/horizontal-card/horizontal-card.component.html","../../../projects/ps-helix/src/lib/components/info-card/info-card.component.ts","../../../projects/ps-helix/src/lib/components/info-card/info-card.component.html","../../../projects/ps-helix/src/lib/components/checkbox/checkbox.component.ts","../../../projects/ps-helix/src/lib/components/checkbox/checkbox.component.html","../../../projects/ps-helix/src/lib/components/collapse/collapse.component.ts","../../../projects/ps-helix/src/lib/components/collapse/collapse.component.html","../../../projects/ps-helix/src/lib/components/dropdown/dropdown.component.ts","../../../projects/ps-helix/src/lib/components/dropdown/dropdown.component.html","../../../projects/ps-helix/src/lib/components/input/input.types.ts","../../../projects/ps-helix/src/lib/components/input/input.component.ts","../../../projects/ps-helix/src/lib/components/input/input.component.html","../../../projects/ps-helix/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ps-helix/src/lib/components/tooltip/tooltip.component.html","../../../projects/ps-helix/src/lib/components/menu/menu.component.ts","../../../projects/ps-helix/src/lib/components/menu/menu.component.html","../../../projects/ps-helix/src/lib/components/modal/modal.component.ts","../../../projects/ps-helix/src/lib/components/modal/modal.component.html","../../../projects/ps-helix/src/lib/components/pagination/pagination.component.ts","../../../projects/ps-helix/src/lib/components/pagination/pagination.component.html","../../../projects/ps-helix/src/lib/components/progressbar/progressbar.component.ts","../../../projects/ps-helix/src/lib/components/progressbar/progressbar.component.html","../../../projects/ps-helix/src/lib/components/radio/radio.component.ts","../../../projects/ps-helix/src/lib/components/radio/radio.component.html","../../../projects/ps-helix/src/lib/components/select/select.component.ts","../../../projects/ps-helix/src/lib/components/select/select.component.html","../../../projects/ps-helix/src/lib/components/sidebar/sidebar.component.ts","../../../projects/ps-helix/src/lib/components/sidebar/sidebar.component.html","../../../projects/ps-helix/src/lib/components/spinloader/spinloader.component.ts","../../../projects/ps-helix/src/lib/components/spinloader/spinloader.component.html","../../../projects/ps-helix/src/lib/components/stepper/step.component.ts","../../../projects/ps-helix/src/lib/components/stepper/stepper.component.ts","../../../projects/ps-helix/src/lib/components/stepper/stepper.component.html","../../../projects/ps-helix/src/lib/components/switch/switch.component.ts","../../../projects/ps-helix/src/lib/components/switch/switch.component.html","../../../projects/ps-helix/src/lib/components/tab-bar/tab-bar.component.ts","../../../projects/ps-helix/src/lib/components/tab-bar/tab-bar.component.html","../../../projects/ps-helix/src/lib/components/table/table.component.ts","../../../projects/ps-helix/src/lib/components/table/table.component.html","../../../projects/ps-helix/src/lib/components/tabs/tab.component.ts","../../../projects/ps-helix/src/lib/components/tabs/tabs.component.ts","../../../projects/ps-helix/src/lib/components/tabs/tabs.component.html","../../../projects/ps-helix/src/lib/components/toast/toast.tokens.ts","../../../projects/ps-helix/src/lib/components/toast/toast.service.ts","../../../projects/ps-helix/src/lib/components/toast/toast.compat.ts","../../../projects/ps-helix/src/lib/components/toast/toast.component.ts","../../../projects/ps-helix/src/lib/components/toast/toast.component.html","../../../projects/ps-helix/src/lib/services/theme/theme.service.ts","../../../projects/ps-helix/src/lib/services/translation/translation.service.ts","../../../projects/ps-helix/src/lib/services/scroll.service.ts","../../../projects/ps-helix/src/ps-helix.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertType, IconPosition, AlertSize, AlertRole, AlertLabels } from './alert.types';\n\n// Default alert labels\nconst DEFAULT_LABELS: AlertLabels = {\n dismiss: 'Dismiss alert'\n};\n\n// Default alert icons\nconst DEFAULT_ICONS: Record<string, string> = {\n info: 'info',\n success: 'check-circle',\n warning: 'warning',\n danger: 'warning-octagon'\n};\n\nconst DEFAULT_CONFIG = {\n type: 'info' as AlertType,\n iconPosition: 'left' as IconPosition,\n closable: false,\n size: 'medium' as AlertSize,\n showIcon: true\n};\n\n@Component({\n selector: 'psh-alert',\n imports: [CommonModule],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshAlertComponent {\n\n // Inputs\n type = input<AlertType>(DEFAULT_CONFIG.type);\n iconPosition = input<IconPosition>(DEFAULT_CONFIG.iconPosition);\n closable = input(DEFAULT_CONFIG.closable);\n size = input<AlertSize>(DEFAULT_CONFIG.size);\n showIcon = input(DEFAULT_CONFIG.showIcon);\n role = input<AlertRole>();\n icon = input<string>();\n ariaLabel = input<string>();\n dismissLabel = input(DEFAULT_LABELS.dismiss);\n ariaLive = input<'polite' | 'assertive'>();\n content = input('');\n \n // Outputs\n closed = output<void>();\n\n // Computed values\n defaultIcon = computed(() => DEFAULT_ICONS[this.type()] || 'info');\n getIcon = computed(() => this.icon() || this.defaultIcon());\n\n computedAriaLive = computed(() => \n this.ariaLive() || (['warning', 'danger'].includes(this.type()) ? 'assertive' : 'polite')\n );\n\n computedRole = computed(() => \n this.role() || (['warning', 'danger'].includes(this.type()) ? 'alert' : 'status')\n );\n\n state = computed(() => {\n if (this.closable()) return 'closable';\n return this.type();\n });\n\n handleClose(): void {\n this.closed.emit();\n }\n}","<div\n class=\"alert\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class]=\"type()\"\n [attr.role]=\"computedRole()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-live]=\"computedAriaLive()\"\n [attr.data-state]=\"state()\"\n>\n <div class=\"alert-content\" [class.icon-right]=\"iconPosition() === 'right'\">\n @if (showIcon()) {\n <i class=\"ph ph-{{ getIcon() }}\" aria-hidden=\"true\"></i>\n }\n <div class=\"alert-message\">\n <ng-content>{{ content() }}</ng-content>\n </div>\n </div>\n \n @if (closable()) {\n <button\n type=\"button\"\n class=\"alert-dismiss\"\n (click)=\"handleClose()\"\n [attr.aria-label]=\"dismissLabel()\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, input, model, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarSize, AvatarShape, AvatarStatus } from './avatar.types';\n\n// Default configuration\nconst DEFAULT_CONFIG = {\n size: 'medium' as AvatarSize,\n shape: 'circle' as AvatarShape,\n alt: 'User avatar',\n icon: 'user'\n};\n\n// Default status colors\nconst DEFAULT_STATUS_COLORS: Record<AvatarStatus, string> = {\n online: 'var(--success-color)',\n offline: 'var(--surface-400)',\n away: 'var(--warning-color)',\n busy: 'var(--danger-color)'\n};\n\n@Component({\n selector: 'psh-avatar',\n imports: [CommonModule],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshAvatarComponent {\n\n // Model inputs with defaults\n size = model<AvatarSize>(DEFAULT_CONFIG.size);\n shape = model<AvatarShape>(DEFAULT_CONFIG.shape);\n src = model<string | undefined>();\n alt = model<string>(DEFAULT_CONFIG.alt);\n\n // Regular inputs\n initials = input('');\n icon = input<string>(DEFAULT_CONFIG.icon);\n status = input<AvatarStatus | undefined>();\n ariaLabel = input<string>();\n\n // Computed values\n hasImage = computed(() => !!this.src());\n hasInitials = computed(() => !!this.initials() && !this.hasImage());\n hasIcon = computed(() => !this.hasImage() && !this.hasInitials());\n\n computedAriaLabel = computed(() => this.ariaLabel() || this.alt());\n\n statusColor = computed(() => {\n const currentStatus = this.status();\n if (!currentStatus) return undefined;\n return DEFAULT_STATUS_COLORS[currentStatus];\n });\n\n state = computed(() => this.status() || 'default');\n}","<div \n class=\"avatar\"\n [class.circle]=\"shape() === 'circle'\"\n [class.square]=\"shape() === 'square'\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.xlarge]=\"size() === 'xlarge'\"\n role=\"img\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.data-state]=\"state()\"\n>\n @if (hasImage()) {\n <img [src]=\"src()\" [attr.alt]=\"alt()\" class=\"avatar-image\" />\n } @else if (hasInitials()) {\n <span class=\"avatar-initials\">{{ initials() }}</span>\n } @else if (hasIcon()) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n\n @if (status()) {\n <span \n class=\"avatar-status\"\n [class]=\"status()\"\n [style.background-color]=\"statusColor()\"\n [attr.aria-label]=\"status()\"\n ></span>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeSize, BadgeVariant, BadgePosition, BadgeDisplayType } from './badge.types';\n\nconst DEFAULT_CONFIG = {\n variant: 'primary' as BadgeVariant,\n size: 'medium' as BadgeSize,\n displayType: 'text' as BadgeDisplayType,\n max: 99,\n showZero: false,\n position: 'top-right' as BadgePosition\n};\n\n@Component({\n selector: 'psh-badge',\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshBadgeComponent<T = number> {\n\n readonly variant = input<BadgeVariant>(DEFAULT_CONFIG.variant);\n readonly size = input<BadgeSize>(DEFAULT_CONFIG.size);\n readonly displayType = input<BadgeDisplayType>(DEFAULT_CONFIG.displayType);\n readonly content = input<string>('');\n readonly visible = input(true);\n readonly value = input<T>();\n readonly max = input(DEFAULT_CONFIG.max);\n readonly showZero = input(DEFAULT_CONFIG.showZero);\n readonly position = input<BadgePosition>(DEFAULT_CONFIG.position);\n readonly overlap = input(false);\n readonly ariaLabel = input<string>();\n readonly formatter = input<((value: T) => string) | undefined>();\n\n readonly badgeClick = output<void>();\n readonly valueChange = output<T>();\n\n readonly computedRole = computed(() =>\n this.displayType() === 'counter' ? 'status' : 'img'\n );\n\n readonly computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const content = this.content();\n if (content) return content;\n\n return this.displayValue();\n });\n\n readonly state = computed(() => {\n if (!this.visible()) return 'hidden';\n if (this.overlap()) return 'overlap';\n return this.displayType();\n });\n\n private readonly isDot = computed(() => this.displayType() === 'dot');\n private readonly isCounter = computed(() => this.displayType() === 'counter');\n private readonly hasValue = computed(() => this.value() !== undefined);\n\n private readonly shouldDisplay = computed(() => {\n const currentValue = this.value();\n if (typeof currentValue !== 'number') return true;\n return currentValue > 0 || this.showZero();\n });\n\n private readonly formattedCustomValue = computed(() => {\n const formatter = this.formatter();\n const currentValue = this.value();\n\n if (!formatter || currentValue === null || currentValue === undefined) {\n return null;\n }\n\n return formatter(currentValue);\n });\n\n private readonly formattedNumericValue = computed(() => {\n const currentValue = this.value();\n\n if (typeof currentValue !== 'number') {\n return currentValue !== undefined ? String(currentValue) : '';\n }\n\n if (!this.shouldDisplay()) {\n return this.content() || '';\n }\n\n const maxValue = this.max();\n return currentValue > maxValue ? `${maxValue}+` : `${currentValue}`;\n });\n\n readonly displayValue = computed(() => {\n if (this.isDot()) {\n return '';\n }\n\n if (!this.isCounter() || !this.hasValue()) {\n return this.content();\n }\n\n const customFormatted = this.formattedCustomValue();\n if (customFormatted !== null) {\n return customFormatted;\n }\n\n return this.formattedNumericValue();\n });\n\n onBadgeClick(): void {\n this.badgeClick.emit();\n }\n}\n","<div\n class=\"badge\"\n [class.primary]=\"variant() === 'primary'\"\n [class.secondary]=\"variant() === 'secondary'\"\n [class.success]=\"variant() === 'success'\"\n [class.warning]=\"variant() === 'warning'\"\n [class.danger]=\"variant() === 'danger'\"\n [class.info]=\"variant() === 'info'\"\n [class.disabled]=\"variant() === 'disabled'\"\n [class.dot]=\"displayType() === 'dot'\"\n [class.counter]=\"displayType() === 'counter'\"\n [class.overlap]=\"overlap()\"\n [class.small]=\"size() === 'small'\"\n [class.medium]=\"size() === 'medium'\"\n [class.large]=\"size() === 'large'\"\n [class.top-right]=\"position() === 'top-right'\"\n [class.top-left]=\"position() === 'top-left'\"\n [class.bottom-right]=\"position() === 'bottom-right'\"\n [class.bottom-left]=\"position() === 'bottom-left'\"\n [attr.role]=\"computedRole()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.data-state]=\"state()\"\n (click)=\"onBadgeClick()\"\n>\n @if (displayType() === 'text') {\n <ng-content></ng-content>\n } @else if (displayType() === 'counter') {\n {{ displayValue() }}\n }\n</div>\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { ButtonAppearance, ButtonVariant, ButtonSize, ButtonIconPosition } from './button.types';\n\n@Component({\n selector: 'psh-button',\n imports: [],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.full-width]': 'fullWidth()',\n '(click)': 'onHostClick($event)',\n },\n})\nexport class PshButtonComponent implements AfterContentChecked {\n private elementRef = inject(ElementRef);\n private projectedText = signal<string | undefined>(undefined);\n\n appearance = input<ButtonAppearance>('filled');\n variant = input<ButtonVariant>('primary');\n size = input<ButtonSize>('medium');\n disabled = input(false);\n loading = input(false);\n fullWidth = model(false);\n iconPosition = input<ButtonIconPosition>('left');\n icon = input<string>();\n ariaLabel = input<string>();\n loadingText = input('Loading...');\n disabledText = input('This action is currently unavailable');\n iconOnlyText = input<string>();\n type = input<'button' | 'submit' | 'reset'>('button');\n\n clicked = output<MouseEvent>();\n disabledClick = output<MouseEvent>();\n\n ngAfterContentChecked(): void {\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n const ngContentElement = button.querySelector('.button-content');\n if (ngContentElement) {\n const textContent = ngContentElement.textContent?.trim() || '';\n const currentProjectedText = this.projectedText();\n if (textContent && textContent !== currentProjectedText) {\n this.projectedText.set(textContent);\n } else if (!textContent && currentProjectedText) {\n this.projectedText.set(undefined);\n }\n }\n }\n }\n\n computedAriaLabel = computed(() => {\n if (this.ariaLabel()) return this.ariaLabel();\n if (this.loading()) return this.loadingText();\n if (this.disabled()) return this.disabledText();\n if (this.iconPosition() === 'only') {\n return this.iconOnlyText() || 'Button';\n }\n const projected = this.projectedText();\n if (projected) return projected;\n return undefined;\n });\n\n state = computed(() => {\n if (this.disabled()) return 'disabled';\n if (this.loading()) return 'loading';\n return 'default';\n });\n\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n onHostClick(event: MouseEvent): void {\n if (this.disabled() && !this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n this.disabledClick.emit(event);\n }\n }\n}","<button\n [attr.data-state]=\"state()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-busy]=\"loading()\"\n [type]=\"type()\"\n [class]=\"appearance()\"\n [class.primary]=\"variant() === 'primary'\"\n [class.secondary]=\"variant() === 'secondary'\"\n [class.success]=\"variant() === 'success'\"\n [class.warning]=\"variant() === 'warning'\"\n [class.danger]=\"variant() === 'danger'\"\n [class.disabled]=\"disabled()\"\n [class.loading]=\"loading()\"\n [class.small]=\"size() === 'small'\"\n [class.medium]=\"size() === 'medium'\"\n [class.large]=\"size() === 'large'\"\n [class.icon-only]=\"iconPosition() === 'only'\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"handleClick($event)\"\n>\n <span class=\"button-content\">\n @if (loading()) {\n <span class=\"loader\" aria-hidden=\"true\"></span>\n @if (iconPosition() !== 'only') {\n {{ loadingText() }}\n }\n }\n @if (!loading() && icon() && (iconPosition() === 'left' || iconPosition() === 'only')) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n @if (!loading() && iconPosition() !== 'only') {\n <ng-content></ng-content>\n }\n @if (!loading() && icon() && iconPosition() === 'right') {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n </span>\n</button>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { CardVariant, CardColorVariant, CardDensity, CardActionsAlignment } from './card.types';\n\n/**\n * Composant carte métier - conteneur structuré pour contenu professionnel\n *\n * Ce composant fournit une structure de carte métier avec :\n * - Header enrichi avec titre, description et slots pour icônes/badges\n * - Body avec spacing généreux et bien défini\n * - Footer optionnel pour métadonnées\n * - Zone d'actions avec alignement configurable\n * - Support de différentes densités et variantes de couleur\n * - Dividers automatiques entre les sections\n *\n * Les boutons placés dans le slot card-actions deviennent automatiquement\n * pleine largeur sur mobile (< 640px) grâce à une directive automatique.\n *\n * @example\n * <psh-card\n * title=\"Mon titre\"\n * description=\"Ma description\"\n * variant=\"elevated\"\n * >\n * <p>Contenu principal</p>\n * <div card-actions>\n * <psh-button variant=\"primary\">Action</psh-button>\n * </div>\n * </psh-card>\n */\n@Component({\n selector: 'psh-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block;',\n },\n})\nexport class PshCardComponent implements OnDestroy {\n private platformId = inject(PLATFORM_ID);\n private resizeObserver?: ResizeObserver;\n\n isMobile = signal<boolean>(false);\n // Model inputs - propriétés modifiables\n /** Variante visuelle de la carte (default, elevated, outlined) */\n variant = model<CardVariant>('default');\n\n /** Effet de survol activé (animation translateY) */\n hoverable = model(false);\n\n /** Carte cliquable (ajoute cursor pointer et gestion du focus) */\n interactive = model(false);\n\n // Regular inputs - propriétés en lecture seule\n /** Titre principal de la carte */\n title = input<string>('');\n\n /** Description/sous-titre optionnel */\n description = input<string>('');\n\n /** Variante de couleur pour cartes spéciales (info, success, warning, danger) */\n colorVariant = input<CardColorVariant>('default');\n\n /** Niveau de densité du spacing (compact, normal, spacious) */\n density = input<CardDensity>('normal');\n\n /** Afficher le divider entre header et body */\n showHeaderDivider = input<boolean>(true);\n\n /** Afficher le divider entre body et footer */\n showFooterDivider = input<boolean>(true);\n\n /** Afficher le divider entre footer et actions */\n showActionsDivider = input<boolean>(true);\n\n /** Alignement des actions dans la zone card-actions */\n actionsAlignment = input<CardActionsAlignment>('right');\n\n /** Activer/désactiver le padding du body */\n bodyPadding = input<boolean>(true);\n\n /** Classes CSS additionnelles */\n cssClass = input<string>('');\n\n /** Styles inline personnalisés */\n customStyle = input<Record<string, string>>({});\n\n /** État de chargement - affiche un skeleton */\n loading = input<boolean>(false);\n\n /** État désactivé - réduit l'opacité */\n disabled = input<boolean>(false);\n\n // Outputs\n /** Émis lors du clic sur la carte (si interactive) */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n // Computed values\n /** Classes CSS calculées selon les propriétés */\n computedClasses = computed(() => {\n const classes = ['card'];\n classes.push(`variant-${this.variant()}`);\n classes.push(`color-${this.colorVariant()}`);\n classes.push(`density-${this.density()}`);\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Styles calculés */\n computedStyles = computed(() => {\n return { ...this.customStyle() };\n });\n\n /** Indique si le header doit être affiché */\n hasHeader = computed(() => {\n return !!(this.title() || this.description());\n });\n\n /** Classe d'alignement pour la zone d'actions */\n actionsAlignmentClass = computed(() => {\n return `actions-align-${this.actionsAlignment()}`;\n });\n\n actionsClasses = computed(() => {\n const classes = [this.actionsAlignmentClass()];\n if (this.isMobile()) {\n classes.push('mobile-full-width-buttons');\n }\n return classes.join(' ');\n });\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.checkMobileViewport();\n\n if (typeof window !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkMobileViewport();\n });\n this.resizeObserver.observe(document.documentElement);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n private checkMobileViewport(): void {\n if (typeof window !== 'undefined') {\n this.isMobile.set(window.innerWidth <= 640);\n }\n }\n\n /**\n * Gère le clic sur la carte\n * Émet l'événement clicked seulement si la carte est interactive\n * et non désactivée\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Gère la navigation au clavier (Enter et Space)\n * Permet d'activer la carte au clavier pour l'accessibilité\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}\n","<div\n [class]=\"computedClasses()\"\n [style]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n role=\"article\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n>\n <!-- Header avec titre et description intégrés -->\n @if (hasHeader()) {\n <div class=\"card-header\" [class.has-divider]=\"showHeaderDivider()\">\n <!-- Slot pour icône/avatar avant le titre -->\n <ng-content select=\"[card-header-icon]\"></ng-content>\n\n <!-- Zone de titre et description -->\n @if (title() || description()) {\n <div class=\"card-header-content\">\n @if (title()) {\n <h3 class=\"card-title\">{{ title() }}</h3>\n }\n @if (description()) {\n <p class=\"card-description\">{{ description() }}</p>\n }\n </div>\n }\n\n <!-- Slot pour contenu personnalisé du header -->\n <ng-content select=\"[card-header-content]\"></ng-content>\n\n <!-- Slot pour badge/tag ou actions secondaires -->\n <ng-content select=\"[card-header-extra]\"></ng-content>\n </div>\n }\n\n <!-- Body avec contenu principal -->\n <div class=\"card-body\" [class.no-padding]=\"!bodyPadding()\">\n <!-- État de chargement -->\n @if (loading()) {\n <div class=\"card-loading\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n } @else {\n <!-- Contenu principal (slot par défaut) -->\n <ng-content></ng-content>\n }\n </div>\n\n <!-- Footer optionnel pour métadonnées -->\n <div class=\"card-footer\" [class.has-divider]=\"showFooterDivider()\">\n <ng-content select=\"[card-footer]\"></ng-content>\n </div>\n\n <!-- Actions -->\n <div class=\"card-actions\" [class]=\"actionsClasses()\" [class.has-divider]=\"showActionsDivider()\">\n <ng-content select=\"[card-actions]\"></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, InjectionToken, ElementRef, AfterContentChecked, signal } from '@angular/core';\nimport { TagVariant, TagSize, TagConfig } from './tag.types';\n\nexport const TAG_CONFIG = new InjectionToken<Partial<TagConfig>>('TAG_CONFIG', {\n factory: () => ({\n variant: 'primary',\n size: 'medium',\n closable: false,\n disabled: false,\n interactive: false,\n closeLabel: 'Supprimer le tag'\n })\n});\n\n@Component({\n selector: 'psh-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshTagComponent implements AfterContentChecked {\n private readonly config = inject(TAG_CONFIG);\n private readonly elementRef = inject(ElementRef);\n private readonly projectedText = signal('');\n\n readonly variant = input<TagVariant>(this.config.variant ?? 'primary');\n readonly size = input<TagSize>(this.config.size ?? 'medium');\n readonly closable = input(this.config.closable ?? false);\n readonly disabled = input(this.config.disabled ?? false);\n readonly interactive = input(this.config.interactive ?? false);\n readonly icon = input<string>();\n readonly closeLabel = input(this.config.closeLabel ?? 'Supprimer le tag');\n readonly content = input('Tag');\n readonly ariaLabel = input<string>();\n\n readonly clicked = output<MouseEvent>();\n readonly closed = output<void>();\n\n readonly computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const contentText = this.content();\n if (contentText && contentText !== 'Tag') return contentText;\n\n const projected = this.projectedText();\n if (projected) return projected;\n\n return 'Tag';\n });\n\n ngAfterContentChecked(): void {\n const contentElement = this.elementRef.nativeElement.querySelector('.tag-content');\n if (contentElement) {\n const text = (contentElement.textContent || '').trim();\n if (text !== this.projectedText()) {\n this.projectedText.set(text);\n }\n }\n }\n\n readonly computedRole = computed(() =>\n this.interactive() ? 'button' : 'status'\n );\n\n readonly computedTabIndex = computed(() =>\n this.interactive() && !this.disabled() ? 0 : -1\n );\n\n readonly state = computed(() => this.disabled() ? 'disabled' : 'default');\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled() && this.interactive()) {\n this.clicked.emit(event);\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (this.disabled() || !this.interactive()) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event as unknown as MouseEvent);\n }\n }\n\n handleClose(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled()) {\n this.closed.emit();\n }\n }\n}","<div\n class=\"tag\"\n [class.primary]=\"variant() === 'primary'\"\n [class.secondary]=\"variant() === 'secondary'\"\n [class.success]=\"variant() === 'success'\"\n [class.warning]=\"variant() === 'warning'\"\n [class.danger]=\"variant() === 'danger'\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.disabled]=\"disabled()\"\n [attr.role]=\"computedRole()\"\n [attr.tabindex]=\"computedTabIndex()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.data-state]=\"state()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n>\n @if (icon()) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"tag-content\">\n <ng-content>{{ content() }}</ng-content>\n </span>\n @if (closable()) {\n <button\n type=\"button\"\n class=\"tag-close\"\n (click)=\"handleClose($event)\"\n [attr.aria-label]=\"closeLabel()\"\n [disabled]=\"disabled()\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PshTagComponent } from '../tag/tag.component';\nimport { StatTagVariant, StatCardLayout, StatCardVariant } from './stat-card.types';\n\nconst ICON_GRADIENT_DEFAULTS: Record<StatTagVariant, string> = {\n success: 'linear-gradient(135deg, #34D399, #059669)',\n danger: 'linear-gradient(135deg, #F87171, #DC2626)',\n warning: 'linear-gradient(135deg, #FBBF24, #D97706)',\n primary: 'linear-gradient(135deg, #60A5FA, #2563EB)'\n};\n@Component({\n selector: 'psh-stat-card',\n imports: [CommonModule, PshTagComponent],\n templateUrl: './stat-card.component.html',\n styleUrls: ['./stat-card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PshStatCardComponent {\n\n // Inputs principaux\n /** Valeur principale de la statistique (nombre ou texte formaté) */\n value = input<string | number>();\n\n /** Description de la statistique */\n description = input<string>();\n\n /** Nom de l'icône Phosphor (sans le préfixe 'ph-') */\n icon = input<string>();\n\n // Inputs optionnels\n /** Variante du tag d'évolution (détermine la couleur) */\n tagVariant = input<StatTagVariant>();\n\n /** Label du tag d'évolution (ex: '+12.6%', '-8.1%') */\n tagLabel = input<string>();\n\n /** Couleur de fond personnalisée pour l'icône (CSS gradient ou couleur) */\n iconBackground = input<string>();\n\n /** Variante visuelle de la carte de base */\n variant = input<StatCardVariant>('elevated');\n\n /** Carte cliquable avec feedback visuel */\n interactive = input(false);\n\n /** Effet de survol */\n hoverable = input(false);\n\n /** État de chargement */\n loading = input(false);\n\n /** État désactivé */\n disabled = input(false);\n\n /** Classes CSS additionnelles */\n cssClass = input<string>('');\n\n /** Styles inline personnalisés */\n customStyle = input<Record<string, string>>({});\n\n /** Label ARIA pour l'accessibilité */\n ariaLabel = input<string>();\n\n /** Disposition de la carte: 'horizontal' (icône à gauche) ou 'vertical' (icône en haut) */\n layout = input<StatCardLayout>('horizontal');\n\n /** Active la direction row pour le card-body (icône et contenu côte à côte en flex-row) */\n rowDirection = input(false);\n\n // Outputs\n /** Émis lors du clic sur la carte */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n // Computed values\n private computedValue = computed(() => this.value() ?? '');\n\n private computedDescription = computed(() => this.description() ?? '');\n\n private computedIcon = computed(() => this.icon() ?? '');\n\n private computedTagVariant = computed(() => this.tagVariant());\n\n private computedTagLabel = computed(() => this.tagLabel());\n\n private computedIconBackground = computed(() => {\n const customBg = this.iconBackground();\n if (customBg) return customBg;\n\n const variant = this.tagVariant();\n return variant ? ICON_GRADIENT_DEFAULTS[variant] : null;\n });\n\n /** Style de l'icône avec couleur de fond personnalisée */\n iconStyle = computed(() => {\n const background = this.computedIconBackground();\n return background ? { background } : null;\n });\n\n /** Vérifie si un tag doit être affiché */\n hasTag = computed(() =>\n !!(this.computedTagVariant() && this.computedTagLabel())\n );\n\n /** Vérifie si une icône doit être affichée */\n hasIcon = computed(() => !!this.computedIcon());\n\n useRowDirection = computed(() => this.rowDirection());\n\n /** Label ARIA calculé */\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const value = this.computedValue();\n const desc = this.computedDescription();\n const tag = this.computedTagLabel();\n\n return tag\n ? `${desc}: ${value}, ${tag}`\n : `${desc}: ${value}`;\n });\n\n /** Classes CSS calculées */\n computedClasses = computed(() => {\n const classes = ['stat-card'];\n const layout = this.layout();\n\n classes.push(`variant-${this.variant()}`);\n\n if (layout === 'vertical') {\n classes.push('stat-card--vertical');\n } else {\n classes.push('stat-card--horizontal');\n }\n\n if (this.useRowDirection()) {\n classes.push('stat-card--row');\n }\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Styles calculés */\n computedStyles = computed(() => {\n return { ...this.customStyle() };\n });\n\n // Exposer les valeurs calculées pour le template\n protected get displayValue() { return this.computedValue(); }\n protected get displayDescription() { return this.computedDescription(); }\n protected get displayIcon() { return this.computedIcon(); }\n protected get displayTagVariant() { return this.computedTagVariant(); }\n protected get displayTagLabel() { return this.computedTagLabel(); }\n\n /**\n * Gère le clic sur la carte\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Gère la navigation au clavier\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}","<div\n [class]=\"computedClasses()\"\n [ngStyle]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.role]=\"interactive() ? 'button' : 'article'\"\n>\n @if (loading()) {\n <div class=\"stat-loading\">\n <div class=\"skeleton-circle\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n </div>\n } @else {\n @if (useRowDirection()) {\n <div class=\"stat-card-body\">\n @if (hasIcon()) {\n <div class=\"stat-icon\" [style]=\"iconStyle()\">\n <i class=\"ph ph-{{ displayIcon }}\" aria-hidden=\"true\"></i>\n </div>\n }\n\n <div class=\"stat-content\">\n <h3 class=\"stat-value\">{{ displayValue }}</h3>\n <p class=\"stat-description\">{{ displayDescription }}</p>\n\n @if (hasTag()) {\n <psh-tag [variant]=\"displayTagVariant!\">\n {{ displayTagLabel }}\n </psh-tag>\n }\n </div>\n </div>\n } @else {\n @if (hasIcon()) {\n <div class=\"stat-icon\" [style]=\"iconStyle()\">\n <i class=\"ph ph-{{ displayIcon }}\" aria-hidden=\"true\"></i>\n </div>\n }\n\n <div class=\"stat-content\">\n <h3 class=\"stat-value\">{{ displayValue }}</h3>\n <p class=\"stat-description\">{{ displayDescription }}</p>\n\n @if (hasTag()) {\n <psh-tag [variant]=\"displayTagVariant!\">\n {{ displayTagLabel }}\n </psh-tag>\n }\n </div>\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalCardVariant } from './horizontal-card.types';\n\n/**\n * Composant carte horizontale autonome\n *\n * Composant complètement indépendant pour créer une mise en page\n * horizontale avec contenu latéral.\n *\n * Ce composant est particulièrement adapté pour :\n * - Cartes produits avec image latérale\n * - Profils utilisateurs avec avatar\n * - Articles avec illustration\n *\n * Le layout bascule automatiquement en vertical sur mobile.\n *\n * @example\n * <psh-horizontal-card variant=\"elevated\" sideWidth=\"var(--size-48)\">\n * <div horizontal-side>\n * <img src=\"image.jpg\" alt=\"Product\">\n * </div>\n * <h3 horizontal-header>Titre du produit</h3>\n * <p>Description du produit</p>\n * <div horizontal-actions>\n * <psh-button>Voir</psh-button>\n * </div>\n * </psh-horizontal-card>\n */\n@Component({\n selector: 'psh-horizontal-card',\n imports: [CommonModule],\n templateUrl: './horizontal-card.component.html',\n styleUrls: ['./horizontal-card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PshHorizontalCardComponent {\n\n /** Variante de la carte de base */\n variant = input<HorizontalCardVariant>('elevated');\n\n /** Carte cliquable */\n interactive = input(false);\n\n /** Effet de survol */\n hoverable = input(false);\n\n /** État de chargement */\n loading = input(false);\n\n /** État désactivé */\n disabled = input(false);\n\n /** Classes CSS additionnelles */\n cssClass = input<string>('');\n\n /** Styles inline personnalisés */\n customStyle = input<Record<string, string>>({});\n\n /** Largeur du contenu latéral (utiliser les tokens de sizing comme var(--size-48)) */\n sideWidth = input<string>('var(--size-48)');\n\n /** Gap entre le contenu latéral et principal */\n gap = input<string>('var(--spacing-md)');\n\n /** Padding du contenu latéral */\n sidePadding = input<string>('0');\n\n /** Padding du contenu principal */\n contentPadding = input<string>('var(--spacing-md)');\n\n /** Hauteur du contenu latéral sur mobile (utiliser les tokens de sizing) */\n mobileHeight = input<string>('var(--size-48)');\n\n /** Émis lors du clic sur la carte */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n /** Classes CSS calculées selon les propriétés */\n computedClasses = computed(() => {\n const classes = ['horizontal-card'];\n classes.push(`variant-${this.variant()}`);\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Styles calculés */\n computedStyles = computed(() => {\n return {\n '--horizontal-side-width': this.sideWidth(),\n '--horizontal-gap': this.gap(),\n '--horizontal-side-padding': this.sidePadding(),\n '--horizontal-content-padding': this.contentPadding(),\n '--horizontal-mobile-height': this.mobileHeight(),\n ...this.customStyle()\n };\n });\n\n /**\n * Gère le clic sur la carte\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Gère la navigation au clavier\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}","<div\n [class]=\"computedClasses()\"\n [ngStyle]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n role=\"article\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n>\n <!-- Contenu latéral -->\n <div class=\"horizontal-side\">\n @if (loading()) {\n <div class=\"horizontal-skeleton\"></div>\n } @else {\n <ng-content select=\"[horizontal-side]\"></ng-content>\n }\n </div>\n\n <!-- Contenu principal -->\n <div class=\"horizontal-content\">\n @if (loading()) {\n <div class=\"horizontal-loading\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n } @else {\n <!-- Header optionnel -->\n <ng-content select=\"[horizontal-header]\"></ng-content>\n\n <!-- Contenu principal -->\n <ng-content></ng-content>\n\n <!-- Actions optionnelles -->\n <ng-content select=\"[horizontal-actions]\"></ng-content>\n }\n </div>\n</div>","import { Component, ChangeDetectionStrategy, computed, input, signal, PLATFORM_ID, inject, output, ViewEncapsulation, ElementRef, AfterContentInit } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { InfoCardData, InfoCardOptions, InfoCardVariant } from './info-card.types';\n\n/**\n * Info Card Component - Autonomous\n *\n * A fully independent card component that displays structured data as label/value pairs.\n * Provides a consistent way to present information with proper accessibility and responsive design.\n *\n * @example\n * ```typescript\n * const userData: InfoCardData[] = [\n * { label: 'Name', value: 'John Doe' },\n * { label: 'Email', value: 'john@example.com' }\n * ];\n * ```\n *\n * ```html\n * <psh-info-card\n * title=\"User Information\"\n * [data]=\"userData\"\n * icon=\"user\"\n * variant=\"elevated\"\n * ></psh-info-card>\n * ```\n */\n@Component({\n selector: 'psh-info-card',\n imports: [CommonModule],\n templateUrl: './info-card.component.html',\n styleUrl: './info-card.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block; height: 100%;'\n }\n})\nexport class PshInfoCardComponent implements AfterContentInit {\n\n hasHeaderActions = signal<boolean>(false);\n\n /** Title displayed in the card header */\n title = input<string>('');\n\n /** Array of label-value pairs to display */\n data = input<InfoCardData[]>([]);\n\n /** Display options for the card */\n options = input<InfoCardOptions>({\n showEmptyState: true,\n emptyStateMessage: 'Aucune information disponible',\n labelWidth: undefined,\n valueWidth: undefined\n });\n\n /** Base card variant style */\n variant = input<InfoCardVariant>('outlined');\n\n /** Icon to display in the header (Phosphor icon name without 'ph-' prefix) */\n icon = input<string>('circle-dashed');\n\n /** Custom ARIA label for accessibility */\n ariaLabel = input<string>();\n\n /** Custom CSS classes */\n cssClass = input<string>('');\n\n /** Custom inline styles */\n customStyle = input<Record<string, string>>({});\n\n /** Whether the card should be interactive/clickable */\n interactive = input<boolean>(false);\n\n /** Whether to show hover effects */\n hoverable = input<boolean>(false);\n\n /** Indicates if data is loading */\n loading = input<boolean>(false);\n\n /** Whether the card is disabled */\n disabled = input<boolean>(false);\n\n /** Emitted when card is clicked */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n /** Whether to auto-enable full width buttons on mobile (default: true) */\n autoFullWidthOnMobile = input<boolean>(true);\n\n /** Signal to track if viewport is mobile */\n isMobile = signal<boolean>(false);\n\n private platformId = inject(PLATFORM_ID);\n private resizeObserver?: ResizeObserver;\n\n /** Determines if the empty state should be shown */\n shouldShowEmptyState = computed(() => {\n const opts = this.options();\n const dataArray = this.data();\n return opts.showEmptyState && (!dataArray || dataArray.length === 0);\n });\n\n /** Returns the empty state message to display */\n getEmptyStateMessage = computed(() => {\n return this.options().emptyStateMessage || 'Aucune information disponible';\n });\n\n /** Full icon class name for Phosphor icons */\n titleIcon = computed(() => {\n const iconName = this.icon();\n return iconName ? `ph-${iconName}` : '';\n });\n\n /** Computed ARIA label for the component */\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n const titleText = this.title();\n return customLabel || (titleText ? `Information card: ${titleText}` : 'Information card');\n });\n\n /** Computed CSS classes */\n computedClasses = computed(() => {\n const classes = ['info-card'];\n classes.push(`variant-${this.variant()}`);\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Computed styles */\n computedStyles = computed(() => {\n return { ...this.customStyle() };\n });\n\n /** Gets CSS classes for card-actions based on mobile state */\n getActionsClasses = computed(() => {\n const classes: string[] = [];\n if (this.autoFullWidthOnMobile() && this.isMobile()) {\n classes.push('mobile-full-width-buttons');\n }\n return classes.join(' ');\n });\n\n private elementRef = inject(ElementRef);\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.checkMobileViewport();\n\n if (typeof window !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkMobileViewport();\n });\n this.resizeObserver.observe(document.documentElement);\n }\n }\n }\n\n ngAfterContentInit(): void {\n this.checkHeaderActionsContent();\n }\n\n private checkHeaderActionsContent(): void {\n if (isPlatformBrowser(this.platformId)) {\n const headerActionsEl = this.elementRef.nativeElement.querySelector('[card-header-actions]');\n this.hasHeaderActions.set(!!headerActionsEl);\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n private checkMobileViewport(): void {\n if (typeof window !== 'undefined') {\n this.isMobile.set(window.innerWidth <= 640);\n }\n }\n\n /**\n * Handles click events on the card\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Handles keyboard navigation\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}","<div\n [class]=\"computedClasses()\"\n [ngStyle]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n role=\"region\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n>\n @if (title() || hasHeaderActions()) {\n <div class=\"info-card-header\">\n @if (title()) {\n <h3 class=\"info-card-title\">\n @if (icon()) {\n <i\n class=\"ph {{ titleIcon() }}\"\n aria-hidden=\"true\"\n [attr.data-icon]=\"icon()\"\n ></i>\n }\n {{ title() }}\n </h3>\n }\n <div class=\"info-card-header-actions\">\n <ng-content select=\"[card-header-actions]\"></ng-content>\n </div>\n </div>\n }\n\n <div class=\"info-card-body\">\n @if (loading()) {\n <div class=\"info-card-loading\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n } @else {\n <div\n class=\"info-card-content\"\n role=\"list\"\n >\n @if (shouldShowEmptyState()) {\n <div\n class=\"info-card-empty-state\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-testid]=\"'info-card-empty-state'\"\n >\n {{ getEmptyStateMessage() }}\n </div>\n } @else {\n @for (item of data(); track $index) {\n <div\n class=\"info-card-row\"\n role=\"listitem\"\n [attr.data-index]=\"$index\"\n [class]=\"item.customClass || ''\"\n >\n <div\n class=\"info-card-label\"\n [style.width]=\"item.labelWidth || options().labelWidth\"\n [attr.data-label]=\"item.label\"\n >\n {{ item.label }}\n </div>\n <div\n class=\"info-card-value\"\n [style.width]=\"item.valueWidth || options().valueWidth\"\n [attr.data-value]=\"item.value\"\n [title]=\"item.value?.toString() || ''\"\n >\n {{ item.value ?? 'Non renseigné' }}\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n\n <div class=\"info-card-actions\" [class]=\"getActionsClasses()\">\n <ng-content select=\"[card-actions]\"></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n input,\n model,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { CheckboxSize, CheckboxConfig, CheckboxLabelPosition } from './checkbox.types';\n\nexport const CHECKBOX_CONFIG = new InjectionToken<Partial<CheckboxConfig>>('CHECKBOX_CONFIG', {\n factory: () => ({\n checked: false,\n disabled: false,\n required: false,\n indeterminate: false,\n size: 'medium',\n labelPosition: 'right',\n label: ''\n })\n});\n\nlet checkboxIdCounter = 0;\n\n@Component({\n selector: 'psh-checkbox',\n standalone: true,\n imports: [],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshCheckboxComponent,\n multi: true\n }],\n host: {\n '[class.checkbox-disabled]': 'disabled()',\n '[class.checkbox-error]': '!!error()',\n '[class.checkbox-success]': '!!success()',\n '[class.checkbox-small]': 'size() === \"small\"',\n '[class.checkbox-large]': 'size() === \"large\"',\n '[class.checkbox-checked]': 'checked() && !indeterminate()',\n '[class.checkbox-indeterminate]': 'indeterminate()',\n '[attr.data-state]': 'state()',\n '[attr.aria-checked]': 'ariaChecked()'\n }\n})\nexport class PshCheckboxComponent implements ControlValueAccessor, FormCheckboxControl {\n private readonly config = inject(CHECKBOX_CONFIG);\n private readonly checkboxInput = viewChild<ElementRef<HTMLInputElement>>('checkboxInput');\n\n protected readonly uniqueId = `psh-cb-${++checkboxIdCounter}`;\n\n private onChange = (_: boolean) => {};\n private onTouched = () => {};\n\n readonly checked = model(this.config.checked ?? false);\n readonly disabled = model(this.config.disabled ?? false);\n readonly indeterminate = model(this.config.indeterminate ?? false);\n readonly touched = model(false);\n\n required = input(this.config.required ?? false);\n label = input(this.config.label ?? '');\n error = input<string | null | undefined>(this.config.error);\n success = input<string | null | undefined>(this.config.success);\n ariaLabel = input<string | undefined>(this.config.ariaLabel);\n size = input<CheckboxSize>(this.config.size ?? 'medium');\n labelPosition = input<CheckboxLabelPosition>(this.config.labelPosition ?? 'right');\n\n ariaChecked = computed(() => this.indeterminate() ? 'mixed' : (this.checked() ? 'true' : 'false'));\n computedAriaLabel = computed(() => this.ariaLabel() || this.label() || undefined);\n \n ariaDescribedBy = computed(() => {\n const ids = [];\n if (this.error()) ids.push(`${this.uniqueId}-error`);\n if (this.success()) ids.push(`${this.uniqueId}-success`);\n return ids.length > 0 ? ids.join(' ') : undefined;\n });\n\n state = computed(() => {\n if (this.disabled()) return 'disabled';\n if (this.indeterminate()) return 'indeterminate';\n if (this.error()) return 'error';\n if (this.success()) return 'success';\n return this.checked() ? 'checked' : 'unchecked';\n });\n\n constructor() {\n effect(() => {\n if (!this.label() && !this.ariaLabel()) {\n console.warn('[psh-checkbox] Label manquant pour l\\'accessibilité.');\n }\n });\n }\n\n protected toggle(): void {\n if (!this.disabled()) {\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.indeterminate.set(false);\n this.onChange(newValue);\n this.onTouched();\n this.touched.set(true);\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n writeValue(value: unknown): void { this.checked.set(!!value); }\n registerOnChange(fn: (v: boolean) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled.set(isDisabled); }\n\n focus(): void { this.checkboxInput()?.nativeElement.focus(); }\n}","<div class=\"checkbox-container\">\n <label class=\"checkbox-label\" [class.label-left]=\"labelPosition() === 'left'\">\n <input\n #checkboxInput\n type=\"checkbox\"\n class=\"checkbox-input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n (change)=\"toggle()\"\n (keydown)=\"handleKeydown($event)\"\n />\n \n <span class=\"checkbox-control\">\n @if (checked() && !indeterminate()) {\n <i class=\"ph ph-check\" aria-hidden=\"true\"></i>\n }\n @if (indeterminate()) {\n <i class=\"ph ph-minus\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"checkbox-text\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content></ng-content>\n }\n </span>\n </label>\n\n @if (error()) {\n <div [id]=\"uniqueId + '-error'\" class=\"checkbox-message error\" role=\"alert\">\n {{ error() }}\n </div>\n }\n @if (success()) {\n <div [id]=\"uniqueId + '-success'\" class=\"checkbox-message success\" role=\"status\">\n {{ success() }}\n </div>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { CollapseVariant, CollapseSize } from './collapse.types';\n\n@Component({\n selector: 'psh-collapse',\n templateUrl: './collapse.component.html',\n styleUrls: ['./collapse.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshCollapseComponent {\n private static idCounter = 0;\n\n expanded = model(false);\n\n disabled = input(false);\n variant = input('default' as CollapseVariant, {\n transform: (value: CollapseVariant) => {\n if (!['default', 'outline'].includes(value)) {\n console.warn(`[psh-collapse] Invalid variant \"${value}\", falling back to \"default\"`);\n return 'default';\n }\n return value;\n }\n });\n size = input('medium' as CollapseSize, {\n transform: (value: CollapseSize) => {\n if (!['small', 'medium', 'large'].includes(value)) {\n console.warn(`[psh-collapse] Invalid size \"${value}\", falling back to \"medium\"`);\n return 'medium';\n }\n return value;\n }\n });\n icon = input('caret-down');\n id = input<string>();\n maxHeight = input<string>('1000px');\n disableAnimation = input(false);\n\n opened = output<void>();\n closed = output<void>();\n toggled = output<boolean>();\n\n private readonly uniqueId = `collapse-${++PshCollapseComponent.idCounter}`;\n\n protected readonly headerId = computed(() => {\n const customId = this.id();\n return customId ? `${customId}-header` : `${this.uniqueId}-header`;\n });\n\n protected readonly contentId = computed(() => {\n const customId = this.id();\n return customId ? `${customId}-content` : `${this.uniqueId}-content`;\n });\n\n readonly state = computed(() => {\n if (this.disabled()) return 'disabled';\n return this.expanded() ? 'expanded' : 'collapsed';\n });\n\n readonly animationClass = computed(() => {\n return this.disableAnimation() ? 'no-animation' : '';\n });\n\n toggle(): void {\n if (!this.disabled()) {\n this.expanded.update(value => {\n const newValue = !value;\n this.toggled.emit(newValue);\n return newValue;\n });\n }\n }\n\n open(): void {\n if (!this.disabled() && !this.expanded()) {\n this.expanded.set(true);\n this.opened.emit();\n }\n }\n\n close(): void {\n if (!this.disabled() && this.expanded()) {\n this.expanded.set(false);\n this.closed.emit();\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggle();\n break;\n case 'Escape':\n if (this.expanded()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n}","<div\n class=\"collapse\"\n [class.expanded]=\"expanded()\"\n [class.disabled]=\"disabled()\"\n [class.outline]=\"variant() === 'outline'\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.no-animation]=\"disableAnimation()\"\n [attr.data-state]=\"state()\"\n [style.--collapse-max-height]=\"maxHeight()\"\n>\n <button\n [id]=\"headerId()\"\n class=\"collapse-header\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId()\"\n [disabled]=\"disabled()\"\n type=\"button\"\n >\n <span class=\"header-content\">\n <ng-content select=\"[collapse-header]\">\n <span>Section pliable</span>\n </ng-content>\n </span>\n <i\n class=\"ph ph-{{ icon() }}\"\n [class.expanded]=\"expanded()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <div\n [id]=\"contentId()\"\n class=\"collapse-content\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.aria-hidden]=\"!expanded()\"\n >\n <div class=\"content-wrapper\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n OnDestroy\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownItem, DropdownPlacement, DropdownSize } from './dropdown.types';\n\n@Component({\n selector: 'psh-dropdown',\n imports: [CommonModule],\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PshDropdownComponent<T = string> implements OnDestroy {\n private elementRef = inject(ElementRef);\n private clickOutsideHandler: ((event: MouseEvent) => void) | null = null;\n\n // Regular inputs\n variant = input<'primary' | 'secondary' | 'outline' | 'text'>('primary');\n size = input<DropdownSize>('medium');\n placement = input<DropdownPlacement>('bottom-start');\n items = input<DropdownItem<T>[]>([]);\n label = input('Dropdown Menu');\n icon = input<string>();\n ariaLabel = input<string>();\n\n // Model inputs\n disabled = model(false);\n\n // State\n private isOpenSignal = signal(false);\n private selectedItemSignal = signal<DropdownItem<T> | null>(null);\n private focusedItemIndex = signal(-1);\n\n // Outputs\n selected = output<DropdownItem<T>>();\n opened = output<void>();\n closed = output<void>();\n\n // Computed values\n isOpen = computed(() => this.isOpenSignal());\n selectedItem = computed(() => this.selectedItemSignal());\n\n computedAriaLabel = computed(() => \n this.ariaLabel() || 'Toggle dropdown menu'\n );\n\n state = computed(() => this.getState());\n\n private getState(): string {\n if (this.disabled()) return 'disabled';\n if (this.isOpen()) return 'open';\n return 'closed';\n }\n\n constructor() {\n this.setupClickOutsideListener();\n }\n\n private setupClickOutsideListener(): void {\n this.clickOutsideHandler = (event: MouseEvent) => {\n if (this.isOpen()) {\n const target = event.target as HTMLElement;\n if (!this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n };\n document.addEventListener('click', this.clickOutsideHandler);\n }\n\n toggleDropdown(): void {\n if (!this.disabled()) {\n event?.stopPropagation();\n this.isOpenSignal.update(v => !v);\n if (this.isOpen()) {\n this.focusedItemIndex.set(0);\n this.opened.emit();\n } else {\n this.focusedItemIndex.set(-1);\n this.closed.emit();\n }\n }\n }\n\n selectItem(item: DropdownItem<T>): void {\n if (!item.disabled) {\n this.selectedItemSignal.set(item);\n this.selected.emit(item);\n this.close();\n }\n }\n\n close(): void {\n if (this.isOpen()) {\n this.isOpenSignal.set(false);\n this.focusedItemIndex.set(-1);\n this.closed.emit();\n }\n }\n\n handleTriggerKeyDown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleDropdown();\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggleDropdown();\n } else {\n this.focusNextItem();\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggleDropdown();\n } else {\n this.focusPreviousItem();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n\n handleItemKeyDown(event: KeyboardEvent, item: DropdownItem<T>, index: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectItem(item);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem();\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusFirstItem();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusLastItem();\n break;\n\n case 'Escape':\n event.preventDefault();\n this.close();\n break;\n\n case 'Tab':\n this.close();\n break;\n }\n }\n\n private focusNextItem(): void {\n const items = this.items();\n if (items.length === 0) return;\n\n const currentIndex = this.focusedItemIndex();\n let nextIndex = currentIndex + 1;\n\n while (nextIndex < items.length && items[nextIndex]?.disabled) {\n nextIndex++;\n }\n\n if (nextIndex >= items.length) {\n nextIndex = 0;\n while (nextIndex < items.length && items[nextIndex]?.disabled) {\n nextIndex++;\n }\n }\n\n if (nextIndex < items.length) {\n this.focusedItemIndex.set(nextIndex);\n this.focusItemAtIndex(nextIndex);\n }\n }\n\n private focusPreviousItem(): void {\n const items = this.items();\n if (items.length === 0) return;\n\n const currentIndex = this.focusedItemIndex();\n let previousIndex = currentIndex - 1;\n\n while (previousIndex >= 0 && items[previousIndex]?.disabled) {\n previousIndex--;\n }\n\n if (previousIndex < 0) {\n previousIndex = items.length - 1;\n while (previousIndex >= 0 && items[previousIndex]?.disabled) {\n previousIndex--;\n }\n }\n\n if (previousIndex >= 0) {\n this.focusedItemIndex.set(previousIndex);\n this.focusItemAtIndex(previousIndex);\n }\n }\n\n private focusFirstItem(): void {\n const items = this.items();\n let index = 0;\n while (index < items.length && items[index]?.disabled) {\n index++;\n }\n if (index < items.length) {\n this.focusedItemIndex.set(index);\n this.focusItemAtIndex(index);\n }\n }\n\n private focusLastItem(): void {\n const items = this.items();\n let index = items.length - 1;\n while (index >= 0 && items[index]?.disabled) {\n index--;\n }\n if (index >= 0) {\n this.focusedItemIndex.set(index);\n this.focusItemAtIndex(index);\n }\n }\n\n private focusItemAtIndex(index: number): void {\n setTimeout(() => {\n const item = this.elementRef.nativeElement.querySelector(\n `[data-dropdown-item-index=\"${index}\"]`\n ) as HTMLElement;\n item?.focus();\n });\n }\n\n ngOnDestroy(): void {\n if (this.clickOutsideHandler) {\n document.removeEventListener('click', this.clickOutsideHandler);\n }\n }\n}","<div\n class=\"dropdown-container\"\n [class]=\"size()\"\n [class.open]=\"isOpen()\"\n [class.disabled]=\"disabled()\"\n [attr.data-state]=\"state()\"\n>\n <button\n class=\"dropdown-trigger\"\n [class]=\"variant()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"handleTriggerKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-haspopup]=\"'menu'\"\n type=\"button\"\n [disabled]=\"disabled()\"\n >\n <span class=\"trigger-content\">\n @if (icon()) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n <ng-content select=\"[dropdown-trigger]\">\n @if (label()) {\n {{ label() }}\n }\n </ng-content>\n <i \n class=\"ph ph-caret-down trigger-arrow\"\n [class.open]=\"isOpen()\"\n aria-hidden=\"true\"\n ></i>\n </span>\n </button>\n\n @if (isOpen()) {\n <div \n class=\"dropdown-menu\"\n [class]=\"placement()\"\n role=\"menu\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-content select=\"[dropdown-menu]\">\n @for (item of items(); track item.value; let i = $index) {\n <button\n type=\"button\"\n class=\"dropdown-item\"\n [class.disabled]=\"item.disabled\"\n [class.active]=\"selectedItem() === item\"\n [attr.data-dropdown-item-index]=\"i\"\n (click)=\"selectItem(item)\"\n (keydown)=\"handleItemKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"item-label\">{{ item.content }}</span>\n </button>\n }\n </ng-content>\n </div>\n }\n</div>","export type InputType = 'text' | 'password' | 'email' | 'tel' | 'url' | 'search' | 'date' | 'number';\nexport type InputVariant = 'outlined' | 'filled';\nexport type InputSize = 'small' | 'medium' | 'large';\n\nexport interface AutocompleteConfig {\n minLength: number;\n debounceTime: number;\n}\n\nexport interface InputConfig {\n type: InputType;\n variant: InputVariant;\n size: InputSize;\n disabled: boolean;\n required: boolean;\n readonly: boolean;\n fullWidth: boolean;\n showLabel: boolean;\n label: string;\n placeholder: string;\n error: string | null | undefined;\n success: string | null | undefined;\n hint: string | null | undefined;\n ariaLabel: string | null;\n}\n\nexport interface SuggestionResult {\n suggestions: string[];\n error?: string;\n}\n\nexport const INPUT_LABELS = {\n showPassword: 'Afficher le mot de passe',\n hidePassword: 'Masquer le mot de passe'\n} as const;","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { InputType, InputVariant, InputSize, AutocompleteConfig, INPUT_LABELS } from './input.types';\n\n@Component({\n selector: 'psh-input',\n imports: [CommonModule],\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshInputComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.full-width]': 'fullWidth()',\n '[class.small]': 'size() === \"small\"',\n '[class.large]': 'size() === \"large\"',\n '[class.error]': '!!error()',\n '[class.success]': '!!success()',\n '[class.disabled]': 'disabled()',\n '[class.readonly]': 'readonly()',\n '[class.loading]': 'loading()',\n '[class.focused]': 'focused()',\n '[class.has-start-icon]': '!!iconStart()',\n '[class.has-end-icon]': '!!iconEnd() || type() === \"password\"',\n '[class.outlined]': 'variant() === \"outlined\"',\n '[class.filled]': 'variant() === \"filled\"',\n }\n})\nexport class PshInputComponent implements ControlValueAccessor, FormValueControl<string> {\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n private static nextId = 0;\n readonly inputId = `psh-input-${PshInputComponent.nextId++}`;\n\n readonly value = model<string>('');\n readonly disabled = model<boolean>(false);\n readonly readonly = model(false);\n readonly loading = model(false);\n readonly touched = model(false);\n\n variant = input<InputVariant>('outlined');\n size = input<InputSize>('medium');\n fullWidth = input(false);\n required = input(false);\n showLabel = input(true);\n type = input<InputType>('text');\n placeholder = input('');\n label = input('');\n ariaLabel = input<string | null>(null);\n iconStart = input<string>();\n iconEnd = input<string>();\n error = input<string | null | undefined>(null);\n success = input<string | null | undefined>(null);\n hint = input<string | null | undefined>(null);\n \n suggestions = input<string[] | ((query: string) => Promise<string[]>)>([]);\n autocompleteConfig = input<AutocompleteConfig>({\n minLength: 1,\n debounceTime: 300\n });\n\n private readonly suggestionsVisible = signal(false);\n private readonly focusedSignal = signal(false);\n private readonly filteredSuggestionsSignal = signal<string[]>([]);\n readonly focusedSuggestionIndex = signal(-1);\n private readonly passwordVisibleSignal = signal(false);\n \n private blurTimeoutId: number | null = null;\n private debounceTimeoutId: number | null = null;\n\n inputFocus = output<void>();\n inputBlur = output<void>();\n suggestionSelect = output<string>();\n\n showSuggestions = computed(() => this.suggestionsVisible() && this.filteredSuggestions().length > 0);\n filteredSuggestions = computed(() => this.filteredSuggestionsSignal());\n focused = computed(() => this.focusedSignal());\n passwordVisible = computed(() => this.passwordVisibleSignal());\n \n effectiveType = computed(() => {\n if (this.type() === 'password') {\n return this.passwordVisible() ? 'text' : 'password';\n }\n return this.type();\n });\n\n computedAriaLabel = computed(() => this.ariaLabel() || this.label() || this.placeholder());\n passwordToggleLabel = computed(() => this.passwordVisible() ? INPUT_LABELS.hidePassword : INPUT_LABELS.showPassword);\n\n state = computed(() => this.getState());\n\n private getState(): string {\n if (this.disabled()) return 'disabled';\n if (this.readonly()) return 'readonly';\n if (this.loading()) return 'loading';\n if (this.error()) return 'error';\n if (this.success()) return 'success';\n if (this.focused()) return 'focused';\n return 'default';\n }\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n if (this.blurTimeoutId) window.clearTimeout(this.blurTimeoutId);\n if (this.debounceTimeoutId) window.clearTimeout(this.debounceTimeoutId);\n });\n }\n\n private onChange = (_: string) => {};\n private onTouched = () => {};\n\n writeValue(value: unknown): void {\n const safeValue = typeof value === 'string' ? value : '';\n this.value.set(safeValue);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (v: string) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n handleInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n this.onChange(val);\n\n if (this.suggestions()) {\n this.debouncedUpdateSuggestions(val);\n }\n }\n\n handleFocus(): void {\n this.focusedSignal.set(true);\n this.inputFocus.emit();\n\n const val = this.value();\n if (this.suggestions() && val.length >= this.autocompleteConfig().minLength) {\n this.updateSuggestions(val);\n }\n }\n\n handleBlur(): void {\n this.focusedSignal.set(false);\n this.inputBlur.emit();\n this.onTouched();\n this.touched.set(true);\n\n if (this.blurTimeoutId) window.clearTimeout(this.blurTimeoutId);\n this.blurTimeoutId = window.setTimeout(() => {\n this.suggestionsVisible.set(false);\n this.focusedSuggestionIndex.set(-1);\n this.blurTimeoutId = null;\n }, 200);\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (!this.showSuggestions()) return;\n\n const suggestions = this.filteredSuggestions();\n const currentIndex = this.focusedSuggestionIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusedSuggestionIndex.update(i => (i < suggestions.length - 1 ? i + 1 : 0));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusedSuggestionIndex.update(i => (i > 0 ? i - 1 : suggestions.length - 1));\n break;\n case 'Enter':\n if (currentIndex >= 0 && currentIndex < suggestions.length) {\n event.preventDefault();\n const selected = suggestions[currentIndex];\n if (selected !== undefined) {\n this.handleSuggestionClick(selected);\n }\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.suggestionsVisible.set(false);\n this.focusedSuggestionIndex.set(-1);\n break;\n }\n }\n\n handleSuggestionClick(suggestion: string): void {\n this.value.set(suggestion);\n this.onChange(suggestion);\n this.suggestionSelect.emit(suggestion);\n this.suggestionsVisible.set(false);\n this.focusedSuggestionIndex.set(-1);\n }\n\n togglePasswordVisibility(): void {\n this.passwordVisibleSignal.update(v => !v);\n }\n\n protected hasLabelContent(): boolean {\n return !!this.elementRef.nativeElement.querySelector('[input-label]');\n }\n\n focus(): void {\n const inputEl = this.elementRef.nativeElement.querySelector('input');\n inputEl?.focus();\n }\n\n focusSelect(): void {\n this.focus();\n }\n\n private debouncedUpdateSuggestions(value: string): void {\n if (this.debounceTimeoutId) window.clearTimeout(this.debounceTimeoutId);\n this.debounceTimeoutId = window.setTimeout(() => {\n this.updateSuggestions(value);\n this.debounceTimeoutId = null;\n }, this.autocompleteConfig().debounceTime);\n }\n\n private async updateSuggestions(value: string): Promise<void> {\n const provider = this.suggestions();\n\n try {\n let results: string[] = [];\n if (typeof provider === 'function') {\n results = await provider(value);\n } else if (Array.isArray(provider)) {\n results = provider.filter(s => s.toLowerCase().includes(value.toLowerCase()));\n }\n \n this.filteredSuggestionsSignal.set(results);\n this.suggestionsVisible.set(results.length > 0);\n } catch (error) {\n this.filteredSuggestionsSignal.set([]);\n }\n }\n}","<div class=\"input-container\">\n @if (showLabel()) {\n <label \n class=\"input-label\" \n [for]=\"inputId\" \n (click)=\"focusSelect()\" \n [class.required]=\"required()\"\n >\n <ng-content select=\"[input-label]\"></ng-content>\n @if (!hasLabelContent()) {\n {{ label() }}\n }\n </label>\n }\n\n <div class=\"input-wrapper\">\n @if (iconStart()) {\n <i class=\"ph ph-{{ iconStart() }}\" aria-hidden=\"true\"></i>\n }\n\n <input\n [id]=\"inputId\"\n [type]=\"effectiveType()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-invalid]=\"!!error()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"error() ? 'error-message' : success() ? 'success-message' : hint() ? 'hint-message' : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [attr.data-state]=\"state()\"\n />\n\n @if (iconEnd()) {\n <i class=\"ph ph-{{ iconEnd() }}\" aria-hidden=\"true\"></i>\n }\n\n @if (type() === 'password') {\n <button\n type=\"button\"\n class=\"password-toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"passwordToggleLabel()\"\n [disabled]=\"disabled() || readonly()\"\n >\n <i \n [class]=\"'ph ph-' + (passwordVisible() ? 'eye-slash' : 'eye')\"\n aria-hidden=\"true\"\n ></i>\n </button>\n }\n\n @if (loading()) {\n <div class=\"input-loader\" aria-hidden=\"true\">\n <div class=\"loader\"></div>\n </div>\n }\n\n @if (showSuggestions()) {\n <div class=\"suggestions-list\" role=\"listbox\">\n @for (suggestion of filteredSuggestions(); track suggestion; let i = $index) {\n <div \n class=\"suggestion-item\"\n [class.focused]=\"i === focusedSuggestionIndex()\"\n role=\"option\"\n [attr.aria-selected]=\"i === focusedSuggestionIndex()\"\n (click)=\"handleSuggestionClick(suggestion)\"\n (mouseenter)=\"focusedSuggestionIndex.set(i)\"\n >\n {{ suggestion }}\n </div>\n }\n </div>\n }\n </div>\n\n @if (error()) {\n <div id=\"error-message\" class=\"input-error\" role=\"alert\">\n <ng-content select=\"[input-error]\">\n {{ error() }}\n </ng-content>\n </div>\n }\n\n @if (success()) {\n <div id=\"success-message\" class=\"input-success\" role=\"status\">\n <ng-content select=\"[input-success]\">\n {{ success() }}\n </ng-content>\n </div>\n }\n\n @if (hint()) {\n <div id=\"hint-message\" class=\"input-hint\">\n <ng-content select=\"[input-hint]\">\n {{ hint() }}\n </ng-content>\n </div>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n output,\n effect,\n InjectionToken,\n ElementRef,\n AfterViewInit,\n OnDestroy\n} from '@angular/core';\nimport { TooltipPosition, TooltipConfig, TooltipVariant } from './tooltip.types';\n\nexport const TOOLTIP_CONFIG = new InjectionToken<Partial<TooltipConfig>>('TOOLTIP_CONFIG', {\n factory: () => ({\n variant: 'dark',\n position: 'top',\n showDelay: 200,\n hideDelay: 100,\n maxWidth: 200,\n autoFlip: true,\n })\n});\n\n@Component({\n selector: 'psh-tooltip',\n imports: [],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'show()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hideImmediate()',\n '[style.display]': '\"inline-block\"',\n '[style.position]': '\"relative\"',\n }\n})\nexport class PshTooltipComponent implements AfterViewInit, OnDestroy {\n private config = inject(TOOLTIP_CONFIG) as Required<TooltipConfig>;\n private elementRef = inject(ElementRef);\n\n variant = input<TooltipVariant>(this.config.variant ?? 'dark');\n position = input<TooltipPosition>(this.config.position ?? 'top');\n showDelay = input<number>(this.config.showDelay ?? 200);\n hideDelay = input<number>(this.config.hideDelay ?? 100);\n maxWidth = input<number>(this.config.maxWidth ?? 200);\n autoFlip = input<boolean>(this.config.autoFlip ?? true);\n\n content = input.required<string>();\n disabled = input<boolean>(false);\n id = input<string>(this.generateUniqueId());\n\n shown = output<void>();\n hidden = output<void>();\n\n isVisible = signal(false);\n computedPosition = signal<TooltipPosition>('top');\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n tooltipId = computed(() => `${this.id()}-tooltip`);\n triggerId = computed(() => `${this.id()}-trigger`);\n\n constructor() {\n effect(() => {\n if (this.isVisible()) {\n this.shown.emit();\n } else {\n this.hidden.emit();\n }\n });\n\n effect(() => {\n const pos = this.position();\n if (!this.autoFlip()) {\n this.computedPosition.set(pos);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (this.autoFlip()) {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible()) {\n this.updatePosition();\n }\n });\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n if (this.hideTimeout) clearTimeout(this.hideTimeout);\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n\n show(): void {\n if (this.disabled()) return;\n\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (!this.isVisible() && !this.showTimeout) {\n this.showTimeout = setTimeout(() => {\n if (this.autoFlip()) {\n this.updatePosition();\n } else {\n this.computedPosition.set(this.position());\n }\n this.isVisible.set(true);\n this.showTimeout = null;\n }, this.showDelay());\n }\n }\n\n hide(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n\n if (this.isVisible() && !this.hideTimeout) {\n this.hideTimeout = setTimeout(() => {\n this.isVisible.set(false);\n this.hideTimeout = null;\n }, this.hideDelay());\n }\n }\n\n hideImmediate(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n this.isVisible.set(false);\n }\n\n private updatePosition(): void {\n const preferredPosition = this.position();\n const element = this.elementRef.nativeElement as HTMLElement;\n const rect = element.getBoundingClientRect();\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const tooltipEstimatedHeight = 40;\n const tooltipEstimatedWidth = Math.min(this.maxWidth(), 200);\n const offset = 12;\n\n const spaceTop = rect.top;\n const spaceBottom = viewportHeight - rect.bottom;\n const spaceLeft = rect.left;\n const spaceRight = viewportWidth - rect.right;\n\n let finalPosition = preferredPosition;\n\n switch (preferredPosition) {\n case 'top':\n if (spaceTop < tooltipEstimatedHeight + offset && spaceBottom > spaceTop) {\n finalPosition = 'bottom';\n }\n break;\n case 'bottom':\n if (spaceBottom < tooltipEstimatedHeight + offset && spaceTop > spaceBottom) {\n finalPosition = 'top';\n }\n break;\n case 'left':\n if (spaceLeft < tooltipEstimatedWidth + offset && spaceRight > spaceLeft) {\n finalPosition = 'right';\n }\n break;\n case 'right':\n if (spaceRight < tooltipEstimatedWidth + offset && spaceLeft > spaceRight) {\n finalPosition = 'left';\n }\n break;\n }\n\n this.computedPosition.set(finalPosition);\n }\n\n private generateUniqueId(): string {\n return `psh-tooltip-${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n","<div\n class=\"tooltip-wrapper\"\n [attr.id]=\"triggerId()\"\n [attr.aria-describedby]=\"isVisible() ? tooltipId() : null\"\n>\n <ng-content></ng-content>\n\n @if (isVisible()) {\n <div\n [attr.id]=\"tooltipId()\"\n class=\"tooltip\"\n [class.top]=\"computedPosition() === 'top'\"\n [class.bottom]=\"computedPosition() === 'bottom'\"\n [class.left]=\"computedPosition() === 'left'\"\n [class.right]=\"computedPosition() === 'right'\"\n [class.light]=\"variant() === 'light'\"\n [class.dark]=\"variant() === 'dark'\"\n [style.max-width.px]=\"maxWidth()\"\n role=\"tooltip\"\n >\n {{ content() }}\n <div class=\"tooltip-arrow\"></div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MenuItem, MenuMode, MenuVariant } from './menu.types';\nimport { PshTooltipComponent } from '../tooltip/tooltip.component';\n\n@Component({\n selector: 'psh-menu',\n imports: [CommonModule, PshTooltipComponent],\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshMenuComponent<T = string> {\n\n mode = input<MenuMode>('vertical');\n variant = input<MenuVariant>('default');\n collapsible = input(false);\n ariaLabels = input<Record<string, string>>({\n disabled: 'Disabled',\n submenu: 'Submenu',\n expand: 'Expand menu',\n collapse: 'Collapse menu'\n });\n\n items = input<MenuItem<T>[]>([]);\n\n collapsed = model(false);\n expandedItemIds = model<string[]>([]);\n\n itemClick = output<MenuItem<T>>();\n submenuToggle = output<{ item: MenuItem<T>; expanded: boolean }>();\n\n protected expandedItemsSet = computed(() => new Set(this.expandedItemIds()));\n\n state = computed(() => this.getState());\n\n showTooltip = computed(() => this.collapsed() && this.mode() === 'vertical');\n\n constructor() {\n effect(() => {\n if (this.collapsed()) {\n this.expandedItemIds.set([]);\n }\n });\n }\n\n private getState(): string {\n if (this.collapsed()) return 'collapsed';\n if (this.collapsible()) return 'collapsible';\n return this.mode();\n }\n\n toggleItem(item: MenuItem<T>, event?: Event): void {\n if (item.disabled) return;\n\n if (item.children?.length) {\n event?.preventDefault();\n this.toggleItemExpansion(item.id);\n const expanded = this.expandedItemsSet().has(item.id);\n this.submenuToggle.emit({ item, expanded });\n } else {\n this.itemClick.emit(item);\n }\n }\n\n toggleCollapse(): void {\n if (this.collapsible()) {\n this.collapsed.update((v) => !v);\n }\n }\n\n isExpanded(item: MenuItem<T>): boolean {\n return !this.collapsed() && this.expandedItemsSet().has(item.id);\n }\n\n expandItem(itemId: string): void {\n if (this.collapsed()) return;\n const current = this.expandedItemIds();\n if (!current.includes(itemId)) {\n this.expandedItemIds.set([...current, itemId]);\n }\n }\n\n collapseItem(itemId: string): void {\n const current = this.expandedItemIds();\n if (current.includes(itemId)) {\n this.expandedItemIds.set(current.filter(id => id !== itemId));\n }\n }\n\n toggleItemExpansion(itemId: string): void {\n if (this.collapsed()) return;\n const current = this.expandedItemIds();\n if (current.includes(itemId)) {\n this.expandedItemIds.set(current.filter(id => id !== itemId));\n } else {\n this.expandedItemIds.set([...current, itemId]);\n }\n }\n\n expandAll(): void {\n if (this.collapsed()) return;\n const allIds = this.collectItemIdsWithChildren(this.items());\n this.expandedItemIds.set(allIds);\n }\n\n collapseAll(): void {\n this.expandedItemIds.set([]);\n }\n\n private collectItemIdsWithChildren(items: MenuItem<T>[]): string[] {\n const ids: string[] = [];\n for (const item of items) {\n if (item.children?.length) {\n ids.push(item.id);\n ids.push(...this.collectItemIdsWithChildren(item.children));\n }\n }\n return ids;\n }\n\n getAriaLabel(item: MenuItem<T>): string {\n const base = item.content;\n if (item.disabled) {\n return `${base} (${this.ariaLabels()['disabled']})`;\n }\n if (item.children?.length) {\n return `${base} (${this.ariaLabels()['submenu']})`;\n }\n return base;\n }\n\n handleKeyDown(event: KeyboardEvent, item: MenuItem<T>, index: number): void {\n if (item.disabled) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleItem(item, event);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem(index);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem(index);\n break;\n\n case 'ArrowRight':\n if (item.children?.length && !this.isExpanded(item)) {\n event.preventDefault();\n this.toggleItem(item, event);\n }\n break;\n\n case 'ArrowLeft':\n if (item.children?.length && this.isExpanded(item)) {\n event.preventDefault();\n this.toggleItem(item, event);\n }\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusFirstItem();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusLastItem();\n break;\n\n case 'Escape':\n if (this.collapsible() && !this.collapsed()) {\n event.preventDefault();\n this.toggleCollapse();\n }\n break;\n }\n }\n\n private focusNextItem(currentIndex: number): void {\n const items = this.items();\n const nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n this.focusItemAtIndex(nextIndex, 1);\n }\n\n private focusPreviousItem(currentIndex: number): void {\n const items = this.items();\n const previousIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n this.focusItemAtIndex(previousIndex, -1);\n }\n\n private focusFirstItem(): void {\n this.focusItemAtIndex(0, 1);\n }\n\n private focusLastItem(): void {\n this.focusItemAtIndex(this.items().length - 1, -1);\n }\n\n private focusItemAtIndex(index: number, direction: 1 | -1): void {\n const items = this.items();\n if (index < 0) {\n index = items.length - 1;\n } else if (index >= items.length) {\n index = 0;\n }\n\n const item = items[index];\n if (item && !item.divider && !item.disabled) {\n setTimeout(() => {\n const link = document.querySelector(`[data-menu-item-id=\"${item.id}\"]`) as HTMLElement;\n link?.focus();\n });\n } else {\n const nextIndex = index + direction;\n if (nextIndex !== index) {\n this.focusItemAtIndex(nextIndex, direction);\n }\n }\n }\n}","<nav \n class=\"menu\"\n [class.vertical]=\"mode() === 'vertical'\"\n [class.horizontal]=\"mode() === 'horizontal'\"\n [class.compact]=\"variant() === 'compact'\"\n [class.expanded]=\"variant() === 'expanded'\"\n [class.collapsed]=\"collapsed()\"\n role=\"navigation\"\n [attr.aria-label]=\"'Navigation menu'\"\n [attr.data-state]=\"state()\"\n>\n @if (collapsible()) {\n <button \n class=\"menu-collapse-button\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"collapsed() ? ariaLabels()['expand'] : ariaLabels()['collapse']\"\n >\n <i class=\"ph ph-caret-left\" aria-hidden=\"true\"></i>\n </button>\n }\n\n <ul class=\"menu-list\" role=\"menubar\">\n @for (item of items(); track item.id; let i = $index) {\n @if (item.divider) {\n <li class=\"menu-divider\" role=\"separator\"></li>\n } @else {\n <li\n class=\"menu-item\"\n [class.has-children]=\"item.children?.length\"\n [class.expanded]=\"isExpanded(item)\"\n [class.disabled]=\"item.disabled\"\n role=\"none\"\n >\n @if (item.path) {\n @if (showTooltip()) {\n <psh-tooltip [content]=\"item.content\" position=\"right\" [showDelay]=\"100\" [hideDelay]=\"0\">\n <a\n class=\"menu-link\"\n [attr.href]=\"item.path\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n </a>\n </psh-tooltip>\n } @else {\n <a\n class=\"menu-link\"\n [attr.href]=\"item.path\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ item.content }}</span>\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n @if (item.children?.length) {\n <i\n class=\"ph ph-caret-down menu-arrow\"\n [class.expanded]=\"isExpanded(item)\"\n aria-hidden=\"true\"\n ></i>\n }\n </a>\n }\n } @else {\n @if (showTooltip()) {\n <psh-tooltip [content]=\"item.content\" position=\"right\" [showDelay]=\"100\" [hideDelay]=\"0\">\n <button\n type=\"button\"\n class=\"menu-link\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n [disabled]=\"item.disabled\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n </button>\n </psh-tooltip>\n } @else {\n <button\n type=\"button\"\n class=\"menu-link\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n [disabled]=\"item.disabled\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ item.content }}</span>\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n @if (item.children?.length) {\n <i\n class=\"ph ph-caret-down menu-arrow\"\n [class.expanded]=\"isExpanded(item)\"\n aria-hidden=\"true\"\n ></i>\n }\n </button>\n }\n }\n\n @if (item.children?.length) {\n <ul\n class=\"submenu\"\n role=\"menu\"\n [attr.aria-label]=\"item.content + ' submenu'\"\n >\n @for (child of item.children; track child.id) {\n <li class=\"menu-item\" role=\"none\">\n @if (child.path) {\n <a\n class=\"menu-link\"\n [attr.href]=\"child.path\"\n [attr.data-menu-item-id]=\"child.id\"\n [class.active]=\"child.active\"\n [attr.aria-disabled]=\"child.disabled\"\n [attr.aria-label]=\"getAriaLabel(child)\"\n (click)=\"toggleItem(child, $event)\"\n (keydown.enter)=\"toggleItem(child, $event)\"\n (keydown.space)=\"toggleItem(child, $event)\"\n role=\"menuitem\"\n [attr.tabindex]=\"child.disabled ? -1 : 0\"\n >\n @if (child.icon) {\n <i class=\"ph ph-{{ child.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ child.content }}</span>\n @if (child.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ child.badge }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"menu-link\"\n [attr.data-menu-item-id]=\"child.id\"\n [class.active]=\"child.active\"\n [attr.aria-disabled]=\"child.disabled\"\n [attr.aria-label]=\"getAriaLabel(child)\"\n (click)=\"toggleItem(child, $event)\"\n (keydown.enter)=\"toggleItem(child, $event)\"\n (keydown.space)=\"toggleItem(child, $event)\"\n role=\"menuitem\"\n [attr.tabindex]=\"child.disabled ? -1 : 0\"\n [disabled]=\"child.disabled\"\n >\n @if (child.icon) {\n <i class=\"ph ph-{{ child.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ child.content }}</span>\n @if (child.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ child.badge }}</span>\n }\n </button>\n }\n </li>\n }\n </ul>\n }\n </li>\n }\n }\n </ul>\n</nav>","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n Injectable,\n InjectionToken,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { PshButtonComponent } from '../button/button.component';\nimport { ModalSize, ModalConfig } from './modal.types';\n\n/**\n * Injection token for global modal configuration\n *\n * @example\n * ```typescript\n * // In app.config.ts or main.ts\n * providers: [\n * {\n * provide: MODAL_CONFIG,\n * useValue: {\n * size: 'large',\n * closeOnBackdrop: false,\n * }\n * }\n * ]\n * ```\n */\nexport const MODAL_CONFIG = new InjectionToken<Partial<ModalConfig>>('MODAL_CONFIG', {\n factory: () => ({\n size: 'medium',\n showClose: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n preventScroll: true,\n showFooter: true,\n dismissLabel: 'Close',\n confirmLabel: 'Confirm',\n cancelLabel: 'Cancel'\n })\n});\n\n/**\n * Service for managing modal instances and global configuration\n *\n * Tracks all active modals and provides centralized configuration.\n * Useful for managing modal stacks and preventing multiple modals from conflicting.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n private config = inject(MODAL_CONFIG);\n private modalsSignal = signal<Set<string>>(new Set());\n\n /**\n * Computed signal exposing the number of active modals\n */\n readonly activeModalsCount = computed(() => this.modalsSignal().size);\n\n /**\n * Returns the global modal configuration\n */\n getConfig(): Partial<ModalConfig> {\n return this.config;\n }\n\n /**\n * Generates a unique identifier for a modal instance\n */\n generateId(): string {\n return `modal-${Math.random().toString(36).substring(2, 11)}`;\n }\n\n /**\n * Registers a modal instance when it opens\n * @param id - Unique modal identifier\n */\n register(id: string): void {\n this.modalsSignal.update(modals => {\n const newSet = new Set(modals);\n newSet.add(id);\n return newSet;\n });\n }\n\n /**\n * Unregisters a modal instance when it closes\n * @param id - Unique modal identifier\n */\n unregister(id: string): void {\n this.modalsSignal.update(modals => {\n const newSet = new Set(modals);\n newSet.delete(id);\n return newSet;\n });\n }\n\n /**\n * Checks if a modal is currently registered\n * @param id - Unique modal identifier\n */\n isRegistered(id: string): boolean {\n return this.modalsSignal().has(id);\n }\n}\n\n/**\n * A modal dialog component that displays content in an overlay\n *\n * @example\n * ```typescript\n * // Basic usage with two-way binding\n * <psh-modal [(open)]=\"isOpen\" title=\"My Modal\">\n * <p>Modal content</p>\n * </psh-modal>\n *\n * // With custom footer\n * <psh-modal [(open)]=\"isOpen\" title=\"Confirm Action\">\n * <p>Are you sure?</p>\n * <div modal-footer #modalFooter>\n * <psh-button (clicked)=\"isOpen = false\">Cancel</psh-button>\n * <psh-button variant=\"primary\" (clicked)=\"handleConfirm()\">Confirm</psh-button>\n * </div>\n * </psh-modal>\n * ```\n */\n@Component({\n selector: 'psh-modal',\n imports: [CommonModule, PshButtonComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshModalComponent implements AfterViewInit, OnDestroy {\n private readonly config = inject(MODAL_CONFIG);\n private readonly modalService = inject(ModalService);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly modalId = this.modalService.generateId();\n private previousActiveElement: HTMLElement | null = null;\n private modalElement?: ElementRef<HTMLElement>;\n private isAttachedToBody = false;\n private resizeListener?: () => void;\n private readonly isMobileSignal = signal(false);\n private readonly mobileBreakpoint = 768;\n\n /**\n * Controls the visibility of the modal (two-way binding)\n */\n open = model(false);\n\n /**\n * Size of the modal dialog\n */\n size = input<ModalSize>(this.config.size ?? 'medium');\n\n /**\n * Whether to show the close button in the header\n */\n showClose = input(this.config.showClose ?? true);\n\n /**\n * Whether clicking the backdrop closes the modal\n */\n closeOnBackdrop = input(this.config.closeOnBackdrop ?? true);\n\n /**\n * Whether pressing Escape closes the modal\n */\n closeOnEscape = input(this.config.closeOnEscape ?? true);\n\n /**\n * Whether to prevent scrolling of the page when modal is open\n */\n preventScroll = input(this.config.preventScroll ?? true);\n\n /**\n * Whether to show the default footer with action buttons\n */\n showFooter = input(this.config.showFooter ?? true);\n\n /**\n * Title displayed in the modal header\n */\n title = input('Modal Title');\n\n /**\n * Accessible label for the close button\n */\n dismissLabel = input(this.config.dismissLabel ?? 'Close');\n\n /**\n * Label for the confirm button in the default footer\n */\n confirmLabel = input(this.config.confirmLabel ?? 'Confirm');\n\n /**\n * Label for the cancel button in the default footer\n */\n cancelLabel = input(this.config.cancelLabel ?? 'Cancel');\n\n /**\n * Custom CSS class(es) to apply to the modal container\n * Allows for custom styling without using deep selectors\n *\n * @example\n * ```html\n * <psh-modal styleClass=\"my-custom-modal\" />\n * ```\n */\n styleClass = input('');\n\n /**\n * Custom CSS class(es) to apply to the modal backdrop\n * Useful for stacked modals with different z-index or opacity\n *\n * @example\n * ```html\n * <psh-modal backdropClass=\"higher-z-index\" />\n * ```\n */\n backdropClass = input('');\n\n /**\n * Emitted when the modal is closed\n */\n closed = output<void>();\n\n /**\n * Emitted when the confirm button is clicked\n */\n confirmed = output<void>();\n\n /**\n * Content child for detecting custom footer projection\n */\n private readonly customFooter = contentChild<ElementRef>('modalFooter');\n\n /**\n * View child reference to the modal backdrop element\n */\n private readonly modalBackdrop = viewChild<ElementRef>('modalBackdrop');\n\n /**\n * Keyboard event handler for Escape key\n */\n private readonly escapeHandler = (event: KeyboardEvent) => {\n if (this.closeOnEscape() && this.open() && event.key === 'Escape') {\n this.handleClose();\n }\n };\n\n /**\n * Keyboard event handler for focus trap\n */\n private readonly focusTrapHandler = (event: KeyboardEvent) => {\n if (event.key === 'Tab' && this.open()) {\n this.handleFocusTrap(event);\n }\n };\n\n /**\n * Computed signal indicating if a custom footer is projected\n */\n hasCustomFooter = computed(() => !!this.customFooter());\n\n /**\n * Computed signal for the modal state\n */\n state = computed(() => this.open() ? 'open' : 'closed');\n\n /**\n * Computed signal for the modal dialog ID for accessibility\n */\n modalDialogId = computed(() => `${this.modalId}-dialog`);\n\n /**\n * Computed signal for the modal description ID for accessibility\n */\n modalDescriptionId = computed(() => `${this.modalId}-description`);\n\n /**\n * Computed signal indicating if the screen is mobile-sized\n */\n isMobileScreen = computed(() => this.isMobileSignal());\n\n constructor() {\n effect(() => {\n if (this.open()) {\n this.onModalOpen();\n } else {\n this.onModalClose();\n }\n });\n\n if (isPlatformBrowser(this.platformId)) {\n this.checkScreenSize();\n }\n }\n\n ngAfterViewInit(): void {\n this.attachModalToBody();\n this.setupResizeListener();\n }\n\n /**\n * Handles all setup when modal opens\n */\n private onModalOpen(): void {\n this.previousActiveElement = document.activeElement as HTMLElement;\n this.modalService.register(this.modalId);\n this.setupScrollLock();\n this.addEventListeners();\n this.focusFirstElement();\n }\n\n /**\n * Handles all cleanup when modal closes\n */\n private onModalClose(): void {\n this.modalService.unregister(this.modalId);\n this.removeScrollLock();\n this.removeEventListeners();\n this.restoreFocus();\n }\n\n /**\n * Checks if the current screen size is mobile\n */\n private checkScreenSize(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.isMobileSignal.set(window.innerWidth < this.mobileBreakpoint);\n }\n }\n\n /**\n * Sets up resize listener to detect screen size changes\n */\n private setupResizeListener(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n }\n }\n\n /**\n * Removes resize listener\n */\n private removeResizeListener(): void {\n if (isPlatformBrowser(this.platformId) && this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n }\n\n /**\n * Adds keyboard event listeners\n */\n private addEventListeners(): void {\n document.addEventListener('keydown', this.escapeHandler);\n document.addEventListener('keydown', this.focusTrapHandler);\n }\n\n /**\n * Removes keyboard event listeners\n */\n private removeEventListeners(): void {\n document.removeEventListener('keydown', this.escapeHandler);\n document.removeEventListener('keydown', this.focusTrapHandler);\n }\n\n /**\n * Focuses the first focusable element in the modal\n */\n private focusFirstElement(): void {\n setTimeout(() => {\n const modalElement = document.getElementById(this.modalDialogId());\n if (!modalElement) return;\n\n const focusableElements = this.getFocusableElements(modalElement);\n const firstElement = focusableElements[0];\n if (firstElement) {\n firstElement.focus();\n }\n }, 100);\n }\n\n /**\n * Restores focus to the element that opened the modal\n */\n private restoreFocus(): void {\n if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {\n setTimeout(() => {\n this.previousActiveElement?.focus();\n }, 100);\n }\n }\n\n /**\n * Handles focus trap to keep focus within the modal\n */\n private handleFocusTrap(event: KeyboardEvent): void {\n const modalElement = document.getElementById(this.modalDialogId());\n if (!modalElement) return;\n\n const focusableElements = this.getFocusableElements(modalElement);\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n if (!firstElement || !lastElement) return;\n\n const activeElement = document.activeElement;\n\n if (event.shiftKey) {\n if (activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n if (activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n /**\n * Gets all focusable elements within a container\n */\n private getFocusableElements(container: HTMLElement): HTMLElement[] {\n const selector = [\n 'button:not([disabled])',\n '[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', ');\n\n return Array.from(container.querySelectorAll<HTMLElement>(selector))\n .filter(el => el.offsetParent !== null);\n }\n\n /**\n * Closes the modal and emits the closed event\n */\n handleClose(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n /**\n * Emits the confirmed event without closing the modal\n * Allows parent component to handle confirmation logic and close if needed\n */\n handleConfirm(): void {\n this.confirmed.emit();\n }\n\n /**\n * Handles clicks on the backdrop\n * Closes the modal if closeOnBackdrop is true and click is on backdrop itself\n */\n handleBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdrop() && event.target === event.currentTarget) {\n this.handleClose();\n }\n }\n\n /**\n * Prevents page scrolling when modal is open\n * Calculates scrollbar width to prevent layout shift\n */\n private setupScrollLock(): void {\n if (!this.preventScroll() || typeof window === 'undefined') return;\n\n if (!document.documentElement.style.getPropertyValue('--scrollbar-width')) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n document.documentElement.style.setProperty(\n '--scrollbar-width',\n `${scrollbarWidth}px`\n );\n }\n document.body.classList.add('modal-open');\n }\n\n /**\n * Removes scroll lock when modal closes\n */\n private removeScrollLock(): void {\n if (!this.preventScroll() || typeof window === 'undefined') return;\n document.body.classList.remove('modal-open');\n }\n\n /**\n * Attaches the modal element to document.body for proper overlay rendering\n */\n private attachModalToBody(): void {\n const backdrop = this.modalBackdrop();\n if (backdrop && backdrop.nativeElement && !this.isAttachedToBody) {\n this.modalElement = backdrop;\n this.renderer.appendChild(document.body, backdrop.nativeElement);\n this.isAttachedToBody = true;\n }\n }\n\n /**\n * Detaches the modal element from document.body\n */\n private detachModalFromBody(): void {\n if (this.modalElement && this.modalElement.nativeElement && this.isAttachedToBody) {\n this.renderer.removeChild(document.body, this.modalElement.nativeElement);\n this.isAttachedToBody = false;\n }\n }\n\n /**\n * Cleanup on component destruction\n */\n ngOnDestroy(): void {\n this.removeScrollLock();\n this.removeEventListeners();\n this.removeResizeListener();\n this.modalService.unregister(this.modalId);\n this.detachModalFromBody();\n }\n}\n","<div\n #modalBackdrop\n [class]=\"'modal-backdrop ' + backdropClass()\"\n [class.open]=\"open()\"\n (click)=\"handleBackdropClick($event)\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!open()\"\n [attr.aria-labelledby]=\"modalDialogId() + '-title'\"\n [attr.aria-describedby]=\"modalDescriptionId()\"\n [attr.data-state]=\"state()\"\n>\n <div\n [class]=\"'modal-container ' + styleClass()\"\n [class.small]=\"size() === 'small'\"\n [class.medium]=\"size() === 'medium'\"\n [class.large]=\"size() === 'large'\"\n [attr.id]=\"modalDialogId()\"\n role=\"document\"\n >\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-header\">\n <h2 class=\"modal-title\" [attr.id]=\"modalDialogId() + '-title'\">\n <ng-content select=\"[modal-title]\">{{ title() }}</ng-content>\n </h2>\n @if (showClose()) {\n <button\n type=\"button\"\n class=\"modal-close\"\n (click)=\"handleClose()\"\n [attr.aria-label]=\"dismissLabel()\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n <div class=\"modal-content\" [attr.id]=\"modalDescriptionId()\">\n <ng-content>\n <p>\n Modal content goes here. You can replace this with your own content.\n </p>\n </ng-content>\n </div>\n\n @if (showFooter() && !hasCustomFooter()) {\n <div class=\"modal-footer\">\n <psh-button\n appearance=\"outline\"\n variant=\"primary\"\n size=\"medium\"\n [fullWidth]=\"isMobileScreen()\"\n (clicked)=\"handleClose()\">\n {{ cancelLabel() }}\n </psh-button>\n <psh-button\n appearance=\"filled\"\n variant=\"primary\"\n size=\"medium\"\n [fullWidth]=\"isMobileScreen()\"\n (clicked)=\"handleConfirm()\">\n {{ confirmLabel() }}\n </psh-button>\n </div>\n } @if (showFooter() && hasCustomFooter()) {\n <div class=\"modal-footer\">\n <!--\n Note: When using a custom footer, buttons should also use [fullWidth]=\"isMobileScreen()\"\n to ensure proper responsive behavior on mobile devices.\n Example:\n <psh-button [fullWidth]=\"isMobileScreen()\" (clicked)=\"action()\">Custom Button</psh-button>\n -->\n <ng-content select=\"[modal-footer]\" #modalFooter></ng-content>\n </div>\n }\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginationSize, PaginationVariant, PaginationConfig } from './pagination.types';\nimport { InjectionToken } from '@angular/core';\n\nexport const PAGINATION_CONFIG = new InjectionToken<Partial<PaginationConfig>>('PAGINATION_CONFIG', {\n factory: () => ({\n size: 'medium',\n variant: 'default',\n showFirstLast: true,\n showPrevNext: true,\n maxVisiblePages: 5,\n showItemsPerPage: false,\n itemsPerPageOptions: [5, 10, 25, 50]\n })\n});\n\n@Component({\n selector: 'psh-pagination',\n imports: [CommonModule],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PshPaginationComponent {\n private config = inject(PAGINATION_CONFIG);\n private static idCounter = 0;\n private readonly uniqueId = `pagination-${++PshPaginationComponent.idCounter}`;\n\n currentPage = model(1);\n totalPages = model(1);\n itemsPerPage = model(10);\n\n constructor() {\n effect(() => {\n const total = this.totalPages();\n if (total < 1 || !Number.isFinite(total)) {\n console.warn(`[psh-pagination] Invalid totalPages \"${total}\", setting to 1`);\n this.totalPages.set(1);\n }\n });\n\n effect(() => {\n const current = this.currentPage();\n const total = this.totalPages();\n if (current < 1 || !Number.isFinite(current)) {\n console.warn(`[psh-pagination] Invalid currentPage \"${current}\", setting to 1`);\n this.currentPage.set(1);\n } else if (current > total && total >= 1) {\n console.warn(`[psh-pagination] currentPage \"${current}\" exceeds totalPages \"${total}\", setting to ${total}`);\n this.currentPage.set(total);\n }\n });\n\n effect(() => {\n const maxVisible = this.maxVisiblePages();\n if (maxVisible < 1 || !Number.isFinite(maxVisible)) {\n console.warn(`[psh-pagination] Invalid maxVisiblePages \"${maxVisible}\", must be >= 1`);\n }\n });\n }\n\n readonly size = input(this.config.size ?? 'medium' as PaginationSize, {\n transform: (value: PaginationSize): PaginationSize => {\n if (!['small', 'medium', 'large'].includes(value)) {\n console.warn(`[psh-pagination] Invalid size \"${value}\", falling back to \"medium\"`);\n return 'medium';\n }\n return value;\n }\n });\n readonly variant = input(this.config.variant ?? 'default' as PaginationVariant, {\n transform: (value: PaginationVariant): PaginationVariant => {\n if (!['default', 'outline'].includes(value)) {\n console.warn(`[psh-pagination] Invalid variant \"${value}\", falling back to \"default\"`);\n return 'default';\n }\n return value;\n }\n });\n readonly showFirstLast = input(this.config.showFirstLast ?? true);\n readonly showPrevNext = input(this.config.showPrevNext ?? true);\n readonly maxVisiblePages = input(this.config.maxVisiblePages ?? 5);\n readonly showItemsPerPage = input(this.config.showItemsPerPage ?? false);\n readonly itemsPerPageOptions = input<number[]>([5, 10, 25, 50]);\n readonly firstLabel = input('First');\n readonly previousLabel = input('Previous');\n readonly nextLabel = input('Next');\n readonly lastLabel = input('Last');\n readonly pageLabel = input('Page');\n readonly itemsLabel = input('items');\n readonly itemsPerPageLabel = input('Items per page');\n readonly id = input<string>();\n readonly ariaLabel = input<string>('Pagination navigation');\n\n pageChange = output<number>();\n itemsPerPageChange = output<number>();\n navigationError = output<{ action: string; reason: string }>();\n\n protected readonly navigationId = computed(() => {\n const customId = this.id();\n return customId || this.uniqueId;\n });\n\n protected readonly pages = computed(() => {\n const pages: number[] = [];\n const halfVisible = Math.floor(this.maxVisiblePages() / 2);\n let start = Math.max(1, this.currentPage() - halfVisible);\n let end = Math.min(this.totalPages(), start + this.maxVisiblePages() - 1);\n\n if (end - start + 1 < this.maxVisiblePages()) {\n start = Math.max(1, end - this.maxVisiblePages() + 1);\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n return pages;\n });\n\n protected readonly state = computed(() => this.getState());\n\n protected readonly canGoNext = computed(() => this.currentPage() < this.totalPages());\n protected readonly canGoPrevious = computed(() => this.currentPage() > 1);\n protected readonly isFirstPage = computed(() => this.currentPage() === 1);\n protected readonly isLastPage = computed(() => this.currentPage() === this.totalPages());\n\n protected readonly currentPageAnnouncement = computed(() => {\n return `Page ${this.currentPage()} sur ${this.totalPages()}`;\n });\n\n private getState(): string {\n if (this.currentPage() === 1) return 'first';\n if (this.currentPage() === this.totalPages()) return 'last';\n return 'default';\n }\n\n goToPage(page: number): void {\n if (page !== this.currentPage() && page >= 1 && page <= this.totalPages()) {\n this.currentPage.set(page);\n this.pageChange.emit(page);\n } else if (page < 1 || page > this.totalPages()) {\n this.navigationError.emit({\n action: 'goToPage',\n reason: `Page ${page} is out of bounds (1-${this.totalPages()})`\n });\n }\n }\n\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n goToLastPage(): void {\n this.goToPage(this.totalPages());\n }\n\n goToNextPage(): void {\n if (this.canGoNext()) {\n this.goToPage(this.currentPage() + 1);\n }\n }\n\n goToPreviousPage(): void {\n if (this.canGoPrevious()) {\n this.goToPage(this.currentPage() - 1);\n }\n }\n\n onItemsPerPageChange(event: Event): void {\n const value = parseInt((event.target as HTMLSelectElement).value);\n this.itemsPerPage.set(value);\n this.itemsPerPageChange.emit(value);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n this.goToPreviousPage();\n break;\n case 'ArrowRight':\n event.preventDefault();\n this.goToNextPage();\n break;\n case 'Home':\n event.preventDefault();\n this.goToFirstPage();\n break;\n case 'End':\n event.preventDefault();\n this.goToLastPage();\n break;\n }\n }\n}","<nav\n class=\"pagination\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.outline]=\"variant() === 'outline'\"\n role=\"navigation\"\n [attr.id]=\"navigationId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.data-state]=\"state()\"\n (keydown)=\"onKeydown($event)\"\n>\n @if (showItemsPerPage()) {\n <div class=\"items-per-page\">\n <label [attr.for]=\"navigationId() + '-items-select'\" class=\"items-per-page-label\">\n {{ itemsPerPageLabel() }}\n </label>\n <select\n [attr.id]=\"navigationId() + '-items-select'\"\n [value]=\"itemsPerPage()\"\n (change)=\"onItemsPerPageChange($event)\"\n [attr.aria-label]=\"itemsPerPageLabel()\"\n >\n @for (option of itemsPerPageOptions(); track option) {\n <option [value]=\"option\">\n {{ option }} {{ itemsLabel() }}\n </option>\n }\n </select>\n </div>\n }\n\n @if (showFirstLast()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"isFirstPage()\"\n (click)=\"goToFirstPage()\"\n [attr.aria-label]=\"firstLabel()\"\n [disabled]=\"isFirstPage()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-double-left\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (showPrevNext()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"!canGoPrevious()\"\n (click)=\"goToPreviousPage()\"\n [attr.aria-label]=\"previousLabel()\"\n [disabled]=\"!canGoPrevious()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-left\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @for (page of pages(); track page) {\n <button\n class=\"page-button\"\n [class.active]=\"page === currentPage()\"\n (click)=\"goToPage(page)\"\n [attr.aria-current]=\"page === currentPage() ? 'page' : null\"\n [attr.aria-label]=\"pageLabel() + ' ' + page\"\n type=\"button\"\n >\n {{ page }}\n </button>\n }\n\n @if (showPrevNext()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"!canGoNext()\"\n (click)=\"goToNextPage()\"\n [attr.aria-label]=\"nextLabel()\"\n [disabled]=\"!canGoNext()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-right\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (showFirstLast()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"isLastPage()\"\n (click)=\"goToLastPage()\"\n [attr.aria-label]=\"lastLabel()\"\n [disabled]=\"isLastPage()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-double-right\" aria-hidden=\"true\"></i>\n </button>\n }\n\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ currentPageAnnouncement() }}\n </div>\n</nav>","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, model, output, InjectionToken } from '@angular/core';\nimport { ProgressbarVariant, ProgressbarSize, ProgressbarMode, ProgressbarLabelPosition, ProgressbarConfig } from './progressbar.types';\n\nexport const PROGRESSBAR_CONFIG = new InjectionToken<Partial<ProgressbarConfig>>('PROGRESSBAR_CONFIG', {\n factory: () => ({\n value: 0,\n max: 100,\n variant: 'primary',\n size: 'medium',\n showLabel: true,\n mode: 'default',\n labelPosition: 'top'\n })\n});\n\n@Component({\n selector: 'psh-progressbar',\n imports: [],\n templateUrl: './progressbar.component.html',\n styleUrls: ['./progressbar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'progressbar-container',\n '[class.small]': 'size() === \"small\"',\n '[class.large]': 'size() === \"large\"',\n '[class.label-bottom]': 'labelPosition() === \"bottom\"',\n '[class.label-inline]': 'labelPosition() === \"inline\"',\n '[attr.data-state]': 'mode()',\n '[attr.aria-live]': '\"polite\"'\n }\n})\nexport class PshProgressbarComponent {\n private config = inject(PROGRESSBAR_CONFIG);\n\n // Model inputs for two-way binding\n value = model(this.config.value ?? 0);\n max = model(this.config.max ?? 100);\n\n // Regular inputs\n variant = input<ProgressbarVariant>(this.config.variant ?? 'primary');\n size = input<ProgressbarSize>(this.config.size ?? 'medium');\n showLabel = input(this.config.showLabel ?? true);\n mode = input<ProgressbarMode>(this.config.mode ?? 'default');\n label = input<string>();\n labelPosition = input<ProgressbarLabelPosition>(this.config.labelPosition ?? 'top');\n ariaLabel = input<string>();\n\n // Outputs\n completed = output<void>();\n thresholdReached = output<number>();\n\n // Computed values\n percentage = computed(() => {\n const val = this.value();\n const maxVal = this.max();\n if (maxVal <= 0) return 0;\n return Math.min(100, Math.max(0, (val / maxVal) * 100));\n });\n\n isIndeterminate = computed(() => this.mode() === 'indeterminate');\n isStriped = computed(() => this.mode() === 'striped' || this.mode() === 'animated');\n isAnimated = computed(() => this.mode() === 'animated');\n\n computedAriaValueText = computed(() => {\n if (this.ariaLabel()) return this.ariaLabel();\n if (this.isIndeterminate()) {\n return this.label() || 'Loading...';\n }\n return `${Math.round(this.percentage())}%`;\n });\n\n displayLabel = computed(() => {\n if (this.isIndeterminate()) {\n return this.label() || 'Loading...';\n }\n return this.label() || `${Math.round(this.percentage())}%`;\n });\n\n constructor() {\n let previousThreshold = -1;\n let hasCompleted = false;\n\n effect(() => {\n const percentage = this.percentage();\n const val = this.value();\n const maxVal = this.max();\n\n if (val >= maxVal && maxVal > 0 && !hasCompleted) {\n this.completed.emit();\n hasCompleted = true;\n }\n\n if (val < maxVal) {\n hasCompleted = false;\n }\n\n const thresholds = [25, 50, 75];\n for (const threshold of thresholds) {\n if (percentage >= threshold && previousThreshold < threshold) {\n this.thresholdReached.emit(threshold);\n previousThreshold = threshold;\n }\n }\n\n if (percentage < 25) {\n previousThreshold = -1;\n }\n });\n }\n}","@if (showLabel()) {\n <span class=\"progress-label\">{{ displayLabel() }}</span>\n}\n<div\n class=\"progressbar\"\n [class.striped]=\"isStriped()\"\n [class.animated]=\"isAnimated()\"\n [class.indeterminate]=\"isIndeterminate()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"isIndeterminate() ? null : value()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuetext]=\"computedAriaValueText()\"\n>\n <div\n class=\"progress-track\"\n [class]=\"variant()\"\n [style.width.%]=\"percentage()\"\n ></div>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n EventEmitter,\n inject,\n Input,\n input,\n Output,\n output,\n signal\n} from '@angular/core';\nimport { RadioSize, RadioConfig } from './radio.types';\nimport { InjectionToken } from '@angular/core';\n\nexport const RADIO_CONFIG = new InjectionToken<Partial<RadioConfig>>('RADIO_CONFIG', {\n factory: () => ({\n checked: false,\n disabled: false,\n required: false,\n size: 'medium',\n labelPosition: 'right'\n })\n});\n\nexport const RADIO_STYLES = new InjectionToken<Record<string, string>[]>('RADIO_STYLES', {\n factory: () => []\n});\n\n/**\n * Compteur global pour générer des IDs uniques\n */\nlet radioIdCounter = 0;\n\n@Component({\n selector: 'psh-radio',\n imports: [],\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.radio-disabled]': 'disabled()',\n '[class.radio-error]': '!!error()',\n '[class.radio-success]': '!!success()',\n '[class.radio-small]': 'size() === \"small\"',\n '[class.radio-large]': 'size() === \"large\"',\n '[attr.data-state]': 'state()'\n }\n})\nexport class PshRadioComponent {\n private config = inject(RADIO_CONFIG);\n private styles = inject(RADIO_STYLES, { optional: true }) ?? [];\n private uniqueId = `radio-${++radioIdCounter}`;\n\n // Plain signals + manual @Input/@Output to prevent auto-emission\n // when parent sets [checked] or [disabled] via template binding.\n // model() would auto-emit checkedChange/disabledChange on .set().\n checked = signal(this.config.checked ?? false);\n @Input('checked') set checkedInput(v: boolean) { this.checked.set(v); }\n\n disabled = signal(this.config.disabled ?? false);\n @Input('disabled') set disabledInput(v: boolean) { this.disabled.set(v); }\n\n required = input(this.config.required ?? false);\n\n // Regular inputs\n label = input('');\n error = input('');\n success = input('');\n name = input('');\n value = input<any>();\n ariaLabel = input<string>();\n size = input<RadioSize>(this.config.size ?? 'medium');\n labelPosition = input<'left' | 'right'>(this.config.labelPosition ?? 'right');\n\n // Content projection tracking\n private radioText = contentChild<any>('.radio-text');\n protected hasProjectedContent = signal(false);\n\n // Outputs — checkedChange/disabledChange use EventEmitter to decouple from signal writes.\n @Output() checkedChange = new EventEmitter<boolean>();\n @Output() disabledChange = new EventEmitter<boolean>();\n valueChange = output<any>();\n\n // Computed values\n customStyles = computed(() => Object.assign({}, ...this.styles));\n\n state = computed(() => this.getState());\n\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const labelText = this.label();\n if (labelText) return labelText;\n\n return this.hasProjectedContent() ? undefined : 'Radio';\n });\n\n errorMessageId = computed(() =>\n this.error() ? `${this.uniqueId}-error` : undefined\n );\n\n successMessageId = computed(() =>\n this.success() ? `${this.uniqueId}-success` : undefined\n );\n\n ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n if (this.errorMessageId()) ids.push(this.errorMessageId()!);\n if (this.successMessageId()) ids.push(this.successMessageId()!);\n return ids.length > 0 ? ids.join(' ') : undefined;\n });\n\n constructor() {\n effect(() => {\n if (!this.label() && !this.ariaLabel() && !this.hasProjectedContent()) {\n console.warn(\n '[psh-radio] No accessible label provided. Please use label input, ariaLabel input, or projected content.'\n );\n }\n }, { allowSignalWrites: false });\n }\n\n private getState(): string {\n if (this.disabled()) return 'disabled';\n if (this.error()) return 'error';\n if (this.success()) return 'success';\n return this.checked() ? 'checked' : 'unchecked';\n }\n\n updateProjectedContent(hasContent: boolean): void {\n this.hasProjectedContent.set(hasContent);\n }\n\n handleChange(): void {\n if (!this.disabled()) {\n const wasChecked = this.checked();\n this.checked.set(true);\n if (!wasChecked) {\n this.checkedChange.emit(true);\n this.valueChange.emit(this.value());\n }\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch(event.key) {\n case ' ':\n case 'Spacebar':\n case 'Enter':\n event.preventDefault();\n this.handleChange();\n break;\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n this.focusNextRadio();\n break;\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n this.focusPreviousRadio();\n break;\n }\n }\n\n private focusNextRadio(): void {\n // Navigate to next radio in group\n // Implementation requires radio group context\n }\n\n private focusPreviousRadio(): void {\n // Navigate to previous radio in group\n // Implementation requires radio group context\n }\n}","<div class=\"radio-container\">\n <label class=\"radio-label\" [class.label-left]=\"labelPosition() === 'left'\">\n <input\n type=\"radio\"\n class=\"radio-input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n (change)=\"handleChange()\"\n (keydown)=\"handleKeydown($event)\"\n />\n <span \n class=\"radio-control\"\n [class.error]=\"!!error()\"\n [class.success]=\"!!success()\"\n >\n <span class=\"radio-dot\"></span>\n </span>\n <span class=\"radio-text\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content>Radio</ng-content>\n }\n </span>\n </label>\n\n @if (error()) {\n <div [id]=\"errorMessageId()\" class=\"radio-error\" role=\"alert\">\n {{ error() }}\n </div>\n }\n\n @if (success()) {\n <div [id]=\"successMessageId()\" class=\"radio-success\" role=\"status\">\n {{ success() }}\n </div>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n DestroyRef,\n ChangeDetectorRef,\n AfterContentInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { SelectOption, SelectOptionGroup, SelectSize, SearchConfig } from './select.types';\n\n@Component({\n selector: 'psh-select',\n imports: [CommonModule, FormsModule],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshSelectComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.select-full-width]': 'fullWidth()',\n '[class.select-small]': 'size() === \"small\"',\n '[class.select-large]': 'size() === \"large\"',\n '[class.select-error]': '!!error()',\n '[class.select-disabled]': 'disabled()',\n '[class.select-loading]': 'loading()',\n '[attr.aria-expanded]': 'isOpen().toString()',\n '[attr.data-state]': 'state()'\n }\n})\nexport class PshSelectComponent<T = unknown> implements ControlValueAccessor, AfterContentInit, FormValueControl<T | T[] | null> {\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n protected readonly selectId = `psh-sel-${Math.random().toString(36).substring(2, 11)}`;\n\n readonly value = model<T | T[] | null>(null);\n readonly disabled = model<boolean>(false);\n readonly touched = model(false);\n\n // Rétablissement de l'API complète pour la démo\n size = input<SelectSize>('medium');\n searchable = input(false);\n multiple = input(false);\n clearable = input(false);\n loading = input(false);\n fullWidth = input(false);\n required = input(false);\n\n options = input<(SelectOption<T> | SelectOptionGroup<T>)[]>([]);\n label = input('');\n placeholder = input<string>('Sélectionner une option');\n multiplePlaceholder = input<string>('Sélectionner des options');\n error = input<string | null | undefined>(undefined);\n compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b);\n searchConfig = input<SearchConfig>({\n debounceTime: 300,\n placeholder: 'Rechercher...',\n minLength: 1\n });\n\n private readonly isOpenSignal = signal(false);\n private readonly searchTermSignal = signal('');\n private readonly initializedSignal = signal(false);\n\n opened = output<void>();\n closed = output<void>();\n searched = output<string>(); // Émet une string, pas un Event\n scrollEnd = output<void>();\n\n isOpen = computed(() => this.isOpenSignal());\n searchTerm = computed(() => this.searchTermSignal());\n state = computed(() => this.disabled() ? 'disabled' : this.error() ? 'error' : 'default');\n\n selectedLabel = computed(() => {\n const currentValue = this.value();\n const currentOptions = this.flattenOptions(this.options());\n\n if (!this.initializedSignal() || (currentValue === null || currentValue === undefined)) {\n return this.multiple() ? this.multiplePlaceholder() : this.placeholder();\n }\n\n if (this.multiple() && Array.isArray(currentValue)) {\n const selected = currentOptions.filter(opt => \n currentValue.some(v => this.compareWith()(v, opt.value))\n );\n return selected.length > 0 ? selected.map(o => o.label).join(', ') : this.multiplePlaceholder();\n }\n\n const selected = currentOptions.find(opt => this.compareWith()(opt.value, currentValue as T));\n return selected ? selected.label : this.placeholder();\n });\n\n filteredOptions = computed(() => {\n const term = this.searchTermSignal().toLowerCase();\n const opts = this.options();\n if (!term) return opts;\n\n return opts.map(opt => {\n if (this.isOptionGroup(opt)) {\n const filtered = opt.options.filter(o => o.label.toLowerCase().includes(term));\n return filtered.length > 0 ? { ...opt, options: filtered } : null;\n }\n return opt.label.toLowerCase().includes(term) ? opt : null;\n }).filter((opt): opt is (SelectOption<T> | SelectOptionGroup<T>) => opt !== null);\n });\n\n constructor() {\n const clickHandler = (event: MouseEvent) => {\n if (this.isOpen() && !this.elementRef.nativeElement.contains(event.target)) {\n this.close();\n }\n };\n document.addEventListener('click', clickHandler);\n this.destroyRef.onDestroy(() => document.removeEventListener('click', clickHandler));\n }\n\n ngAfterContentInit() {\n this.initializedSignal.set(true);\n }\n\n private onChange = (_: unknown) => {};\n private onTouched = () => {};\n\n writeValue(value: unknown): void {\n this.value.set(value as T | T[] | null);\n this.initializedSignal.set(true);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled.set(isDisabled); }\n\n toggle(): void {\n if (this.disabled() || this.loading()) return;\n this.isOpenSignal.update(v => !v);\n this.isOpen() ? this.opened.emit() : this.closed.emit();\n }\n\n close(): void {\n this.isOpenSignal.set(false);\n this.searchTermSignal.set('');\n }\n\n select(option: SelectOption<T>): void {\n if (this.disabled() || option.disabled) return;\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...(this.value() as T[])] : [];\n const index = current.findIndex(v => this.compareWith()(v, option.value));\n if (index === -1) {\n current.push(option.value);\n } else {\n current.splice(index, 1);\n }\n this.value.set(current);\n this.onChange(current);\n } else {\n this.value.set(option.value);\n this.onChange(option.value);\n this.close();\n }\n this.onTouched();\n this.touched.set(true);\n }\n\n clear(event: MouseEvent): void {\n event.stopPropagation();\n this.value.set(this.multiple() ? [] : null);\n this.onChange(this.value());\n }\n\n onSearch(event: Event): void {\n const term = (event.target as HTMLInputElement).value;\n this.searchTermSignal.set(term);\n this.searched.emit(term);\n }\n\n onScroll(event: Event): void {\n const el = event.target as HTMLElement;\n if (el.scrollHeight - el.scrollTop === el.clientHeight) {\n this.scrollEnd.emit();\n }\n }\n\n protected isOptionGroup(item: SelectOption<T> | SelectOptionGroup<T>): item is SelectOptionGroup<T> {\n return 'options' in item;\n }\n\n protected getOptionKey(item: SelectOption<T> | SelectOptionGroup<T>): string {\n return this.isOptionGroup(item) ? `g-${item.label}` : `o-${item.label}`;\n }\n\n protected isSelected(option: SelectOption<T>): boolean {\n const val = this.value();\n if (this.multiple() && Array.isArray(val)) {\n return val.some(v => this.compareWith()(v, option.value));\n }\n return val !== null && this.compareWith()(val as T, option.value);\n }\n\n protected hasValue(): boolean {\n const val = this.value();\n if (this.multiple()) return Array.isArray(val) && val.length > 0;\n return val !== null && val !== undefined;\n }\n\n private flattenOptions(options: (SelectOption<T> | SelectOptionGroup<T>)[]): SelectOption<T>[] {\n return options.reduce((acc, opt) => this.isOptionGroup(opt) ? [...acc, ...opt.options] : [...acc, opt], [] as SelectOption<T>[]);\n }\n\n protected focusSelect(): void {\n this.elementRef.nativeElement.querySelector('.select-trigger')?.focus();\n }\n}","<div class=\"select-container\">\n\n @if (label()) {\n\n <label class=\"select-label\" [attr.for]=\"selectId\" (click)=\"focusSelect()\">\n\n {{ label() }}\n\n @if (required()) { <span class=\"required-mark\">*</span> }\n\n </label>\n\n }\n\n\n\n <div class=\"select-trigger\" [id]=\"selectId\" (click)=\"toggle()\" tabindex=\"0\">\n\n <div class=\"select-value\">\n\n <span [class.placeholder]=\"!hasValue()\">\n\n {{ selectedLabel() }}\n\n </span>\n\n </div>\n\n \n\n <div class=\"select-actions\">\n\n @if (clearable() && hasValue() && !disabled()) {\n\n <button class=\"select-clear\" (click)=\"clear($event)\">\n\n <i class=\"ph ph-x\"></i>\n\n </button>\n\n }\n\n @if (loading()) {\n\n <div class=\"select-loader-trigger\"></div>\n\n } @else {\n\n <i class=\"ph ph-caret-down select-arrow\"></i>\n\n }\n\n </div>\n\n </div>\n\n\n\n @if (isOpen()) {\n\n <div class=\"select-dropdown\">\n\n @if (searchable()) {\n\n <div class=\"select-search\">\n\n <i class=\"ph ph-magnifying-glass select-search-icon\"></i>\n\n <input type=\"text\"\n\n [placeholder]=\"searchConfig().placeholder\"\n\n [value]=\"searchTerm()\"\n\n (input)=\"onSearch($event)\"\n\n (click)=\"$event.stopPropagation()\">\n\n </div>\n\n }\n\n <div class=\"select-options\" (scroll)=\"onScroll($event)\">\n\n @for (item of filteredOptions(); track getOptionKey(item)) {\n\n @if (isOptionGroup(item)) {\n\n <div class=\"select-group\">\n\n <div class=\"select-group-label\">{{ item.label }}</div>\n\n @for (opt of item.options; track opt.label) {\n\n <div class=\"select-option\" \n\n [class.selected]=\"isSelected(opt)\"\n\n (click)=\"select(opt)\">\n\n {{ opt.label }}\n\n </div>\n\n }\n\n </div>\n\n } @else {\n\n <div class=\"select-option\" \n\n [class.selected]=\"isSelected(item)\"\n\n (click)=\"select(item)\">\n\n {{ item.label }}\n\n </div>\n\n }\n\n } @empty {\n\n <div class=\"select-no-results\">Aucun résultat</div>\n\n }\n\n </div>\n\n </div>\n\n }\n\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n effect,\n OnDestroy,\n InjectionToken,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { SidebarMode, SidebarPosition, SidebarConfig } from './sidebar.types';\n\nexport const SIDEBAR_CONFIG = new InjectionToken<Partial<SidebarConfig>>('SIDEBAR_CONFIG', {\n factory: () => ({\n mode: 'fixed',\n position: 'left',\n width: '250px',\n breakpoint: '768px',\n autoFocus: true,\n ariaLabel: 'Sidebar navigation',\n closeOnBackdrop: true,\n closeOnEscape: true\n })\n});\n\n@Component({\n selector: 'psh-sidebar',\n imports: [CommonModule],\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'complementary',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': '!open()',\n '[attr.aria-expanded]': 'open()',\n '[attr.aria-modal]': 'effectiveMode() === \"overlay\" && open()',\n '[attr.data-state]': 'state()'\n }\n})\nexport class PshSidebarComponent implements OnDestroy {\n private readonly config = inject(SIDEBAR_CONFIG);\n private readonly elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private focusedElementBeforeOpen: HTMLElement | null = null;\n private mediaQueryList: MediaQueryList | null = null;\n private mediaQueryHandler: ((e: MediaQueryListEvent) => void) | null = null;\n\n open = model(false);\n mode = input<SidebarMode>(this.config.mode ?? 'fixed');\n position = input<SidebarPosition>(this.config.position ?? 'left');\n width = input<string>(this.config.width ?? '250px');\n breakpoint = input<string>(this.config.breakpoint ?? '768px');\n autoFocus = input<boolean>(this.config.autoFocus ?? true);\n ariaLabel = input<string>(this.config.ariaLabel ?? 'Sidebar navigation');\n closeOnBackdrop = input<boolean>(this.config.closeOnBackdrop ?? true);\n closeOnEscape = input<boolean>(this.config.closeOnEscape ?? true);\n\n toggle = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n transitionStart = output<boolean>();\n\n private readonly mobileSignal = signal(false);\n private previousOpenState: boolean | null = null;\n\n isMobile = computed(() => this.mobileSignal());\n effectiveMode = computed(() => this.isMobile() ? 'overlay' : this.mode());\n state = computed(() => this.getState());\n\n private readonly escapeHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.closeOnEscape() && this.effectiveMode() === 'overlay') {\n this.closeSidebar();\n }\n };\n\n private readonly focusTrapHandler = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n this.trapFocus(event);\n }\n };\n\n private getState(): string {\n if (this.isMobile()) return 'mobile';\n if (this.open()) return 'open';\n return this.mode();\n }\n\n constructor() {\n effect(() => {\n const bp = this.breakpoint();\n this.setupMediaQuery(bp);\n });\n\n effect(() => {\n const isOpen = this.open();\n const wasOpen = this.previousOpenState;\n this.previousOpenState = isOpen;\n\n if (wasOpen === null) return;\n\n if (isOpen && !wasOpen) {\n this.onSidebarOpen();\n } else if (!isOpen && wasOpen) {\n this.onSidebarClose();\n }\n });\n }\n\n private setupMediaQuery(breakpoint: string): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.cleanupMediaQuery();\n\n this.mediaQueryList = window.matchMedia(`(max-width: ${breakpoint})`);\n this.mobileSignal.set(this.mediaQueryList.matches);\n\n this.mediaQueryHandler = (e: MediaQueryListEvent) => {\n this.mobileSignal.set(e.matches);\n };\n\n this.mediaQueryList.addEventListener('change', this.mediaQueryHandler);\n }\n\n private cleanupMediaQuery(): void {\n if (this.mediaQueryList && this.mediaQueryHandler) {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryHandler);\n this.mediaQueryList = null;\n this.mediaQueryHandler = null;\n }\n }\n\n private onSidebarOpen(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.focusedElementBeforeOpen = document.activeElement as HTMLElement;\n this.addEventListeners();\n\n if (this.autoFocus()) {\n requestAnimationFrame(() => {\n const firstFocusable = this.elementRef.nativeElement.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n ) as HTMLElement;\n if (firstFocusable) {\n firstFocusable.focus();\n }\n });\n }\n\n requestAnimationFrame(() => {\n this.opened.emit();\n });\n }\n\n private onSidebarClose(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.removeEventListeners();\n\n if (this.focusedElementBeforeOpen) {\n this.focusedElementBeforeOpen.focus();\n }\n\n requestAnimationFrame(() => {\n this.closed.emit();\n });\n }\n\n private addEventListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n document.addEventListener('keydown', this.escapeHandler);\n document.addEventListener('keydown', this.focusTrapHandler);\n }\n\n private removeEventListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n document.removeEventListener('keydown', this.escapeHandler);\n document.removeEventListener('keydown', this.focusTrapHandler);\n }\n\n toggleSidebar(): void {\n const newState = !this.open();\n this.transitionStart.emit(newState);\n this.open.set(newState);\n this.toggle.emit(newState);\n }\n\n closeSidebar(): void {\n if (this.open()) {\n this.transitionStart.emit(false);\n this.open.set(false);\n this.toggle.emit(false);\n }\n }\n\n handleBackdropClick(): void {\n if (this.closeOnBackdrop()) {\n this.closeSidebar();\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const focusableElements = this.elementRef.nativeElement.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusableElements.length === 0) return;\n\n const firstFocusable = focusableElements[0] as HTMLElement;\n const lastFocusable = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n if (!firstFocusable || !lastFocusable) return;\n\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (event.shiftKey) {\n if (document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupMediaQuery();\n this.removeEventListeners();\n this.focusedElementBeforeOpen = null;\n }\n}\n","<div\n class=\"sidebar\"\n [class.open]=\"open()\"\n [class.fixed]=\"effectiveMode() === 'fixed'\"\n [class.overlay]=\"effectiveMode() === 'overlay'\"\n [class.left]=\"position() === 'left'\"\n [class.right]=\"position() === 'right'\"\n [style.width]=\"width()\"\n [style.--sidebar-width]=\"width()\"\n>\n <div class=\"sidebar-content\">\n <ng-content></ng-content>\n </div>\n</div>\n\n@if (effectiveMode() === 'overlay' && open()) {\n <div\n class=\"sidebar-backdrop\"\n role=\"presentation\"\n (click)=\"handleBackdropClick()\"\n ></div>\n}","import { ChangeDetectionStrategy, Component, effect, inject, input, signal, InjectionToken } from '@angular/core';\nimport { SpinLoaderVariant, SpinLoaderSize, SpinLoaderColor, SpinLoaderConfig } from './spinloader.types';\n\nexport const SPINLOADER_CONFIG = new InjectionToken<Partial<SpinLoaderConfig>>('SPINLOADER_CONFIG', {\n factory: () => ({\n variant: 'circle',\n size: 'medium',\n color: 'primary'\n })\n});\n\n@Component({\n selector: 'psh-spinloader',\n imports: [],\n templateUrl: './spinloader.component.html',\n styleUrls: ['./spinloader.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'status',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-busy]': 'true',\n '[attr.data-state]': 'variant()',\n '[class.small]': 'size() === \"small\"',\n '[class.large]': 'size() === \"large\"',\n '[class.reduce-motion]': 'reduceMotion()',\n }\n})\nexport class PshSpinLoaderComponent {\n private config = inject(SPINLOADER_CONFIG);\n\n variant = input<SpinLoaderVariant>(this.config.variant ?? 'circle');\n size = input<SpinLoaderSize>(this.config.size ?? 'medium');\n color = input<SpinLoaderColor>(this.config.color ?? 'primary');\n label = input<string>();\n ariaLabel = input<string>('Chargement en cours');\n ariaLive = input<'polite' | 'assertive'>('polite');\n\n reduceMotion = signal(false);\n\n constructor() {\n effect(() => {\n if (typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n this.reduceMotion.set(mediaQuery.matches);\n\n const handler = (e: MediaQueryListEvent) => this.reduceMotion.set(e.matches);\n mediaQuery.addEventListener('change', handler);\n }\n });\n }\n}\n","@switch (variant()) {\n @case ('circle') {\n <div class=\"spinner-circle\" [class]=\"color()\"></div>\n }\n @case ('dots') {\n <div class=\"spinner-dots\" [class]=\"color()\">\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n </div>\n }\n @case ('pulse') {\n <div class=\"spinner-pulse\" [class]=\"color()\">\n <div class=\"pulse\"></div>\n <div class=\"pulse\"></div>\n <div class=\"pulse\"></div>\n </div>\n }\n}\n\n@if (label()) {\n <span class=\"spinner-label\">{{ label() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal\n} from '@angular/core';\n\n@Component({\n selector: 'psh-step',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.step-content]': 'true',\n '[class.active]': 'isActive()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': '\"step-\" + index()',\n '[attr.id]': '\"panel-\" + index()',\n '[attr.tabindex]': 'isActive() ? 0 : -1',\n '[style.display]': 'isActive() ? \"block\" : \"none\"'\n }\n})\nexport class PshStepComponent {\n title = input.required<string>();\n subtitle = input<string>();\n icon = input<string>();\n disabled = input(false);\n completed = input(false);\n loading = input(false);\n error = input<string>();\n warning = input<string>();\n success = input<string>();\n\n private _index = signal(0);\n private _isActive = signal(false);\n\n readonly index = this._index.asReadonly();\n readonly isActive = this._isActive.asReadonly();\n\n setIndex(value: number): void {\n this._index.set(value);\n }\n\n setActive(value: boolean): void {\n this._isActive.set(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n InjectionToken,\n afterNextRender\n} from '@angular/core';\nimport { StepperVariant, StepConfig, StepperConfig, StepperAriaLabels } from './stepper.types';\nimport { PshStepComponent } from './step.component';\n\nconst DEFAULT_ARIA_LABELS: StepperAriaLabels = {\n step: 'Étape',\n completed: 'Étape complétée',\n active: 'Étape active',\n incomplete: 'Étape incomplète',\n disabled: 'Étape désactivée'\n};\n\nexport const STEPPER_CONFIG = new InjectionToken<Partial<StepperConfig>>('STEPPER_CONFIG', {\n factory: () => ({\n variant: 'default',\n linear: true,\n ariaLabels: DEFAULT_ARIA_LABELS\n })\n});\n\n@Component({\n selector: 'psh-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.stepper-container]': 'true',\n '[class.numbered]': 'variant() === \"numbered\"',\n '[class.progress]': 'variant() === \"progress\"',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': '\"Navigation par étapes\"'\n }\n})\nexport class PshStepperComponent {\n private config = inject(STEPPER_CONFIG);\n\n activeStep = model(0);\n variant = input<StepperVariant>(this.config.variant ?? 'default');\n linear = input(this.config.linear ?? true);\n\n ariaLabels = input<StepperAriaLabels>();\n beforeStepChange = input<(from: number, to: number) => Promise<boolean> | boolean>();\n\n stepChange = output<number>();\n completed = output<void>();\n navigationError = output<string>();\n\n stepComponents = contentChildren(PshStepComponent);\n\n steps = computed(() => this.stepComponents().map(step => ({\n title: step.title(),\n subtitle: step.subtitle(),\n icon: step.icon(),\n disabled: step.disabled(),\n completed: step.completed(),\n loading: step.loading(),\n error: step.error(),\n warning: step.warning(),\n success: step.success()\n })));\n\n effectiveAriaLabels = computed(() =>\n this.ariaLabels() ?? this.config.ariaLabels ?? DEFAULT_ARIA_LABELS\n );\n\n isFirstStep = computed(() => this.activeStep() === 0);\n isLastStep = computed(() => this.activeStep() === this.steps().length - 1);\n progress = computed(() =>\n this.steps().length > 0\n ? ((this.activeStep() + 1) / this.steps().length) * 100\n : 0\n );\n completedSteps = computed(() =>\n this.steps().filter(step => step.completed).length\n );\n\n constructor() {\n afterNextRender(() => {\n this.syncStepStates();\n });\n\n effect(() => {\n this.syncStepStates();\n });\n }\n\n private syncStepStates(): void {\n const components = this.stepComponents();\n if (components.length === 0) return;\n\n const active = this.activeStep();\n components.forEach((step, index) => {\n step.setIndex(index);\n step.setActive(index === active);\n });\n }\n\n async next(): Promise<void> {\n if (this.canGoNext()) {\n await this.goToStep(this.activeStep() + 1);\n }\n }\n\n async previous(): Promise<void> {\n if (this.canGoPrevious()) {\n await this.goToStep(this.activeStep() - 1);\n }\n }\n\n async goToStep(index: number): Promise<void> {\n if (index < 0 || index >= this.steps().length) {\n const errorMsg = `Invalid step index: ${index}. Valid range: 0-${this.steps().length - 1}`;\n this.navigationError.emit(errorMsg);\n return;\n }\n\n if (index === this.activeStep()) {\n return;\n }\n\n const beforeChange = this.beforeStepChange();\n if (beforeChange) {\n try {\n const canChange = await Promise.resolve(beforeChange(this.activeStep(), index));\n if (!canChange) {\n this.navigationError.emit(`Navigation from step ${this.activeStep()} to step ${index} was blocked by validation`);\n return;\n }\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in beforeStepChange';\n this.navigationError.emit(errorMsg);\n return;\n }\n }\n\n if (!this.canActivateStep(index)) {\n this.navigationError.emit(`Cannot activate step ${index}. Please complete previous steps first`);\n return;\n }\n\n this.activeStep.set(index);\n this.stepChange.emit(index);\n\n const currentStep = this.steps()[index];\n if (this.isLastStep() && currentStep?.completed) {\n this.completed.emit();\n }\n }\n\n canGoNext(): boolean {\n const nextIndex = this.activeStep() + 1;\n return nextIndex < this.steps().length && this.canActivateStep(nextIndex);\n }\n\n canGoPrevious(): boolean {\n return this.activeStep() > 0;\n }\n\n canActivateStep(index: number): boolean {\n if (index < 0 || index >= this.steps().length) {\n return false;\n }\n\n if (!this.linear()) return true;\n if (index === 0) return true;\n\n const step = this.steps()[index];\n if (step?.disabled) return false;\n\n return this.steps()\n .slice(0, index)\n .every(step => step.completed && !step.error);\n }\n\n isStepValid(index: number): boolean {\n const step = this.steps()[index];\n return step ? !!step.completed && !step.error : false;\n }\n\n getStepAriaLabel(step: StepConfig, index: number): string {\n const labels = this.effectiveAriaLabels();\n const status = step.completed ? labels.completed :\n index === this.activeStep() ? labels.active :\n step.disabled ? labels.disabled :\n labels.incomplete;\n return `${labels.step} ${index + 1}: ${step.title} - ${status}`;\n }\n\n getStepDescribedBy(step: StepConfig, index: number): string | null {\n if (step.error) return `error-${index}`;\n if (step.warning) return `warning-${index}`;\n if (step.success) return `success-${index}`;\n return null;\n }\n\n reset(): void {\n this.activeStep.set(0);\n this.stepChange.emit(0);\n }\n\n handleStepClick(index: number): void {\n const step = this.steps()[index];\n if (step && !step.disabled && this.canActivateStep(index)) {\n this.goToStep(index);\n }\n }\n\n handleKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleStepClick(index);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (this.canGoNext()) {\n this.next();\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (this.canGoPrevious()) {\n this.previous();\n }\n break;\n case 'Home':\n event.preventDefault();\n if (this.canActivateStep(0)) {\n this.goToStep(0);\n }\n break;\n case 'End':\n event.preventDefault();\n const lastIndex = this.steps().length - 1;\n if (this.canActivateStep(lastIndex)) {\n this.goToStep(lastIndex);\n }\n break;\n }\n }\n}\n","<div class=\"stepper-header\" role=\"tablist\">\n @for (step of steps(); track $index; let i = $index) {\n <div\n class=\"step-header\"\n [class.active]=\"i === activeStep()\"\n [class.completed]=\"step.completed\"\n [class.disabled]=\"step.disabled\"\n [class.error]=\"!!step.error\"\n [class.warning]=\"!!step.warning\"\n [class.success]=\"!!step.success\"\n >\n <div\n class=\"step-indicator\"\n role=\"tab\"\n tabindex=\"0\"\n [attr.id]=\"'step-' + i\"\n [attr.aria-selected]=\"i === activeStep()\"\n [attr.aria-disabled]=\"step.disabled\"\n [attr.aria-label]=\"getStepAriaLabel(step, i)\"\n [attr.aria-current]=\"i === activeStep() ? 'step' : null\"\n [attr.aria-describedby]=\"getStepDescribedBy(step, i)\"\n [attr.aria-busy]=\"step.loading\"\n (click)=\"handleStepClick(i)\"\n (keydown)=\"handleKeydown($event, i)\"\n >\n @if (step.loading && variant() === 'progress') {\n <i class=\"ph ph-circle-notch spinner\" aria-hidden=\"true\"></i>\n } @else if (step.completed) {\n <i class=\"ph ph-check\" aria-hidden=\"true\"></i>\n } @else if (variant() === 'numbered') {\n {{ i + 1 }}\n } @else if (step.icon) {\n <i class=\"ph ph-{{ step.icon }}\" aria-hidden=\"true\"></i>\n } @else {\n <span class=\"step-dot\"></span>\n }\n </div>\n\n <div class=\"step-label\">\n <span class=\"step-title\">{{ step.title }}</span>\n @if (step.subtitle) {\n <span class=\"step-subtitle\">{{ step.subtitle }}</span>\n }\n @if (step.error) {\n <span class=\"step-error\" [id]=\"'error-' + i\" role=\"alert\" aria-live=\"polite\">{{ step.error }}</span>\n }\n @if (step.warning) {\n <span class=\"step-warning\" [id]=\"'warning-' + i\" role=\"status\" aria-live=\"polite\">{{ step.warning }}</span>\n }\n @if (step.success) {\n <span class=\"step-success\" [id]=\"'success-' + i\" role=\"status\" aria-live=\"polite\">{{ step.success }}</span>\n }\n </div>\n\n @if (i < steps().length - 1) {\n <div class=\"step-connector\" aria-hidden=\"true\">\n <span class=\"connector-line\"></span>\n </div>\n }\n </div>\n }\n</div>\n\n<div class=\"stepper-content\">\n <ng-content />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n viewChild,\n InjectionToken\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { SwitchSize, SwitchConfig } from './switch.types';\n\nexport const SWITCH_CONFIG = new InjectionToken<Partial<SwitchConfig>>('SWITCH_CONFIG', {\n factory: () => ({\n checked: false,\n disabled: false,\n required: false,\n size: 'medium',\n labelPosition: 'right'\n })\n});\n\n@Component({\n selector: 'psh-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshSwitchComponent,\n multi: true\n }],\n host: {\n '[class.switch-wrapper]': 'true',\n '[class.switch-disabled]': 'disabled()',\n '[class.switch-error]': '!!error()',\n '[class.switch-success]': '!!success()'\n }\n})\nexport class PshSwitchComponent implements ControlValueAccessor, FormCheckboxControl {\n private config = inject(SWITCH_CONFIG);\n private uniqueId = `switch-${crypto.randomUUID()}`;\n\n private switchInput = viewChild<ElementRef<HTMLInputElement>>('switchInput');\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n readonly checked = model(this.config.checked ?? false);\n readonly disabled = model(this.config.disabled ?? false);\n touched = model(false);\n\n required = input(this.config.required ?? false);\n size = input<SwitchSize>(this.config.size ?? 'medium');\n labelPosition = input<'left' | 'right'>(this.config.labelPosition ?? 'right');\n\n label = input('');\n error = input('');\n success = input('');\n ariaLabel = input<string>();\n name = input<string>('');\n id = input<string>(this.uniqueId);\n\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const labelText = this.label();\n if (labelText) return labelText;\n\n return 'Switch';\n });\n errorId = computed(() => this.error() ? `${this.id()}-error` : null);\n successId = computed(() => this.success() ? `${this.id()}-success` : null);\n describedBy = computed(() => {\n const ids = [this.errorId(), this.successId()].filter(Boolean);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n toggle(): void {\n if (!this.disabled()) {\n this.checked.update(v => !v);\n this.onChange(this.checked());\n this.onTouched();\n this.touched.set(true);\n }\n }\n\n writeValue(value: boolean): void {\n this.checked.set(value ?? false);\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(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n focus(): void {\n const el = this.switchInput();\n if (el?.nativeElement) {\n el.nativeElement.focus();\n }\n }\n\n blur(): void {\n const el = this.switchInput();\n if (el?.nativeElement) {\n el.nativeElement.blur();\n }\n }\n}\n","<div\n class=\"switch-container\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n>\n <label class=\"switch-label\" [class]=\"labelPosition() === 'left' ? 'label-left' : 'label-right'\">\n <input\n #switchInput\n type=\"checkbox\"\n class=\"switch-input\"\n [id]=\"id()\"\n [name]=\"name() || id()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-invalid]=\"!!error()\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-describedby]=\"describedBy()\"\n (change)=\"toggle()\"\n />\n <span class=\"switch-control\">\n <span class=\"switch-thumb\"></span>\n </span>\n <span class=\"switch-text\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content>Switch</ng-content>\n }\n </span>\n </label>\n\n @if (error()) {\n <div [id]=\"errorId()!\" class=\"switch-error\" role=\"alert\" aria-live=\"polite\">\n {{ error() }}\n </div>\n }\n\n @if (success()) {\n <div [id]=\"successId()!\" class=\"switch-success\" role=\"status\" aria-live=\"polite\">\n {{ success() }}\n </div>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n InjectionToken\n} from '@angular/core';\nimport { TabBarItem, TabBarConfig, TabBarChangeEvent } from './tab-bar.types';\n\n/**\n * Token d'injection pour la configuration globale de la barre d'onglets\n */\nexport const TAB_BAR_CONFIG = new InjectionToken<Partial<TabBarConfig>>('TAB_BAR_CONFIG', {\n factory: () => ({\n disabled: false,\n position: 'bottom',\n animated: true\n })\n});\n\n\n@Component({\n selector: 'psh-tab-bar',\n templateUrl: './tab-bar.component.html',\n styleUrls: ['./tab-bar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.top]': 'position() === \"top\"',\n '[class.animated]': 'animated()',\n 'role': 'tablist',\n '[attr.aria-label]': '\"Navigation par onglets\"'\n }\n})\nexport class PshTabBarComponent {\n private config = inject(TAB_BAR_CONFIG);\n\n // Model inputs with defaults from config\n disabled = model(this.config.disabled ?? false);\n position = model<'bottom' | 'top'>(this.config.position ?? 'bottom');\n animated = model(this.config.animated ?? true);\n activeIndex = model(0);\n\n // Regular inputs\n items = input.required<TabBarItem[]>();\n\n // Outputs\n tabChange = output<TabBarChangeEvent>();\n\n selectTab(index: number): void {\n const items = this.items();\n const previousIndex = this.activeIndex();\n const selectedItem = items[index];\n\n if (this.disabled() ||\n previousIndex === index ||\n index < 0 ||\n index >= items.length ||\n !selectedItem ||\n selectedItem.disabled) {\n return;\n }\n\n this.activeIndex.set(index);\n this.tabChange.emit({\n index,\n item: selectedItem,\n previousIndex\n });\n }\n}","<div class=\"tab-bar\">\n @for (item of items(); track item.id; let i = $index) {\n <button\n class=\"tab-item\"\n [class.active]=\"activeIndex() === i\"\n [class.disabled]=\"disabled() || item.disabled\"\n role=\"tab\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-disabled]=\"disabled() || item.disabled\"\n [attr.aria-label]=\"item.label\"\n (click)=\"selectTab(i)\"\n >\n <i \n [class]=\"activeIndex() === i ? 'ph-fill ph-' + item.icon : 'ph ph-' + item.icon\"\n aria-hidden=\"true\"\n ></i>\n <span class=\"tab-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"tab-badge\">{{ item.badge }}</span>\n }\n </button>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal, InjectionToken } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { PshInputComponent } from '../input/input.component';\nimport { TableColumn, TableRow, TableSort, TableConfig, TableRowClickEvent } from './table.types';\n\nexport const TABLE_CONFIG = new InjectionToken<Partial<TableConfig>>('TABLE_CONFIG', {\n factory: () => ({\n variant: 'default',\n size: 'medium',\n striped: false,\n hoverable: false,\n bordered: false,\n loading: false,\n emptyMessage: 'No data available',\n noResultsMessage: 'No results found',\n globalSearch: false,\n globalSearchPlaceholder: 'Search in all columns...',\n tableLayout: 'auto',\n truncateText: false,\n fullWidth: false\n })\n});\n\n@Component({\n selector: 'psh-table',\n imports: [NgTemplateOutlet, PshInputComponent],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'psh-table',\n '[class.full-width]': 'fullWidth()'\n }\n})\nexport class PshTableComponent {\n private config = inject(TABLE_CONFIG);\n\n variant = input<'default' | 'outline'>(this.config.variant ?? 'default');\n size = input<'small' | 'medium' | 'large'>(this.config.size ?? 'medium');\n striped = input(this.config.striped ?? false);\n hoverable = input(this.config.hoverable ?? false);\n bordered = input(this.config.bordered ?? false);\n loading = input(this.config.loading ?? false);\n globalSearch = input(this.config.globalSearch ?? false);\n fullWidth = input(this.config.fullWidth ?? false);\n columns = input<TableColumn[]>([]);\n data = input<TableRow[]>([]);\n emptyMessage = input<string>(this.config.emptyMessage ?? 'No data available');\n noResultsMessage = input<string>(this.config.noResultsMessage ?? 'No results found');\n globalSearchPlaceholder = input(this.config.globalSearchPlaceholder ?? 'Search in all columns...');\n tableLayout = input<'auto' | 'fixed'>(this.config.tableLayout ?? 'auto');\n truncateText = input(this.config.truncateText ?? false);\n\n sortChange = output<TableSort>();\n globalSearchChange = output<string>();\n rowClick = output<TableRowClickEvent>();\n\n private currentSortSignal = signal<TableSort | undefined>(undefined);\n readonly searchTermSignal = signal('');\n\n currentSort = computed(() => this.currentSortSignal());\n searchTerm = computed(() => this.searchTermSignal());\n\n computedEmptyMessage = computed(() => {\n return this.searchTerm()\n ? `${this.noResultsMessage()} \"${this.searchTerm()}\"`\n : this.emptyMessage();\n });\n\n state = computed(() => {\n if (this.loading()) return 'loading';\n if (this.filteredData().length === 0) return 'empty';\n return 'default';\n });\n\n filteredData = computed(() => {\n let result = [...this.data()];\n\n if (this.searchTerm()) {\n result = this.filterData(result, this.searchTerm());\n }\n\n const sort = this.currentSort();\n if (sort) {\n result = this.sortData(result, sort);\n }\n\n return result;\n });\n\n /**\n * Trie les données\n */\n private sortData(data: TableRow[], sort: TableSort): TableRow[] {\n return [...data].sort((a, b) => {\n const column = this.columns().find(col => col.key === sort.key);\n \n // Utiliser la fonction de tri personnalisée si elle existe\n if (column?.sortFn) {\n return sort.direction === 'asc' \n ? column.sortFn(a, b)\n : column.sortFn(b, a);\n }\n \n // Sinon, utiliser le tri par défaut avec le chemin\n const aValue = this.getNestedValue(a, column?.path || sort.key);\n const bValue = this.getNestedValue(b, column?.path || sort.key);\n \n if (sort.direction === 'asc') {\n return aValue > bValue ? 1 : -1;\n } else {\n return aValue < bValue ? 1 : -1;\n }\n });\n }\n\n /**\n * Filtre les données\n */\n private filterData(data: TableRow[], searchTerm: string): TableRow[] {\n if (!searchTerm) return data;\n \n const term = searchTerm.toLowerCase();\n return data.filter(row => {\n return this.columns().some(column => {\n const value = this.getNestedValue(row, column.path || column.key);\n return value?.toString().toLowerCase().includes(term);\n });\n });\n }\n\n /**\n * Récupère la valeur d'un objet imbriqué en utilisant un chemin\n */\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => acc?.[part], obj);\n }\n\n handleSort(column: TableColumn): void {\n if (!column.sortable) return;\n\n const direction = !this.currentSort() || this.currentSort()?.key !== column.key\n ? 'asc'\n : this.currentSort()?.direction === 'asc'\n ? 'desc'\n : 'asc';\n\n const sort: TableSort = { key: column.key, direction };\n this.currentSortSignal.set(sort);\n this.sortChange.emit(sort);\n }\n\n onSearchValueChange(value: string): void {\n this.globalSearchChange.emit(value);\n }\n\n handleRowClick(row: TableRow): void {\n this.rowClick.emit({ id: row.id, row });\n }\n\n /**\n * Récupère la valeur d'une cellule pour affichage\n */\n protected getCellValue(row: TableRow, column: TableColumn): any {\n return this.getNestedValue(row, column.path || column.key);\n }\n}","<div\n class=\"table-wrapper\"\n [class.striped]=\"striped()\"\n [class.hoverable]=\"hoverable()\"\n [class.bordered]=\"bordered()\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.outline]=\"variant() === 'outline'\"\n [class.table-fixed]=\"tableLayout() === 'fixed'\"\n [class.truncate]=\"truncateText()\"\n [attr.data-state]=\"state()\"\n>\n @if (globalSearch()) {\n <div class=\"global-search\" role=\"search\">\n <psh-input\n [placeholder]=\"globalSearchPlaceholder()\"\n [ariaLabel]=\"globalSearchPlaceholder()\"\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [showLabel]=\"false\"\n iconStart=\"magnifying-glass\"\n type=\"search\"\n [(value)]=\"searchTermSignal\"\n (valueChange)=\"onSearchValueChange($event)\"\n />\n </div>\n }\n\n <table role=\"table\">\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th \n [style.width]=\"column.width\"\n [attr.aria-sort]=\"column.sortable ? (currentSort()?.key === column.key ? (currentSort()?.direction === 'asc' ? 'ascending' : 'descending') : 'none') : null\"\n [class.sortable]=\"column.sortable\" \n (click)=\"handleSort(column)\"\n >\n <div class=\"th-content\">\n {{ column.label }}\n @if (column.sortable) {\n @if (currentSort()?.key === column.key) {\n <i\n [class]=\"'ph ' + (currentSort()?.direction === 'desc' ? 'ph-sort-descending' : 'ph-sort-ascending')\"\n [attr.aria-label]=\"'Sort ' + currentSort()?.direction\"\n aria-hidden=\"true\">\n </i>\n } @else {\n <i\n class=\"ph ph-arrows-down-up sort-icon-neutral\"\n aria-label=\"Sortable\"\n aria-hidden=\"true\">\n </i>\n }\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n \n <tbody>\n @if (loading()) {\n <tr class=\"loading-row\">\n <td [attr.colspan]=\"columns().length\">\n <div class=\"loading-indicator\">\n <div class=\"spinner\"></div>\n </div>\n </td>\n </tr>\n } @else if (filteredData().length === 0) {\n <tr class=\"empty-row\">\n <td [attr.colspan]=\"columns().length\">\n {{ computedEmptyMessage() }}\n </td>\n </tr>\n } @else {\n @for (row of filteredData(); track row.id) {\n <tr (click)=\"handleRowClick(row)\">\n @for (column of columns(); track column.key) {\n <td>\n @if (column.template) {\n <ng-container\n [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"{ $implicit: row, column: column }\"\n ></ng-container>\n } @else {\n {{ getCellValue(row, column) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal\n} from '@angular/core';\nimport { Tab } from './tabs.types';\n\n@Component({\n selector: 'psh-tab',\n template: '<ng-content />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tab-panel]': 'true',\n '[class.active]': 'isActive()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': '\"tab-\" + index()',\n '[attr.id]': '\"panel-\" + index()',\n '[attr.tabindex]': 'isActive() ? 0 : -1'\n }\n})\nexport class PshTabComponent {\n header = input.required<string>();\n icon = input<string>();\n disabled = input(false);\n ariaLabel = input<string>();\n\n private _index = signal(0);\n private _isActive = signal(false);\n\n readonly index = this._index.asReadonly();\n readonly isActive = this._isActive.asReadonly();\n\n setIndex(value: number): void {\n this._index.set(value);\n }\n\n setActive(active: boolean): void {\n this._isActive.set(active);\n }\n\n toTabData(): Tab {\n return {\n header: this.header(),\n icon: this.icon(),\n content: '',\n disabled: this.disabled(),\n ariaLabel: this.ariaLabel()\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n InjectionToken\n} from '@angular/core';\nimport { TabsVariant, TabsSize, Tab, TabsConfig, TabChangeEvent } from './tabs.types';\nimport { PshTabComponent } from './tab.component';\n\nexport const TABS_CONFIG = new InjectionToken<Partial<TabsConfig>>('TABS_CONFIG', {\n factory: () => ({\n variant: 'default',\n size: 'medium',\n activeIndex: 0,\n animated: true\n })\n});\n\n@Component({\n selector: 'psh-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n 'role': 'region',\n '[attr.aria-label]': 'ariaLabel() || \"Navigation par onglets\"'\n }\n})\nexport class PshTabsComponent {\n private config = inject(TABS_CONFIG);\n\n variant = input<TabsVariant>(this.config.variant ?? 'default');\n size = input<TabsSize>(this.config.size ?? 'medium');\n animated = input(this.config.animated ?? true);\n tabs = input<Tab[]>([]);\n ariaLabel = input<string>();\n ariaOrientation = input<'horizontal' | 'vertical'>('horizontal');\n\n activeIndex = model(this.config.activeIndex ?? 0);\n\n tabComponents = contentChildren(PshTabComponent);\n\n tabsToDisplay = computed(() => {\n const components = this.tabComponents();\n if (components.length > 0) {\n return components.map(c => c.toTabData());\n }\n return this.tabs();\n });\n\n hasContentProjection = computed(() => this.tabComponents().length > 0);\n\n activeIndexChange = output<number>();\n tabChange = output<TabChangeEvent>();\n\n hostClasses = computed(() => {\n const classes = ['tabs-wrapper'];\n const size = this.size();\n const variant = this.variant();\n\n if (size !== 'medium') classes.push(`tabs-${size}`);\n classes.push(`tabs-${variant}`);\n if (this.animated()) classes.push('tabs-animated');\n\n return classes.join(' ');\n });\n\n constructor() {\n effect(() => {\n const tabs = this.tabComponents();\n const currentIndex = this.activeIndex();\n tabs.forEach((tab, index) => {\n tab.setIndex(index);\n tab.setActive(index === currentIndex);\n });\n });\n\n effect(() => {\n const currentIndex = this.activeIndex();\n const tabs = this.tabsToDisplay();\n if (tabs.length > 0 && currentIndex >= tabs.length) {\n const clampedIndex = Math.max(0, tabs.length - 1);\n this.activeIndex.set(clampedIndex);\n this.activeIndexChange.emit(clampedIndex);\n }\n });\n }\n\n handleKeyDown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n this.selectPrevious();\n break;\n case 'ArrowRight':\n event.preventDefault();\n this.selectNext();\n break;\n case 'Home':\n event.preventDefault();\n this.selectFirst();\n break;\n case 'End':\n event.preventDefault();\n this.selectLast();\n break;\n }\n }\n\n selectTab(index: number): void {\n const tabs = this.tabsToDisplay();\n const tab = tabs[index];\n\n if (!tab || tab.disabled) return;\n\n const previousIndex = this.activeIndex();\n if (previousIndex !== index) {\n this.activeIndex.set(index);\n this.activeIndexChange.emit(index);\n this.tabChange.emit({ previousIndex, currentIndex: index, tab });\n }\n }\n\n selectNext(): void {\n const tabs = this.tabsToDisplay();\n let nextIndex = (this.activeIndex() + 1) % tabs.length;\n\n while (tabs[nextIndex]?.disabled && nextIndex !== this.activeIndex()) {\n nextIndex = (nextIndex + 1) % tabs.length;\n }\n\n if (nextIndex !== this.activeIndex()) {\n this.selectTab(nextIndex);\n }\n }\n\n selectPrevious(): void {\n const tabs = this.tabsToDisplay();\n let prevIndex = (this.activeIndex() - 1 + tabs.length) % tabs.length;\n\n while (tabs[prevIndex]?.disabled && prevIndex !== this.activeIndex()) {\n prevIndex = (prevIndex - 1 + tabs.length) % tabs.length;\n }\n\n if (prevIndex !== this.activeIndex()) {\n this.selectTab(prevIndex);\n }\n }\n\n selectFirst(): void {\n const tabs = this.tabsToDisplay();\n let firstIndex = 0;\n\n while (tabs[firstIndex]?.disabled && firstIndex < tabs.length - 1) {\n firstIndex++;\n }\n\n if (!tabs[firstIndex]?.disabled && firstIndex !== this.activeIndex()) {\n this.selectTab(firstIndex);\n }\n }\n\n selectLast(): void {\n const tabs = this.tabsToDisplay();\n let lastIndex = tabs.length - 1;\n\n while (tabs[lastIndex]?.disabled && lastIndex > 0) {\n lastIndex--;\n }\n\n if (!tabs[lastIndex]?.disabled && lastIndex !== this.activeIndex()) {\n this.selectTab(lastIndex);\n }\n }\n\n getActiveTab(): Tab | undefined {\n return this.tabsToDisplay()[this.activeIndex()];\n }\n\n getTabComponent(index: number): PshTabComponent | undefined {\n return this.tabComponents()[index];\n }\n}\n","<div\n class=\"tabs-container\"\n [class.animated]=\"animated()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"ariaOrientation()\"\n>\n <div class=\"tabs-header\" [class]=\"variant()\">\n @for (tab of tabsToDisplay(); track $index; let i = $index) {\n <button\n class=\"tab-button\"\n role=\"tab\"\n [class.active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [attr.aria-controls]=\"'panel-' + i\"\n [attr.aria-label]=\"tab.ariaLabel || tab.header\"\n [attr.id]=\"'tab-' + i\"\n [tabindex]=\"i === activeIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n (click)=\"$event.preventDefault(); selectTab(i)\"\n (keydown)=\"handleKeyDown($event, i)\"\n >\n @if (tab.icon) {\n <i class=\"ph ph-{{ tab.icon }}\" aria-hidden=\"true\"></i>\n }\n {{ tab.header }}\n </button>\n }\n </div>\n\n <div class=\"tabs-content\">\n @if (hasContentProjection()) {\n <ng-content />\n } @else {\n @for (tab of tabsToDisplay(); track $index; let i = $index) {\n <div\n class=\"tab-panel\"\n role=\"tabpanel\"\n [class.active]=\"i === activeIndex()\"\n [attr.aria-labelledby]=\"'tab-' + i\"\n [attr.id]=\"'panel-' + i\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n [attr.hidden]=\"i !== activeIndex() || null\"\n >\n {{ tab.content }}\n </div>\n }\n }\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { ToastConfig } from './toast.types';\n\nexport const TOAST_CONFIG = new InjectionToken<Partial<ToastConfig>>('TOAST_CONFIG', {\n factory: () => ({\n position: 'top-right',\n duration: 5000,\n maxToasts: 5,\n pauseOnHover: true,\n showIcon: true,\n showCloseButton: true\n })\n});\n","import { Injectable, inject, signal } from '@angular/core';\nimport { TOAST_CONFIG } from './toast.tokens';\nimport { Toast, ToastPosition } from './toast.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PshToastService {\n private _toasts = signal<Toast[]>([]);\n private _position = signal<ToastPosition>('top-right');\n private config = inject(TOAST_CONFIG);\n\n readonly toasts = this._toasts.asReadonly();\n readonly position = this._position.asReadonly();\n\n show(toast: Omit<Toast, 'id'>) {\n const id = crypto.randomUUID();\n const newToast: Toast = {\n ...toast,\n id,\n type: toast.type || 'info',\n duration: toast.duration ?? this.config.duration ?? 5000\n };\n\n const maxToasts = this.config.maxToasts ?? 5;\n this._toasts.update(toasts => {\n const currentToasts = [...toasts];\n while (currentToasts.length >= maxToasts) {\n currentToasts.shift();\n }\n return [...currentToasts, newToast];\n });\n\n return id;\n }\n\n remove(id: string) {\n this._toasts.update(toasts => toasts.filter(t => t.id !== id));\n }\n\n info(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'info', ...options });\n }\n\n success(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'success', ...options });\n }\n\n warning(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'warning', ...options });\n }\n\n error(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'danger', ...options });\n }\n\n danger(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'danger', ...options });\n }\n\n setPosition(position: ToastPosition) {\n this._position.set(position);\n }\n}\n\n/** @deprecated Use PshToastService instead */\nexport const ToastService = PshToastService;\n","import { PshToastComponent } from './toast.component';\n\n/** @deprecated Use PshToastComponent instead */\nexport const ToastComponent = PshToastComponent;\n","import { ChangeDetectionStrategy, Component, effect, inject, OnDestroy } from '@angular/core';\nimport { Toast, ToastType } from './toast.types';\nimport { PshToastService } from './toast.service';\nimport { TOAST_CONFIG } from './toast.tokens';\n\n@Component({\n selector: 'psh-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.escape)': 'handleEscapeKey()'\n }\n})\nexport class PshToastComponent implements OnDestroy {\n private toastService = inject(PshToastService);\n public config = inject(TOAST_CONFIG);\n\n private timeoutMap = new Map<string, number>();\n private scheduledToastIds = new Set<string>();\n\n readonly toasts = this.toastService.toasts;\n readonly position = this.toastService.position;\n\n constructor() {\n effect(() => {\n const currentToasts = this.toasts();\n\n currentToasts.forEach(toast => {\n if (toast.id && !this.scheduledToastIds.has(toast.id)) {\n this.scheduledToastIds.add(toast.id);\n\n if (toast.duration && toast.duration > 0) {\n this.scheduleRemoval(toast.id, toast.duration);\n }\n }\n });\n\n const currentToastIds = new Set(currentToasts.map(t => t.id).filter(Boolean) as string[]);\n this.scheduledToastIds.forEach(id => {\n if (!currentToastIds.has(id)) {\n this.scheduledToastIds.delete(id);\n }\n });\n });\n }\n\n handleEscapeKey(): void {\n const toasts = this.toasts();\n const lastToast = toasts[toasts.length - 1];\n if (lastToast?.id) {\n this.handleDismiss(lastToast.id);\n }\n }\n\n handleDismiss(id: string | undefined): void {\n if (id) {\n this.clearTimeout(id);\n this.toastService.remove(id);\n }\n }\n\n handleMouseEnter(id: string): void {\n if (this.config.pauseOnHover) {\n this.clearTimeout(id);\n }\n }\n\n handleMouseLeave(id: string): void {\n if (this.config.pauseOnHover) {\n const toast = this.toasts().find(t => t.id === id);\n if (toast?.duration && toast.duration > 0) {\n this.scheduleRemoval(id, toast.duration);\n }\n }\n }\n\n getDefaultIcon(type: ToastType): string {\n const icons: Record<ToastType, string> = {\n info: 'info',\n success: 'check-circle',\n warning: 'warning',\n danger: 'warning-octagon'\n };\n return icons[type] || 'info';\n }\n\n shouldShowCloseButton(toast: Toast): boolean {\n if (toast.showCloseButton !== undefined) {\n return toast.showCloseButton;\n }\n return this.config.showCloseButton !== false;\n }\n\n getCloseButtonAriaLabel(toast: Toast): string {\n return toast.closeButtonAriaLabel ?? this.config.closeButtonAriaLabel ?? 'Close notification';\n }\n\n private scheduleRemoval(id: string, duration: number): void {\n this.clearTimeout(id);\n const timeoutId = window.setTimeout(() => {\n this.toastService.remove(id);\n this.timeoutMap.delete(id);\n }, duration);\n this.timeoutMap.set(id, timeoutId);\n }\n\n private clearTimeout(id: string): void {\n const timeoutId = this.timeoutMap.get(id);\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n this.timeoutMap.delete(id);\n }\n }\n\n ngOnDestroy(): void {\n this.timeoutMap.forEach(timeoutId => {\n window.clearTimeout(timeoutId);\n });\n this.timeoutMap.clear();\n this.scheduledToastIds.clear();\n }\n}\n\nexport { ToastComponent } from './toast.compat';\n","<div\n class=\"toast-container\"\n [class]=\"position()\"\n role=\"region\"\n aria-label=\"Notifications\"\n>\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"toast-item\"\n [class]=\"toast.type\"\n role=\"alert\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [style.--progress-duration]=\"toast.duration + 'ms'\"\n (mouseenter)=\"handleMouseEnter(toast.id!)\"\n (mouseleave)=\"handleMouseLeave(toast.id!)\"\n >\n @if (config.showIcon !== false) {\n <i\n class=\"ph ph-{{ toast.icon || getDefaultIcon(toast.type) }} toast-icon\"\n aria-hidden=\"true\"\n ></i>\n }\n <div class=\"toast-content\">\n {{ toast.message }}\n </div>\n @if (shouldShowCloseButton(toast)) {\n <button\n type=\"button\"\n class=\"toast-close\"\n (click)=\"handleDismiss(toast.id)\"\n [attr.aria-label]=\"getCloseButtonAriaLabel(toast)\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n</div>\n","import { Injectable, signal, computed } from '@angular/core';\nimport { Theme, ThemeConfig } from './types/theme.types';\nimport { inject } from '@angular/core';\n\n// Clé pour le stockage localStorage\nconst THEME_STORAGE_KEY = 'helix-theme-preference';\n\n// Interface pour le service de contexte personnalisé\n// Les applications peuvent implémenter cette interface pour fournir leurs propres couleurs\nexport interface InsurerContextService {\n primaryColor(): string;\n secondaryColor(): string;\n}\n\n// Token pour l'injection optionnelle\nimport { InjectionToken } from '@angular/core';\nexport const INSURER_CONTEXT_SERVICE = new InjectionToken<InsurerContextService>('INSURER_CONTEXT_SERVICE');\n\nconst LIGHTEN_PERCENTAGES = {\n light: 20,\n lighter: 40\n};\n\nconst DARKEN_PERCENTAGES = {\n dark: 20,\n darker: 40\n};\n\n/**\n * Convertit une couleur hexadécimale en RGB\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n // Nettoyer le hex code (enlever le # si présent)\n hex = hex.replace(/^#/, '');\n \n // S'assurer que la longueur est correcte\n if (![3, 6].includes(hex.length)) {\n console.error(`Invalid hex color: ${hex}`);\n return null;\n }\n \n // Si c'est un format court (3 chiffres), le convertir en format long (6 chiffres)\n if (hex.length === 3) {\n hex = hex.split('').map(char => char + char).join('');\n }\n \n // Extraire les composantes RGB\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return { r, g, b };\n}\n\n/**\n * Convertit des valeurs RGB en couleur hexadécimale\n */\nfunction rgbToHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b]\n .map(x => {\n const hex = Math.max(0, Math.min(255, Math.round(x))).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n })\n .join('');\n}\n\n/**\n * Éclaircit une couleur hexadécimale d'un certain pourcentage\n */\nfunction lightenColor(hex: string, percent: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n \n const { r, g, b } = rgb;\n const amount = percent / 100;\n \n const newR = r + (255 - r) * amount;\n const newG = g + (255 - g) * amount;\n const newB = b + (255 - b) * amount;\n \n return rgbToHex(newR, newG, newB);\n}\n\n/**\n * Assombrit une couleur hexadécimale d'un certain pourcentage\n */\nfunction darkenColor(hex: string, percent: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n \n const { r, g, b } = rgb;\n const amount = percent / 100;\n \n const newR = r * (1 - amount);\n const newG = g * (1 - amount);\n const newB = b * (1 - amount);\n \n return rgbToHex(newR, newG, newB);\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n private insurerContext = inject(INSURER_CONTEXT_SERVICE, { optional: true });\n private isDarkThemeSignal = signal<boolean>(false);\n private themeNameSignal = signal<Theme>('light');\n private lastChangeSignal = signal<Date>(new Date());\n\n isDarkTheme = computed(() => this.isDarkThemeSignal());\n themeName = computed(() => this.themeNameSignal());\n \n themeInfo = computed(() => ({\n isDark: this.isDarkTheme(),\n name: this.themeName(),\n lastChange: this.lastChangeSignal()\n }));\n\n constructor() {\n // Initialiser le thème en fonction de la préférence stockée ou par défaut 'light'\n this.initializeTheme();\n \n // Listen for system theme changes (commented out to keep user control)\n // window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {\n // this.setDarkTheme(e.matches);\n // });\n \n // Attendre que l'injection soit prête avant d'appliquer le thème\n setTimeout(() => {\n this.applyInsurerTheme();\n }, 0);\n }\n\n setDarkTheme(isDark: boolean) {\n document.documentElement.setAttribute('data-theme', isDark ? 'dark' : 'light');\n this.isDarkThemeSignal.set(isDark);\n this.themeNameSignal.set(isDark ? 'dark' : 'light');\n this.lastChangeSignal.set(new Date());\n \n // Réappliquer les couleurs de l'assureur après le changement de thème\n this.applyInsurerTheme();\n }\n\n toggleTheme() {\n this.setDarkTheme(!this.isDarkThemeSignal());\n }\n\n updateTheme(name: Theme) {\n this.themeNameSignal.set(name);\n this.isDarkThemeSignal.set(name === 'dark');\n this.lastChangeSignal.set(new Date());\n \n // Sauvegarder la préférence dans localStorage\n this.saveThemePreference(name);\n \n // Réappliquer les couleurs de l'assureur après le changement de thème\n this.applyInsurerTheme();\n }\n \n /**\n * Applique les couleurs de l'assureur aux variables CSS\n * Génère automatiquement toutes les variantes et les gradients\n * Si aucun contexte assureur n'est fourni, les fallbacks CSS des thèmes sont utilisés\n */\n applyInsurerTheme() {\n // Récupérer les couleurs de l'assureur si disponibles\n const primaryColor = this.insurerContext?.primaryColor();\n const secondaryColor = this.insurerContext?.secondaryColor();\n\n // Debug: afficher les couleurs utilisées\n console.log('Applying theme colors:', {\n primaryColor,\n secondaryColor,\n hasInsurerContext: !!this.insurerContext,\n currentTheme: this.themeName(),\n usingCssFallbacks: !primaryColor && !secondaryColor\n });\n\n // Si aucun contexte assureur, ne rien faire - les fallbacks CSS seront utilisés\n if (!this.insurerContext) {\n console.log('No InsurerContext service provided - using CSS theme fallback colors');\n return;\n }\n\n if (primaryColor) {\n try {\n // Générer les variantes de couleurs\n const primaryColorLight = lightenColor(primaryColor, 20);\n const primaryColorLighter = lightenColor(primaryColor, 40);\n const primaryColorDark = darkenColor(primaryColor, 20);\n const primaryColorDarker = darkenColor(primaryColor, 40);\n \n // Convertir en RGB pour les besoins de transparence\n const rgb = hexToRgb(primaryColor);\n const primaryColorRgb = rgb ? `${rgb.r}, ${rgb.g}, ${rgb.b}` : null;\n \n // Déterminer si le texte sur cette couleur doit être clair ou foncé\n // Une formule simple: luminosité = 0.299*R + 0.587*G + 0.114*B\n let primaryColorText = '#FFFFFF'; // Par défaut blanc\n if (rgb) {\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n if (luminance > 0.5) {\n primaryColorText = '#000000'; // Texte noir pour les couleurs claires\n }\n }\n \n // Appliquer toutes les variantes primary\n document.documentElement.style.setProperty('--insurer-primary-color', primaryColor);\n document.documentElement.style.setProperty('--insurer-primary-color-light', primaryColorLight);\n document.documentElement.style.setProperty('--insurer-primary-color-lighter', primaryColorLighter);\n document.documentElement.style.setProperty('--insurer-primary-color-dark', primaryColorDark);\n document.documentElement.style.setProperty('--insurer-primary-color-darker', primaryColorDarker);\n document.documentElement.style.setProperty('--insurer-primary-color-text', primaryColorText);\n\n if (primaryColorRgb) {\n document.documentElement.style.setProperty('--insurer-primary-color-rgb', primaryColorRgb);\n }\n\n console.log(`Applied primary color variants:`, {\n base: primaryColor,\n light: primaryColorLight,\n lighter: primaryColorLighter,\n dark: primaryColorDark,\n darker: primaryColorDarker,\n text: primaryColorText\n });\n\n // Appliquer la couleur secondaire et ses variantes\n if (secondaryColor) {\n try {\n // Générer les variantes de couleurs secondaires\n const secondaryColorLight = lightenColor(secondaryColor, 20);\n const secondaryColorLighter = lightenColor(secondaryColor, 40);\n const secondaryColorDark = darkenColor(secondaryColor, 20);\n const secondaryColorDarker = darkenColor(secondaryColor, 40);\n \n // Convertir en RGB pour les besoins de transparence\n const rgb = hexToRgb(secondaryColor);\n const secondaryColorRgb = rgb ? `${rgb.r}, ${rgb.g}, ${rgb.b}` : null;\n \n // Déterminer si le texte sur cette couleur doit être clair ou foncé\n let secondaryColorText = '#FFFFFF'; // Par défaut blanc\n if (rgb) {\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n if (luminance > 0.5) {\n secondaryColorText = '#000000'; // Texte noir pour les couleurs claires\n }\n }\n \n // Appliquer toutes les variantes secondary\n document.documentElement.style.setProperty('--insurer-secondary-color', secondaryColor);\n document.documentElement.style.setProperty('--insurer-secondary-color-light', secondaryColorLight);\n document.documentElement.style.setProperty('--insurer-secondary-color-lighter', secondaryColorLighter);\n document.documentElement.style.setProperty('--insurer-secondary-color-dark', secondaryColorDark);\n document.documentElement.style.setProperty('--insurer-secondary-color-darker', secondaryColorDarker);\n document.documentElement.style.setProperty('--insurer-secondary-color-text', secondaryColorText);\n\n if (secondaryColorRgb) {\n document.documentElement.style.setProperty('--insurer-secondary-color-rgb', secondaryColorRgb);\n }\n\n console.log(`Applied secondary color variants:`, {\n base: secondaryColor,\n light: secondaryColorLight,\n lighter: secondaryColorLighter,\n dark: secondaryColorDark,\n darker: secondaryColorDarker,\n text: secondaryColorText\n });\n } catch (error) {\n console.error('Error applying insurer secondary color theme:', error);\n }\n }\n\n console.log('Theme application complete. Primary gradients will automatically update via CSS fallback system.');\n console.log('To see custom colors, provide INSURER_CONTEXT_SERVICE in your app config.');\n } catch (error) {\n console.error('Error applying insurer theme:', error);\n }\n }\n }\n\n /**\n * Initialise le thème au démarrage de l'application\n * Utilise la préférence stockée ou le thème par défaut 'light'\n */\n private initializeTheme(): void {\n let savedTheme: Theme | null = null;\n \n // Tentative de récupération du thème sauvegardé\n try {\n savedTheme = localStorage.getItem(THEME_STORAGE_KEY) as Theme;\n } catch (error) {\n console.warn('Unable to read theme from localStorage:', error);\n }\n \n // Valider et appliquer le thème\n const isValidTheme = savedTheme === 'light' || savedTheme === 'dark';\n const themeToApply = isValidTheme ? savedTheme : 'light';\n \n this.setDarkTheme(themeToApply === 'dark');\n }\n\n /**\n * Sauvegarde la préférence de thème dans le localStorage\n */\n private saveThemePreference(theme: Theme): void {\n try {\n localStorage.setItem(THEME_STORAGE_KEY, theme);\n } catch (error) {\n console.warn('Unable to save theme to localStorage:', error);\n }\n }\n}","import { Injectable, inject, InjectionToken, Type } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface TranslationProvider {\n translate(key: string, params?: Record<string, any>): string;\n translateAsync(key: string, params?: Record<string, any>): Observable<string>;\n setLanguage(lang: string): void;\n getCurrentLanguage(): string;\n onLangChange(): Observable<string>;\n}\n\n@Injectable()\nexport class NgxTranslateProvider implements TranslationProvider {\n private translateService = inject(TranslateService);\n\n translate(key: string, params?: Record<string, any>): string {\n if (!key) return '';\n return this.translateService.instant(key, params);\n }\n\n translateAsync(key: string, params?: Record<string, any>): Observable<string> {\n if (!key) return new Observable(subscriber => subscriber.next(''));\n return this.translateService.stream(key, params);\n }\n\n setLanguage(lang: string): void {\n this.translateService.use(lang);\n }\n\n getCurrentLanguage(): string {\n return this.translateService.currentLang;\n }\n\n onLangChange(): Observable<string> {\n return this.translateService.onLangChange.pipe(\n map(event => event.lang)\n );\n }\n}\n\nexport const TRANSLATION_PROVIDER = new InjectionToken<TranslationProvider>('TRANSLATION_PROVIDER', {\n factory: () => new NgxTranslateProvider()\n});\n\nexport function provideTranslation(provider: Type<TranslationProvider> = NgxTranslateProvider) {\n return { provide: TRANSLATION_PROVIDER, useClass: provider };\n}","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScrollService {\n constructor(private router: Router) {\n // Subscribe to router events\n this.router.events.pipe(\n // Filter only NavigationEnd events\n filter(event => event instanceof NavigationEnd)\n ).subscribe(() => {\n // Reset scroll position\n window.scrollTo(0, 0);\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_CONFIG","i1"],"mappings":";;;;;;;;;;;AAUA;AACA,MAAM,cAAc,GAAgB;AAClC,IAAA,OAAO,EAAE;CACV;AAED;AACA,MAAM,aAAa,GAA2B;AAC5C,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE;CACT;AAED,MAAMA,gBAAc,GAAG;AACrB,IAAA,IAAI,EAAE,MAAmB;AACzB,IAAA,YAAY,EAAE,MAAsB;AACpC,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,QAAqB;AAC3B,IAAA,QAAQ,EAAE;CACX;MASY,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;;AAUE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAYA,gBAAc,CAAC,IAAI,gDAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAeA,gBAAc,CAAC,YAAY,wDAAC;AAC/D,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAACA,gBAAc,CAAC,QAAQ,oDAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAYA,gBAAc,CAAC,IAAI,gDAAC;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAACA,gBAAc,CAAC,QAAQ,oDAAC;QACzC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAa;QACzB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,wDAAC;QAC5C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA0B;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;;QAGnB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;;AAGvB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,uDAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,mDAAC;AAE3D,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC,4DAC1F;AAED,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MACtB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,wDAClF;AAED,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;AACtC,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,iDAAC;AAKH,IAAA;IAHC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;8GArCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC9B,uzBA6BM,EAAA,MAAA,EAAA,CAAA,y7FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uzBAAA,EAAA,MAAA,EAAA,CAAA,y7FAAA,CAAA,EAAA;;;AEhCjD;AACA,MAAMA,gBAAc,GAAG;AACrB,IAAA,IAAI,EAAE,QAAsB;AAC5B,IAAA,KAAK,EAAE,QAAuB;AAC9B,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,IAAI,EAAE;CACP;AAED;AACA,MAAM,qBAAqB,GAAiC;AAC1D,IAAA,MAAM,EAAE,sBAAsB;AAC9B,IAAA,OAAO,EAAE,oBAAoB;AAC7B,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,IAAI,EAAE;CACP;MASY,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;;AAUE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAaA,gBAAc,CAAC,IAAI,gDAAC;AAC7C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAcA,gBAAc,CAAC,KAAK,iDAAC;QAChD,IAAA,CAAA,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACjC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAASA,gBAAc,CAAC,GAAG,+CAAC;;AAGvC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;AACpB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAASA,gBAAc,CAAC,IAAI,gDAAC;QACzC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4B;QAC1C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,oDAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uDAAC;AACnE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mDAAC;AAEjE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,6DAAC;AAElE,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,qBAAqB,CAAC,aAAa,CAAC;AAC7C,QAAA,CAAC,uDAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,iDAAC;AACnD,IAAA;8GA5BY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,KAAA,EAAA,aAAA,EAAA,GAAA,EAAA,WAAA,EAAA,GAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B/B,wzBA2BM,EAAA,MAAA,EAAA,CAAA,8uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wzBAAA,EAAA,MAAA,EAAA,CAAA,8uFAAA,CAAA,EAAA;;;AErBjD,MAAM,cAAc,GAAG;AACrB,IAAA,OAAO,EAAE,SAAyB;AAClC,IAAA,IAAI,EAAE,QAAqB;AAC3B,IAAA,WAAW,EAAE,MAA0B;AACvC,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,QAAQ,EAAE;CACX;MASY,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;AASW,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,cAAc,CAAC,OAAO,mDAAC;AACrD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,cAAc,CAAC,IAAI,gDAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,cAAc,CAAC,WAAW,uDAAC;AACjE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,mDAAC;QACrB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;AAClB,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,+CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,oDAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAgB,cAAc,CAAC,QAAQ,oDAAC;AACxD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsC;QAEvD,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;QAC3B,IAAA,CAAA,WAAW,GAAG,MAAM,EAAK;QAEzB,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,QAAQ,GAAG,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpD;AAEQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,OAAO;AAAE,gBAAA,OAAO,OAAO;AAE3B,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AAC5B,QAAA,CAAC,6DAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,QAAQ;YACpC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,QAAA,CAAC,iDAAC;AAEe,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,iDAAC;AACpD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,qDAAC;AAC5D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,oDAAC;AAErD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YACjC,IAAI,OAAO,YAAY,KAAK,QAAQ;AAAE,gBAAA,OAAO,IAAI;YACjD,OAAO,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC5C,QAAA,CAAC,yDAAC;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACpD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YAEjC,IAAI,CAAC,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACrE,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,OAAO,SAAS,CAAC,YAAY,CAAC;AAChC,QAAA,CAAC,gEAAC;AAEe,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACrD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AAEjC,YAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACpC,gBAAA,OAAO,YAAY,KAAK,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YAC/D;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAC7B;AAEA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;AAC3B,YAAA,OAAO,YAAY,GAAG,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAG,GAAG,CAAA,EAAG,YAAY,EAAE;AACrE,QAAA,CAAC,iEAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE;YACvB;AAEA,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACnD,YAAA,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,gBAAA,OAAO,eAAe;YACxB;AAEA,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;AACrC,QAAA,CAAC,wDAAC;AAKH,IAAA;IAHC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;8GA7FW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,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,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB9B,4lCA8BA,EAAA,MAAA,EAAA,CAAA,qkEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDfY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4lCAAA,EAAA,MAAA,EAAA,CAAA,qkEAAA,CAAA,EAAA;;;MEOpC,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AAYU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,yDAAC;AAE7D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmB,QAAQ,sDAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,mDAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,gDAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAqB,MAAM,wDAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,YAAY,uDAAC;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,sCAAsC,wDAAC;QAC5D,IAAA,CAAA,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,gDAAC;QAErD,IAAA,CAAA,OAAO,GAAG,MAAM,EAAc;QAC9B,IAAA,CAAA,aAAa,GAAG,MAAM,EAAc;AAkBpC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAChC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AAC/C,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,QAAQ;YACxC;AACA,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAC/B,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,6DAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,iDAAC;AAgBH,IAAA;IAhDC,qBAAqB,GAAA;AACnB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;QACpE,IAAI,MAAM,EAAE;YACV,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC;YAChE,IAAI,gBAAgB,EAAE;gBACpB,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9D,gBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE;AACjD,gBAAA,IAAI,WAAW,IAAI,WAAW,KAAK,oBAAoB,EAAE;AACvD,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;gBACrC;AAAO,qBAAA,IAAI,CAAC,WAAW,IAAI,oBAAoB,EAAE;AAC/C,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC;YACF;QACF;IACF;AAqBA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC;IACF;8GApEW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,y7DCzB/B,o0CAqCS,EAAA,MAAA,EAAA,CAAA,uoMAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDZI,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA,EAAA,QAAA,EAAA,o0CAAA,EAAA,MAAA,EAAA,CAAA,uoMAAA,CAAA,EAAA;;;AEPH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAWU,gBAAgB,CAAA;AAmG3B,IAAA,WAAA,GAAA;AAlGQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAGxC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;;;AAGjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,SAAS,mDAAC;;AAGvC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;;AAGxB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;;AAI1B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGzB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;;AAG/B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,SAAS,wDAAC;;AAGjD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,QAAQ,mDAAC;;AAGtC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;;AAGxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;;AAGxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,IAAI,8DAAC;;AAGzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAuB,OAAO,4DAAC;;AAGvD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;;AAGlC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;AAG/C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;;QAIhC,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;;AAI9C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,QAAA,CAAC,0DAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,CAAC,qDAAC;;AAGF,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,OAAO,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACnD,QAAA,CAAC,iEAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9C,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;YAC3C;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,0DAAC;AAGA,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,mBAAmB,EAAE;AAE1B,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;oBAC5C,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAClC;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QAC7C;IACF;AAEA;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAlJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,q5ECpD7B,omEA6DA,EAAA,MAAA,EAAA,CAAA,67OAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDTa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;+BACE,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA,EAAA,QAAA,EAAA,omEAAA,EAAA,MAAA,EAAA,CAAA,67OAAA,CAAA,EAAA;;;ME/CU,UAAU,GAAG,IAAI,cAAc,CAAqB,YAAY,EAAE;AAC7E,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,UAAU,EAAE;KACb;AACF,CAAA;MAQY,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE,yDAAC;QAElC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAa,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAE3B,IAAA,CAAA,OAAO,GAAG,MAAM,EAAc;QAC9B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,WAAW,IAAI,WAAW,KAAK,KAAK;AAAE,gBAAA,OAAO,WAAW;AAE5D,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAE/B,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,6DAAC;AAYO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,QAAQ,wDACzC;QAEQ,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChD;AAEQ,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,SAAS,iDAAC;AAuB1E,IAAA;IAzCC,qBAAqB,GAAA;AACnB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;QAClF,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;AACtD,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B;QACF;IACF;AAYA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AAE5C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAA8B,CAAC;QACnD;IACF;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;8GAvEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+vCCpB5B,4lCAmCM,EAAA,MAAA,EAAA,CAAA,y0EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDfO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4lCAAA,EAAA,MAAA,EAAA,CAAA,y0EAAA,CAAA,EAAA;;;AENjD,MAAM,sBAAsB,GAAmC;AAC7D,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,MAAM,EAAE,2CAA2C;AACnD,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,OAAO,EAAE;CACV;MASY,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;;;QAYE,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;;QAGhC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAG7B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;;QAItB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAkB;;QAGpC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAG1B,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,UAAU,mDAAC;;AAG5C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;;AAGxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;QAG/C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAiB,YAAY,kDAAC;;AAG5C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,wDAAC;;;QAI3B,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;AAGtC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,yDAAC;AAElD,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,+DAAC;AAE9D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,wDAAC;QAEhD,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEtD,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElD,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,IAAI,QAAQ;AAAE,gBAAA,OAAO,QAAQ;AAE7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,OAAO,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI;AACzD,QAAA,CAAC,kEAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE;YAChD,OAAO,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;AAC3C,QAAA,CAAC,qDAAC;;QAGF,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAChB,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,kDACzD;;AAGD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,mDAAC;QAE/C,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEnC,YAAA,OAAO;AACL,kBAAE,CAAA,EAAG,IAAI,KAAK,KAAK,CAAA,EAAA,EAAK,GAAG,CAAA;AAC3B,kBAAE,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,EAAE;AACzB,QAAA,CAAC,6DAAC;;AAGF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC;AAC7B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAE5B,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;AAEzC,YAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACrC;iBAAO;AACL,gBAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;YACvC;AAEA,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAChC;YAEA,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,QAAA,CAAC,0DAAC;AA6BH,IAAA;;IA1BC,IAAc,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5D,IAAc,kBAAkB,KAAK,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACxE,IAAc,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,IAAc,iBAAiB,KAAK,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtE,IAAc,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAElE;;AAEG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAlKW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BjC,w0DA2DA,EAAA,MAAA,EAAA,CAAA,w5IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCY,YAAY,oHAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAM5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,w0DAAA,EAAA,MAAA,EAAA,CAAA,w5IAAA,CAAA,EAAA;;;AEbvC;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;MASU,0BAA0B,CAAA;AARvC,IAAA,WAAA,GAAA;;AAWE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAwB,UAAU,mDAAC;;AAGlD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;;AAGxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;AAG/C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,gBAAgB,qDAAC;;AAG3C,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAS,mBAAmB,+CAAC;;AAGxC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,GAAG,uDAAC;;AAGhC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,mBAAmB,0DAAC;;AAGnD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,gBAAgB,wDAAC;;QAG9C,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;AAG9C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,OAAO;AACL,gBAAA,yBAAyB,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3C,gBAAA,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE;AAC9B,gBAAA,2BAA2B,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/C,gBAAA,8BAA8B,EAAE,IAAI,CAAC,cAAc,EAAE;AACrD,gBAAA,4BAA4B,EAAE,IAAI,CAAC,YAAY,EAAE;gBACjD,GAAG,IAAI,CAAC,WAAW;aACpB;AACH,QAAA,CAAC,0DAAC;AAsBH,IAAA;AApBC;;AAEG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAtFW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,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,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,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CvC,opCAsCM,EAAA,MAAA,EAAA,CAAA,8iGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,opCAAA,EAAA,MAAA,EAAA,CAAA,8iGAAA,CAAA,EAAA;;;AEtCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,oBAAoB,CAAA;AAgH/B,IAAA,WAAA,GAAA;AA9GA,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,4DAAC;;AAGzC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGzB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiB,EAAE,gDAAC;;QAGhC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB;AAC/B,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,UAAU,EAAE;AACb,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,UAAU,mDAAC;;AAG5C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,eAAe,gDAAC;;QAGrC,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;AAG/C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;AAGnC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;;AAGjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;QAGhC,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;AAG9C,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAU,IAAI,iEAAC;;AAG5C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAIxC,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,cAAc,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;AACtE,QAAA,CAAC,gEAAC;;AAGF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACnC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,iBAAiB,IAAI,+BAA+B;AAC5E,QAAA,CAAC,gEAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE;YAC5B,OAAO,QAAQ,GAAG,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,CAAC,qDAAC;;AAGF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,OAAO,WAAW,KAAK,SAAS,GAAG,CAAA,kBAAA,EAAqB,SAAS,EAAE,GAAG,kBAAkB,CAAC;AAC3F,QAAA,CAAC,6DAAC;;AAGF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,QAAA,CAAC,0DAAC;;AAGF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAChC,MAAM,OAAO,GAAa,EAAE;YAC5B,IAAI,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnD,gBAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;YAC3C;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,6DAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAGrC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,mBAAmB,EAAE;AAE1B,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;oBAC5C,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD;QACF;IACF;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAC5F,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9C;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAClC;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QAC7C;IACF;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAvKW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,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,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,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCjC,qmFAsFA,EAAA,MAAA,EAAA,CAAA,k8LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FASX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,qmFAAA,EAAA,MAAA,EAAA,CAAA,k8LAAA,CAAA,EAAA;;;MEpBU,eAAe,GAAG,IAAI,cAAc,CAA0B,iBAAiB,EAAE;AAC5F,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE,OAAO;AACtB,QAAA,KAAK,EAAE;KACR;AACF,CAAA;AAED,IAAI,iBAAiB,GAAG,CAAC;MA0BZ,oBAAoB,CAAA;AAwC/B,IAAA,WAAA,GAAA;AAvCiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAA+B,eAAe,yDAAC;AAEtE,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,OAAA,EAAU,EAAE,iBAAiB,EAAE;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAEnB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QAE/B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtC,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC3D,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,uDAAC;AAClG,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,SAAS,6DAAC;AAEjF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,GAAG,GAAG,EAAE;YACd,IAAI,IAAI,CAAC,KAAK,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,CAAC;YACpD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,QAAA,CAAU,CAAC;AACxD,YAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AACnD,QAAA,CAAC,2DAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;YACtC,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,gBAAA,OAAO,eAAe;YAChD,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,gBAAA,OAAO,OAAO;YAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;AACjD,QAAA,CAAC,iDAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACtC,gBAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC;YACtE;AACF,QAAA,CAAC,CAAC;IACJ;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE;QACf;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA,EAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,gBAAgB,CAAC,EAAwB,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACvE,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAC/D,IAAA,gBAAgB,CAAC,UAAmB,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAE7E,IAAA,KAAK,GAAA,EAAW,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;8GAxElD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,k/DAjBpB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC,0JCzCJ,wwCA4CM,EAAA,MAAA,EAAA,CAAA,mxDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDUO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxBhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,mBAGM,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,wBAAwB,EAAE,WAAW;AACrC,wBAAA,0BAA0B,EAAE,aAAa;AACzC,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,0BAA0B,EAAE,+BAA+B;AAC3D,wBAAA,gCAAgC,EAAE,iBAAiB;AACnD,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,wwCAAA,EAAA,MAAA,EAAA,CAAA,mxDAAA,CAAA,EAAA;qGAIwE,eAAe,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,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,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,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,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,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME/C7E,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAEvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;QACvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,SAA4B,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAC1C,SAAS,EAAE,CAAC,KAAsB,KAAI;AACpC,gBAAA,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3C,oBAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAA,4BAAA,CAA8B,CAAC;AACpF,oBAAA,OAAO,SAAS;gBAClB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;QACF,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAwB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,EACnC,SAAS,EAAE,CAAC,KAAmB,KAAI;AACjC,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAA,2BAAA,CAA6B,CAAC;AAChF,oBAAA,OAAO,QAAQ;gBACjB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;AACF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,YAAY,gDAAC;QAC1B,IAAA,CAAA,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACpB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,QAAQ,qDAAC;AACnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,4DAAC;QAE/B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,OAAO,GAAG,MAAM,EAAW;AAEV,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,SAAA,EAAY,EAAE,oBAAoB,CAAC,SAAS,EAAE;AAEvD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,QAAQ,GAAG,GAAG,QAAQ,CAAA,OAAA,CAAS,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,SAAS;AACpE,QAAA,CAAC,oDAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,QAAQ,GAAG,GAAG,QAAQ,CAAA,QAAA,CAAU,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU;AACtE,QAAA,CAAC,qDAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;AACtC,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,WAAW;AACnD,QAAA,CAAC,iDAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,cAAc,GAAG,EAAE;AACtD,QAAA,CAAC,0DAAC;AA2CH,IAAA;aA9FgB,IAAA,CAAA,SAAS,GAAG,CAAH,CAAK;IAqD7B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAG;AAC3B,gBAAA,MAAM,QAAQ,GAAG,CAAC,KAAK;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,MAAM,EAAE;gBACb;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACnB,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,KAAK,EAAE;gBACd;gBACA;;IAEN;8GA9FW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2qCCTjC,6qCA4CM,EAAA,MAAA,EAAA,CAAA,woFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDnCO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6qCAAA,EAAA,MAAA,EAAA,CAAA,woFAAA,CAAA,EAAA;;;MEepC,oBAAoB,CAAA;IAoCvB,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,MAAM;AAChC,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,WAAA,GAAA;AAzCQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,mBAAmB,GAAyC,IAAI;;AAGxE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA+C,SAAS,mDAAC;AACxE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,QAAQ,gDAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAoB,cAAc,qDAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,iDAAC;AACpC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,eAAe,iDAAC;QAC9B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGf,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAyB,IAAI,8DAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,4DAAC;;QAGrC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAmB;QACpC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;;QAGvB,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5C,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC3B,IAAI,CAAC,SAAS,EAAE,IAAI,sBAAsB,6DAC3C;QAED,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QASrC,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAiB,KAAI;AAC/C,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACnD,IAAI,CAAC,KAAK,EAAE;gBACd;YACF;AACF,QAAA,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;IAC9D;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,KAAK,EAAE,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;iBAAO;gBACL,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;QACF;IACF;AAEA,IAAA,UAAU,CAAC,IAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AAEF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,cAAc,EAAE;gBACvB;qBAAO;oBACL,IAAI,CAAC,aAAa,EAAE;gBACtB;gBACA;AAEF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,cAAc,EAAE;gBACvB;qBAAO;oBACL,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;gBACA;AAEF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBACjB,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,KAAK,EAAE;gBACd;gBACA;;IAEN;AAEA,IAAA,iBAAiB,CAAC,KAAoB,EAAE,IAAqB,EAAE,KAAa,EAAA;AAC1E,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACrB;AAEF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AAEF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,iBAAiB,EAAE;gBACxB;AAEF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AAEF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AAEF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE;gBACZ;AAEF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,KAAK,EAAE;gBACZ;;IAEN;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5C,QAAA,IAAI,SAAS,GAAG,YAAY,GAAG,CAAC;AAEhC,QAAA,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;AAC7D,YAAA,SAAS,EAAE;QACb;AAEA,QAAA,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE;YAC7B,SAAS,GAAG,CAAC;AACb,YAAA,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;AAC7D,gBAAA,SAAS,EAAE;YACb;QACF;AAEA,QAAA,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAClC;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5C,QAAA,IAAI,aAAa,GAAG,YAAY,GAAG,CAAC;QAEpC,OAAO,aAAa,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE;AAC3D,YAAA,aAAa,EAAE;QACjB;AAEA,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YAChC,OAAO,aAAa,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE;AAC3D,gBAAA,aAAa,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC;AACxC,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACtC;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE;AACrD,YAAA,KAAK,EAAE;QACT;AACA,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9B;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE;AAC3C,YAAA,KAAK,EAAE;QACT;AACA,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9B;IACF;AAEQ,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACpC,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACtD,CAAA,2BAAA,EAA8B,KAAK,CAAA,EAAA,CAAI,CACzB;YAChB,IAAI,EAAE,KAAK,EAAE;AACf,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;QACjE;IACF;8GAzPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,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,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,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBjC,ogEAmEM,EAAA,MAAA,EAAA,CAAA,qzIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ogEAAA,EAAA,MAAA,EAAA,CAAA,qzIAAA,CAAA,EAAA;;;AEW1C,MAAM,YAAY,GAAG;AAC1B,IAAA,YAAY,EAAE,0BAA0B;AACxC,IAAA,YAAY,EAAE;;;MCcH,iBAAiB,CAAA;aAKb,IAAA,CAAA,MAAM,GAAG,CAAH,CAAK;IA4DlB,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,OAAO;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;AACpC,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,WAAA,GAAA;AA1EiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAGvC,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,UAAA,EAAa,iBAAiB,CAAC,MAAM,EAAE,EAAE;AAEnD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AAE/B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,UAAU,mDAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,QAAQ,gDAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,qDAAC;AACvB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,MAAM,gDAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC;QACtC,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4B,IAAI,iDAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,IAAI,mDAAC;AAChD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAA4B,IAAI,gDAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoD,EAAE,uDAAC;QAC1E,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAqB;AAC7C,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,YAAY,EAAE;AACf,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEe,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAW,EAAE,qEAAC;AACxD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,kEAAC;AAC3B,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,iEAAC;QAE9C,IAAA,CAAA,aAAa,GAAkB,IAAI;QACnC,IAAA,CAAA,iBAAiB,GAAkB,IAAI;QAE/C,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;QAC3B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAU;QAEnC,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,CAAC,2DAAC;QACpG,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtE,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9C,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9D,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AAC9B,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,GAAG,UAAU;YACrD;AACA,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,yDAAC;QAEF,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC1F,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,GAAG,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEpH,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAmB/B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAS,KAAI,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAP1B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,aAAa;AAAE,gBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;YAC/D,IAAI,IAAI,CAAC,iBAAiB;AAAE,gBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACzE,QAAA,CAAC,CAAC;IACJ;AAKA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,EAAE;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,gBAAgB,CAAC,EAAuB,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtE,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAE/D,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,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;AAElB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;QACtC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE;AAC3E,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAC7B;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC1C,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B,CAAC,EAAE,GAAG,CAAC;IACT;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAAE;AAE7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC9C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAElD,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjF;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjF;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE;oBAC1D,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC;AAC1C,oBAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,wBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;oBACtC;gBACF;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC;;IAEN;AAEA,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC;IAEA,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C;IAEU,eAAe,GAAA;AACvB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;IACvE;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;QACpE,OAAO,EAAE,KAAK,EAAE;IAClB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IACd;AAEQ,IAAA,0BAA0B,CAAC,KAAa,EAAA;QAC9C,IAAI,IAAI,CAAC,iBAAiB;AAAE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC9C,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC;IAC5C;IAEQ,MAAM,iBAAiB,CAAC,KAAa,EAAA;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAEnC,QAAA,IAAI;YACF,IAAI,OAAO,GAAa,EAAE;AAC1B,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,gBAAA,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;YACjC;AAAO,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAClC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E;AAEA,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACjD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC;IACF;8GArNW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,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,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,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,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wCAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,SAAA,EAxBjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,iBAAiB;AAC9B,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BH,8+FAyGM,oqHDrFM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA2BX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA7B7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,CAAC,EAAA,SAAA,EAGZ;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,iBAAmB;AAC9B,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,WAAW;AAC5B,wBAAA,iBAAiB,EAAE,aAAa;AAChC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,wBAAwB,EAAE,eAAe;AACzC,wBAAA,sBAAsB,EAAE,sCAAsC;AAC9D,wBAAA,kBAAkB,EAAE,0BAA0B;AAC9C,wBAAA,gBAAgB,EAAE,wBAAwB;AAC3C,qBAAA,EAAA,QAAA,EAAA,8+FAAA,EAAA,MAAA,EAAA,CAAA,6mHAAA,CAAA,EAAA;;;ME7BU,cAAc,GAAG,IAAI,cAAc,CAAyB,gBAAgB,EAAE;AACzF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,QAAQ,EAAE,IAAI;KACf;AACF,CAAA;MAkBY,mBAAmB,CAAA;AA4B9B,IAAA,WAAA,GAAA;AA3BQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAA4B;AAC1D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEvC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAChE,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAU;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;QAChC,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,IAAI,CAAC,gBAAgB,EAAE,8CAAC;QAE3C,IAAA,CAAA,KAAK,GAAG,MAAM,EAAQ;QACtB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAkB,KAAK,4DAAC;QAEzC,IAAA,CAAA,WAAW,GAAyC,IAAI;QACxD,IAAA,CAAA,WAAW,GAAyC,IAAI;QACxD,IAAA,CAAA,cAAc,GAA0B,IAAI;AAEpD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,qDAAC;AAClD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,qDAAC;QAGhD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AAC5C,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB,IAAI,CAAC,cAAc,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC5D;IACF;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;QAEA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACnB,IAAI,CAAC,cAAc,EAAE;gBACvB;qBAAO;oBACL,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5C;AACA,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,YAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;QAEA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,YAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAC5D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAE5C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;QAEzC,MAAM,sBAAsB,GAAG,EAAE;AACjC,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE;AAEjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG;AACzB,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM;AAChD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI;AAC3B,QAAA,MAAM,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC,KAAK;QAE7C,IAAI,aAAa,GAAG,iBAAiB;QAErC,QAAQ,iBAAiB;AACvB,YAAA,KAAK,KAAK;gBACR,IAAI,QAAQ,GAAG,sBAAsB,GAAG,MAAM,IAAI,WAAW,GAAG,QAAQ,EAAE;oBACxE,aAAa,GAAG,QAAQ;gBAC1B;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,WAAW,GAAG,sBAAsB,GAAG,MAAM,IAAI,QAAQ,GAAG,WAAW,EAAE;oBAC3E,aAAa,GAAG,KAAK;gBACvB;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,SAAS,GAAG,qBAAqB,GAAG,MAAM,IAAI,UAAU,GAAG,SAAS,EAAE;oBACxE,aAAa,GAAG,OAAO;gBACzB;gBACA;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,UAAU,GAAG,qBAAqB,GAAG,MAAM,IAAI,SAAS,GAAG,UAAU,EAAE;oBACzE,aAAa,GAAG,MAAM;gBACxB;gBACA;;AAGJ,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACjE;8GA/JW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,w+CC3ChC,4tBAyBA,EAAA,MAAA,EAAA,CAAA,kvFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDkBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,WACd,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,kBAAkB,EAAE,iBAAiB;AACrC,wBAAA,iBAAiB,EAAE,gBAAgB;AACnC,wBAAA,kBAAkB,EAAE,YAAY;AACjC,qBAAA,EAAA,QAAA,EAAA,4tBAAA,EAAA,MAAA,EAAA,CAAA,kvFAAA,CAAA,EAAA;;;ME7BU,gBAAgB,CAAA;AA0B3B,IAAA,WAAA,GAAA;AAxBA,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,UAAU,gDAAC;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,SAAS,mDAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;QAC1B,IAAA,CAAA,UAAU,GAAG,KAAK,CAAyB;AACzC,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,QAAQ,EAAE;AACX,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAgB,EAAE,iDAAC;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAW,EAAE,2DAAC;QAErC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAe;QACjC,IAAA,CAAA,aAAa,GAAG,MAAM,EAA4C;AAExD,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,4DAAC;QAE5E,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,uDAAC;QAG1E,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,WAAW;QACxC,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,aAAa;AAC5C,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;IAEA,UAAU,CAAC,IAAiB,EAAE,KAAa,EAAA;QACzC,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,KAAK,EAAE,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC7C;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC;IACF;AAEA,IAAA,UAAU,CAAC,IAAiB,EAAA;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE;AAEA,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD;IACF;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;QAC/D;IACF;AAEA,IAAA,mBAAmB,CAAC,MAAc,EAAA;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;QAC/D;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD;IACF;IAEA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;IAClC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B;AAEQ,IAAA,0BAA0B,CAAC,KAAoB,EAAA;QACrD,MAAM,GAAG,GAAa,EAAE;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D;QACF;AACA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,YAAY,CAAC,IAAiB,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAA,CAAA,CAAG;QACrD;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAA,CAAA,CAAG;QACpD;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAE,IAAiB,EAAE,KAAa,EAAA;QAClE,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B;AAEF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBACzB;AAEF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC7B;AAEF,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACnD,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC9B;gBACA;AAEF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBAClD,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC9B;gBACA;AAEF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AAEF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AAEF,YAAA,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;oBAC3C,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,cAAc,EAAE;gBACvB;gBACA;;IAEN;AAEQ,IAAA,aAAa,CAAC,YAAoB,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;IACrC;AAEQ,IAAA,iBAAiB,CAAC,YAAoB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC1C;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7B;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD;IAEQ,gBAAgB,CAAC,KAAa,EAAE,SAAiB,EAAA;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1B;AAAO,aAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YAChC,KAAK,GAAG,CAAC;QACX;AAEA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC3C,UAAU,CAAC,MAAK;AACd,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,oBAAA,EAAuB,IAAI,CAAC,EAAE,CAAA,EAAA,CAAI,CAAgB;gBACtF,IAAI,EAAE,KAAK,EAAE;AACf,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS;AACnC,YAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;YAC7C;QACF;IACF;8GArNW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,4yRAgNM,EAAA,MAAA,EAAA,CAAA,+3IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzMM,YAAY,+BAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4yRAAA,EAAA,MAAA,EAAA,CAAA,+3IAAA,CAAA,EAAA;;;AEejD;;;;;;;;;;;;;;;;AAgBG;MACU,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,OAAO;AACrB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE;KACd;AACF,CAAA;AAED;;;;;AAKG;MAIU,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,wDAAC;AAErD;;AAEG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,6DAAC;AA+CtE,IAAA;AA7CC;;AAEG;IACH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;IAC/D;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAG;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACd,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAG;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACjB,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACpC;8GArDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;AAyDD;;;;;;;;;;;;;;;;;;;AAmBG;MAQU,iBAAiB,CAAA;AAyJ5B,IAAA,WAAA,GAAA;AAxJiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;QACjD,IAAA,CAAA,qBAAqB,GAAuB,IAAI;QAEhD,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;QAC9B,IAAA,CAAA,gBAAgB,GAAG,GAAG;AAEvC;;AAEG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AAEnB;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAErD;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEhD;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5D;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElD;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,aAAa,iDAAC;AAE5B;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEzD;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3D;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;;;;;;;AAQG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,sDAAC;AAEtB;;;;;;;;AAQG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,EAAE,yDAAC;AAEzB;;AAEG;QACH,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEvB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;AAE1B;;AAEG;AACc,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAa,aAAa,wDAAC;AAEvE;;AAEG;AACc,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAa,eAAe,yDAAC;AAEvE;;AAEG;AACc,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAI;AACxD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACjE,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC;AAED;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAoB,KAAI;YAC3D,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACtC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7B;AACF,QAAA,CAAC;AAED;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,2DAAC;AAEvD;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,QAAQ,iDAAC;AAEvD;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,OAAA,CAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;AAEG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,YAAA,CAAc,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElE;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAGpD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE;YACpB;iBAAO;gBACL,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEA;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAA4B;QAClE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACpE;IACF;AAEA;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE;YAClD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;QACxD;IACF;AAEA;;AAEG;IACK,oBAAoB,GAAA;QAC1B,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YAC7D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;QAC3D;IACF;AAEA;;AAEG;IACK,iBAAiB,GAAA;QACvB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC7D;AAEA;;AAEG;IACK,oBAAoB,GAAA;QAC1B,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAChE;AAEA;;AAEG;IACK,iBAAiB,GAAA;QACvB,UAAU,CAAC,MAAK;YACd,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,YAAY;gBAAE;YAEnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;AACjE,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;YACzC,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,KAAK,EAAE;YACtB;QACF,CAAC,EAAE,GAAG,CAAC;IACT;AAEA;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,KAAK,UAAU,EAAE;YACxF,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE;YACrC,CAAC,EAAE,GAAG,CAAC;QACT;IACF;AAEA;;AAEG;AACK,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,YAAY;YAAE;QAEnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;AACjE,QAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE;AAEpC,QAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW;YAAE;AAEnC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa;AAE5C,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,aAAa,KAAK,YAAY,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE;gBACtB,WAAW,CAAC,KAAK,EAAE;YACrB;QACF;aAAO;AACL,YAAA,IAAI,aAAa,KAAK,WAAW,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE;gBACtB,YAAY,CAAC,KAAK,EAAE;YACtB;QACF;IACF;AAEA;;AAEG;AACK,IAAA,oBAAoB,CAAC,SAAsB,EAAA;AACjD,QAAA,MAAM,QAAQ,GAAG;YACf,wBAAwB;YACxB,QAAQ;YACR,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,iCAAiC;AAClC,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC;QAEZ,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAc,QAAQ,CAAC;aAChE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;IAC3C;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAEA;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;AAEA;;;AAGG;AACH,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;YAClE,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA;;;AAGG;IACK,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAE5D,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE;YACzE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW;AAC/E,YAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,mBAAmB,EACnB,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CACtB;QACH;QACA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;IAC3C;AAEA;;AAEG;IACK,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;QAC5D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;IAC9C;AAEA;;AAEG;IACK,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;QACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChE,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC;AAChE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;AAEA;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjF,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC/B;IACF;AAEA;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,mBAAmB,EAAE;IAC5B;8GAxYW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECpJ9B,4/EA8EA,EAAA,MAAA,EAAA,CAAA,yyHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDiEY,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4/EAAA,EAAA,MAAA,EAAA,CAAA,yyHAAA,CAAA,EAAA;AAyGU,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,aAAa,uEAKf,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MElP3D,iBAAiB,GAAG,IAAI,cAAc,CAA4B,mBAAmB,EAAE;AAClG,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,eAAe,EAAE,CAAC;AAClB,QAAA,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;KACpC;AACF,CAAA;MASY,sBAAsB,CAAA;aAElB,IAAA,CAAA,SAAS,GAAG,CAAH,CAAK;AAO7B,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,EAAE,sBAAsB,CAAC,SAAS,EAAE;AAE9E,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;AACtB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;AACrB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,EAAE,wDAAC;AA+Bf,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAA0B,iDAClE,SAAS,EAAE,CAAC,KAAqB,KAAoB;AACnD,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAA,2BAAA,CAA6B,CAAC;AAClF,oBAAA,OAAO,QAAQ;gBACjB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAA8B,oDAC5E,SAAS,EAAE,CAAC,KAAwB,KAAuB;AACzD,gBAAA,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3C,oBAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,KAAK,CAAA,4BAAA,CAA8B,CAAC;AACtF,oBAAA,OAAO,SAAS;gBAClB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;QACO,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxD,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC/D,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,+DAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,OAAO,sDAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU,yDAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,OAAO,sDAAC;AAC3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,6DAAC;QAC3C,IAAA,CAAA,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACpB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,uBAAuB,qDAAC;QAE3D,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAU;QACrC,IAAA,CAAA,eAAe,GAAG,MAAM,EAAsC;AAE3C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAClC,QAAA,CAAC,wDAAC;AAEiB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACvC,MAAM,KAAK,GAAa,EAAE;AAC1B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC1D,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC;YACzD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YAEzE,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE;AAC5C,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACvD;AAEA,YAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACf;AAEA,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,iDAAC;QAEiB,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,qDAAC;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,yDAAC;AACtD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,uDAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,sDAAC;AAErE,QAAA,IAAA,CAAA,uBAAuB,GAAG,QAAQ,CAAC,MAAK;YACzD,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE;AAC9D,QAAA,CAAC,mEAAC;QAhGA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,OAAO,CAAC,IAAI,CAAC,wCAAwC,KAAK,CAAA,eAAA,CAAiB,CAAC;AAC5E,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC5C,gBAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAA,eAAA,CAAiB,CAAC;AAC/E,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB;iBAAO,IAAI,OAAO,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE;gBACxC,OAAO,CAAC,IAAI,CAAC,CAAA,8BAAA,EAAiC,OAAO,CAAA,sBAAA,EAAyB,KAAK,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAAC;AAC5G,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;AACzC,YAAA,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAClD,gBAAA,OAAO,CAAC,IAAI,CAAC,6CAA6C,UAAU,CAAA,eAAA,CAAiB,CAAC;YACxF;AACF,QAAA,CAAC,CAAC;IACJ;IAwEQ,QAAQ,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;AAAE,YAAA,OAAO,OAAO;QAC5C,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,MAAM;AAC3D,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACzE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B;aAAO,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE;AAC/C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,QAAQ,IAAI,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,EAAE,CAAA,CAAA;AAC9D,aAAA,CAAC;QACJ;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClB;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAY,EAAA;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAE,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;gBACvB;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;gBACnB;;IAEN;8GA3KW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,WAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCnC,swFAmGM,EAAA,MAAA,EAAA,CAAA,wjIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvEM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,swFAAA,EAAA,MAAA,EAAA,CAAA,wjIAAA,CAAA,EAAA;;;ME5BpC,kBAAkB,GAAG,IAAI,cAAc,CAA6B,oBAAoB,EAAE;AACrG,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAkBY,uBAAuB,CAAA;AA+ClC,IAAA,WAAA,GAAA;AA9CQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;;QAG3C,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrC,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;QAGnC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrE,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC3D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACvB,IAAA,CAAA,aAAa,GAAG,KAAK,CAA2B,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnF,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAG3B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAU;;AAGnC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;YACzB,IAAI,MAAM,IAAI,CAAC;AAAE,gBAAA,OAAO,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC;AACzD,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,2DAAC;QACjE,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,qDAAC;AACnF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,sDAAC;AAEvD,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;YACpC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,YAAY;YACrC;YACA,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA,CAAA,CAAG;AAC5C,QAAA,CAAC,iEAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,YAAY;YACrC;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG;AAC5D,QAAA,CAAC,wDAAC;AAGA,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,YAAY,GAAG,KAAK;QAExB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;YAEzB,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE;AAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBACrB,YAAY,GAAG,IAAI;YACrB;AAEA,YAAA,IAAI,GAAG,GAAG,MAAM,EAAE;gBAChB,YAAY,GAAG,KAAK;YACtB;YAEA,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,IAAI,UAAU,IAAI,SAAS,IAAI,iBAAiB,GAAG,SAAS,EAAE;AAC5D,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrC,iBAAiB,GAAG,SAAS;gBAC/B;YACF;AAEA,YAAA,IAAI,UAAU,GAAG,EAAE,EAAE;gBACnB,iBAAiB,GAAG,CAAC,CAAC;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;8GA7EW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,0mDC/BpC,qjBAmBM,EAAA,MAAA,EAAA,CAAA,unEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDYO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,mBAAmB,EAAE,QAAQ;AAC7B,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,QAAA,EAAA,qjBAAA,EAAA,MAAA,EAAA,CAAA,unEAAA,CAAA,EAAA;;;MEZU,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAEY,YAAY,GAAG,IAAI,cAAc,CAA2B,cAAc,EAAE;AACvF,IAAA,OAAO,EAAE,MAAM;AAChB,CAAA;AAED;;AAEG;AACH,IAAI,cAAc,GAAG,CAAC;MAiBT,iBAAiB,CAAA;AAS5B,IAAA,IAAsB,YAAY,CAAC,CAAU,EAAA,EAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAGtE,IAAA,IAAuB,aAAa,CAAC,CAAU,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAqDzE,IAAA,WAAA,GAAA;AAhEQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,MAAA,EAAS,EAAE,cAAc,EAAE;;;;QAK9C,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAG9C,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAGhD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG/C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;AACnB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;QAChB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGrE,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAM,aAAa,qDAAC;AAC1C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,+DAAC;;AAGnC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;QACtD,IAAA,CAAA,WAAW,GAAG,MAAM,EAAO;;AAG3B,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,wDAAC;QAEhE,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAE/B,YAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,GAAG,SAAS,GAAG,OAAO;AACzD,QAAA,CAAC,6DAAC;QAEF,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACxB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,GAAG,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpD;QAED,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,QAAA,CAAU,GAAG,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxD;AAED,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,GAAG,GAAa,EAAE;YACxB,IAAI,IAAI,CAAC,cAAc,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAG,CAAC;YAC3D,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAG,CAAC;AAC/D,YAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AACnD,QAAA,CAAC,2DAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACrE,gBAAA,OAAO,CAAC,IAAI,CACV,0GAA0G,CAC3G;YACH;AACF,QAAA,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAClC;IAEQ,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,OAAO;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;IACjD;AAEA,IAAA,sBAAsB,CAAC,UAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1C;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC;QACF;IACF;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAO,KAAK,CAAC,GAAG;AACd,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AACF,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB;;IAEN;IAEQ,cAAc,GAAA;;;IAGtB;IAEQ,kBAAkB,GAAA;;;IAG1B;8GAhIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,46DCnD9B,8wCA6CM,EAAA,MAAA,EAAA,CAAA,u4EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDMO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,wBAAwB,EAAE,YAAY;AACtC,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,8wCAAA,EAAA,MAAA,EAAA,CAAA,u4EAAA,CAAA,EAAA;;sBAWA,KAAK;uBAAC,SAAS;;sBAGf,KAAK;uBAAC,UAAU;o4BAeqB,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA;sBAIlD;;sBACA;;;MExCU,kBAAkB,CAAA;AA8E7B,IAAA,WAAA,GAAA;AA7EiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAE7E,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,IAAI,iDAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAG/B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,gDAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAEvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA6C,EAAE,mDAAC;AAC/D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,yBAAyB,uDAAC;AACtD,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,0BAA0B,+DAAC;AAC/D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4B,SAAS,iDAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAC;QAC/D,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe;AACjC,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,SAAS,EAAE;AACZ,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,EAAE,4DAAC;AAC7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,6DAAC;QAElD,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU,CAAC;QAC5B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAE1B,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5C,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,SAAS,iDAAC;AAEzF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YACjC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAE1D,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,EAAE;AACtF,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1E;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAClD,gBAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,IACxC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CACzD;AACD,gBAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACjG;YAEA,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,YAAiB,CAAC,CAAC;AAC7F,YAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AACvD,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE;AAClD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI;AAEtB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AACpB,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;oBAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9E,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;gBACnE;AACA,gBAAA,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI;AAC5D,YAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAsD,GAAG,KAAK,IAAI,CAAC;AACnF,QAAA,CAAC,2DAAC;AAgBM,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAd1B,QAAA,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAI;AACzC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC1E,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACtF;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;AAKA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAuB,CAAC;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,gBAAgB,CAAC,EAAO,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtD,iBAAiB,CAAC,EAAO,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AACxD,IAAA,gBAAgB,CAAC,UAAmB,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7E,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACzD;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;AAEA,IAAA,MAAM,CAAC,MAAuB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ;YAAE;AAExC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,KAAK,EAAU,CAAC,GAAG,EAAE;YAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1B;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;aAAO;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE;QACd;QACA,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,KAAK,CAAC,KAAiB,EAAA;QACrB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,IAAI,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAqB;AACtC,QAAA,IAAI,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,YAAY,EAAE;AACtD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB;IACF;AAEU,IAAA,aAAa,CAAC,IAA4C,EAAA;QAClE,OAAO,SAAS,IAAI,IAAI;IAC1B;AAEU,IAAA,YAAY,CAAC,IAA4C,EAAA;QACjE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,CAAC,KAAK,CAAA,CAAE;IACzE;AAEU,IAAA,UAAU,CAAC,MAAuB,EAAA;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D;AACA,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,GAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;IACnE;IAEU,QAAQ,GAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAChE,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;IAC1C;AAEQ,IAAA,cAAc,CAAC,OAAmD,EAAA;AACxE,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,EAAuB,CAAC;IAClI;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE;IACzE;8GAzLW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAnBlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,05EAsIM,EAAA,MAAA,EAAA,CAAA,ktFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjHM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAsBxB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,SAAA,EAGzB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,kBAAoB;AAC/B,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,2BAA2B,EAAE,aAAa;AAC1C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,yBAAyB,EAAE,YAAY;AACvC,wBAAA,wBAAwB,EAAE,WAAW;AACrC,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,05EAAA,EAAA,MAAA,EAAA,CAAA,ktFAAA,CAAA,EAAA;;;MEvBU,cAAc,GAAG,IAAI,cAAc,CAAyB,gBAAgB,EAAE;AACzF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAiBY,mBAAmB,CAAA;IA0CtB,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,QAAQ;QACpC,IAAI,IAAI,CAAC,IAAI,EAAE;AAAE,YAAA,OAAO,MAAM;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,WAAA,GAAA;AA/CiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAA,CAAA,wBAAwB,GAAuB,IAAI;QACnD,IAAA,CAAA,cAAc,GAA0B,IAAI;QAC5C,IAAA,CAAA,iBAAiB,GAA8C,IAAI;AAE3E,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;QACnB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjE,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnD,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,oBAAoB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrE,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEjE,IAAA,CAAA,MAAM,GAAG,MAAM,EAAW;QAC1B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,eAAe,GAAG,MAAM,EAAW;AAElB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;QACrC,IAAA,CAAA,iBAAiB,GAAmB,IAAI;QAEhD,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9C,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzE,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEtB,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAI;AACxD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,SAAS,EAAE;gBACxF,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC;AAEgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAoB,KAAI;AAC3D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;AACF,QAAA,CAAC;QASC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;YAE/B,IAAI,OAAO,KAAK,IAAI;gBAAE;AAEtB,YAAA,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;YACtB;AAAO,iBAAA,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE;gBAC7B,IAAI,CAAC,cAAc,EAAE;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEzC,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,YAAA,EAAe,UAAU,CAAA,CAAA,CAAG,CAAC;QACrE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAElD,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAsB,KAAI;YAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,QAAA,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACxE;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACzE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,aAA4B;QACrE,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,qBAAqB,CAAC,MAAK;AACzB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAChE,0EAA0E,CAC5D;gBAChB,IAAI,cAAc,EAAE;oBAClB,cAAc,CAAC,KAAK,EAAE;gBACxB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEzC,IAAI,CAAC,oBAAoB,EAAE;AAE3B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;QACvC;QAEA,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QACzC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC7D;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QACzC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAChE;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB;IACF;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEQ,IAAA,SAAS,CAAC,KAAoB,EAAA;AACpC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CACtE,0EAA0E,CAC3E;AAED,QAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE;AAEpC,QAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAgB;QAC1D,MAAM,aAAa,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAgB;AAEpF,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa;YAAE;AAEvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,cAAc,EAAE;gBAC7C,KAAK,CAAC,cAAc,EAAE;gBACtB,aAAa,CAAC,KAAK,EAAE;YACvB;QACF;aAAO;AACL,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,aAAa,EAAE;gBAC5C,KAAK,CAAC,cAAc,EAAE;gBACtB,cAAc,CAAC,KAAK,EAAE;YACxB;QACF;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;IACtC;8GAhMW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,2CAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9ChC,wjBAqBC,EAAA,MAAA,EAAA,CAAA,miDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYW,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAaX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,CAAC,mBAGN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,MAAM,EAAE,eAAe;AACvB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,oBAAoB,EAAE,SAAS;AAC/B,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,mBAAmB,EAAE,yCAAyC;AAC9D,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,wjBAAA,EAAA,MAAA,EAAA,CAAA,miDAAA,CAAA,EAAA;;;MEzCU,iBAAiB,GAAG,IAAI,cAAc,CAA4B,mBAAmB,EAAE;AAClG,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE;KACR;AACF,CAAA;MAmBY,sBAAsB,CAAA;AAYjC,IAAA,WAAA,GAAA;AAXQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAE1C,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnE,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC1D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,qBAAqB,qDAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAyB,QAAQ,oDAAC;AAElD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;QAG1B,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC;gBACxE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAEzC,gBAAA,MAAM,OAAO,GAAG,CAAC,CAAsB,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5E,gBAAA,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;YAChD;AACF,QAAA,CAAC,CAAC;IACJ;8GAtBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6mCC5BnC,qkBAuBA,EAAA,MAAA,EAAA,CAAA,wgHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDKa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE,WAAW;AAChC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,uBAAuB,EAAE,gBAAgB;AAC1C,qBAAA,EAAA,QAAA,EAAA,qkBAAA,EAAA,MAAA,EAAA,CAAA,wgHAAA,CAAA,EAAA;;;MELU,gBAAgB,CAAA;AAd7B,IAAA,WAAA,GAAA;AAeE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;QAChC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC1B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACzB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEjB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAShD,IAAA;AAPC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;8GAvBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,u9CAZjB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAYf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,gBAAgB,EAAE,YAAY;AAC9B,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,wBAAwB,EAAE,mBAAmB;AAC7C,wBAAA,WAAW,EAAE,oBAAoB;AACjC,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;ACJD,MAAM,mBAAmB,GAAsB;AAC7C,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,QAAQ,EAAE;CACX;MAEY,cAAc,GAAG,IAAI,cAAc,CAAyB,gBAAgB,EAAE;AACzF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE;KACb;AACF,CAAA;MAeY,mBAAmB,CAAA;AA2C9B,IAAA,WAAA,GAAA;AA1CQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAEvC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;QACrB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjE,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAE1C,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;QACvC,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4D;QAEpF,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;AAElC,QAAA,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,gBAAgB,0DAAC;AAElD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;AACxD,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC,iDAAC;AAEJ,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,mBAAmB,+DACnE;AAED,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,uDAAC;QACrD,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,sDAAC;AAC1E,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAClB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG;AACpB,cAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI;cAClD,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACN;QACD,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACxB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnD;QAGC,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE;AAE7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC;AAClC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C;IACF;IAEA,MAAM,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC7C,YAAA,MAAM,QAAQ,GAAG,CAAA,oBAAA,EAAuB,KAAK,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC;QACF;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC5C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI;AACF,gBAAA,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC/E,IAAI,CAAC,SAAS,EAAE;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,0BAAA,CAA4B,CAAC;oBACjH;gBACF;YACF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,mCAAmC;AAC7F,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC;YACF;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,KAAK,CAAA,sCAAA,CAAwC,CAAC;YAChG;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QACvC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE,SAAS,EAAE;AAC/C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB;IACF;IAEA,SAAS,GAAA;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;AACvC,QAAA,OAAO,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IAC3E;IAEA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IAC9B;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,EAAE,QAAQ;AAAE,YAAA,OAAO,KAAK;QAEhC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,KAAK,CAAC,CAAC,EAAE,KAAK;AACd,aAAA,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACjD;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAChC,QAAA,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;IACvD;IAEA,gBAAgB,CAAC,IAAgB,EAAE,KAAa,EAAA;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;AAClC,YAAA,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM;gBAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC/B,MAAM,CAAC,UAAU;AAC/B,QAAA,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAA,GAAA,EAAM,MAAM,EAAE;IACjE;IAEA,kBAAkB,CAAC,IAAgB,EAAE,KAAa,EAAA;QAChD,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE;QACvC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;QAC3C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;AAC3C,QAAA,OAAO,IAAI;IACb;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;IACF;IAEA,aAAa,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC/C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC3B;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB,IAAI,CAAC,IAAI,EAAE;gBACb;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,QAAQ,EAAE;gBACjB;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClB;gBACA;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC;AACzC,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC1B;gBACA;;IAEN;8GA/MW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAcG,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DnD,64EAkEA,EAAA,MAAA,EAAA,CAAA,ynJAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDrBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,2BAA2B,EAAE,MAAM;AACnC,wBAAA,kBAAkB,EAAE,0BAA0B;AAC9C,wBAAA,kBAAkB,EAAE,0BAA0B;AAC9C,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,64EAAA,EAAA,MAAA,EAAA,CAAA,ynJAAA,CAAA,EAAA;s1BAgBgC,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5CtC,aAAa,GAAG,IAAI,cAAc,CAAwB,eAAe,EAAE;AACtF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAmBY,kBAAkB,CAAA;AAjB/B,IAAA,WAAA,GAAA;AAkBU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,OAAA,EAAU,MAAM,CAAC,UAAU,EAAE,EAAE;AAE1C,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,aAAa,uDAAC;AAEpE,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAc,KAAI,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAEnB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACxD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QAEtB,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7E,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;QACnB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,QAAA,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,8CAAC;AAEjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAE/B,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,6DAAC;QACF,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ,GAAG,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpE,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,GAAG,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC1E,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9D,YAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC9C,QAAA,CAAC,uDAAC;AAwCH,IAAA;IAtCC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;IAClC;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,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,QAAA,IAAI,EAAE,EAAE,aAAa,EAAE;AACrB,YAAA,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1B;IACF;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,QAAA,IAAI,EAAE,EAAE,aAAa,EAAE;AACrB,YAAA,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE;QACzB;IACF;8GA7EW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,syDAZlB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC,sJClCJ,sxCA6CM,EAAA,MAAA,EAAA,CAAA,8gGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDHO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,aACpC,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,kBAAoB;AAC/B,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,YAAY;AACvC,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,wBAAwB,EAAE;AAC3B,qBAAA,EAAA,QAAA,EAAA,sxCAAA,EAAA,MAAA,EAAA,CAAA,8gGAAA,CAAA,EAAA;yEAM6D,aAAa,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,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,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,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,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,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,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,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnC7E;;AAEG;MACU,cAAc,GAAG,IAAI,cAAc,CAAwB,gBAAgB,EAAE;AACxF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE;KACX;AACF,CAAA;MAeY,kBAAkB,CAAA;AAZ/B,IAAA,WAAA,GAAA;AAaU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;;QAGvC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpE,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;;AAGtB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAgB;;QAGtC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAqB;AAuBxC,IAAA;AArBC,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AACxC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QAEjC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,aAAa,KAAK,KAAK;AACvB,YAAA,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,KAAK,CAAC,MAAM;AACrB,YAAA,CAAC,YAAY;YACb,YAAY,CAAC,QAAQ,EAAE;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,KAAK;AACL,YAAA,IAAI,EAAE,YAAY;YAClB;AACD,SAAA,CAAC;IACJ;8GAnCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,uiCCnC/B,yvBAsBM,EAAA,MAAA,EAAA,CAAA,0nEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDaO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,sBAAsB;AACrC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,yvBAAA,EAAA,MAAA,EAAA,CAAA,0nEAAA,CAAA,EAAA;;;ME5BU,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,gBAAgB,EAAE,kBAAkB;AACpC,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,SAAS,EAAE;KACZ;AACF,CAAA;MAaY,iBAAiB,CAAA;AAX9B,IAAA,WAAA,GAAA;AAYU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAErC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,IAAI,GAAG,KAAK,CAA+B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACjD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAgB,EAAE,mDAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,EAAE,gDAAC;QAC5B,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,mBAAmB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7E,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpF,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,IAAI,0BAA0B,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAClG,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEvD,IAAA,CAAA,UAAU,GAAG,MAAM,EAAa;QAChC,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAU;QACrC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAsB;AAE/B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAwB,SAAS,6DAAC;AAC3D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,EAAE,4DAAC;QAEtC,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACnC,OAAO,IAAI,CAAC,UAAU;kBAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,EAAE,CAAA,CAAA;AAClD,kBAAE,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,gEAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,OAAO;AACpD,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,iDAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC3B,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAE7B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD;AAEA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;YAC/B,IAAI,IAAI,EAAE;gBACR,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;YACtC;AAEA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,wDAAC;AA8EH,IAAA;AA5EC;;AAEG;IACK,QAAQ,CAAC,IAAgB,EAAE,IAAe,EAAA;AAChD,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;;AAG/D,YAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,gBAAA,OAAO,IAAI,CAAC,SAAS,KAAK;sBACtB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;sBAClB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;YACzB;;AAGA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAC/D,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAE/D,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5B,gBAAA,OAAO,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC;iBAAO;AACL,gBAAA,OAAO,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,UAAU,CAAC,IAAgB,EAAE,UAAkB,EAAA;AACrD,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;AAE5B,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE;AACrC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAG;YACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;AAClC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;AACjE,gBAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;IAChE;AAEA,IAAA,UAAU,CAAC,MAAmB,EAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE;AAEtB,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,MAAM,CAAC;AAC1E,cAAE;cACA,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,KAAK;AAClC,kBAAE;kBACA,KAAK;QAEX,MAAM,IAAI,GAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE;AACtD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEA,IAAA,cAAc,CAAC,GAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;IACzC;AAEA;;AAEG;IACO,YAAY,CAAC,GAAa,EAAE,MAAmB,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;IAC5D;8GAnIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,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,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,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,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,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,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClC9B,ksGAgGM,EAAA,MAAA,EAAA,CAAA,07FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvEM,gBAAgB,oJAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,aAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FASlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAG7B,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,WAAW;AACpB,wBAAA,oBAAoB,EAAE;AACvB,qBAAA,EAAA,QAAA,EAAA,ksGAAA,EAAA,MAAA,EAAA,CAAA,07FAAA,CAAA,EAAA;;;MEXU,eAAe,CAAA;AAb5B,IAAA,WAAA,GAAA;AAcE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;QACjC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEnB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAmBhD,IAAA;AAjBC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5B;IAEA,SAAS,GAAA;QACP,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;IACH;8GA5BW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4yBAXhB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAWf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,gBAAgB,EAAE,YAAY;AAC9B,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,WAAW,EAAE,oBAAoB;AACjC,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;MCLY,WAAW,GAAG,IAAI,cAAc,CAAsB,aAAa,EAAE;AAChF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,QAAQ,EAAE;KACX;AACF,CAAA;MAaY,gBAAgB,CAAA;AAuC3B,IAAA,WAAA,GAAA;AAtCQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QAEpC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,gDAAC;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA4B,YAAY,2DAAC;QAEhE,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEjD,QAAA,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,eAAe,yDAAC;AAEhD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,gBAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3C;AACA,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,gEAAC;QAEtE,IAAA,CAAA,iBAAiB,GAAG,MAAM,EAAU;QACpC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAkB;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC;AAChC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAE9B,IAAI,IAAI,KAAK,QAAQ;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAA,CAAE,CAAC;AACnD,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAA,CAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,uDAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAC1B,gBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnB,gBAAA,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,YAAY,CAAC;AACvC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAClD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,aAAa,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC/C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,EAAE;gBAClB;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE;gBACjB;;IAEN;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ;YAAE;AAE1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AACxC,QAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAClE;IACF;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;AAEtD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YACpE,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;QAC3C;AAEA,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;AAEpE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpE,YAAA,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QACzD;AAEA,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,UAAU,GAAG,CAAC;AAElB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,YAAA,UAAU,EAAE;QACd;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpE,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC5B;IACF;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE;AACjD,YAAA,SAAS,EAAE;QACb;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AAClE,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3B;IACF;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjD;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;IACpC;8GAzJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAYK,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CjD,2jDAkDA,EAAA,MAAA,EAAA,CAAA,4tGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDfa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,2jDAAA,EAAA,MAAA,EAAA,CAAA,4tGAAA,CAAA,EAAA;q1BAc+B,eAAe,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5CpC,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,eAAe,EAAE;KAClB;AACF,CAAA;;MCLY,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,EAAE,mDAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAgB,WAAW,qDAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAkDhD,IAAA;AAhDC,IAAA,IAAI,CAAC,KAAwB,EAAA;AAC3B,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;AAC9B,QAAA,MAAM,QAAQ,GAAU;AACtB,YAAA,GAAG,KAAK;YACR,EAAE;AACF,YAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI;SACrD;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAG;AAC3B,YAAA,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC;AACjC,YAAA,OAAO,aAAa,CAAC,MAAM,IAAI,SAAS,EAAE;gBACxC,aAAa,CAAC,KAAK,EAAE;YACvB;AACA,YAAA,OAAO,CAAC,GAAG,aAAa,EAAE,QAAQ,CAAC;AACrC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE;IAEA,IAAI,CAAC,OAAe,EAAE,OAAyD,EAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IACzD;IAEA,OAAO,CAAC,OAAe,EAAE,OAAyD,EAAA;AAChF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5D;IAEA,OAAO,CAAC,OAAe,EAAE,OAAyD,EAAA;AAChF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5D;IAEA,KAAK,CAAC,OAAe,EAAE,OAAyD,EAAA;AAC9E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3D;IAEA,MAAM,CAAC,OAAe,EAAE,OAAyD,EAAA;AAC/E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3D;AAEA,IAAA,WAAW,CAAC,QAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B;8GAvDW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;AA2DD;AACO,MAAM,YAAY,GAAG;;AChE5B;AACO,MAAM,cAAc,GAAG;;MCWjB,iBAAiB,CAAA;AAU5B,IAAA,WAAA,GAAA;AATQ,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAkB;AACtC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAU;AAEpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ;QAG5C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AAEnC,YAAA,aAAa,CAAC,OAAO,CAAC,KAAK,IAAG;AAC5B,gBAAA,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACrD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAEpC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;wBACxC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC;oBAChD;gBACF;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;AACzF,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAG;gBAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,SAAS,EAAE,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC;IACF;AAEA,IAAA,aAAa,CAAC,EAAsB,EAAA;QAClC,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YAClD,IAAI,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC1C;QACF;IACF;AAEA,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,MAAM,KAAK,GAA8B;AACvC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE;SACT;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM;IAC9B;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE;YACvC,OAAO,KAAK,CAAC,eAAe;QAC9B;AACA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,KAAK;IAC9C;AAEA,IAAA,uBAAuB,CAAC,KAAY,EAAA;QAClC,OAAO,KAAK,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,oBAAoB;IAC/F;IAEQ,eAAe,CAAC,EAAU,EAAE,QAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,CAAC,EAAE,QAAQ,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACpC;AAEQ,IAAA,YAAY,CAAC,EAAU,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;AAClC,YAAA,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;AAChC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;IAChC;8GA3GW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,8ICd9B,qlCAuCA,EAAA,MAAA,EAAA,CAAA,4+GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDzBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,2BAA2B,EAAE;AAC9B,qBAAA,EAAA,QAAA,EAAA,qlCAAA,EAAA,MAAA,EAAA,CAAA,4+GAAA,CAAA,EAAA;;;AERH;AACA,MAAM,iBAAiB,GAAG,wBAAwB;MAWrC,uBAAuB,GAAG,IAAI,cAAc,CAAwB,yBAAyB;AAE1G,MAAM,mBAAmB,GAAG;AAC1B,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,OAAO,EAAE;CACV;AAED,MAAM,kBAAkB,GAAG;AACzB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,MAAM,EAAE;CACT;AAED;;AAEG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAA;;IAE3B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;;AAG3B,IAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAChC,QAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAA,CAAE,CAAC;AAC1C,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACpB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACvD;;AAGA,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAE3C,IAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB;AAEA;;AAEG;AACH,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;IAC/C,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SAClB,GAAG,CAAC,CAAC,IAAG;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClE,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3C,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb;AAEA;;AAEG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,OAAe,EAAA;AAChD,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzB,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,GAAG;IAEpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG;AACvB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;IAE5B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM;IAEnC,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACnC;AAEA;;AAEG;AACH,SAAS,WAAW,CAAC,GAAW,EAAE,OAAe,EAAA;AAC/C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzB,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,GAAG;IAEpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG;AACvB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;IAE5B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAE7B,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACnC;MAKa,YAAY,CAAA;AAevB,IAAA,WAAA,GAAA;QAdQ,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,6DAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAQ,OAAO,2DAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAO,IAAI,IAAI,EAAE,4DAAC;QAEnD,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,OAAO;AAC1B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB;AAClC,SAAA,CAAC,qDAAC;;QAID,IAAI,CAAC,eAAe,EAAE;;;;;;QAQtB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,iBAAiB,EAAE;QAC1B,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9E,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;;QAGrC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9C;AAEA,IAAA,WAAW,CAAC,IAAW,EAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;;AAGrC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;;QAG9B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA;;;;AAIG;IACH,iBAAiB,GAAA;;QAEf,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE;;AAG5D,QAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACpC,YAAY;YACZ,cAAc;AACd,YAAA,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AACxC,YAAA,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,iBAAiB,EAAE,CAAC,YAAY,IAAI,CAAC;AACtC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC;YACnF;QACF;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI;;gBAEF,MAAM,iBAAiB,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;gBACxD,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC1D,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;gBACtD,MAAM,kBAAkB,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;;AAGxD,gBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAClC,MAAM,eAAe,GAAG,GAAG,GAAG,CAAA,EAAG,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI;;;AAInE,gBAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC;gBACjC,IAAI,GAAG,EAAE;oBACP,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG;AACvE,oBAAA,IAAI,SAAS,GAAG,GAAG,EAAE;AACnB,wBAAA,gBAAgB,GAAG,SAAS,CAAC;oBAC/B;gBACF;;gBAGA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,YAAY,CAAC;gBACnF,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,iBAAiB,CAAC;gBAC9F,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;gBAClG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,gBAAgB,CAAC;gBAC5F,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;gBAChG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,gBAAgB,CAAC;gBAE5F,IAAI,eAAe,EAAE;oBACnB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,eAAe,CAAC;gBAC5F;AAEA,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,+BAAA,CAAiC,EAAE;AAC7C,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,MAAM,EAAE,kBAAkB;AAC1B,oBAAA,IAAI,EAAE;AACP,iBAAA,CAAC;;gBAGH,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI;;wBAEF,MAAM,mBAAmB,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC5D,MAAM,qBAAqB,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC9D,MAAM,kBAAkB,GAAG,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC1D,MAAM,oBAAoB,GAAG,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;;AAG5D,wBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC;wBACpC,MAAM,iBAAiB,GAAG,GAAG,GAAG,CAAA,EAAG,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI;;AAGrE,wBAAA,IAAI,kBAAkB,GAAG,SAAS,CAAC;wBACnC,IAAI,GAAG,EAAE;4BACP,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG;AACvE,4BAAA,IAAI,SAAS,GAAG,GAAG,EAAE;AACnB,gCAAA,kBAAkB,GAAG,SAAS,CAAC;4BACjC;wBACF;;wBAGA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,cAAc,CAAC;wBACvF,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;wBAClG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAmC,EAAE,qBAAqB,CAAC;wBACtG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;wBAChG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,kCAAkC,EAAE,oBAAoB,CAAC;wBACpG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;wBAEhG,IAAI,iBAAiB,EAAE;4BACrB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,iBAAiB,CAAC;wBAChG;AAEA,wBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,iCAAA,CAAmC,EAAE;AAC/C,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,KAAK,EAAE,mBAAmB;AAC1B,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,IAAI,EAAE,kBAAkB;AACxB,4BAAA,MAAM,EAAE,oBAAoB;AAC5B,4BAAA,IAAI,EAAE;AACP,yBAAA,CAAC;oBACJ;oBAAE,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC;oBACvE;gBACF;AAEA,gBAAA,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC;AAC/G,gBAAA,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC;YACzF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;YACvD;QACF;IACF;AAEA;;;AAGG;IACK,eAAe,GAAA;QACrB,IAAI,UAAU,GAAiB,IAAI;;AAGnC,QAAA,IAAI;AACF,YAAA,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAU;QAC/D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC;QAChE;;QAGA,MAAM,YAAY,GAAG,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM;QACpE,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO;AAExD,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,KAAK,MAAM,CAAC;IAC5C;AAEA;;AAEG;AACK,IAAA,mBAAmB,CAAC,KAAY,EAAA;AACtC,QAAA,IAAI;AACF,YAAA,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QAChD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC;QAC9D;IACF;8GAjNW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCxFY,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAyBpD,IAAA;IAvBC,SAAS,CAAC,GAAW,EAAE,MAA4B,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;IACnD;IAEA,cAAc,CAAC,GAAW,EAAE,MAA4B,EAAA;AACtD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;IAClD;AAEA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW;IAC1C;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAC5C,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CACzB;IACH;8GAzBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;MA6BY,oBAAoB,GAAG,IAAI,cAAc,CAAsB,sBAAsB,EAAE;AAClG,IAAA,OAAO,EAAE,MAAM,IAAI,oBAAoB;AACxC,CAAA;AAEK,SAAU,kBAAkB,CAAC,QAAA,GAAsC,oBAAoB,EAAA;IAC3F,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC9D;;MCzCa,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;;AAExB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;;AAErB,QAAA,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAChD,CAAC,SAAS,CAAC,MAAK;;AAEf,YAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB,QAAA,CAAC,CAAC;IACJ;8GAVW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACND;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ps-helix.mjs","sources":["../../../projects/ps-helix/src/lib/components/alert/alert.component.ts","../../../projects/ps-helix/src/lib/components/alert/alert.component.html","../../../projects/ps-helix/src/lib/components/avatar/avatar.component.ts","../../../projects/ps-helix/src/lib/components/avatar/avatar.component.html","../../../projects/ps-helix/src/lib/components/badge/badge.component.ts","../../../projects/ps-helix/src/lib/components/badge/badge.component.html","../../../projects/ps-helix/src/lib/components/button/button.component.ts","../../../projects/ps-helix/src/lib/components/button/button.component.html","../../../projects/ps-helix/src/lib/components/card/card.component.ts","../../../projects/ps-helix/src/lib/components/card/card.component.html","../../../projects/ps-helix/src/lib/components/tag/tag.component.ts","../../../projects/ps-helix/src/lib/components/tag/tag.component.html","../../../projects/ps-helix/src/lib/components/stat-card/stat-card.component.ts","../../../projects/ps-helix/src/lib/components/stat-card/stat-card.component.html","../../../projects/ps-helix/src/lib/components/horizontal-card/horizontal-card.component.ts","../../../projects/ps-helix/src/lib/components/horizontal-card/horizontal-card.component.html","../../../projects/ps-helix/src/lib/components/info-card/info-card.component.ts","../../../projects/ps-helix/src/lib/components/info-card/info-card.component.html","../../../projects/ps-helix/src/lib/components/checkbox/checkbox.component.ts","../../../projects/ps-helix/src/lib/components/checkbox/checkbox.component.html","../../../projects/ps-helix/src/lib/components/collapse/collapse.component.ts","../../../projects/ps-helix/src/lib/components/collapse/collapse.component.html","../../../projects/ps-helix/src/lib/components/dropdown/dropdown.component.ts","../../../projects/ps-helix/src/lib/components/dropdown/dropdown.component.html","../../../projects/ps-helix/src/lib/components/input/input.types.ts","../../../projects/ps-helix/src/lib/components/input/input.component.ts","../../../projects/ps-helix/src/lib/components/input/input.component.html","../../../projects/ps-helix/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ps-helix/src/lib/components/tooltip/tooltip.component.html","../../../projects/ps-helix/src/lib/components/menu/menu.component.ts","../../../projects/ps-helix/src/lib/components/menu/menu.component.html","../../../projects/ps-helix/src/lib/components/modal/modal.component.ts","../../../projects/ps-helix/src/lib/components/modal/modal.component.html","../../../projects/ps-helix/src/lib/components/pagination/pagination.component.ts","../../../projects/ps-helix/src/lib/components/pagination/pagination.component.html","../../../projects/ps-helix/src/lib/components/progressbar/progressbar.component.ts","../../../projects/ps-helix/src/lib/components/progressbar/progressbar.component.html","../../../projects/ps-helix/src/lib/components/radio/radio.component.ts","../../../projects/ps-helix/src/lib/components/radio/radio.component.html","../../../projects/ps-helix/src/lib/components/select/select.component.ts","../../../projects/ps-helix/src/lib/components/select/select.component.html","../../../projects/ps-helix/src/lib/components/sidebar/sidebar.component.ts","../../../projects/ps-helix/src/lib/components/sidebar/sidebar.component.html","../../../projects/ps-helix/src/lib/components/spinloader/spinloader.component.ts","../../../projects/ps-helix/src/lib/components/spinloader/spinloader.component.html","../../../projects/ps-helix/src/lib/components/stepper/step.component.ts","../../../projects/ps-helix/src/lib/components/stepper/stepper.component.ts","../../../projects/ps-helix/src/lib/components/stepper/stepper.component.html","../../../projects/ps-helix/src/lib/components/state-flow-indicator/flow-step.component.ts","../../../projects/ps-helix/src/lib/components/state-flow-indicator/state-flow-indicator.component.ts","../../../projects/ps-helix/src/lib/components/state-flow-indicator/state-flow-indicator.component.html","../../../projects/ps-helix/src/lib/components/switch/switch.component.ts","../../../projects/ps-helix/src/lib/components/switch/switch.component.html","../../../projects/ps-helix/src/lib/components/tab-bar/tab-bar.component.ts","../../../projects/ps-helix/src/lib/components/tab-bar/tab-bar.component.html","../../../projects/ps-helix/src/lib/components/table/table.component.ts","../../../projects/ps-helix/src/lib/components/table/table.component.html","../../../projects/ps-helix/src/lib/components/tabs/tab.component.ts","../../../projects/ps-helix/src/lib/components/tabs/tabs.component.ts","../../../projects/ps-helix/src/lib/components/tabs/tabs.component.html","../../../projects/ps-helix/src/lib/components/toast/toast.tokens.ts","../../../projects/ps-helix/src/lib/components/toast/toast.service.ts","../../../projects/ps-helix/src/lib/components/toast/toast.compat.ts","../../../projects/ps-helix/src/lib/components/toast/toast.component.ts","../../../projects/ps-helix/src/lib/components/toast/toast.component.html","../../../projects/ps-helix/src/lib/services/theme/theme.service.ts","../../../projects/ps-helix/src/lib/services/translation/translation.service.ts","../../../projects/ps-helix/src/lib/services/scroll.service.ts","../../../projects/ps-helix/src/ps-helix.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertType, IconPosition, AlertSize, AlertRole, AlertLabels } from './alert.types';\n\n// Default alert labels\nconst DEFAULT_LABELS: AlertLabels = {\n dismiss: 'Dismiss alert'\n};\n\n// Default alert icons\nconst DEFAULT_ICONS: Record<string, string> = {\n info: 'info',\n success: 'check-circle',\n warning: 'warning',\n danger: 'warning-octagon'\n};\n\nconst DEFAULT_CONFIG = {\n type: 'info' as AlertType,\n iconPosition: 'left' as IconPosition,\n closable: false,\n size: 'medium' as AlertSize,\n showIcon: true\n};\n\n@Component({\n selector: 'psh-alert',\n imports: [CommonModule],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshAlertComponent {\n\n // Inputs\n type = input<AlertType>(DEFAULT_CONFIG.type);\n iconPosition = input<IconPosition>(DEFAULT_CONFIG.iconPosition);\n closable = input(DEFAULT_CONFIG.closable);\n size = input<AlertSize>(DEFAULT_CONFIG.size);\n showIcon = input(DEFAULT_CONFIG.showIcon);\n role = input<AlertRole>();\n icon = input<string>();\n ariaLabel = input<string>();\n dismissLabel = input(DEFAULT_LABELS.dismiss);\n ariaLive = input<'polite' | 'assertive'>();\n content = input('');\n \n // Outputs\n closed = output<void>();\n\n // Computed values\n defaultIcon = computed(() => DEFAULT_ICONS[this.type()] || 'info');\n getIcon = computed(() => this.icon() || this.defaultIcon());\n\n computedAriaLive = computed(() => \n this.ariaLive() || (['warning', 'danger'].includes(this.type()) ? 'assertive' : 'polite')\n );\n\n computedRole = computed(() => \n this.role() || (['warning', 'danger'].includes(this.type()) ? 'alert' : 'status')\n );\n\n state = computed(() => {\n if (this.closable()) return 'closable';\n return this.type();\n });\n\n handleClose(): void {\n this.closed.emit();\n }\n}","<div\n class=\"alert\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class]=\"type()\"\n [attr.role]=\"computedRole()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-live]=\"computedAriaLive()\"\n [attr.data-state]=\"state()\"\n>\n <div class=\"alert-content\" [class.icon-right]=\"iconPosition() === 'right'\">\n @if (showIcon()) {\n <i class=\"ph ph-{{ getIcon() }}\" aria-hidden=\"true\"></i>\n }\n <div class=\"alert-message\">\n <ng-content>{{ content() }}</ng-content>\n </div>\n </div>\n \n @if (closable()) {\n <button\n type=\"button\"\n class=\"alert-dismiss\"\n (click)=\"handleClose()\"\n [attr.aria-label]=\"dismissLabel()\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, input, model, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarSize, AvatarShape, AvatarStatus } from './avatar.types';\n\n// Default configuration\nconst DEFAULT_CONFIG = {\n size: 'medium' as AvatarSize,\n shape: 'circle' as AvatarShape,\n alt: 'User avatar',\n icon: 'user'\n};\n\n// Default status colors\nconst DEFAULT_STATUS_COLORS: Record<AvatarStatus, string> = {\n online: 'var(--success-color)',\n offline: 'var(--surface-400)',\n away: 'var(--warning-color)',\n busy: 'var(--danger-color)'\n};\n\n@Component({\n selector: 'psh-avatar',\n imports: [CommonModule],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshAvatarComponent {\n\n // Model inputs with defaults\n size = model<AvatarSize>(DEFAULT_CONFIG.size);\n shape = model<AvatarShape>(DEFAULT_CONFIG.shape);\n src = model<string | undefined>();\n alt = model<string>(DEFAULT_CONFIG.alt);\n\n // Regular inputs\n initials = input('');\n icon = input<string>(DEFAULT_CONFIG.icon);\n status = input<AvatarStatus | undefined>();\n ariaLabel = input<string>();\n\n // Computed values\n hasImage = computed(() => !!this.src());\n hasInitials = computed(() => !!this.initials() && !this.hasImage());\n hasIcon = computed(() => !this.hasImage() && !this.hasInitials());\n\n computedAriaLabel = computed(() => this.ariaLabel() || this.alt());\n\n statusColor = computed(() => {\n const currentStatus = this.status();\n if (!currentStatus) return undefined;\n return DEFAULT_STATUS_COLORS[currentStatus];\n });\n\n state = computed(() => this.status() || 'default');\n}","<div \n class=\"avatar\"\n [class.circle]=\"shape() === 'circle'\"\n [class.square]=\"shape() === 'square'\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.xlarge]=\"size() === 'xlarge'\"\n role=\"img\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.data-state]=\"state()\"\n>\n @if (hasImage()) {\n <img [src]=\"src()\" [attr.alt]=\"alt()\" class=\"avatar-image\" />\n } @else if (hasInitials()) {\n <span class=\"avatar-initials\">{{ initials() }}</span>\n } @else if (hasIcon()) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n\n @if (status()) {\n <span \n class=\"avatar-status\"\n [class]=\"status()\"\n [style.background-color]=\"statusColor()\"\n [attr.aria-label]=\"status()\"\n ></span>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeSize, BadgeVariant, BadgePosition, BadgeDisplayType } from './badge.types';\n\nconst DEFAULT_CONFIG = {\n variant: 'primary' as BadgeVariant,\n size: 'medium' as BadgeSize,\n displayType: 'text' as BadgeDisplayType,\n max: 99,\n showZero: false,\n position: 'top-right' as BadgePosition\n};\n\n@Component({\n selector: 'psh-badge',\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshBadgeComponent<T = number> {\n\n readonly variant = input<BadgeVariant>(DEFAULT_CONFIG.variant);\n readonly size = input<BadgeSize>(DEFAULT_CONFIG.size);\n readonly displayType = input<BadgeDisplayType>(DEFAULT_CONFIG.displayType);\n readonly content = input<string>('');\n readonly visible = input(true);\n readonly value = input<T>();\n readonly max = input(DEFAULT_CONFIG.max);\n readonly showZero = input(DEFAULT_CONFIG.showZero);\n readonly position = input<BadgePosition>(DEFAULT_CONFIG.position);\n readonly overlap = input(false);\n readonly ariaLabel = input<string>();\n readonly formatter = input<((value: T) => string) | undefined>();\n\n readonly badgeClick = output<void>();\n readonly valueChange = output<T>();\n\n readonly computedRole = computed(() =>\n this.displayType() === 'counter' ? 'status' : 'img'\n );\n\n readonly computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const content = this.content();\n if (content) return content;\n\n return this.displayValue();\n });\n\n readonly state = computed(() => {\n if (!this.visible()) return 'hidden';\n if (this.overlap()) return 'overlap';\n return this.displayType();\n });\n\n private readonly isDot = computed(() => this.displayType() === 'dot');\n private readonly isCounter = computed(() => this.displayType() === 'counter');\n private readonly hasValue = computed(() => this.value() !== undefined);\n\n private readonly shouldDisplay = computed(() => {\n const currentValue = this.value();\n if (typeof currentValue !== 'number') return true;\n return currentValue > 0 || this.showZero();\n });\n\n private readonly formattedCustomValue = computed(() => {\n const formatter = this.formatter();\n const currentValue = this.value();\n\n if (!formatter || currentValue === null || currentValue === undefined) {\n return null;\n }\n\n return formatter(currentValue);\n });\n\n private readonly formattedNumericValue = computed(() => {\n const currentValue = this.value();\n\n if (typeof currentValue !== 'number') {\n return currentValue !== undefined ? String(currentValue) : '';\n }\n\n if (!this.shouldDisplay()) {\n return this.content() || '';\n }\n\n const maxValue = this.max();\n return currentValue > maxValue ? `${maxValue}+` : `${currentValue}`;\n });\n\n readonly displayValue = computed(() => {\n if (this.isDot()) {\n return '';\n }\n\n if (!this.isCounter() || !this.hasValue()) {\n return this.content();\n }\n\n const customFormatted = this.formattedCustomValue();\n if (customFormatted !== null) {\n return customFormatted;\n }\n\n return this.formattedNumericValue();\n });\n\n onBadgeClick(): void {\n this.badgeClick.emit();\n }\n}\n","<div\n class=\"badge\"\n [class.primary]=\"variant() === 'primary'\"\n [class.secondary]=\"variant() === 'secondary'\"\n [class.success]=\"variant() === 'success'\"\n [class.warning]=\"variant() === 'warning'\"\n [class.danger]=\"variant() === 'danger'\"\n [class.info]=\"variant() === 'info'\"\n [class.disabled]=\"variant() === 'disabled'\"\n [class.dot]=\"displayType() === 'dot'\"\n [class.counter]=\"displayType() === 'counter'\"\n [class.overlap]=\"overlap()\"\n [class.small]=\"size() === 'small'\"\n [class.medium]=\"size() === 'medium'\"\n [class.large]=\"size() === 'large'\"\n [class.top-right]=\"position() === 'top-right'\"\n [class.top-left]=\"position() === 'top-left'\"\n [class.bottom-right]=\"position() === 'bottom-right'\"\n [class.bottom-left]=\"position() === 'bottom-left'\"\n [attr.role]=\"computedRole()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.data-state]=\"state()\"\n (click)=\"onBadgeClick()\"\n>\n @if (displayType() === 'text') {\n <ng-content></ng-content>\n } @else if (displayType() === 'counter') {\n {{ displayValue() }}\n }\n</div>\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { ButtonAppearance, ButtonVariant, ButtonSize, ButtonIconPosition } from './button.types';\n\n@Component({\n selector: 'psh-button',\n imports: [],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.full-width]': 'fullWidth()',\n '(click)': 'onHostClick($event)',\n },\n})\nexport class PshButtonComponent implements AfterContentChecked {\n private elementRef = inject(ElementRef);\n private projectedText = signal<string | undefined>(undefined);\n\n appearance = input<ButtonAppearance>('filled');\n variant = input<ButtonVariant>('primary');\n size = input<ButtonSize>('medium');\n disabled = input(false);\n loading = input(false);\n fullWidth = model(false);\n iconPosition = input<ButtonIconPosition>('left');\n icon = input<string>();\n ariaLabel = input<string>();\n loadingText = input('Loading...');\n disabledText = input('This action is currently unavailable');\n iconOnlyText = input<string>();\n type = input<'button' | 'submit' | 'reset'>('button');\n\n clicked = output<MouseEvent>();\n disabledClick = output<MouseEvent>();\n\n ngAfterContentChecked(): void {\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n const ngContentElement = button.querySelector('.button-content');\n if (ngContentElement) {\n const textContent = ngContentElement.textContent?.trim() || '';\n const currentProjectedText = this.projectedText();\n if (textContent && textContent !== currentProjectedText) {\n this.projectedText.set(textContent);\n } else if (!textContent && currentProjectedText) {\n this.projectedText.set(undefined);\n }\n }\n }\n }\n\n computedAriaLabel = computed(() => {\n if (this.ariaLabel()) return this.ariaLabel();\n if (this.loading()) return this.loadingText();\n if (this.disabled()) return this.disabledText();\n if (this.iconPosition() === 'only') {\n return this.iconOnlyText() || 'Button';\n }\n const projected = this.projectedText();\n if (projected) return projected;\n return undefined;\n });\n\n state = computed(() => {\n if (this.disabled()) return 'disabled';\n if (this.loading()) return 'loading';\n return 'default';\n });\n\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n onHostClick(event: MouseEvent): void {\n if (this.disabled() && !this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n this.disabledClick.emit(event);\n }\n }\n}","<button\n [attr.data-state]=\"state()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-busy]=\"loading()\"\n [type]=\"type()\"\n [class]=\"appearance()\"\n [class.primary]=\"variant() === 'primary'\"\n [class.secondary]=\"variant() === 'secondary'\"\n [class.success]=\"variant() === 'success'\"\n [class.warning]=\"variant() === 'warning'\"\n [class.danger]=\"variant() === 'danger'\"\n [class.disabled]=\"disabled()\"\n [class.loading]=\"loading()\"\n [class.small]=\"size() === 'small'\"\n [class.medium]=\"size() === 'medium'\"\n [class.large]=\"size() === 'large'\"\n [class.icon-only]=\"iconPosition() === 'only'\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"handleClick($event)\"\n>\n <span class=\"button-content\">\n @if (loading()) {\n <span class=\"loader\" aria-hidden=\"true\"></span>\n @if (iconPosition() !== 'only') {\n {{ loadingText() }}\n }\n }\n @if (!loading() && icon() && (iconPosition() === 'left' || iconPosition() === 'only')) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n @if (!loading() && iconPosition() !== 'only') {\n <ng-content></ng-content>\n }\n @if (!loading() && icon() && iconPosition() === 'right') {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n </span>\n</button>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { CardVariant, CardColorVariant, CardDensity, CardActionsAlignment } from './card.types';\n\n/**\n * Composant carte métier - conteneur structuré pour contenu professionnel\n *\n * Ce composant fournit une structure de carte métier avec :\n * - Header enrichi avec titre, description et slots pour icônes/badges\n * - Body avec spacing généreux et bien défini\n * - Footer optionnel pour métadonnées\n * - Zone d'actions avec alignement configurable\n * - Support de différentes densités et variantes de couleur\n * - Dividers automatiques entre les sections\n *\n * Les boutons placés dans le slot card-actions deviennent automatiquement\n * pleine largeur sur mobile (< 640px) grâce à une directive automatique.\n *\n * @example\n * <psh-card\n * title=\"Mon titre\"\n * description=\"Ma description\"\n * variant=\"elevated\"\n * >\n * <p>Contenu principal</p>\n * <div card-actions>\n * <psh-button variant=\"primary\">Action</psh-button>\n * </div>\n * </psh-card>\n */\n@Component({\n selector: 'psh-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block;',\n },\n})\nexport class PshCardComponent implements OnDestroy {\n private platformId = inject(PLATFORM_ID);\n private resizeObserver?: ResizeObserver;\n\n isMobile = signal<boolean>(false);\n // Model inputs - propriétés modifiables\n /** Variante visuelle de la carte (default, elevated, outlined) */\n variant = model<CardVariant>('default');\n\n /** Effet de survol activé (animation translateY) */\n hoverable = model(false);\n\n /** Carte cliquable (ajoute cursor pointer et gestion du focus) */\n interactive = model(false);\n\n // Regular inputs - propriétés en lecture seule\n /** Titre principal de la carte */\n title = input<string>('');\n\n /** Description/sous-titre optionnel */\n description = input<string>('');\n\n /** Variante de couleur pour cartes spéciales (info, success, warning, danger) */\n colorVariant = input<CardColorVariant>('default');\n\n /** Niveau de densité du spacing (compact, normal, spacious) */\n density = input<CardDensity>('normal');\n\n /** Afficher le divider entre header et body */\n showHeaderDivider = input<boolean>(true);\n\n /** Afficher le divider entre body et footer */\n showFooterDivider = input<boolean>(true);\n\n /** Afficher le divider entre footer et actions */\n showActionsDivider = input<boolean>(true);\n\n /** Alignement des actions dans la zone card-actions */\n actionsAlignment = input<CardActionsAlignment>('right');\n\n /** Activer/désactiver le padding du body */\n bodyPadding = input<boolean>(true);\n\n /** Classes CSS additionnelles */\n cssClass = input<string>('');\n\n /** Styles inline personnalisés */\n customStyle = input<Record<string, string>>({});\n\n /** État de chargement - affiche un skeleton */\n loading = input<boolean>(false);\n\n /** État désactivé - réduit l'opacité */\n disabled = input<boolean>(false);\n\n // Outputs\n /** Émis lors du clic sur la carte (si interactive) */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n // Computed values\n /** Classes CSS calculées selon les propriétés */\n computedClasses = computed(() => {\n const classes = ['card'];\n classes.push(`variant-${this.variant()}`);\n classes.push(`color-${this.colorVariant()}`);\n classes.push(`density-${this.density()}`);\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Styles calculés */\n computedStyles = computed(() => {\n return { ...this.customStyle() };\n });\n\n /** Indique si le header doit être affiché */\n hasHeader = computed(() => {\n return !!(this.title() || this.description());\n });\n\n /** Classe d'alignement pour la zone d'actions */\n actionsAlignmentClass = computed(() => {\n return `actions-align-${this.actionsAlignment()}`;\n });\n\n actionsClasses = computed(() => {\n const classes = [this.actionsAlignmentClass()];\n if (this.isMobile()) {\n classes.push('mobile-full-width-buttons');\n }\n return classes.join(' ');\n });\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.checkMobileViewport();\n\n if (typeof window !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkMobileViewport();\n });\n this.resizeObserver.observe(document.documentElement);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n private checkMobileViewport(): void {\n if (typeof window !== 'undefined') {\n this.isMobile.set(window.innerWidth <= 640);\n }\n }\n\n /**\n * Gère le clic sur la carte\n * Émet l'événement clicked seulement si la carte est interactive\n * et non désactivée\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Gère la navigation au clavier (Enter et Space)\n * Permet d'activer la carte au clavier pour l'accessibilité\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}\n","<div\n [class]=\"computedClasses()\"\n [style]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n role=\"article\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n>\n <!-- Header avec titre et description intégrés -->\n @if (hasHeader()) {\n <div class=\"card-header\" [class.has-divider]=\"showHeaderDivider()\">\n <!-- Slot pour icône/avatar avant le titre -->\n <ng-content select=\"[card-header-icon]\"></ng-content>\n\n <!-- Zone de titre et description -->\n @if (title() || description()) {\n <div class=\"card-header-content\">\n @if (title()) {\n <h3 class=\"card-title\">{{ title() }}</h3>\n }\n @if (description()) {\n <p class=\"card-description\">{{ description() }}</p>\n }\n </div>\n }\n\n <!-- Slot pour contenu personnalisé du header -->\n <ng-content select=\"[card-header-content]\"></ng-content>\n\n <!-- Slot pour badge/tag ou actions secondaires -->\n <ng-content select=\"[card-header-extra]\"></ng-content>\n </div>\n }\n\n <!-- Body avec contenu principal -->\n <div class=\"card-body\" [class.no-padding]=\"!bodyPadding()\">\n <!-- État de chargement -->\n @if (loading()) {\n <div class=\"card-loading\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n } @else {\n <!-- Contenu principal (slot par défaut) -->\n <ng-content></ng-content>\n }\n </div>\n\n <!-- Footer optionnel pour métadonnées -->\n <div class=\"card-footer\" [class.has-divider]=\"showFooterDivider()\">\n <ng-content select=\"[card-footer]\"></ng-content>\n </div>\n\n <!-- Actions -->\n <div class=\"card-actions\" [class]=\"actionsClasses()\" [class.has-divider]=\"showActionsDivider()\">\n <ng-content select=\"[card-actions]\"></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, InjectionToken, ElementRef, AfterContentChecked, signal } from '@angular/core';\nimport { TagVariant, TagSize, TagConfig } from './tag.types';\n\nexport const TAG_CONFIG = new InjectionToken<Partial<TagConfig>>('TAG_CONFIG', {\n factory: () => ({\n variant: 'primary',\n size: 'medium',\n closable: false,\n disabled: false,\n interactive: false,\n closeLabel: 'Supprimer le tag'\n })\n});\n\n@Component({\n selector: 'psh-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshTagComponent implements AfterContentChecked {\n private readonly config = inject(TAG_CONFIG);\n private readonly elementRef = inject(ElementRef);\n private readonly projectedText = signal('');\n\n readonly variant = input<TagVariant>(this.config.variant ?? 'primary');\n readonly size = input<TagSize>(this.config.size ?? 'medium');\n readonly closable = input(this.config.closable ?? false);\n readonly disabled = input(this.config.disabled ?? false);\n readonly interactive = input(this.config.interactive ?? false);\n readonly icon = input<string>();\n readonly closeLabel = input(this.config.closeLabel ?? 'Supprimer le tag');\n readonly content = input('Tag');\n readonly ariaLabel = input<string>();\n\n readonly clicked = output<MouseEvent>();\n readonly closed = output<void>();\n\n readonly computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const contentText = this.content();\n if (contentText && contentText !== 'Tag') return contentText;\n\n const projected = this.projectedText();\n if (projected) return projected;\n\n return 'Tag';\n });\n\n ngAfterContentChecked(): void {\n const contentElement = this.elementRef.nativeElement.querySelector('.tag-content');\n if (contentElement) {\n const text = (contentElement.textContent || '').trim();\n if (text !== this.projectedText()) {\n this.projectedText.set(text);\n }\n }\n }\n\n readonly computedRole = computed(() =>\n this.interactive() ? 'button' : 'status'\n );\n\n readonly computedTabIndex = computed(() =>\n this.interactive() && !this.disabled() ? 0 : -1\n );\n\n readonly state = computed(() => this.disabled() ? 'disabled' : 'default');\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled() && this.interactive()) {\n this.clicked.emit(event);\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (this.disabled() || !this.interactive()) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event as unknown as MouseEvent);\n }\n }\n\n handleClose(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled()) {\n this.closed.emit();\n }\n }\n}","<div\n class=\"tag\"\n [class.primary]=\"variant() === 'primary'\"\n [class.secondary]=\"variant() === 'secondary'\"\n [class.success]=\"variant() === 'success'\"\n [class.warning]=\"variant() === 'warning'\"\n [class.danger]=\"variant() === 'danger'\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.disabled]=\"disabled()\"\n [attr.role]=\"computedRole()\"\n [attr.tabindex]=\"computedTabIndex()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.data-state]=\"state()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n>\n @if (icon()) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"tag-content\">\n <ng-content>{{ content() }}</ng-content>\n </span>\n @if (closable()) {\n <button\n type=\"button\"\n class=\"tag-close\"\n (click)=\"handleClose($event)\"\n [attr.aria-label]=\"closeLabel()\"\n [disabled]=\"disabled()\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PshTagComponent } from '../tag/tag.component';\nimport { StatTagVariant, StatCardLayout, StatCardVariant } from './stat-card.types';\n\nconst ICON_GRADIENT_DEFAULTS: Record<StatTagVariant, string> = {\n success: 'linear-gradient(135deg, #34D399, #059669)',\n danger: 'linear-gradient(135deg, #F87171, #DC2626)',\n warning: 'linear-gradient(135deg, #FBBF24, #D97706)',\n primary: 'linear-gradient(135deg, #60A5FA, #2563EB)'\n};\n@Component({\n selector: 'psh-stat-card',\n imports: [CommonModule, PshTagComponent],\n templateUrl: './stat-card.component.html',\n styleUrls: ['./stat-card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PshStatCardComponent {\n\n // Inputs principaux\n /** Valeur principale de la statistique (nombre ou texte formaté) */\n value = input<string | number>();\n\n /** Description de la statistique */\n description = input<string>();\n\n /** Nom de l'icône Phosphor (sans le préfixe 'ph-') */\n icon = input<string>();\n\n // Inputs optionnels\n /** Variante du tag d'évolution (détermine la couleur) */\n tagVariant = input<StatTagVariant>();\n\n /** Label du tag d'évolution (ex: '+12.6%', '-8.1%') */\n tagLabel = input<string>();\n\n /** Couleur de fond personnalisée pour l'icône (CSS gradient ou couleur) */\n iconBackground = input<string>();\n\n /** Variante visuelle de la carte de base */\n variant = input<StatCardVariant>('elevated');\n\n /** Carte cliquable avec feedback visuel */\n interactive = input(false);\n\n /** Effet de survol */\n hoverable = input(false);\n\n /** État de chargement */\n loading = input(false);\n\n /** État désactivé */\n disabled = input(false);\n\n /** Classes CSS additionnelles */\n cssClass = input<string>('');\n\n /** Styles inline personnalisés */\n customStyle = input<Record<string, string>>({});\n\n /** Label ARIA pour l'accessibilité */\n ariaLabel = input<string>();\n\n /** Disposition de la carte: 'horizontal' (icône à gauche) ou 'vertical' (icône en haut) */\n layout = input<StatCardLayout>('horizontal');\n\n /** Active la direction row pour le card-body (icône et contenu côte à côte en flex-row) */\n rowDirection = input(false);\n\n // Outputs\n /** Émis lors du clic sur la carte */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n // Computed values\n private computedValue = computed(() => this.value() ?? '');\n\n private computedDescription = computed(() => this.description() ?? '');\n\n private computedIcon = computed(() => this.icon() ?? '');\n\n private computedTagVariant = computed(() => this.tagVariant());\n\n private computedTagLabel = computed(() => this.tagLabel());\n\n private computedIconBackground = computed(() => {\n const customBg = this.iconBackground();\n if (customBg) return customBg;\n\n const variant = this.tagVariant();\n return variant ? ICON_GRADIENT_DEFAULTS[variant] : null;\n });\n\n /** Style de l'icône avec couleur de fond personnalisée */\n iconStyle = computed(() => {\n const background = this.computedIconBackground();\n return background ? { background } : null;\n });\n\n /** Vérifie si un tag doit être affiché */\n hasTag = computed(() =>\n !!(this.computedTagVariant() && this.computedTagLabel())\n );\n\n /** Vérifie si une icône doit être affichée */\n hasIcon = computed(() => !!this.computedIcon());\n\n useRowDirection = computed(() => this.rowDirection());\n\n /** Label ARIA calculé */\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const value = this.computedValue();\n const desc = this.computedDescription();\n const tag = this.computedTagLabel();\n\n return tag\n ? `${desc}: ${value}, ${tag}`\n : `${desc}: ${value}`;\n });\n\n /** Classes CSS calculées */\n computedClasses = computed(() => {\n const classes = ['stat-card'];\n const layout = this.layout();\n\n classes.push(`variant-${this.variant()}`);\n\n if (layout === 'vertical') {\n classes.push('stat-card--vertical');\n } else {\n classes.push('stat-card--horizontal');\n }\n\n if (this.useRowDirection()) {\n classes.push('stat-card--row');\n }\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Styles calculés */\n computedStyles = computed(() => {\n return { ...this.customStyle() };\n });\n\n // Exposer les valeurs calculées pour le template\n protected get displayValue() { return this.computedValue(); }\n protected get displayDescription() { return this.computedDescription(); }\n protected get displayIcon() { return this.computedIcon(); }\n protected get displayTagVariant() { return this.computedTagVariant(); }\n protected get displayTagLabel() { return this.computedTagLabel(); }\n\n /**\n * Gère le clic sur la carte\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Gère la navigation au clavier\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}","<div\n [class]=\"computedClasses()\"\n [ngStyle]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.role]=\"interactive() ? 'button' : 'article'\"\n>\n @if (loading()) {\n <div class=\"stat-loading\">\n <div class=\"skeleton-circle\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n </div>\n } @else {\n @if (useRowDirection()) {\n <div class=\"stat-card-body\">\n @if (hasIcon()) {\n <div class=\"stat-icon\" [style]=\"iconStyle()\">\n <i class=\"ph ph-{{ displayIcon }}\" aria-hidden=\"true\"></i>\n </div>\n }\n\n <div class=\"stat-content\">\n <h3 class=\"stat-value\">{{ displayValue }}</h3>\n <p class=\"stat-description\">{{ displayDescription }}</p>\n\n @if (hasTag()) {\n <psh-tag [variant]=\"displayTagVariant!\">\n {{ displayTagLabel }}\n </psh-tag>\n }\n </div>\n </div>\n } @else {\n @if (hasIcon()) {\n <div class=\"stat-icon\" [style]=\"iconStyle()\">\n <i class=\"ph ph-{{ displayIcon }}\" aria-hidden=\"true\"></i>\n </div>\n }\n\n <div class=\"stat-content\">\n <h3 class=\"stat-value\">{{ displayValue }}</h3>\n <p class=\"stat-description\">{{ displayDescription }}</p>\n\n @if (hasTag()) {\n <psh-tag [variant]=\"displayTagVariant!\">\n {{ displayTagLabel }}\n </psh-tag>\n }\n </div>\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalCardVariant } from './horizontal-card.types';\n\n/**\n * Composant carte horizontale autonome\n *\n * Composant complètement indépendant pour créer une mise en page\n * horizontale avec contenu latéral.\n *\n * Ce composant est particulièrement adapté pour :\n * - Cartes produits avec image latérale\n * - Profils utilisateurs avec avatar\n * - Articles avec illustration\n *\n * Le layout bascule automatiquement en vertical sur mobile.\n *\n * @example\n * <psh-horizontal-card variant=\"elevated\" sideWidth=\"var(--size-48)\">\n * <div horizontal-side>\n * <img src=\"image.jpg\" alt=\"Product\">\n * </div>\n * <h3 horizontal-header>Titre du produit</h3>\n * <p>Description du produit</p>\n * <div horizontal-actions>\n * <psh-button>Voir</psh-button>\n * </div>\n * </psh-horizontal-card>\n */\n@Component({\n selector: 'psh-horizontal-card',\n imports: [CommonModule],\n templateUrl: './horizontal-card.component.html',\n styleUrls: ['./horizontal-card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PshHorizontalCardComponent {\n\n /** Variante de la carte de base */\n variant = input<HorizontalCardVariant>('elevated');\n\n /** Carte cliquable */\n interactive = input(false);\n\n /** Effet de survol */\n hoverable = input(false);\n\n /** État de chargement */\n loading = input(false);\n\n /** État désactivé */\n disabled = input(false);\n\n /** Classes CSS additionnelles */\n cssClass = input<string>('');\n\n /** Styles inline personnalisés */\n customStyle = input<Record<string, string>>({});\n\n /** Largeur du contenu latéral (utiliser les tokens de sizing comme var(--size-48)) */\n sideWidth = input<string>('var(--size-48)');\n\n /** Gap entre le contenu latéral et principal */\n gap = input<string>('var(--spacing-md)');\n\n /** Padding du contenu latéral */\n sidePadding = input<string>('0');\n\n /** Padding du contenu principal */\n contentPadding = input<string>('var(--spacing-md)');\n\n /** Hauteur du contenu latéral sur mobile (utiliser les tokens de sizing) */\n mobileHeight = input<string>('var(--size-48)');\n\n /** Émis lors du clic sur la carte */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n /** Classes CSS calculées selon les propriétés */\n computedClasses = computed(() => {\n const classes = ['horizontal-card'];\n classes.push(`variant-${this.variant()}`);\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Styles calculés */\n computedStyles = computed(() => {\n return {\n '--horizontal-side-width': this.sideWidth(),\n '--horizontal-gap': this.gap(),\n '--horizontal-side-padding': this.sidePadding(),\n '--horizontal-content-padding': this.contentPadding(),\n '--horizontal-mobile-height': this.mobileHeight(),\n ...this.customStyle()\n };\n });\n\n /**\n * Gère le clic sur la carte\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Gère la navigation au clavier\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}","<div\n [class]=\"computedClasses()\"\n [ngStyle]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n role=\"article\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n>\n <!-- Contenu latéral -->\n <div class=\"horizontal-side\">\n @if (loading()) {\n <div class=\"horizontal-skeleton\"></div>\n } @else {\n <ng-content select=\"[horizontal-side]\"></ng-content>\n }\n </div>\n\n <!-- Contenu principal -->\n <div class=\"horizontal-content\">\n @if (loading()) {\n <div class=\"horizontal-loading\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n } @else {\n <!-- Header optionnel -->\n <ng-content select=\"[horizontal-header]\"></ng-content>\n\n <!-- Contenu principal -->\n <ng-content></ng-content>\n\n <!-- Actions optionnelles -->\n <ng-content select=\"[horizontal-actions]\"></ng-content>\n }\n </div>\n</div>","import { Component, ChangeDetectionStrategy, computed, input, signal, PLATFORM_ID, inject, output, ViewEncapsulation, ElementRef, AfterContentInit } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { InfoCardData, InfoCardOptions, InfoCardVariant } from './info-card.types';\n\n/**\n * Info Card Component - Autonomous\n *\n * A fully independent card component that displays structured data as label/value pairs.\n * Provides a consistent way to present information with proper accessibility and responsive design.\n *\n * @example\n * ```typescript\n * const userData: InfoCardData[] = [\n * { label: 'Name', value: 'John Doe' },\n * { label: 'Email', value: 'john@example.com' }\n * ];\n * ```\n *\n * ```html\n * <psh-info-card\n * title=\"User Information\"\n * [data]=\"userData\"\n * icon=\"user\"\n * variant=\"elevated\"\n * ></psh-info-card>\n * ```\n */\n@Component({\n selector: 'psh-info-card',\n imports: [CommonModule],\n templateUrl: './info-card.component.html',\n styleUrl: './info-card.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block; height: 100%;'\n }\n})\nexport class PshInfoCardComponent implements AfterContentInit {\n\n hasHeaderActions = signal<boolean>(false);\n\n /** Title displayed in the card header */\n title = input<string>('');\n\n /** Array of label-value pairs to display */\n data = input<InfoCardData[]>([]);\n\n /** Display options for the card */\n options = input<InfoCardOptions>({\n showEmptyState: true,\n emptyStateMessage: 'Aucune information disponible',\n labelWidth: undefined,\n valueWidth: undefined\n });\n\n /** Base card variant style */\n variant = input<InfoCardVariant>('outlined');\n\n /** Icon to display in the header (Phosphor icon name without 'ph-' prefix) */\n icon = input<string>('circle-dashed');\n\n /** Custom ARIA label for accessibility */\n ariaLabel = input<string>();\n\n /** Custom CSS classes */\n cssClass = input<string>('');\n\n /** Custom inline styles */\n customStyle = input<Record<string, string>>({});\n\n /** Whether the card should be interactive/clickable */\n interactive = input<boolean>(false);\n\n /** Whether to show hover effects */\n hoverable = input<boolean>(false);\n\n /** Indicates if data is loading */\n loading = input<boolean>(false);\n\n /** Whether the card is disabled */\n disabled = input<boolean>(false);\n\n /** Emitted when card is clicked */\n clicked = output<MouseEvent | KeyboardEvent>();\n\n /** Whether to auto-enable full width buttons on mobile (default: true) */\n autoFullWidthOnMobile = input<boolean>(true);\n\n /** Signal to track if viewport is mobile */\n isMobile = signal<boolean>(false);\n\n private platformId = inject(PLATFORM_ID);\n private resizeObserver?: ResizeObserver;\n\n /** Determines if the empty state should be shown */\n shouldShowEmptyState = computed(() => {\n const opts = this.options();\n const dataArray = this.data();\n return opts.showEmptyState && (!dataArray || dataArray.length === 0);\n });\n\n /** Returns the empty state message to display */\n getEmptyStateMessage = computed(() => {\n return this.options().emptyStateMessage || 'Aucune information disponible';\n });\n\n /** Full icon class name for Phosphor icons */\n titleIcon = computed(() => {\n const iconName = this.icon();\n return iconName ? `ph-${iconName}` : '';\n });\n\n /** Computed ARIA label for the component */\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n const titleText = this.title();\n return customLabel || (titleText ? `Information card: ${titleText}` : 'Information card');\n });\n\n /** Computed CSS classes */\n computedClasses = computed(() => {\n const classes = ['info-card'];\n classes.push(`variant-${this.variant()}`);\n\n if (this.hoverable()) classes.push('hoverable');\n if (this.interactive()) classes.push('interactive');\n if (this.loading()) classes.push('loading');\n if (this.disabled()) classes.push('disabled');\n if (this.cssClass()) classes.push(this.cssClass());\n\n return classes.join(' ');\n });\n\n /** Computed styles */\n computedStyles = computed(() => {\n return { ...this.customStyle() };\n });\n\n /** Gets CSS classes for card-actions based on mobile state */\n getActionsClasses = computed(() => {\n const classes: string[] = [];\n if (this.autoFullWidthOnMobile() && this.isMobile()) {\n classes.push('mobile-full-width-buttons');\n }\n return classes.join(' ');\n });\n\n private elementRef = inject(ElementRef);\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.checkMobileViewport();\n\n if (typeof window !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkMobileViewport();\n });\n this.resizeObserver.observe(document.documentElement);\n }\n }\n }\n\n ngAfterContentInit(): void {\n this.checkHeaderActionsContent();\n }\n\n private checkHeaderActionsContent(): void {\n if (isPlatformBrowser(this.platformId)) {\n const headerActionsEl = this.elementRef.nativeElement.querySelector('[card-header-actions]');\n this.hasHeaderActions.set(!!headerActionsEl);\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n private checkMobileViewport(): void {\n if (typeof window !== 'undefined') {\n this.isMobile.set(window.innerWidth <= 640);\n }\n }\n\n /**\n * Handles click events on the card\n */\n handleClick(event: MouseEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n this.clicked.emit(event);\n }\n }\n\n /**\n * Handles keyboard navigation\n */\n handleKeydown(event: KeyboardEvent): void {\n if (this.interactive() && !this.disabled() && !this.loading()) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.clicked.emit(event);\n }\n }\n }\n}","<div\n [class]=\"computedClasses()\"\n [ngStyle]=\"computedStyles()\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n role=\"region\"\n [attr.tabindex]=\"interactive() && !disabled() ? 0 : null\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n>\n @if (title() || hasHeaderActions()) {\n <div class=\"info-card-header\">\n @if (title()) {\n <h3 class=\"info-card-title\">\n @if (icon()) {\n <i\n class=\"ph {{ titleIcon() }}\"\n aria-hidden=\"true\"\n [attr.data-icon]=\"icon()\"\n ></i>\n }\n {{ title() }}\n </h3>\n }\n <div class=\"info-card-header-actions\">\n <ng-content select=\"[card-header-actions]\"></ng-content>\n </div>\n </div>\n }\n\n <div class=\"info-card-body\">\n @if (loading()) {\n <div class=\"info-card-loading\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n } @else {\n <div\n class=\"info-card-content\"\n role=\"list\"\n >\n @if (shouldShowEmptyState()) {\n <div\n class=\"info-card-empty-state\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-testid]=\"'info-card-empty-state'\"\n >\n {{ getEmptyStateMessage() }}\n </div>\n } @else {\n @for (item of data(); track $index) {\n <div\n class=\"info-card-row\"\n role=\"listitem\"\n [attr.data-index]=\"$index\"\n [class]=\"item.customClass || ''\"\n >\n <div\n class=\"info-card-label\"\n [style.width]=\"item.labelWidth || options().labelWidth\"\n [attr.data-label]=\"item.label\"\n >\n {{ item.label }}\n </div>\n <div\n class=\"info-card-value\"\n [style.width]=\"item.valueWidth || options().valueWidth\"\n [attr.data-value]=\"item.value\"\n [title]=\"item.value?.toString() || ''\"\n >\n {{ item.value ?? 'Non renseigné' }}\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n\n <div class=\"info-card-actions\" [class]=\"getActionsClasses()\">\n <ng-content select=\"[card-actions]\"></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n input,\n model,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { CheckboxSize, CheckboxConfig, CheckboxLabelPosition } from './checkbox.types';\n\nexport const CHECKBOX_CONFIG = new InjectionToken<Partial<CheckboxConfig>>('CHECKBOX_CONFIG', {\n factory: () => ({\n checked: false,\n disabled: false,\n required: false,\n indeterminate: false,\n size: 'medium',\n labelPosition: 'right',\n label: ''\n })\n});\n\nlet checkboxIdCounter = 0;\n\n@Component({\n selector: 'psh-checkbox',\n standalone: true,\n imports: [],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshCheckboxComponent,\n multi: true\n }],\n host: {\n '[class.checkbox-disabled]': 'disabled()',\n '[class.checkbox-error]': '!!error()',\n '[class.checkbox-success]': '!!success()',\n '[class.checkbox-small]': 'size() === \"small\"',\n '[class.checkbox-large]': 'size() === \"large\"',\n '[class.checkbox-checked]': 'checked() && !indeterminate()',\n '[class.checkbox-indeterminate]': 'indeterminate()',\n '[attr.data-state]': 'state()',\n '[attr.aria-checked]': 'ariaChecked()'\n }\n})\nexport class PshCheckboxComponent implements ControlValueAccessor, FormCheckboxControl {\n private readonly config = inject(CHECKBOX_CONFIG);\n private readonly checkboxInput = viewChild<ElementRef<HTMLInputElement>>('checkboxInput');\n\n protected readonly uniqueId = `psh-cb-${++checkboxIdCounter}`;\n\n private onChange = (_: boolean) => {};\n private onTouched = () => {};\n\n readonly checked = model(this.config.checked ?? false);\n readonly disabled = model(this.config.disabled ?? false);\n readonly indeterminate = model(this.config.indeterminate ?? false);\n readonly touched = model(false);\n\n required = input(this.config.required ?? false);\n label = input(this.config.label ?? '');\n error = input<string | null | undefined>(this.config.error);\n success = input<string | null | undefined>(this.config.success);\n ariaLabel = input<string | undefined>(this.config.ariaLabel);\n size = input<CheckboxSize>(this.config.size ?? 'medium');\n labelPosition = input<CheckboxLabelPosition>(this.config.labelPosition ?? 'right');\n\n ariaChecked = computed(() => this.indeterminate() ? 'mixed' : (this.checked() ? 'true' : 'false'));\n computedAriaLabel = computed(() => this.ariaLabel() || this.label() || undefined);\n \n ariaDescribedBy = computed(() => {\n const ids = [];\n if (this.error()) ids.push(`${this.uniqueId}-error`);\n if (this.success()) ids.push(`${this.uniqueId}-success`);\n return ids.length > 0 ? ids.join(' ') : undefined;\n });\n\n state = computed(() => {\n if (this.disabled()) return 'disabled';\n if (this.indeterminate()) return 'indeterminate';\n if (this.error()) return 'error';\n if (this.success()) return 'success';\n return this.checked() ? 'checked' : 'unchecked';\n });\n\n constructor() {\n effect(() => {\n if (!this.label() && !this.ariaLabel()) {\n console.warn('[psh-checkbox] Label manquant pour l\\'accessibilité.');\n }\n });\n }\n\n protected toggle(): void {\n if (!this.disabled()) {\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.indeterminate.set(false);\n this.onChange(newValue);\n this.onTouched();\n this.touched.set(true);\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n writeValue(value: unknown): void { this.checked.set(!!value); }\n registerOnChange(fn: (v: boolean) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled.set(isDisabled); }\n\n focus(): void { this.checkboxInput()?.nativeElement.focus(); }\n}","<div class=\"checkbox-container\">\n <label class=\"checkbox-label\" [class.label-left]=\"labelPosition() === 'left'\">\n <input\n #checkboxInput\n type=\"checkbox\"\n class=\"checkbox-input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n (change)=\"toggle()\"\n (keydown)=\"handleKeydown($event)\"\n />\n \n <span class=\"checkbox-control\">\n @if (checked() && !indeterminate()) {\n <i class=\"ph ph-check\" aria-hidden=\"true\"></i>\n }\n @if (indeterminate()) {\n <i class=\"ph ph-minus\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"checkbox-text\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content></ng-content>\n }\n </span>\n </label>\n\n @if (error()) {\n <div [id]=\"uniqueId + '-error'\" class=\"checkbox-message error\" role=\"alert\">\n {{ error() }}\n </div>\n }\n @if (success()) {\n <div [id]=\"uniqueId + '-success'\" class=\"checkbox-message success\" role=\"status\">\n {{ success() }}\n </div>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { CollapseVariant, CollapseSize } from './collapse.types';\n\n@Component({\n selector: 'psh-collapse',\n templateUrl: './collapse.component.html',\n styleUrls: ['./collapse.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshCollapseComponent {\n private static idCounter = 0;\n\n expanded = model(false);\n\n disabled = input(false);\n variant = input('default' as CollapseVariant, {\n transform: (value: CollapseVariant) => {\n if (!['default', 'outline'].includes(value)) {\n console.warn(`[psh-collapse] Invalid variant \"${value}\", falling back to \"default\"`);\n return 'default';\n }\n return value;\n }\n });\n size = input('medium' as CollapseSize, {\n transform: (value: CollapseSize) => {\n if (!['small', 'medium', 'large'].includes(value)) {\n console.warn(`[psh-collapse] Invalid size \"${value}\", falling back to \"medium\"`);\n return 'medium';\n }\n return value;\n }\n });\n icon = input('caret-down');\n id = input<string>();\n maxHeight = input<string>('1000px');\n disableAnimation = input(false);\n\n opened = output<void>();\n closed = output<void>();\n toggled = output<boolean>();\n\n private readonly uniqueId = `collapse-${++PshCollapseComponent.idCounter}`;\n\n protected readonly headerId = computed(() => {\n const customId = this.id();\n return customId ? `${customId}-header` : `${this.uniqueId}-header`;\n });\n\n protected readonly contentId = computed(() => {\n const customId = this.id();\n return customId ? `${customId}-content` : `${this.uniqueId}-content`;\n });\n\n readonly state = computed(() => {\n if (this.disabled()) return 'disabled';\n return this.expanded() ? 'expanded' : 'collapsed';\n });\n\n readonly animationClass = computed(() => {\n return this.disableAnimation() ? 'no-animation' : '';\n });\n\n toggle(): void {\n if (!this.disabled()) {\n this.expanded.update(value => {\n const newValue = !value;\n this.toggled.emit(newValue);\n return newValue;\n });\n }\n }\n\n open(): void {\n if (!this.disabled() && !this.expanded()) {\n this.expanded.set(true);\n this.opened.emit();\n }\n }\n\n close(): void {\n if (!this.disabled() && this.expanded()) {\n this.expanded.set(false);\n this.closed.emit();\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggle();\n break;\n case 'Escape':\n if (this.expanded()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n}","<div\n class=\"collapse\"\n [class.expanded]=\"expanded()\"\n [class.disabled]=\"disabled()\"\n [class.outline]=\"variant() === 'outline'\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.no-animation]=\"disableAnimation()\"\n [attr.data-state]=\"state()\"\n [style.--collapse-max-height]=\"maxHeight()\"\n>\n <button\n [id]=\"headerId()\"\n class=\"collapse-header\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId()\"\n [disabled]=\"disabled()\"\n type=\"button\"\n >\n <span class=\"header-content\">\n <ng-content select=\"[collapse-header]\">\n <span>Section pliable</span>\n </ng-content>\n </span>\n <i\n class=\"ph ph-{{ icon() }}\"\n [class.expanded]=\"expanded()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <div\n [id]=\"contentId()\"\n class=\"collapse-content\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.aria-hidden]=\"!expanded()\"\n >\n <div class=\"content-wrapper\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n OnDestroy\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownItem, DropdownPlacement, DropdownSize } from './dropdown.types';\n\n@Component({\n selector: 'psh-dropdown',\n imports: [CommonModule],\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PshDropdownComponent<T = string> implements OnDestroy {\n private elementRef = inject(ElementRef);\n private clickOutsideHandler: ((event: MouseEvent) => void) | null = null;\n\n // Regular inputs\n variant = input<'primary' | 'secondary' | 'outline' | 'text'>('primary');\n size = input<DropdownSize>('medium');\n placement = input<DropdownPlacement>('bottom-start');\n items = input<DropdownItem<T>[]>([]);\n label = input('Dropdown Menu');\n icon = input<string>();\n ariaLabel = input<string>();\n\n // Model inputs\n disabled = model(false);\n\n // State\n private isOpenSignal = signal(false);\n private selectedItemSignal = signal<DropdownItem<T> | null>(null);\n private focusedItemIndex = signal(-1);\n\n // Outputs\n selected = output<DropdownItem<T>>();\n opened = output<void>();\n closed = output<void>();\n\n // Computed values\n isOpen = computed(() => this.isOpenSignal());\n selectedItem = computed(() => this.selectedItemSignal());\n\n computedAriaLabel = computed(() => \n this.ariaLabel() || 'Toggle dropdown menu'\n );\n\n state = computed(() => this.getState());\n\n private getState(): string {\n if (this.disabled()) return 'disabled';\n if (this.isOpen()) return 'open';\n return 'closed';\n }\n\n constructor() {\n this.setupClickOutsideListener();\n }\n\n private setupClickOutsideListener(): void {\n this.clickOutsideHandler = (event: MouseEvent) => {\n if (this.isOpen()) {\n const target = event.target as HTMLElement;\n if (!this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n };\n document.addEventListener('click', this.clickOutsideHandler);\n }\n\n toggleDropdown(): void {\n if (!this.disabled()) {\n event?.stopPropagation();\n this.isOpenSignal.update(v => !v);\n if (this.isOpen()) {\n this.focusedItemIndex.set(0);\n this.opened.emit();\n } else {\n this.focusedItemIndex.set(-1);\n this.closed.emit();\n }\n }\n }\n\n selectItem(item: DropdownItem<T>): void {\n if (!item.disabled) {\n this.selectedItemSignal.set(item);\n this.selected.emit(item);\n this.close();\n }\n }\n\n close(): void {\n if (this.isOpen()) {\n this.isOpenSignal.set(false);\n this.focusedItemIndex.set(-1);\n this.closed.emit();\n }\n }\n\n handleTriggerKeyDown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleDropdown();\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggleDropdown();\n } else {\n this.focusNextItem();\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggleDropdown();\n } else {\n this.focusPreviousItem();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n\n handleItemKeyDown(event: KeyboardEvent, item: DropdownItem<T>, index: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectItem(item);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem();\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusFirstItem();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusLastItem();\n break;\n\n case 'Escape':\n event.preventDefault();\n this.close();\n break;\n\n case 'Tab':\n this.close();\n break;\n }\n }\n\n private focusNextItem(): void {\n const items = this.items();\n if (items.length === 0) return;\n\n const currentIndex = this.focusedItemIndex();\n let nextIndex = currentIndex + 1;\n\n while (nextIndex < items.length && items[nextIndex]?.disabled) {\n nextIndex++;\n }\n\n if (nextIndex >= items.length) {\n nextIndex = 0;\n while (nextIndex < items.length && items[nextIndex]?.disabled) {\n nextIndex++;\n }\n }\n\n if (nextIndex < items.length) {\n this.focusedItemIndex.set(nextIndex);\n this.focusItemAtIndex(nextIndex);\n }\n }\n\n private focusPreviousItem(): void {\n const items = this.items();\n if (items.length === 0) return;\n\n const currentIndex = this.focusedItemIndex();\n let previousIndex = currentIndex - 1;\n\n while (previousIndex >= 0 && items[previousIndex]?.disabled) {\n previousIndex--;\n }\n\n if (previousIndex < 0) {\n previousIndex = items.length - 1;\n while (previousIndex >= 0 && items[previousIndex]?.disabled) {\n previousIndex--;\n }\n }\n\n if (previousIndex >= 0) {\n this.focusedItemIndex.set(previousIndex);\n this.focusItemAtIndex(previousIndex);\n }\n }\n\n private focusFirstItem(): void {\n const items = this.items();\n let index = 0;\n while (index < items.length && items[index]?.disabled) {\n index++;\n }\n if (index < items.length) {\n this.focusedItemIndex.set(index);\n this.focusItemAtIndex(index);\n }\n }\n\n private focusLastItem(): void {\n const items = this.items();\n let index = items.length - 1;\n while (index >= 0 && items[index]?.disabled) {\n index--;\n }\n if (index >= 0) {\n this.focusedItemIndex.set(index);\n this.focusItemAtIndex(index);\n }\n }\n\n private focusItemAtIndex(index: number): void {\n setTimeout(() => {\n const item = this.elementRef.nativeElement.querySelector(\n `[data-dropdown-item-index=\"${index}\"]`\n ) as HTMLElement;\n item?.focus();\n });\n }\n\n ngOnDestroy(): void {\n if (this.clickOutsideHandler) {\n document.removeEventListener('click', this.clickOutsideHandler);\n }\n }\n}","<div\n class=\"dropdown-container\"\n [class]=\"size()\"\n [class.open]=\"isOpen()\"\n [class.disabled]=\"disabled()\"\n [attr.data-state]=\"state()\"\n>\n <button\n class=\"dropdown-trigger\"\n [class]=\"variant()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"handleTriggerKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-haspopup]=\"'menu'\"\n type=\"button\"\n [disabled]=\"disabled()\"\n >\n <span class=\"trigger-content\">\n @if (icon()) {\n <i class=\"ph ph-{{ icon() }}\" aria-hidden=\"true\"></i>\n }\n <ng-content select=\"[dropdown-trigger]\">\n @if (label()) {\n {{ label() }}\n }\n </ng-content>\n <i \n class=\"ph ph-caret-down trigger-arrow\"\n [class.open]=\"isOpen()\"\n aria-hidden=\"true\"\n ></i>\n </span>\n </button>\n\n @if (isOpen()) {\n <div \n class=\"dropdown-menu\"\n [class]=\"placement()\"\n role=\"menu\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-content select=\"[dropdown-menu]\">\n @for (item of items(); track item.value; let i = $index) {\n <button\n type=\"button\"\n class=\"dropdown-item\"\n [class.disabled]=\"item.disabled\"\n [class.active]=\"selectedItem() === item\"\n [attr.data-dropdown-item-index]=\"i\"\n (click)=\"selectItem(item)\"\n (keydown)=\"handleItemKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"item-label\">{{ item.content }}</span>\n </button>\n }\n </ng-content>\n </div>\n }\n</div>","export type InputType = 'text' | 'password' | 'email' | 'tel' | 'url' | 'search' | 'date' | 'number';\nexport type InputVariant = 'outlined' | 'filled';\nexport type InputSize = 'small' | 'medium' | 'large';\n\nexport interface AutocompleteConfig {\n minLength: number;\n debounceTime: number;\n}\n\nexport interface InputConfig {\n type: InputType;\n variant: InputVariant;\n size: InputSize;\n disabled: boolean;\n required: boolean;\n readonly: boolean;\n fullWidth: boolean;\n showLabel: boolean;\n label: string;\n placeholder: string;\n error: string | null | undefined;\n success: string | null | undefined;\n hint: string | null | undefined;\n ariaLabel: string | null;\n}\n\nexport interface SuggestionResult {\n suggestions: string[];\n error?: string;\n}\n\nexport const INPUT_LABELS = {\n showPassword: 'Afficher le mot de passe',\n hidePassword: 'Masquer le mot de passe'\n} as const;","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { InputType, InputVariant, InputSize, AutocompleteConfig, INPUT_LABELS } from './input.types';\n\n@Component({\n selector: 'psh-input',\n imports: [CommonModule],\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshInputComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.full-width]': 'fullWidth()',\n '[class.small]': 'size() === \"small\"',\n '[class.large]': 'size() === \"large\"',\n '[class.error]': '!!error()',\n '[class.success]': '!!success()',\n '[class.disabled]': 'disabled()',\n '[class.readonly]': 'readonly()',\n '[class.loading]': 'loading()',\n '[class.focused]': 'focused()',\n '[class.has-start-icon]': '!!iconStart()',\n '[class.has-end-icon]': '!!iconEnd() || type() === \"password\"',\n '[class.outlined]': 'variant() === \"outlined\"',\n '[class.filled]': 'variant() === \"filled\"',\n }\n})\nexport class PshInputComponent implements ControlValueAccessor, FormValueControl<string> {\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n private static nextId = 0;\n readonly inputId = `psh-input-${PshInputComponent.nextId++}`;\n\n readonly value = model<string>('');\n readonly disabled = model<boolean>(false);\n readonly readonly = model(false);\n readonly loading = model(false);\n readonly touched = model(false);\n\n variant = input<InputVariant>('outlined');\n size = input<InputSize>('medium');\n fullWidth = input(false);\n required = input(false);\n showLabel = input(true);\n type = input<InputType>('text');\n placeholder = input('');\n label = input('');\n ariaLabel = input<string | null>(null);\n iconStart = input<string>();\n iconEnd = input<string>();\n error = input<string | null | undefined>(null);\n success = input<string | null | undefined>(null);\n hint = input<string | null | undefined>(null);\n \n suggestions = input<string[] | ((query: string) => Promise<string[]>)>([]);\n autocompleteConfig = input<AutocompleteConfig>({\n minLength: 1,\n debounceTime: 300\n });\n\n private readonly suggestionsVisible = signal(false);\n private readonly focusedSignal = signal(false);\n private readonly filteredSuggestionsSignal = signal<string[]>([]);\n readonly focusedSuggestionIndex = signal(-1);\n private readonly passwordVisibleSignal = signal(false);\n \n private blurTimeoutId: number | null = null;\n private debounceTimeoutId: number | null = null;\n\n inputFocus = output<void>();\n inputBlur = output<void>();\n suggestionSelect = output<string>();\n\n showSuggestions = computed(() => this.suggestionsVisible() && this.filteredSuggestions().length > 0);\n filteredSuggestions = computed(() => this.filteredSuggestionsSignal());\n focused = computed(() => this.focusedSignal());\n passwordVisible = computed(() => this.passwordVisibleSignal());\n \n effectiveType = computed(() => {\n if (this.type() === 'password') {\n return this.passwordVisible() ? 'text' : 'password';\n }\n return this.type();\n });\n\n computedAriaLabel = computed(() => this.ariaLabel() || this.label() || this.placeholder());\n passwordToggleLabel = computed(() => this.passwordVisible() ? INPUT_LABELS.hidePassword : INPUT_LABELS.showPassword);\n\n state = computed(() => this.getState());\n\n private getState(): string {\n if (this.disabled()) return 'disabled';\n if (this.readonly()) return 'readonly';\n if (this.loading()) return 'loading';\n if (this.error()) return 'error';\n if (this.success()) return 'success';\n if (this.focused()) return 'focused';\n return 'default';\n }\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n if (this.blurTimeoutId) window.clearTimeout(this.blurTimeoutId);\n if (this.debounceTimeoutId) window.clearTimeout(this.debounceTimeoutId);\n });\n }\n\n private onChange = (_: string) => {};\n private onTouched = () => {};\n\n writeValue(value: unknown): void {\n const safeValue = typeof value === 'string' ? value : '';\n this.value.set(safeValue);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (v: string) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n handleInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n this.onChange(val);\n\n if (this.suggestions()) {\n this.debouncedUpdateSuggestions(val);\n }\n }\n\n handleFocus(): void {\n this.focusedSignal.set(true);\n this.inputFocus.emit();\n\n const val = this.value();\n if (this.suggestions() && val.length >= this.autocompleteConfig().minLength) {\n this.updateSuggestions(val);\n }\n }\n\n handleBlur(): void {\n this.focusedSignal.set(false);\n this.inputBlur.emit();\n this.onTouched();\n this.touched.set(true);\n\n if (this.blurTimeoutId) window.clearTimeout(this.blurTimeoutId);\n this.blurTimeoutId = window.setTimeout(() => {\n this.suggestionsVisible.set(false);\n this.focusedSuggestionIndex.set(-1);\n this.blurTimeoutId = null;\n }, 200);\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (!this.showSuggestions()) return;\n\n const suggestions = this.filteredSuggestions();\n const currentIndex = this.focusedSuggestionIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusedSuggestionIndex.update(i => (i < suggestions.length - 1 ? i + 1 : 0));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusedSuggestionIndex.update(i => (i > 0 ? i - 1 : suggestions.length - 1));\n break;\n case 'Enter':\n if (currentIndex >= 0 && currentIndex < suggestions.length) {\n event.preventDefault();\n const selected = suggestions[currentIndex];\n if (selected !== undefined) {\n this.handleSuggestionClick(selected);\n }\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.suggestionsVisible.set(false);\n this.focusedSuggestionIndex.set(-1);\n break;\n }\n }\n\n handleSuggestionClick(suggestion: string): void {\n this.value.set(suggestion);\n this.onChange(suggestion);\n this.suggestionSelect.emit(suggestion);\n this.suggestionsVisible.set(false);\n this.focusedSuggestionIndex.set(-1);\n }\n\n togglePasswordVisibility(): void {\n this.passwordVisibleSignal.update(v => !v);\n }\n\n protected hasLabelContent(): boolean {\n return !!this.elementRef.nativeElement.querySelector('[input-label]');\n }\n\n focus(): void {\n const inputEl = this.elementRef.nativeElement.querySelector('input');\n inputEl?.focus();\n }\n\n focusSelect(): void {\n this.focus();\n }\n\n private debouncedUpdateSuggestions(value: string): void {\n if (this.debounceTimeoutId) window.clearTimeout(this.debounceTimeoutId);\n this.debounceTimeoutId = window.setTimeout(() => {\n this.updateSuggestions(value);\n this.debounceTimeoutId = null;\n }, this.autocompleteConfig().debounceTime);\n }\n\n private async updateSuggestions(value: string): Promise<void> {\n const provider = this.suggestions();\n\n try {\n let results: string[] = [];\n if (typeof provider === 'function') {\n results = await provider(value);\n } else if (Array.isArray(provider)) {\n results = provider.filter(s => s.toLowerCase().includes(value.toLowerCase()));\n }\n \n this.filteredSuggestionsSignal.set(results);\n this.suggestionsVisible.set(results.length > 0);\n } catch (error) {\n this.filteredSuggestionsSignal.set([]);\n }\n }\n}","<div class=\"input-container\">\n @if (showLabel()) {\n <label \n class=\"input-label\" \n [for]=\"inputId\" \n (click)=\"focusSelect()\" \n [class.required]=\"required()\"\n >\n <ng-content select=\"[input-label]\"></ng-content>\n @if (!hasLabelContent()) {\n {{ label() }}\n }\n </label>\n }\n\n <div class=\"input-wrapper\">\n @if (iconStart()) {\n <i class=\"ph ph-{{ iconStart() }}\" aria-hidden=\"true\"></i>\n }\n\n <input\n [id]=\"inputId\"\n [type]=\"effectiveType()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-invalid]=\"!!error()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"error() ? 'error-message' : success() ? 'success-message' : hint() ? 'hint-message' : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [attr.data-state]=\"state()\"\n />\n\n @if (iconEnd()) {\n <i class=\"ph ph-{{ iconEnd() }}\" aria-hidden=\"true\"></i>\n }\n\n @if (type() === 'password') {\n <button\n type=\"button\"\n class=\"password-toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"passwordToggleLabel()\"\n [disabled]=\"disabled() || readonly()\"\n >\n <i \n [class]=\"'ph ph-' + (passwordVisible() ? 'eye-slash' : 'eye')\"\n aria-hidden=\"true\"\n ></i>\n </button>\n }\n\n @if (loading()) {\n <div class=\"input-loader\" aria-hidden=\"true\">\n <div class=\"loader\"></div>\n </div>\n }\n\n @if (showSuggestions()) {\n <div class=\"suggestions-list\" role=\"listbox\">\n @for (suggestion of filteredSuggestions(); track suggestion; let i = $index) {\n <div \n class=\"suggestion-item\"\n [class.focused]=\"i === focusedSuggestionIndex()\"\n role=\"option\"\n [attr.aria-selected]=\"i === focusedSuggestionIndex()\"\n (click)=\"handleSuggestionClick(suggestion)\"\n (mouseenter)=\"focusedSuggestionIndex.set(i)\"\n >\n {{ suggestion }}\n </div>\n }\n </div>\n }\n </div>\n\n @if (error()) {\n <div id=\"error-message\" class=\"input-error\" role=\"alert\">\n <ng-content select=\"[input-error]\">\n {{ error() }}\n </ng-content>\n </div>\n }\n\n @if (success()) {\n <div id=\"success-message\" class=\"input-success\" role=\"status\">\n <ng-content select=\"[input-success]\">\n {{ success() }}\n </ng-content>\n </div>\n }\n\n @if (hint()) {\n <div id=\"hint-message\" class=\"input-hint\">\n <ng-content select=\"[input-hint]\">\n {{ hint() }}\n </ng-content>\n </div>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n output,\n effect,\n InjectionToken,\n ElementRef,\n AfterViewInit,\n OnDestroy\n} from '@angular/core';\nimport { TooltipPosition, TooltipConfig, TooltipVariant } from './tooltip.types';\n\nexport const TOOLTIP_CONFIG = new InjectionToken<Partial<TooltipConfig>>('TOOLTIP_CONFIG', {\n factory: () => ({\n variant: 'dark',\n position: 'top',\n showDelay: 200,\n hideDelay: 100,\n maxWidth: 200,\n autoFlip: true,\n })\n});\n\n@Component({\n selector: 'psh-tooltip',\n imports: [],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'show()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hideImmediate()',\n '[style.display]': '\"inline-block\"',\n '[style.position]': '\"relative\"',\n }\n})\nexport class PshTooltipComponent implements AfterViewInit, OnDestroy {\n private config = inject(TOOLTIP_CONFIG) as Required<TooltipConfig>;\n private elementRef = inject(ElementRef);\n\n variant = input<TooltipVariant>(this.config.variant ?? 'dark');\n position = input<TooltipPosition>(this.config.position ?? 'top');\n showDelay = input<number>(this.config.showDelay ?? 200);\n hideDelay = input<number>(this.config.hideDelay ?? 100);\n maxWidth = input<number>(this.config.maxWidth ?? 200);\n autoFlip = input<boolean>(this.config.autoFlip ?? true);\n\n content = input.required<string>();\n disabled = input<boolean>(false);\n id = input<string>(this.generateUniqueId());\n\n shown = output<void>();\n hidden = output<void>();\n\n isVisible = signal(false);\n computedPosition = signal<TooltipPosition>('top');\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n tooltipId = computed(() => `${this.id()}-tooltip`);\n triggerId = computed(() => `${this.id()}-trigger`);\n\n constructor() {\n effect(() => {\n if (this.isVisible()) {\n this.shown.emit();\n } else {\n this.hidden.emit();\n }\n });\n\n effect(() => {\n const pos = this.position();\n if (!this.autoFlip()) {\n this.computedPosition.set(pos);\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (this.autoFlip()) {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible()) {\n this.updatePosition();\n }\n });\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n if (this.hideTimeout) clearTimeout(this.hideTimeout);\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n\n show(): void {\n if (this.disabled()) return;\n\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (!this.isVisible() && !this.showTimeout) {\n this.showTimeout = setTimeout(() => {\n if (this.autoFlip()) {\n this.updatePosition();\n } else {\n this.computedPosition.set(this.position());\n }\n this.isVisible.set(true);\n this.showTimeout = null;\n }, this.showDelay());\n }\n }\n\n hide(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n\n if (this.isVisible() && !this.hideTimeout) {\n this.hideTimeout = setTimeout(() => {\n this.isVisible.set(false);\n this.hideTimeout = null;\n }, this.hideDelay());\n }\n }\n\n hideImmediate(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n this.isVisible.set(false);\n }\n\n private updatePosition(): void {\n const preferredPosition = this.position();\n const element = this.elementRef.nativeElement as HTMLElement;\n const rect = element.getBoundingClientRect();\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const tooltipEstimatedHeight = 40;\n const tooltipEstimatedWidth = Math.min(this.maxWidth(), 200);\n const offset = 12;\n\n const spaceTop = rect.top;\n const spaceBottom = viewportHeight - rect.bottom;\n const spaceLeft = rect.left;\n const spaceRight = viewportWidth - rect.right;\n\n let finalPosition = preferredPosition;\n\n switch (preferredPosition) {\n case 'top':\n if (spaceTop < tooltipEstimatedHeight + offset && spaceBottom > spaceTop) {\n finalPosition = 'bottom';\n }\n break;\n case 'bottom':\n if (spaceBottom < tooltipEstimatedHeight + offset && spaceTop > spaceBottom) {\n finalPosition = 'top';\n }\n break;\n case 'left':\n if (spaceLeft < tooltipEstimatedWidth + offset && spaceRight > spaceLeft) {\n finalPosition = 'right';\n }\n break;\n case 'right':\n if (spaceRight < tooltipEstimatedWidth + offset && spaceLeft > spaceRight) {\n finalPosition = 'left';\n }\n break;\n }\n\n this.computedPosition.set(finalPosition);\n }\n\n private generateUniqueId(): string {\n return `psh-tooltip-${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n","<div\n class=\"tooltip-wrapper\"\n [attr.id]=\"triggerId()\"\n [attr.aria-describedby]=\"isVisible() ? tooltipId() : null\"\n>\n <ng-content></ng-content>\n\n @if (isVisible()) {\n <div\n [attr.id]=\"tooltipId()\"\n class=\"tooltip\"\n [class.top]=\"computedPosition() === 'top'\"\n [class.bottom]=\"computedPosition() === 'bottom'\"\n [class.left]=\"computedPosition() === 'left'\"\n [class.right]=\"computedPosition() === 'right'\"\n [class.light]=\"variant() === 'light'\"\n [class.dark]=\"variant() === 'dark'\"\n [style.max-width.px]=\"maxWidth()\"\n role=\"tooltip\"\n >\n {{ content() }}\n <div class=\"tooltip-arrow\"></div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MenuItem, MenuMode, MenuVariant } from './menu.types';\nimport { PshTooltipComponent } from '../tooltip/tooltip.component';\n\n@Component({\n selector: 'psh-menu',\n imports: [CommonModule, PshTooltipComponent],\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshMenuComponent<T = string> {\n\n mode = input<MenuMode>('vertical');\n variant = input<MenuVariant>('default');\n collapsible = input(false);\n ariaLabels = input<Record<string, string>>({\n disabled: 'Disabled',\n submenu: 'Submenu',\n expand: 'Expand menu',\n collapse: 'Collapse menu'\n });\n\n items = input<MenuItem<T>[]>([]);\n\n collapsed = model(false);\n expandedItemIds = model<string[]>([]);\n\n itemClick = output<MenuItem<T>>();\n submenuToggle = output<{ item: MenuItem<T>; expanded: boolean }>();\n\n protected expandedItemsSet = computed(() => new Set(this.expandedItemIds()));\n\n state = computed(() => this.getState());\n\n showTooltip = computed(() => this.collapsed() && this.mode() === 'vertical');\n\n constructor() {\n effect(() => {\n if (this.collapsed()) {\n this.expandedItemIds.set([]);\n }\n });\n }\n\n private getState(): string {\n if (this.collapsed()) return 'collapsed';\n if (this.collapsible()) return 'collapsible';\n return this.mode();\n }\n\n toggleItem(item: MenuItem<T>, event?: Event): void {\n if (item.disabled) return;\n\n if (item.children?.length) {\n event?.preventDefault();\n this.toggleItemExpansion(item.id);\n const expanded = this.expandedItemsSet().has(item.id);\n this.submenuToggle.emit({ item, expanded });\n } else {\n this.itemClick.emit(item);\n }\n }\n\n toggleCollapse(): void {\n if (this.collapsible()) {\n this.collapsed.update((v) => !v);\n }\n }\n\n isExpanded(item: MenuItem<T>): boolean {\n return !this.collapsed() && this.expandedItemsSet().has(item.id);\n }\n\n expandItem(itemId: string): void {\n if (this.collapsed()) return;\n const current = this.expandedItemIds();\n if (!current.includes(itemId)) {\n this.expandedItemIds.set([...current, itemId]);\n }\n }\n\n collapseItem(itemId: string): void {\n const current = this.expandedItemIds();\n if (current.includes(itemId)) {\n this.expandedItemIds.set(current.filter(id => id !== itemId));\n }\n }\n\n toggleItemExpansion(itemId: string): void {\n if (this.collapsed()) return;\n const current = this.expandedItemIds();\n if (current.includes(itemId)) {\n this.expandedItemIds.set(current.filter(id => id !== itemId));\n } else {\n this.expandedItemIds.set([...current, itemId]);\n }\n }\n\n expandAll(): void {\n if (this.collapsed()) return;\n const allIds = this.collectItemIdsWithChildren(this.items());\n this.expandedItemIds.set(allIds);\n }\n\n collapseAll(): void {\n this.expandedItemIds.set([]);\n }\n\n private collectItemIdsWithChildren(items: MenuItem<T>[]): string[] {\n const ids: string[] = [];\n for (const item of items) {\n if (item.children?.length) {\n ids.push(item.id);\n ids.push(...this.collectItemIdsWithChildren(item.children));\n }\n }\n return ids;\n }\n\n getAriaLabel(item: MenuItem<T>): string {\n const base = item.content;\n if (item.disabled) {\n return `${base} (${this.ariaLabels()['disabled']})`;\n }\n if (item.children?.length) {\n return `${base} (${this.ariaLabels()['submenu']})`;\n }\n return base;\n }\n\n handleKeyDown(event: KeyboardEvent, item: MenuItem<T>, index: number): void {\n if (item.disabled) return;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleItem(item, event);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem(index);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem(index);\n break;\n\n case 'ArrowRight':\n if (item.children?.length && !this.isExpanded(item)) {\n event.preventDefault();\n this.toggleItem(item, event);\n }\n break;\n\n case 'ArrowLeft':\n if (item.children?.length && this.isExpanded(item)) {\n event.preventDefault();\n this.toggleItem(item, event);\n }\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusFirstItem();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusLastItem();\n break;\n\n case 'Escape':\n if (this.collapsible() && !this.collapsed()) {\n event.preventDefault();\n this.toggleCollapse();\n }\n break;\n }\n }\n\n private focusNextItem(currentIndex: number): void {\n const items = this.items();\n const nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n this.focusItemAtIndex(nextIndex, 1);\n }\n\n private focusPreviousItem(currentIndex: number): void {\n const items = this.items();\n const previousIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n this.focusItemAtIndex(previousIndex, -1);\n }\n\n private focusFirstItem(): void {\n this.focusItemAtIndex(0, 1);\n }\n\n private focusLastItem(): void {\n this.focusItemAtIndex(this.items().length - 1, -1);\n }\n\n private focusItemAtIndex(index: number, direction: 1 | -1): void {\n const items = this.items();\n if (index < 0) {\n index = items.length - 1;\n } else if (index >= items.length) {\n index = 0;\n }\n\n const item = items[index];\n if (item && !item.divider && !item.disabled) {\n setTimeout(() => {\n const link = document.querySelector(`[data-menu-item-id=\"${item.id}\"]`) as HTMLElement;\n link?.focus();\n });\n } else {\n const nextIndex = index + direction;\n if (nextIndex !== index) {\n this.focusItemAtIndex(nextIndex, direction);\n }\n }\n }\n}","<nav \n class=\"menu\"\n [class.vertical]=\"mode() === 'vertical'\"\n [class.horizontal]=\"mode() === 'horizontal'\"\n [class.compact]=\"variant() === 'compact'\"\n [class.expanded]=\"variant() === 'expanded'\"\n [class.collapsed]=\"collapsed()\"\n role=\"navigation\"\n [attr.aria-label]=\"'Navigation menu'\"\n [attr.data-state]=\"state()\"\n>\n @if (collapsible()) {\n <button \n class=\"menu-collapse-button\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"collapsed() ? ariaLabels()['expand'] : ariaLabels()['collapse']\"\n >\n <i class=\"ph ph-caret-left\" aria-hidden=\"true\"></i>\n </button>\n }\n\n <ul class=\"menu-list\" role=\"menubar\">\n @for (item of items(); track item.id; let i = $index) {\n @if (item.divider) {\n <li class=\"menu-divider\" role=\"separator\"></li>\n } @else {\n <li\n class=\"menu-item\"\n [class.has-children]=\"item.children?.length\"\n [class.expanded]=\"isExpanded(item)\"\n [class.disabled]=\"item.disabled\"\n role=\"none\"\n >\n @if (item.path) {\n @if (showTooltip()) {\n <psh-tooltip [content]=\"item.content\" position=\"right\" [showDelay]=\"100\" [hideDelay]=\"0\">\n <a\n class=\"menu-link\"\n [attr.href]=\"item.path\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n </a>\n </psh-tooltip>\n } @else {\n <a\n class=\"menu-link\"\n [attr.href]=\"item.path\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ item.content }}</span>\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n @if (item.children?.length) {\n <i\n class=\"ph ph-caret-down menu-arrow\"\n [class.expanded]=\"isExpanded(item)\"\n aria-hidden=\"true\"\n ></i>\n }\n </a>\n }\n } @else {\n @if (showTooltip()) {\n <psh-tooltip [content]=\"item.content\" position=\"right\" [showDelay]=\"100\" [hideDelay]=\"0\">\n <button\n type=\"button\"\n class=\"menu-link\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n [disabled]=\"item.disabled\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n </button>\n </psh-tooltip>\n } @else {\n <button\n type=\"button\"\n class=\"menu-link\"\n [attr.data-menu-item-id]=\"item.id\"\n [class.active]=\"item.active\"\n [attr.aria-disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"item.children?.length ? isExpanded(item) : null\"\n [attr.aria-label]=\"getAriaLabel(item)\"\n (click)=\"toggleItem(item, $event)\"\n (keydown)=\"handleKeyDown($event, item, i)\"\n role=\"menuitem\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n [disabled]=\"item.disabled\"\n >\n @if (item.icon) {\n <i class=\"ph ph-{{ item.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ item.content }}</span>\n @if (item.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ item.badge }}</span>\n }\n @if (item.children?.length) {\n <i\n class=\"ph ph-caret-down menu-arrow\"\n [class.expanded]=\"isExpanded(item)\"\n aria-hidden=\"true\"\n ></i>\n }\n </button>\n }\n }\n\n @if (item.children?.length) {\n <ul\n class=\"submenu\"\n role=\"menu\"\n [attr.aria-label]=\"item.content + ' submenu'\"\n >\n @for (child of item.children; track child.id) {\n <li class=\"menu-item\" role=\"none\">\n @if (child.path) {\n <a\n class=\"menu-link\"\n [attr.href]=\"child.path\"\n [attr.data-menu-item-id]=\"child.id\"\n [class.active]=\"child.active\"\n [attr.aria-disabled]=\"child.disabled\"\n [attr.aria-label]=\"getAriaLabel(child)\"\n (click)=\"toggleItem(child, $event)\"\n (keydown.enter)=\"toggleItem(child, $event)\"\n (keydown.space)=\"toggleItem(child, $event)\"\n role=\"menuitem\"\n [attr.tabindex]=\"child.disabled ? -1 : 0\"\n >\n @if (child.icon) {\n <i class=\"ph ph-{{ child.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ child.content }}</span>\n @if (child.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ child.badge }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"menu-link\"\n [attr.data-menu-item-id]=\"child.id\"\n [class.active]=\"child.active\"\n [attr.aria-disabled]=\"child.disabled\"\n [attr.aria-label]=\"getAriaLabel(child)\"\n (click)=\"toggleItem(child, $event)\"\n (keydown.enter)=\"toggleItem(child, $event)\"\n (keydown.space)=\"toggleItem(child, $event)\"\n role=\"menuitem\"\n [attr.tabindex]=\"child.disabled ? -1 : 0\"\n [disabled]=\"child.disabled\"\n >\n @if (child.icon) {\n <i class=\"ph ph-{{ child.icon }}\" aria-hidden=\"true\"></i>\n }\n <span class=\"menu-label\">{{ child.content }}</span>\n @if (child.badge) {\n <span class=\"menu-badge\" role=\"status\">{{ child.badge }}</span>\n }\n </button>\n }\n </li>\n }\n </ul>\n }\n </li>\n }\n }\n </ul>\n</nav>","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n Injectable,\n InjectionToken,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { PshButtonComponent } from '../button/button.component';\nimport { ModalSize, ModalConfig } from './modal.types';\n\n/**\n * Injection token for global modal configuration\n *\n * @example\n * ```typescript\n * // In app.config.ts or main.ts\n * providers: [\n * {\n * provide: MODAL_CONFIG,\n * useValue: {\n * size: 'large',\n * closeOnBackdrop: false,\n * }\n * }\n * ]\n * ```\n */\nexport const MODAL_CONFIG = new InjectionToken<Partial<ModalConfig>>('MODAL_CONFIG', {\n factory: () => ({\n size: 'medium',\n showClose: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n preventScroll: true,\n showFooter: true,\n dismissLabel: 'Close',\n confirmLabel: 'Confirm',\n cancelLabel: 'Cancel'\n })\n});\n\n/**\n * Service for managing modal instances and global configuration\n *\n * Tracks all active modals and provides centralized configuration.\n * Useful for managing modal stacks and preventing multiple modals from conflicting.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n private config = inject(MODAL_CONFIG);\n private modalsSignal = signal<Set<string>>(new Set());\n\n /**\n * Computed signal exposing the number of active modals\n */\n readonly activeModalsCount = computed(() => this.modalsSignal().size);\n\n /**\n * Returns the global modal configuration\n */\n getConfig(): Partial<ModalConfig> {\n return this.config;\n }\n\n /**\n * Generates a unique identifier for a modal instance\n */\n generateId(): string {\n return `modal-${Math.random().toString(36).substring(2, 11)}`;\n }\n\n /**\n * Registers a modal instance when it opens\n * @param id - Unique modal identifier\n */\n register(id: string): void {\n this.modalsSignal.update(modals => {\n const newSet = new Set(modals);\n newSet.add(id);\n return newSet;\n });\n }\n\n /**\n * Unregisters a modal instance when it closes\n * @param id - Unique modal identifier\n */\n unregister(id: string): void {\n this.modalsSignal.update(modals => {\n const newSet = new Set(modals);\n newSet.delete(id);\n return newSet;\n });\n }\n\n /**\n * Checks if a modal is currently registered\n * @param id - Unique modal identifier\n */\n isRegistered(id: string): boolean {\n return this.modalsSignal().has(id);\n }\n}\n\n/**\n * A modal dialog component that displays content in an overlay\n *\n * @example\n * ```typescript\n * // Basic usage with two-way binding\n * <psh-modal [(open)]=\"isOpen\" title=\"My Modal\">\n * <p>Modal content</p>\n * </psh-modal>\n *\n * // With custom footer\n * <psh-modal [(open)]=\"isOpen\" title=\"Confirm Action\">\n * <p>Are you sure?</p>\n * <div modal-footer #modalFooter>\n * <psh-button (clicked)=\"isOpen = false\">Cancel</psh-button>\n * <psh-button variant=\"primary\" (clicked)=\"handleConfirm()\">Confirm</psh-button>\n * </div>\n * </psh-modal>\n * ```\n */\n@Component({\n selector: 'psh-modal',\n imports: [CommonModule, PshButtonComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PshModalComponent implements AfterViewInit, OnDestroy {\n private readonly config = inject(MODAL_CONFIG);\n private readonly modalService = inject(ModalService);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly modalId = this.modalService.generateId();\n private previousActiveElement: HTMLElement | null = null;\n private modalElement?: ElementRef<HTMLElement>;\n private isAttachedToBody = false;\n private resizeListener?: () => void;\n private readonly isMobileSignal = signal(false);\n private readonly mobileBreakpoint = 768;\n\n /**\n * Controls the visibility of the modal (two-way binding)\n */\n open = model(false);\n\n /**\n * Size of the modal dialog\n */\n size = input<ModalSize>(this.config.size ?? 'medium');\n\n /**\n * Whether to show the close button in the header\n */\n showClose = input(this.config.showClose ?? true);\n\n /**\n * Whether clicking the backdrop closes the modal\n */\n closeOnBackdrop = input(this.config.closeOnBackdrop ?? true);\n\n /**\n * Whether pressing Escape closes the modal\n */\n closeOnEscape = input(this.config.closeOnEscape ?? true);\n\n /**\n * Whether to prevent scrolling of the page when modal is open\n */\n preventScroll = input(this.config.preventScroll ?? true);\n\n /**\n * Whether to show the default footer with action buttons\n */\n showFooter = input(this.config.showFooter ?? true);\n\n /**\n * Title displayed in the modal header\n */\n title = input('Modal Title');\n\n /**\n * Accessible label for the close button\n */\n dismissLabel = input(this.config.dismissLabel ?? 'Close');\n\n /**\n * Label for the confirm button in the default footer\n */\n confirmLabel = input(this.config.confirmLabel ?? 'Confirm');\n\n /**\n * Label for the cancel button in the default footer\n */\n cancelLabel = input(this.config.cancelLabel ?? 'Cancel');\n\n /**\n * Custom CSS class(es) to apply to the modal container\n * Allows for custom styling without using deep selectors\n *\n * @example\n * ```html\n * <psh-modal styleClass=\"my-custom-modal\" />\n * ```\n */\n styleClass = input('');\n\n /**\n * Custom CSS class(es) to apply to the modal backdrop\n * Useful for stacked modals with different z-index or opacity\n *\n * @example\n * ```html\n * <psh-modal backdropClass=\"higher-z-index\" />\n * ```\n */\n backdropClass = input('');\n\n /**\n * Emitted when the modal is closed\n */\n closed = output<void>();\n\n /**\n * Emitted when the confirm button is clicked\n */\n confirmed = output<void>();\n\n /**\n * Content child for detecting custom footer projection\n */\n private readonly customFooter = contentChild<ElementRef>('modalFooter');\n\n /**\n * View child reference to the modal backdrop element\n */\n private readonly modalBackdrop = viewChild<ElementRef>('modalBackdrop');\n\n /**\n * Keyboard event handler for Escape key\n */\n private readonly escapeHandler = (event: KeyboardEvent) => {\n if (this.closeOnEscape() && this.open() && event.key === 'Escape') {\n this.handleClose();\n }\n };\n\n /**\n * Keyboard event handler for focus trap\n */\n private readonly focusTrapHandler = (event: KeyboardEvent) => {\n if (event.key === 'Tab' && this.open()) {\n this.handleFocusTrap(event);\n }\n };\n\n /**\n * Computed signal indicating if a custom footer is projected\n */\n hasCustomFooter = computed(() => !!this.customFooter());\n\n /**\n * Computed signal for the modal state\n */\n state = computed(() => this.open() ? 'open' : 'closed');\n\n /**\n * Computed signal for the modal dialog ID for accessibility\n */\n modalDialogId = computed(() => `${this.modalId}-dialog`);\n\n /**\n * Computed signal for the modal description ID for accessibility\n */\n modalDescriptionId = computed(() => `${this.modalId}-description`);\n\n /**\n * Computed signal indicating if the screen is mobile-sized\n */\n isMobileScreen = computed(() => this.isMobileSignal());\n\n constructor() {\n effect(() => {\n if (this.open()) {\n this.onModalOpen();\n } else {\n this.onModalClose();\n }\n });\n\n if (isPlatformBrowser(this.platformId)) {\n this.checkScreenSize();\n }\n }\n\n ngAfterViewInit(): void {\n this.attachModalToBody();\n this.setupResizeListener();\n }\n\n /**\n * Handles all setup when modal opens\n */\n private onModalOpen(): void {\n this.previousActiveElement = document.activeElement as HTMLElement;\n this.modalService.register(this.modalId);\n this.setupScrollLock();\n this.addEventListeners();\n this.focusFirstElement();\n }\n\n /**\n * Handles all cleanup when modal closes\n */\n private onModalClose(): void {\n this.modalService.unregister(this.modalId);\n this.removeScrollLock();\n this.removeEventListeners();\n this.restoreFocus();\n }\n\n /**\n * Checks if the current screen size is mobile\n */\n private checkScreenSize(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.isMobileSignal.set(window.innerWidth < this.mobileBreakpoint);\n }\n }\n\n /**\n * Sets up resize listener to detect screen size changes\n */\n private setupResizeListener(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n }\n }\n\n /**\n * Removes resize listener\n */\n private removeResizeListener(): void {\n if (isPlatformBrowser(this.platformId) && this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n }\n\n /**\n * Adds keyboard event listeners\n */\n private addEventListeners(): void {\n document.addEventListener('keydown', this.escapeHandler);\n document.addEventListener('keydown', this.focusTrapHandler);\n }\n\n /**\n * Removes keyboard event listeners\n */\n private removeEventListeners(): void {\n document.removeEventListener('keydown', this.escapeHandler);\n document.removeEventListener('keydown', this.focusTrapHandler);\n }\n\n /**\n * Focuses the first focusable element in the modal\n */\n private focusFirstElement(): void {\n setTimeout(() => {\n const modalElement = document.getElementById(this.modalDialogId());\n if (!modalElement) return;\n\n const focusableElements = this.getFocusableElements(modalElement);\n const firstElement = focusableElements[0];\n if (firstElement) {\n firstElement.focus();\n }\n }, 100);\n }\n\n /**\n * Restores focus to the element that opened the modal\n */\n private restoreFocus(): void {\n if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {\n setTimeout(() => {\n this.previousActiveElement?.focus();\n }, 100);\n }\n }\n\n /**\n * Handles focus trap to keep focus within the modal\n */\n private handleFocusTrap(event: KeyboardEvent): void {\n const modalElement = document.getElementById(this.modalDialogId());\n if (!modalElement) return;\n\n const focusableElements = this.getFocusableElements(modalElement);\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n if (!firstElement || !lastElement) return;\n\n const activeElement = document.activeElement;\n\n if (event.shiftKey) {\n if (activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n if (activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n /**\n * Gets all focusable elements within a container\n */\n private getFocusableElements(container: HTMLElement): HTMLElement[] {\n const selector = [\n 'button:not([disabled])',\n '[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', ');\n\n return Array.from(container.querySelectorAll<HTMLElement>(selector))\n .filter(el => el.offsetParent !== null);\n }\n\n /**\n * Closes the modal and emits the closed event\n */\n handleClose(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n /**\n * Emits the confirmed event without closing the modal\n * Allows parent component to handle confirmation logic and close if needed\n */\n handleConfirm(): void {\n this.confirmed.emit();\n }\n\n /**\n * Handles clicks on the backdrop\n * Closes the modal if closeOnBackdrop is true and click is on backdrop itself\n */\n handleBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdrop() && event.target === event.currentTarget) {\n this.handleClose();\n }\n }\n\n /**\n * Prevents page scrolling when modal is open\n * Calculates scrollbar width to prevent layout shift\n */\n private setupScrollLock(): void {\n if (!this.preventScroll() || typeof window === 'undefined') return;\n\n if (!document.documentElement.style.getPropertyValue('--scrollbar-width')) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n document.documentElement.style.setProperty(\n '--scrollbar-width',\n `${scrollbarWidth}px`\n );\n }\n document.body.classList.add('modal-open');\n }\n\n /**\n * Removes scroll lock when modal closes\n */\n private removeScrollLock(): void {\n if (!this.preventScroll() || typeof window === 'undefined') return;\n document.body.classList.remove('modal-open');\n }\n\n /**\n * Attaches the modal element to document.body for proper overlay rendering\n */\n private attachModalToBody(): void {\n const backdrop = this.modalBackdrop();\n if (backdrop && backdrop.nativeElement && !this.isAttachedToBody) {\n this.modalElement = backdrop;\n this.renderer.appendChild(document.body, backdrop.nativeElement);\n this.isAttachedToBody = true;\n }\n }\n\n /**\n * Detaches the modal element from document.body\n */\n private detachModalFromBody(): void {\n if (this.modalElement && this.modalElement.nativeElement && this.isAttachedToBody) {\n this.renderer.removeChild(document.body, this.modalElement.nativeElement);\n this.isAttachedToBody = false;\n }\n }\n\n /**\n * Cleanup on component destruction\n */\n ngOnDestroy(): void {\n this.removeScrollLock();\n this.removeEventListeners();\n this.removeResizeListener();\n this.modalService.unregister(this.modalId);\n this.detachModalFromBody();\n }\n}\n","<div\n #modalBackdrop\n [class]=\"'modal-backdrop ' + backdropClass()\"\n [class.open]=\"open()\"\n (click)=\"handleBackdropClick($event)\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!open()\"\n [attr.aria-labelledby]=\"modalDialogId() + '-title'\"\n [attr.aria-describedby]=\"modalDescriptionId()\"\n [attr.data-state]=\"state()\"\n>\n <div\n [class]=\"'modal-container ' + styleClass()\"\n [class.small]=\"size() === 'small'\"\n [class.medium]=\"size() === 'medium'\"\n [class.large]=\"size() === 'large'\"\n [attr.id]=\"modalDialogId()\"\n role=\"document\"\n >\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-header\">\n <h2 class=\"modal-title\" [attr.id]=\"modalDialogId() + '-title'\">\n <ng-content select=\"[modal-title]\">{{ title() }}</ng-content>\n </h2>\n @if (showClose()) {\n <button\n type=\"button\"\n class=\"modal-close\"\n (click)=\"handleClose()\"\n [attr.aria-label]=\"dismissLabel()\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n <div class=\"modal-content\" [attr.id]=\"modalDescriptionId()\">\n <ng-content>\n <p>\n Modal content goes here. You can replace this with your own content.\n </p>\n </ng-content>\n </div>\n\n @if (showFooter() && !hasCustomFooter()) {\n <div class=\"modal-footer\">\n <psh-button\n appearance=\"outline\"\n variant=\"primary\"\n size=\"medium\"\n [fullWidth]=\"isMobileScreen()\"\n (clicked)=\"handleClose()\">\n {{ cancelLabel() }}\n </psh-button>\n <psh-button\n appearance=\"filled\"\n variant=\"primary\"\n size=\"medium\"\n [fullWidth]=\"isMobileScreen()\"\n (clicked)=\"handleConfirm()\">\n {{ confirmLabel() }}\n </psh-button>\n </div>\n } @if (showFooter() && hasCustomFooter()) {\n <div class=\"modal-footer\">\n <!--\n Note: When using a custom footer, buttons should also use [fullWidth]=\"isMobileScreen()\"\n to ensure proper responsive behavior on mobile devices.\n Example:\n <psh-button [fullWidth]=\"isMobileScreen()\" (clicked)=\"action()\">Custom Button</psh-button>\n -->\n <ng-content select=\"[modal-footer]\" #modalFooter></ng-content>\n </div>\n }\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginationSize, PaginationVariant, PaginationConfig } from './pagination.types';\nimport { InjectionToken } from '@angular/core';\n\nexport const PAGINATION_CONFIG = new InjectionToken<Partial<PaginationConfig>>('PAGINATION_CONFIG', {\n factory: () => ({\n size: 'medium',\n variant: 'default',\n showFirstLast: true,\n showPrevNext: true,\n maxVisiblePages: 5,\n showItemsPerPage: false,\n itemsPerPageOptions: [5, 10, 25, 50]\n })\n});\n\n@Component({\n selector: 'psh-pagination',\n imports: [CommonModule],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PshPaginationComponent {\n private config = inject(PAGINATION_CONFIG);\n private static idCounter = 0;\n private readonly uniqueId = `pagination-${++PshPaginationComponent.idCounter}`;\n\n currentPage = model(1);\n totalPages = model(1);\n itemsPerPage = model(10);\n\n constructor() {\n effect(() => {\n const total = this.totalPages();\n if (total < 1 || !Number.isFinite(total)) {\n console.warn(`[psh-pagination] Invalid totalPages \"${total}\", setting to 1`);\n this.totalPages.set(1);\n }\n });\n\n effect(() => {\n const current = this.currentPage();\n const total = this.totalPages();\n if (current < 1 || !Number.isFinite(current)) {\n console.warn(`[psh-pagination] Invalid currentPage \"${current}\", setting to 1`);\n this.currentPage.set(1);\n } else if (current > total && total >= 1) {\n console.warn(`[psh-pagination] currentPage \"${current}\" exceeds totalPages \"${total}\", setting to ${total}`);\n this.currentPage.set(total);\n }\n });\n\n effect(() => {\n const maxVisible = this.maxVisiblePages();\n if (maxVisible < 1 || !Number.isFinite(maxVisible)) {\n console.warn(`[psh-pagination] Invalid maxVisiblePages \"${maxVisible}\", must be >= 1`);\n }\n });\n }\n\n readonly size = input(this.config.size ?? 'medium' as PaginationSize, {\n transform: (value: PaginationSize): PaginationSize => {\n if (!['small', 'medium', 'large'].includes(value)) {\n console.warn(`[psh-pagination] Invalid size \"${value}\", falling back to \"medium\"`);\n return 'medium';\n }\n return value;\n }\n });\n readonly variant = input(this.config.variant ?? 'default' as PaginationVariant, {\n transform: (value: PaginationVariant): PaginationVariant => {\n if (!['default', 'outline'].includes(value)) {\n console.warn(`[psh-pagination] Invalid variant \"${value}\", falling back to \"default\"`);\n return 'default';\n }\n return value;\n }\n });\n readonly showFirstLast = input(this.config.showFirstLast ?? true);\n readonly showPrevNext = input(this.config.showPrevNext ?? true);\n readonly maxVisiblePages = input(this.config.maxVisiblePages ?? 5);\n readonly showItemsPerPage = input(this.config.showItemsPerPage ?? false);\n readonly itemsPerPageOptions = input<number[]>([5, 10, 25, 50]);\n readonly firstLabel = input('First');\n readonly previousLabel = input('Previous');\n readonly nextLabel = input('Next');\n readonly lastLabel = input('Last');\n readonly pageLabel = input('Page');\n readonly itemsLabel = input('items');\n readonly itemsPerPageLabel = input('Items per page');\n readonly id = input<string>();\n readonly ariaLabel = input<string>('Pagination navigation');\n\n pageChange = output<number>();\n itemsPerPageChange = output<number>();\n navigationError = output<{ action: string; reason: string }>();\n\n protected readonly navigationId = computed(() => {\n const customId = this.id();\n return customId || this.uniqueId;\n });\n\n protected readonly pages = computed(() => {\n const pages: number[] = [];\n const halfVisible = Math.floor(this.maxVisiblePages() / 2);\n let start = Math.max(1, this.currentPage() - halfVisible);\n let end = Math.min(this.totalPages(), start + this.maxVisiblePages() - 1);\n\n if (end - start + 1 < this.maxVisiblePages()) {\n start = Math.max(1, end - this.maxVisiblePages() + 1);\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n return pages;\n });\n\n protected readonly state = computed(() => this.getState());\n\n protected readonly canGoNext = computed(() => this.currentPage() < this.totalPages());\n protected readonly canGoPrevious = computed(() => this.currentPage() > 1);\n protected readonly isFirstPage = computed(() => this.currentPage() === 1);\n protected readonly isLastPage = computed(() => this.currentPage() === this.totalPages());\n\n protected readonly currentPageAnnouncement = computed(() => {\n return `Page ${this.currentPage()} sur ${this.totalPages()}`;\n });\n\n private getState(): string {\n if (this.currentPage() === 1) return 'first';\n if (this.currentPage() === this.totalPages()) return 'last';\n return 'default';\n }\n\n goToPage(page: number): void {\n if (page !== this.currentPage() && page >= 1 && page <= this.totalPages()) {\n this.currentPage.set(page);\n this.pageChange.emit(page);\n } else if (page < 1 || page > this.totalPages()) {\n this.navigationError.emit({\n action: 'goToPage',\n reason: `Page ${page} is out of bounds (1-${this.totalPages()})`\n });\n }\n }\n\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n goToLastPage(): void {\n this.goToPage(this.totalPages());\n }\n\n goToNextPage(): void {\n if (this.canGoNext()) {\n this.goToPage(this.currentPage() + 1);\n }\n }\n\n goToPreviousPage(): void {\n if (this.canGoPrevious()) {\n this.goToPage(this.currentPage() - 1);\n }\n }\n\n onItemsPerPageChange(event: Event): void {\n const value = parseInt((event.target as HTMLSelectElement).value);\n this.itemsPerPage.set(value);\n this.itemsPerPageChange.emit(value);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n this.goToPreviousPage();\n break;\n case 'ArrowRight':\n event.preventDefault();\n this.goToNextPage();\n break;\n case 'Home':\n event.preventDefault();\n this.goToFirstPage();\n break;\n case 'End':\n event.preventDefault();\n this.goToLastPage();\n break;\n }\n }\n}","<nav\n class=\"pagination\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.outline]=\"variant() === 'outline'\"\n role=\"navigation\"\n [attr.id]=\"navigationId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.data-state]=\"state()\"\n (keydown)=\"onKeydown($event)\"\n>\n @if (showItemsPerPage()) {\n <div class=\"items-per-page\">\n <label [attr.for]=\"navigationId() + '-items-select'\" class=\"items-per-page-label\">\n {{ itemsPerPageLabel() }}\n </label>\n <select\n [attr.id]=\"navigationId() + '-items-select'\"\n [value]=\"itemsPerPage()\"\n (change)=\"onItemsPerPageChange($event)\"\n [attr.aria-label]=\"itemsPerPageLabel()\"\n >\n @for (option of itemsPerPageOptions(); track option) {\n <option [value]=\"option\">\n {{ option }} {{ itemsLabel() }}\n </option>\n }\n </select>\n </div>\n }\n\n @if (showFirstLast()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"isFirstPage()\"\n (click)=\"goToFirstPage()\"\n [attr.aria-label]=\"firstLabel()\"\n [disabled]=\"isFirstPage()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-double-left\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (showPrevNext()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"!canGoPrevious()\"\n (click)=\"goToPreviousPage()\"\n [attr.aria-label]=\"previousLabel()\"\n [disabled]=\"!canGoPrevious()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-left\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @for (page of pages(); track page) {\n <button\n class=\"page-button\"\n [class.active]=\"page === currentPage()\"\n (click)=\"goToPage(page)\"\n [attr.aria-current]=\"page === currentPage() ? 'page' : null\"\n [attr.aria-label]=\"pageLabel() + ' ' + page\"\n type=\"button\"\n >\n {{ page }}\n </button>\n }\n\n @if (showPrevNext()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"!canGoNext()\"\n (click)=\"goToNextPage()\"\n [attr.aria-label]=\"nextLabel()\"\n [disabled]=\"!canGoNext()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-right\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (showFirstLast()) {\n <button\n class=\"page-button\"\n [class.disabled]=\"isLastPage()\"\n (click)=\"goToLastPage()\"\n [attr.aria-label]=\"lastLabel()\"\n [disabled]=\"isLastPage()\"\n type=\"button\"\n >\n <i class=\"ph ph-caret-double-right\" aria-hidden=\"true\"></i>\n </button>\n }\n\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ currentPageAnnouncement() }}\n </div>\n</nav>","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, model, output, InjectionToken } from '@angular/core';\nimport { ProgressbarVariant, ProgressbarSize, ProgressbarMode, ProgressbarLabelPosition, ProgressbarConfig } from './progressbar.types';\n\nexport const PROGRESSBAR_CONFIG = new InjectionToken<Partial<ProgressbarConfig>>('PROGRESSBAR_CONFIG', {\n factory: () => ({\n value: 0,\n max: 100,\n variant: 'primary',\n size: 'medium',\n showLabel: true,\n mode: 'default',\n labelPosition: 'top'\n })\n});\n\n@Component({\n selector: 'psh-progressbar',\n imports: [],\n templateUrl: './progressbar.component.html',\n styleUrls: ['./progressbar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'progressbar-container',\n '[class.small]': 'size() === \"small\"',\n '[class.large]': 'size() === \"large\"',\n '[class.label-bottom]': 'labelPosition() === \"bottom\"',\n '[class.label-inline]': 'labelPosition() === \"inline\"',\n '[attr.data-state]': 'mode()',\n '[attr.aria-live]': '\"polite\"'\n }\n})\nexport class PshProgressbarComponent {\n private config = inject(PROGRESSBAR_CONFIG);\n\n // Model inputs for two-way binding\n value = model(this.config.value ?? 0);\n max = model(this.config.max ?? 100);\n\n // Regular inputs\n variant = input<ProgressbarVariant>(this.config.variant ?? 'primary');\n size = input<ProgressbarSize>(this.config.size ?? 'medium');\n showLabel = input(this.config.showLabel ?? true);\n mode = input<ProgressbarMode>(this.config.mode ?? 'default');\n label = input<string>();\n labelPosition = input<ProgressbarLabelPosition>(this.config.labelPosition ?? 'top');\n ariaLabel = input<string>();\n\n // Outputs\n completed = output<void>();\n thresholdReached = output<number>();\n\n // Computed values\n percentage = computed(() => {\n const val = this.value();\n const maxVal = this.max();\n if (maxVal <= 0) return 0;\n return Math.min(100, Math.max(0, (val / maxVal) * 100));\n });\n\n isIndeterminate = computed(() => this.mode() === 'indeterminate');\n isStriped = computed(() => this.mode() === 'striped' || this.mode() === 'animated');\n isAnimated = computed(() => this.mode() === 'animated');\n\n computedAriaValueText = computed(() => {\n if (this.ariaLabel()) return this.ariaLabel();\n if (this.isIndeterminate()) {\n return this.label() || 'Loading...';\n }\n return `${Math.round(this.percentage())}%`;\n });\n\n displayLabel = computed(() => {\n if (this.isIndeterminate()) {\n return this.label() || 'Loading...';\n }\n return this.label() || `${Math.round(this.percentage())}%`;\n });\n\n constructor() {\n let previousThreshold = -1;\n let hasCompleted = false;\n\n effect(() => {\n const percentage = this.percentage();\n const val = this.value();\n const maxVal = this.max();\n\n if (val >= maxVal && maxVal > 0 && !hasCompleted) {\n this.completed.emit();\n hasCompleted = true;\n }\n\n if (val < maxVal) {\n hasCompleted = false;\n }\n\n const thresholds = [25, 50, 75];\n for (const threshold of thresholds) {\n if (percentage >= threshold && previousThreshold < threshold) {\n this.thresholdReached.emit(threshold);\n previousThreshold = threshold;\n }\n }\n\n if (percentage < 25) {\n previousThreshold = -1;\n }\n });\n }\n}","@if (showLabel()) {\n <span class=\"progress-label\">{{ displayLabel() }}</span>\n}\n<div\n class=\"progressbar\"\n [class.striped]=\"isStriped()\"\n [class.animated]=\"isAnimated()\"\n [class.indeterminate]=\"isIndeterminate()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"isIndeterminate() ? null : value()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuetext]=\"computedAriaValueText()\"\n>\n <div\n class=\"progress-track\"\n [class]=\"variant()\"\n [style.width.%]=\"percentage()\"\n ></div>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n EventEmitter,\n inject,\n Input,\n input,\n Output,\n output,\n signal\n} from '@angular/core';\nimport { RadioSize, RadioConfig } from './radio.types';\nimport { InjectionToken } from '@angular/core';\n\nexport const RADIO_CONFIG = new InjectionToken<Partial<RadioConfig>>('RADIO_CONFIG', {\n factory: () => ({\n checked: false,\n disabled: false,\n required: false,\n size: 'medium',\n labelPosition: 'right'\n })\n});\n\nexport const RADIO_STYLES = new InjectionToken<Record<string, string>[]>('RADIO_STYLES', {\n factory: () => []\n});\n\n/**\n * Compteur global pour générer des IDs uniques\n */\nlet radioIdCounter = 0;\n\n@Component({\n selector: 'psh-radio',\n imports: [],\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.radio-disabled]': 'disabled()',\n '[class.radio-error]': '!!error()',\n '[class.radio-success]': '!!success()',\n '[class.radio-small]': 'size() === \"small\"',\n '[class.radio-large]': 'size() === \"large\"',\n '[attr.data-state]': 'state()'\n }\n})\nexport class PshRadioComponent {\n private config = inject(RADIO_CONFIG);\n private styles = inject(RADIO_STYLES, { optional: true }) ?? [];\n private uniqueId = `radio-${++radioIdCounter}`;\n\n // Plain signals + manual @Input/@Output to prevent auto-emission\n // when parent sets [checked] or [disabled] via template binding.\n // model() would auto-emit checkedChange/disabledChange on .set().\n checked = signal(this.config.checked ?? false);\n @Input('checked') set checkedInput(v: boolean) { this.checked.set(v); }\n\n disabled = signal(this.config.disabled ?? false);\n @Input('disabled') set disabledInput(v: boolean) { this.disabled.set(v); }\n\n required = input(this.config.required ?? false);\n\n // Regular inputs\n label = input('');\n error = input('');\n success = input('');\n name = input('');\n value = input<any>();\n ariaLabel = input<string>();\n size = input<RadioSize>(this.config.size ?? 'medium');\n labelPosition = input<'left' | 'right'>(this.config.labelPosition ?? 'right');\n\n // Content projection tracking\n private radioText = contentChild<any>('.radio-text');\n protected hasProjectedContent = signal(false);\n\n // Outputs — checkedChange/disabledChange use EventEmitter to decouple from signal writes.\n @Output() checkedChange = new EventEmitter<boolean>();\n @Output() disabledChange = new EventEmitter<boolean>();\n valueChange = output<any>();\n\n // Computed values\n customStyles = computed(() => Object.assign({}, ...this.styles));\n\n state = computed(() => this.getState());\n\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const labelText = this.label();\n if (labelText) return labelText;\n\n return this.hasProjectedContent() ? undefined : 'Radio';\n });\n\n errorMessageId = computed(() =>\n this.error() ? `${this.uniqueId}-error` : undefined\n );\n\n successMessageId = computed(() =>\n this.success() ? `${this.uniqueId}-success` : undefined\n );\n\n ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n if (this.errorMessageId()) ids.push(this.errorMessageId()!);\n if (this.successMessageId()) ids.push(this.successMessageId()!);\n return ids.length > 0 ? ids.join(' ') : undefined;\n });\n\n constructor() {\n effect(() => {\n if (!this.label() && !this.ariaLabel() && !this.hasProjectedContent()) {\n console.warn(\n '[psh-radio] No accessible label provided. Please use label input, ariaLabel input, or projected content.'\n );\n }\n }, { allowSignalWrites: false });\n }\n\n private getState(): string {\n if (this.disabled()) return 'disabled';\n if (this.error()) return 'error';\n if (this.success()) return 'success';\n return this.checked() ? 'checked' : 'unchecked';\n }\n\n updateProjectedContent(hasContent: boolean): void {\n this.hasProjectedContent.set(hasContent);\n }\n\n handleChange(): void {\n if (!this.disabled()) {\n const wasChecked = this.checked();\n this.checked.set(true);\n if (!wasChecked) {\n this.checkedChange.emit(true);\n this.valueChange.emit(this.value());\n }\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n\n switch(event.key) {\n case ' ':\n case 'Spacebar':\n case 'Enter':\n event.preventDefault();\n this.handleChange();\n break;\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n this.focusNextRadio();\n break;\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n this.focusPreviousRadio();\n break;\n }\n }\n\n private focusNextRadio(): void {\n // Navigate to next radio in group\n // Implementation requires radio group context\n }\n\n private focusPreviousRadio(): void {\n // Navigate to previous radio in group\n // Implementation requires radio group context\n }\n}","<div class=\"radio-container\">\n <label class=\"radio-label\" [class.label-left]=\"labelPosition() === 'left'\">\n <input\n type=\"radio\"\n class=\"radio-input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n (change)=\"handleChange()\"\n (keydown)=\"handleKeydown($event)\"\n />\n <span \n class=\"radio-control\"\n [class.error]=\"!!error()\"\n [class.success]=\"!!success()\"\n >\n <span class=\"radio-dot\"></span>\n </span>\n <span class=\"radio-text\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content>Radio</ng-content>\n }\n </span>\n </label>\n\n @if (error()) {\n <div [id]=\"errorMessageId()\" class=\"radio-error\" role=\"alert\">\n {{ error() }}\n </div>\n }\n\n @if (success()) {\n <div [id]=\"successMessageId()\" class=\"radio-success\" role=\"status\">\n {{ success() }}\n </div>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n DestroyRef,\n ChangeDetectorRef,\n AfterContentInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { SelectOption, SelectOptionGroup, SelectSize, SearchConfig } from './select.types';\n\n@Component({\n selector: 'psh-select',\n imports: [CommonModule, FormsModule],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshSelectComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.select-full-width]': 'fullWidth()',\n '[class.select-small]': 'size() === \"small\"',\n '[class.select-large]': 'size() === \"large\"',\n '[class.select-error]': '!!error()',\n '[class.select-disabled]': 'disabled()',\n '[class.select-loading]': 'loading()',\n '[attr.aria-expanded]': 'isOpen().toString()',\n '[attr.data-state]': 'state()'\n }\n})\nexport class PshSelectComponent<T = unknown> implements ControlValueAccessor, AfterContentInit, FormValueControl<T | T[] | null> {\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n protected readonly selectId = `psh-sel-${Math.random().toString(36).substring(2, 11)}`;\n\n readonly value = model<T | T[] | null>(null);\n readonly disabled = model<boolean>(false);\n readonly touched = model(false);\n\n // Rétablissement de l'API complète pour la démo\n size = input<SelectSize>('medium');\n searchable = input(false);\n multiple = input(false);\n clearable = input(false);\n loading = input(false);\n fullWidth = input(false);\n required = input(false);\n\n options = input<(SelectOption<T> | SelectOptionGroup<T>)[]>([]);\n label = input('');\n placeholder = input<string>('Sélectionner une option');\n multiplePlaceholder = input<string>('Sélectionner des options');\n error = input<string | null | undefined>(undefined);\n compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b);\n searchConfig = input<SearchConfig>({\n debounceTime: 300,\n placeholder: 'Rechercher...',\n minLength: 1\n });\n\n private readonly isOpenSignal = signal(false);\n private readonly searchTermSignal = signal('');\n private readonly initializedSignal = signal(false);\n\n opened = output<void>();\n closed = output<void>();\n searched = output<string>(); // Émet une string, pas un Event\n scrollEnd = output<void>();\n\n isOpen = computed(() => this.isOpenSignal());\n searchTerm = computed(() => this.searchTermSignal());\n state = computed(() => this.disabled() ? 'disabled' : this.error() ? 'error' : 'default');\n\n selectedLabel = computed(() => {\n const currentValue = this.value();\n const currentOptions = this.flattenOptions(this.options());\n\n if (!this.initializedSignal() || (currentValue === null || currentValue === undefined)) {\n return this.multiple() ? this.multiplePlaceholder() : this.placeholder();\n }\n\n if (this.multiple() && Array.isArray(currentValue)) {\n const selected = currentOptions.filter(opt => \n currentValue.some(v => this.compareWith()(v, opt.value))\n );\n return selected.length > 0 ? selected.map(o => o.label).join(', ') : this.multiplePlaceholder();\n }\n\n const selected = currentOptions.find(opt => this.compareWith()(opt.value, currentValue as T));\n return selected ? selected.label : this.placeholder();\n });\n\n filteredOptions = computed(() => {\n const term = this.searchTermSignal().toLowerCase();\n const opts = this.options();\n if (!term) return opts;\n\n return opts.map(opt => {\n if (this.isOptionGroup(opt)) {\n const filtered = opt.options.filter(o => o.label.toLowerCase().includes(term));\n return filtered.length > 0 ? { ...opt, options: filtered } : null;\n }\n return opt.label.toLowerCase().includes(term) ? opt : null;\n }).filter((opt): opt is (SelectOption<T> | SelectOptionGroup<T>) => opt !== null);\n });\n\n constructor() {\n const clickHandler = (event: MouseEvent) => {\n if (this.isOpen() && !this.elementRef.nativeElement.contains(event.target)) {\n this.close();\n }\n };\n document.addEventListener('click', clickHandler);\n this.destroyRef.onDestroy(() => document.removeEventListener('click', clickHandler));\n }\n\n ngAfterContentInit() {\n this.initializedSignal.set(true);\n }\n\n private onChange = (_: unknown) => {};\n private onTouched = () => {};\n\n writeValue(value: unknown): void {\n this.value.set(value as T | T[] | null);\n this.initializedSignal.set(true);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled.set(isDisabled); }\n\n toggle(): void {\n if (this.disabled() || this.loading()) return;\n this.isOpenSignal.update(v => !v);\n this.isOpen() ? this.opened.emit() : this.closed.emit();\n }\n\n close(): void {\n this.isOpenSignal.set(false);\n this.searchTermSignal.set('');\n }\n\n select(option: SelectOption<T>): void {\n if (this.disabled() || option.disabled) return;\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...(this.value() as T[])] : [];\n const index = current.findIndex(v => this.compareWith()(v, option.value));\n if (index === -1) {\n current.push(option.value);\n } else {\n current.splice(index, 1);\n }\n this.value.set(current);\n this.onChange(current);\n } else {\n this.value.set(option.value);\n this.onChange(option.value);\n this.close();\n }\n this.onTouched();\n this.touched.set(true);\n }\n\n clear(event: MouseEvent): void {\n event.stopPropagation();\n this.value.set(this.multiple() ? [] : null);\n this.onChange(this.value());\n }\n\n onSearch(event: Event): void {\n const term = (event.target as HTMLInputElement).value;\n this.searchTermSignal.set(term);\n this.searched.emit(term);\n }\n\n onScroll(event: Event): void {\n const el = event.target as HTMLElement;\n if (el.scrollHeight - el.scrollTop === el.clientHeight) {\n this.scrollEnd.emit();\n }\n }\n\n protected isOptionGroup(item: SelectOption<T> | SelectOptionGroup<T>): item is SelectOptionGroup<T> {\n return 'options' in item;\n }\n\n protected getOptionKey(item: SelectOption<T> | SelectOptionGroup<T>): string {\n return this.isOptionGroup(item) ? `g-${item.label}` : `o-${item.label}`;\n }\n\n protected isSelected(option: SelectOption<T>): boolean {\n const val = this.value();\n if (this.multiple() && Array.isArray(val)) {\n return val.some(v => this.compareWith()(v, option.value));\n }\n return val !== null && this.compareWith()(val as T, option.value);\n }\n\n protected hasValue(): boolean {\n const val = this.value();\n if (this.multiple()) return Array.isArray(val) && val.length > 0;\n return val !== null && val !== undefined;\n }\n\n private flattenOptions(options: (SelectOption<T> | SelectOptionGroup<T>)[]): SelectOption<T>[] {\n return options.reduce((acc, opt) => this.isOptionGroup(opt) ? [...acc, ...opt.options] : [...acc, opt], [] as SelectOption<T>[]);\n }\n\n protected focusSelect(): void {\n this.elementRef.nativeElement.querySelector('.select-trigger')?.focus();\n }\n}","<div class=\"select-container\">\n\n @if (label()) {\n\n <label class=\"select-label\" [attr.for]=\"selectId\" (click)=\"focusSelect()\">\n\n {{ label() }}\n\n @if (required()) { <span class=\"required-mark\">*</span> }\n\n </label>\n\n }\n\n\n\n <div class=\"select-trigger\" [id]=\"selectId\" (click)=\"toggle()\" tabindex=\"0\">\n\n <div class=\"select-value\">\n\n <span [class.placeholder]=\"!hasValue()\">\n\n {{ selectedLabel() }}\n\n </span>\n\n </div>\n\n \n\n <div class=\"select-actions\">\n\n @if (clearable() && hasValue() && !disabled()) {\n\n <button class=\"select-clear\" (click)=\"clear($event)\">\n\n <i class=\"ph ph-x\"></i>\n\n </button>\n\n }\n\n @if (loading()) {\n\n <div class=\"select-loader-trigger\"></div>\n\n } @else {\n\n <i class=\"ph ph-caret-down select-arrow\"></i>\n\n }\n\n </div>\n\n </div>\n\n\n\n @if (isOpen()) {\n\n <div class=\"select-dropdown\">\n\n @if (searchable()) {\n\n <div class=\"select-search\">\n\n <i class=\"ph ph-magnifying-glass select-search-icon\"></i>\n\n <input type=\"text\"\n\n [placeholder]=\"searchConfig().placeholder\"\n\n [value]=\"searchTerm()\"\n\n (input)=\"onSearch($event)\"\n\n (click)=\"$event.stopPropagation()\">\n\n </div>\n\n }\n\n <div class=\"select-options\" (scroll)=\"onScroll($event)\">\n\n @for (item of filteredOptions(); track getOptionKey(item)) {\n\n @if (isOptionGroup(item)) {\n\n <div class=\"select-group\">\n\n <div class=\"select-group-label\">{{ item.label }}</div>\n\n @for (opt of item.options; track opt.label) {\n\n <div class=\"select-option\" \n\n [class.selected]=\"isSelected(opt)\"\n\n (click)=\"select(opt)\">\n\n {{ opt.label }}\n\n </div>\n\n }\n\n </div>\n\n } @else {\n\n <div class=\"select-option\" \n\n [class.selected]=\"isSelected(item)\"\n\n (click)=\"select(item)\">\n\n {{ item.label }}\n\n </div>\n\n }\n\n } @empty {\n\n <div class=\"select-no-results\">Aucun résultat</div>\n\n }\n\n </div>\n\n </div>\n\n }\n\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n effect,\n OnDestroy,\n InjectionToken,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { SidebarMode, SidebarPosition, SidebarConfig } from './sidebar.types';\n\nexport const SIDEBAR_CONFIG = new InjectionToken<Partial<SidebarConfig>>('SIDEBAR_CONFIG', {\n factory: () => ({\n mode: 'fixed',\n position: 'left',\n width: '250px',\n breakpoint: '768px',\n autoFocus: true,\n ariaLabel: 'Sidebar navigation',\n closeOnBackdrop: true,\n closeOnEscape: true\n })\n});\n\n@Component({\n selector: 'psh-sidebar',\n imports: [CommonModule],\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'complementary',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': '!open()',\n '[attr.aria-expanded]': 'open()',\n '[attr.aria-modal]': 'effectiveMode() === \"overlay\" && open()',\n '[attr.data-state]': 'state()'\n }\n})\nexport class PshSidebarComponent implements OnDestroy {\n private readonly config = inject(SIDEBAR_CONFIG);\n private readonly elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private focusedElementBeforeOpen: HTMLElement | null = null;\n private mediaQueryList: MediaQueryList | null = null;\n private mediaQueryHandler: ((e: MediaQueryListEvent) => void) | null = null;\n\n open = model(false);\n mode = input<SidebarMode>(this.config.mode ?? 'fixed');\n position = input<SidebarPosition>(this.config.position ?? 'left');\n width = input<string>(this.config.width ?? '250px');\n breakpoint = input<string>(this.config.breakpoint ?? '768px');\n autoFocus = input<boolean>(this.config.autoFocus ?? true);\n ariaLabel = input<string>(this.config.ariaLabel ?? 'Sidebar navigation');\n closeOnBackdrop = input<boolean>(this.config.closeOnBackdrop ?? true);\n closeOnEscape = input<boolean>(this.config.closeOnEscape ?? true);\n\n toggle = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n transitionStart = output<boolean>();\n\n private readonly mobileSignal = signal(false);\n private previousOpenState: boolean | null = null;\n\n isMobile = computed(() => this.mobileSignal());\n effectiveMode = computed(() => this.isMobile() ? 'overlay' : this.mode());\n state = computed(() => this.getState());\n\n private readonly escapeHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.closeOnEscape() && this.effectiveMode() === 'overlay') {\n this.closeSidebar();\n }\n };\n\n private readonly focusTrapHandler = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n this.trapFocus(event);\n }\n };\n\n private getState(): string {\n if (this.isMobile()) return 'mobile';\n if (this.open()) return 'open';\n return this.mode();\n }\n\n constructor() {\n effect(() => {\n const bp = this.breakpoint();\n this.setupMediaQuery(bp);\n });\n\n effect(() => {\n const isOpen = this.open();\n const wasOpen = this.previousOpenState;\n this.previousOpenState = isOpen;\n\n if (wasOpen === null) return;\n\n if (isOpen && !wasOpen) {\n this.onSidebarOpen();\n } else if (!isOpen && wasOpen) {\n this.onSidebarClose();\n }\n });\n }\n\n private setupMediaQuery(breakpoint: string): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.cleanupMediaQuery();\n\n this.mediaQueryList = window.matchMedia(`(max-width: ${breakpoint})`);\n this.mobileSignal.set(this.mediaQueryList.matches);\n\n this.mediaQueryHandler = (e: MediaQueryListEvent) => {\n this.mobileSignal.set(e.matches);\n };\n\n this.mediaQueryList.addEventListener('change', this.mediaQueryHandler);\n }\n\n private cleanupMediaQuery(): void {\n if (this.mediaQueryList && this.mediaQueryHandler) {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryHandler);\n this.mediaQueryList = null;\n this.mediaQueryHandler = null;\n }\n }\n\n private onSidebarOpen(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.focusedElementBeforeOpen = document.activeElement as HTMLElement;\n this.addEventListeners();\n\n if (this.autoFocus()) {\n requestAnimationFrame(() => {\n const firstFocusable = this.elementRef.nativeElement.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n ) as HTMLElement;\n if (firstFocusable) {\n firstFocusable.focus();\n }\n });\n }\n\n requestAnimationFrame(() => {\n this.opened.emit();\n });\n }\n\n private onSidebarClose(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.removeEventListeners();\n\n if (this.focusedElementBeforeOpen) {\n this.focusedElementBeforeOpen.focus();\n }\n\n requestAnimationFrame(() => {\n this.closed.emit();\n });\n }\n\n private addEventListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n document.addEventListener('keydown', this.escapeHandler);\n document.addEventListener('keydown', this.focusTrapHandler);\n }\n\n private removeEventListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n document.removeEventListener('keydown', this.escapeHandler);\n document.removeEventListener('keydown', this.focusTrapHandler);\n }\n\n toggleSidebar(): void {\n const newState = !this.open();\n this.transitionStart.emit(newState);\n this.open.set(newState);\n this.toggle.emit(newState);\n }\n\n closeSidebar(): void {\n if (this.open()) {\n this.transitionStart.emit(false);\n this.open.set(false);\n this.toggle.emit(false);\n }\n }\n\n handleBackdropClick(): void {\n if (this.closeOnBackdrop()) {\n this.closeSidebar();\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const focusableElements = this.elementRef.nativeElement.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusableElements.length === 0) return;\n\n const firstFocusable = focusableElements[0] as HTMLElement;\n const lastFocusable = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n if (!firstFocusable || !lastFocusable) return;\n\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (event.shiftKey) {\n if (document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupMediaQuery();\n this.removeEventListeners();\n this.focusedElementBeforeOpen = null;\n }\n}\n","<div\n class=\"sidebar\"\n [class.open]=\"open()\"\n [class.fixed]=\"effectiveMode() === 'fixed'\"\n [class.overlay]=\"effectiveMode() === 'overlay'\"\n [class.left]=\"position() === 'left'\"\n [class.right]=\"position() === 'right'\"\n [style.width]=\"width()\"\n [style.--sidebar-width]=\"width()\"\n>\n <div class=\"sidebar-content\">\n <ng-content></ng-content>\n </div>\n</div>\n\n@if (effectiveMode() === 'overlay' && open()) {\n <div\n class=\"sidebar-backdrop\"\n role=\"presentation\"\n (click)=\"handleBackdropClick()\"\n ></div>\n}","import { ChangeDetectionStrategy, Component, effect, inject, input, signal, InjectionToken } from '@angular/core';\nimport { SpinLoaderVariant, SpinLoaderSize, SpinLoaderColor, SpinLoaderConfig } from './spinloader.types';\n\nexport const SPINLOADER_CONFIG = new InjectionToken<Partial<SpinLoaderConfig>>('SPINLOADER_CONFIG', {\n factory: () => ({\n variant: 'circle',\n size: 'medium',\n color: 'primary'\n })\n});\n\n@Component({\n selector: 'psh-spinloader',\n imports: [],\n templateUrl: './spinloader.component.html',\n styleUrls: ['./spinloader.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'status',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-busy]': 'true',\n '[attr.data-state]': 'variant()',\n '[class.small]': 'size() === \"small\"',\n '[class.large]': 'size() === \"large\"',\n '[class.reduce-motion]': 'reduceMotion()',\n }\n})\nexport class PshSpinLoaderComponent {\n private config = inject(SPINLOADER_CONFIG);\n\n variant = input<SpinLoaderVariant>(this.config.variant ?? 'circle');\n size = input<SpinLoaderSize>(this.config.size ?? 'medium');\n color = input<SpinLoaderColor>(this.config.color ?? 'primary');\n label = input<string>();\n ariaLabel = input<string>('Chargement en cours');\n ariaLive = input<'polite' | 'assertive'>('polite');\n\n reduceMotion = signal(false);\n\n constructor() {\n effect(() => {\n if (typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n this.reduceMotion.set(mediaQuery.matches);\n\n const handler = (e: MediaQueryListEvent) => this.reduceMotion.set(e.matches);\n mediaQuery.addEventListener('change', handler);\n }\n });\n }\n}\n","@switch (variant()) {\n @case ('circle') {\n <div class=\"spinner-circle\" [class]=\"color()\"></div>\n }\n @case ('dots') {\n <div class=\"spinner-dots\" [class]=\"color()\">\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n </div>\n }\n @case ('pulse') {\n <div class=\"spinner-pulse\" [class]=\"color()\">\n <div class=\"pulse\"></div>\n <div class=\"pulse\"></div>\n <div class=\"pulse\"></div>\n </div>\n }\n}\n\n@if (label()) {\n <span class=\"spinner-label\">{{ label() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal\n} from '@angular/core';\n\n@Component({\n selector: 'psh-step',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.step-content]': 'true',\n '[class.active]': 'isActive()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': '\"step-\" + index()',\n '[attr.id]': '\"panel-\" + index()',\n '[attr.tabindex]': 'isActive() ? 0 : -1',\n '[style.display]': 'isActive() ? \"block\" : \"none\"'\n }\n})\nexport class PshStepComponent {\n title = input.required<string>();\n subtitle = input<string>();\n icon = input<string>();\n disabled = input(false);\n completed = input(false);\n loading = input(false);\n error = input<string>();\n warning = input<string>();\n success = input<string>();\n\n private _index = signal(0);\n private _isActive = signal(false);\n\n readonly index = this._index.asReadonly();\n readonly isActive = this._isActive.asReadonly();\n\n setIndex(value: number): void {\n this._index.set(value);\n }\n\n setActive(value: boolean): void {\n this._isActive.set(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n InjectionToken,\n afterNextRender\n} from '@angular/core';\nimport { StepperVariant, StepConfig, StepperConfig, StepperAriaLabels } from './stepper.types';\nimport { PshStepComponent } from './step.component';\n\nconst DEFAULT_ARIA_LABELS: StepperAriaLabels = {\n step: 'Étape',\n completed: 'Étape complétée',\n active: 'Étape active',\n incomplete: 'Étape incomplète',\n disabled: 'Étape désactivée'\n};\n\nexport const STEPPER_CONFIG = new InjectionToken<Partial<StepperConfig>>('STEPPER_CONFIG', {\n factory: () => ({\n variant: 'default',\n linear: true,\n ariaLabels: DEFAULT_ARIA_LABELS\n })\n});\n\n@Component({\n selector: 'psh-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.stepper-container]': 'true',\n '[class.numbered]': 'variant() === \"numbered\"',\n '[class.progress]': 'variant() === \"progress\"',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': '\"Navigation par étapes\"'\n }\n})\nexport class PshStepperComponent {\n private config = inject(STEPPER_CONFIG);\n\n activeStep = model(0);\n variant = input<StepperVariant>(this.config.variant ?? 'default');\n linear = input(this.config.linear ?? true);\n\n ariaLabels = input<StepperAriaLabels>();\n beforeStepChange = input<(from: number, to: number) => Promise<boolean> | boolean>();\n\n stepChange = output<number>();\n completed = output<void>();\n navigationError = output<string>();\n\n stepComponents = contentChildren(PshStepComponent);\n\n steps = computed(() => this.stepComponents().map(step => ({\n title: step.title(),\n subtitle: step.subtitle(),\n icon: step.icon(),\n disabled: step.disabled(),\n completed: step.completed(),\n loading: step.loading(),\n error: step.error(),\n warning: step.warning(),\n success: step.success()\n })));\n\n effectiveAriaLabels = computed(() =>\n this.ariaLabels() ?? this.config.ariaLabels ?? DEFAULT_ARIA_LABELS\n );\n\n isFirstStep = computed(() => this.activeStep() === 0);\n isLastStep = computed(() => this.activeStep() === this.steps().length - 1);\n progress = computed(() =>\n this.steps().length > 0\n ? ((this.activeStep() + 1) / this.steps().length) * 100\n : 0\n );\n completedSteps = computed(() =>\n this.steps().filter(step => step.completed).length\n );\n\n constructor() {\n afterNextRender(() => {\n this.syncStepStates();\n });\n\n effect(() => {\n this.syncStepStates();\n });\n }\n\n private syncStepStates(): void {\n const components = this.stepComponents();\n if (components.length === 0) return;\n\n const active = this.activeStep();\n components.forEach((step, index) => {\n step.setIndex(index);\n step.setActive(index === active);\n });\n }\n\n async next(): Promise<void> {\n if (this.canGoNext()) {\n await this.goToStep(this.activeStep() + 1);\n }\n }\n\n async previous(): Promise<void> {\n if (this.canGoPrevious()) {\n await this.goToStep(this.activeStep() - 1);\n }\n }\n\n async goToStep(index: number): Promise<void> {\n if (index < 0 || index >= this.steps().length) {\n const errorMsg = `Invalid step index: ${index}. Valid range: 0-${this.steps().length - 1}`;\n this.navigationError.emit(errorMsg);\n return;\n }\n\n if (index === this.activeStep()) {\n return;\n }\n\n const beforeChange = this.beforeStepChange();\n if (beforeChange) {\n try {\n const canChange = await Promise.resolve(beforeChange(this.activeStep(), index));\n if (!canChange) {\n this.navigationError.emit(`Navigation from step ${this.activeStep()} to step ${index} was blocked by validation`);\n return;\n }\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in beforeStepChange';\n this.navigationError.emit(errorMsg);\n return;\n }\n }\n\n if (!this.canActivateStep(index)) {\n this.navigationError.emit(`Cannot activate step ${index}. Please complete previous steps first`);\n return;\n }\n\n this.activeStep.set(index);\n this.stepChange.emit(index);\n\n const currentStep = this.steps()[index];\n if (this.isLastStep() && currentStep?.completed) {\n this.completed.emit();\n }\n }\n\n canGoNext(): boolean {\n const nextIndex = this.activeStep() + 1;\n return nextIndex < this.steps().length && this.canActivateStep(nextIndex);\n }\n\n canGoPrevious(): boolean {\n return this.activeStep() > 0;\n }\n\n canActivateStep(index: number): boolean {\n if (index < 0 || index >= this.steps().length) {\n return false;\n }\n\n if (!this.linear()) return true;\n if (index === 0) return true;\n\n const step = this.steps()[index];\n if (step?.disabled) return false;\n\n return this.steps()\n .slice(0, index)\n .every(step => step.completed && !step.error);\n }\n\n isStepValid(index: number): boolean {\n const step = this.steps()[index];\n return step ? !!step.completed && !step.error : false;\n }\n\n getStepAriaLabel(step: StepConfig, index: number): string {\n const labels = this.effectiveAriaLabels();\n const status = step.completed ? labels.completed :\n index === this.activeStep() ? labels.active :\n step.disabled ? labels.disabled :\n labels.incomplete;\n return `${labels.step} ${index + 1}: ${step.title} - ${status}`;\n }\n\n getStepDescribedBy(step: StepConfig, index: number): string | null {\n if (step.error) return `error-${index}`;\n if (step.warning) return `warning-${index}`;\n if (step.success) return `success-${index}`;\n return null;\n }\n\n reset(): void {\n this.activeStep.set(0);\n this.stepChange.emit(0);\n }\n\n handleStepClick(index: number): void {\n const step = this.steps()[index];\n if (step && !step.disabled && this.canActivateStep(index)) {\n this.goToStep(index);\n }\n }\n\n handleKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleStepClick(index);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (this.canGoNext()) {\n this.next();\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (this.canGoPrevious()) {\n this.previous();\n }\n break;\n case 'Home':\n event.preventDefault();\n if (this.canActivateStep(0)) {\n this.goToStep(0);\n }\n break;\n case 'End':\n event.preventDefault();\n const lastIndex = this.steps().length - 1;\n if (this.canActivateStep(lastIndex)) {\n this.goToStep(lastIndex);\n }\n break;\n }\n }\n}\n","<div class=\"stepper-header\" role=\"tablist\">\n @for (step of steps(); track $index; let i = $index) {\n <div\n class=\"step-header\"\n [class.active]=\"i === activeStep()\"\n [class.completed]=\"step.completed\"\n [class.disabled]=\"step.disabled\"\n [class.error]=\"!!step.error\"\n [class.warning]=\"!!step.warning\"\n [class.success]=\"!!step.success\"\n >\n <div\n class=\"step-indicator\"\n role=\"tab\"\n tabindex=\"0\"\n [attr.id]=\"'step-' + i\"\n [attr.aria-selected]=\"i === activeStep()\"\n [attr.aria-disabled]=\"step.disabled\"\n [attr.aria-label]=\"getStepAriaLabel(step, i)\"\n [attr.aria-current]=\"i === activeStep() ? 'step' : null\"\n [attr.aria-describedby]=\"getStepDescribedBy(step, i)\"\n [attr.aria-busy]=\"step.loading\"\n (click)=\"handleStepClick(i)\"\n (keydown)=\"handleKeydown($event, i)\"\n >\n @if (step.loading && variant() === 'progress') {\n <i class=\"ph ph-circle-notch spinner\" aria-hidden=\"true\"></i>\n } @else if (step.completed) {\n <i class=\"ph ph-check\" aria-hidden=\"true\"></i>\n } @else if (variant() === 'numbered') {\n {{ i + 1 }}\n } @else if (step.icon) {\n <i class=\"ph ph-{{ step.icon }}\" aria-hidden=\"true\"></i>\n } @else {\n <span class=\"step-dot\"></span>\n }\n </div>\n\n <div class=\"step-label\">\n <span class=\"step-title\">{{ step.title }}</span>\n @if (step.subtitle) {\n <span class=\"step-subtitle\">{{ step.subtitle }}</span>\n }\n @if (step.error) {\n <span class=\"step-error\" [id]=\"'error-' + i\" role=\"alert\" aria-live=\"polite\">{{ step.error }}</span>\n }\n @if (step.warning) {\n <span class=\"step-warning\" [id]=\"'warning-' + i\" role=\"status\" aria-live=\"polite\">{{ step.warning }}</span>\n }\n @if (step.success) {\n <span class=\"step-success\" [id]=\"'success-' + i\" role=\"status\" aria-live=\"polite\">{{ step.success }}</span>\n }\n </div>\n\n @if (i < steps().length - 1) {\n <div class=\"step-connector\" aria-hidden=\"true\">\n <span class=\"connector-line\"></span>\n </div>\n }\n </div>\n }\n</div>\n\n<div class=\"stepper-content\">\n <ng-content />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal\n} from '@angular/core';\n\n@Component({\n selector: 'psh-flow-step',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"none\"'\n }\n})\nexport class PshFlowStepComponent {\n title = input.required<string>();\n disabled = input(false);\n completed = input(false);\n loading = input(false);\n error = input<string>();\n warning = input<string>();\n\n private _index = signal(0);\n private _isActive = signal(false);\n\n readonly index = this._index.asReadonly();\n readonly isActive = this._isActive.asReadonly();\n\n setIndex(value: number): void {\n this._index.set(value);\n }\n\n setActive(value: boolean): void {\n this._isActive.set(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n InjectionToken,\n afterNextRender\n} from '@angular/core';\nimport { StateFlowIndicatorSize, FlowStepConfig, StateFlowIndicatorConfig, StateFlowIndicatorAriaLabels } from './state-flow-indicator.types';\nimport { PshFlowStepComponent } from './flow-step.component';\n\nconst DEFAULT_ARIA_LABELS: StateFlowIndicatorAriaLabels = {\n step: 'Étape',\n completed: 'Étape complétée',\n active: 'Étape active',\n incomplete: 'Étape incomplète',\n disabled: 'Étape désactivée',\n warning: 'Étape avec avertissement',\n error: 'Étape en erreur'\n};\n\nexport const STATE_FLOW_INDICATOR_CONFIG = new InjectionToken<Partial<StateFlowIndicatorConfig>>('STATE_FLOW_INDICATOR_CONFIG', {\n factory: () => ({\n linear: true,\n ariaLabels: DEFAULT_ARIA_LABELS\n })\n});\n\n@Component({\n selector: 'psh-state-flow-indicator',\n templateUrl: './state-flow-indicator.component.html',\n styleUrls: ['./state-flow-indicator.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.state-flow-indicator]': 'true',\n '[class.size-small]': 'size() === \"small\"',\n '[class.size-medium]': 'size() === \"medium\"',\n '[class.size-large]': 'size() === \"large\"',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': '\"Indicateur de progression\"'\n }\n})\nexport class PshStateFlowIndicatorComponent {\n private config = inject(STATE_FLOW_INDICATOR_CONFIG);\n\n activeStep = model(0);\n linear = input(this.config.linear ?? true);\n size = input<StateFlowIndicatorSize>('medium');\n\n ariaLabels = input<StateFlowIndicatorAriaLabels>();\n beforeStepChange = input<(from: number, to: number) => Promise<boolean> | boolean>();\n\n stepChange = output<number>();\n completed = output<void>();\n navigationError = output<string>();\n\n stepComponents = contentChildren(PshFlowStepComponent);\n\n steps = computed(() => this.stepComponents().map(step => ({\n title: step.title(),\n disabled: step.disabled(),\n completed: step.completed(),\n loading: step.loading(),\n error: step.error(),\n warning: step.warning()\n })));\n\n effectiveAriaLabels = computed(() =>\n this.ariaLabels() ?? this.config.ariaLabels ?? DEFAULT_ARIA_LABELS\n );\n\n isFirstStep = computed(() => this.activeStep() === 0);\n isLastStep = computed(() => this.activeStep() === this.steps().length - 1);\n progress = computed(() =>\n this.steps().length > 0\n ? ((this.activeStep() + 1) / this.steps().length) * 100\n : 0\n );\n completedSteps = computed(() =>\n this.steps().filter(step => step.completed).length\n );\n\n constructor() {\n afterNextRender(() => {\n this.syncStepStates();\n });\n\n effect(() => {\n this.syncStepStates();\n });\n }\n\n private syncStepStates(): void {\n const components = this.stepComponents();\n if (components.length === 0) return;\n\n const active = this.activeStep();\n components.forEach((step, index) => {\n step.setIndex(index);\n step.setActive(index === active);\n });\n }\n\n async next(): Promise<void> {\n if (this.canGoNext()) {\n await this.goToStep(this.activeStep() + 1);\n }\n }\n\n async previous(): Promise<void> {\n if (this.canGoPrevious()) {\n await this.goToStep(this.activeStep() - 1);\n }\n }\n\n async goToStep(index: number): Promise<void> {\n if (index < 0 || index >= this.steps().length) {\n const errorMsg = `Invalid step index: ${index}. Valid range: 0-${this.steps().length - 1}`;\n this.navigationError.emit(errorMsg);\n return;\n }\n\n if (index === this.activeStep()) {\n return;\n }\n\n const beforeChange = this.beforeStepChange();\n if (beforeChange) {\n try {\n const canChange = await Promise.resolve(beforeChange(this.activeStep(), index));\n if (!canChange) {\n this.navigationError.emit(`Navigation from step ${this.activeStep()} to step ${index} was blocked by validation`);\n return;\n }\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error in beforeStepChange';\n this.navigationError.emit(errorMsg);\n return;\n }\n }\n\n if (!this.canActivateStep(index)) {\n this.navigationError.emit(`Cannot activate step ${index}. Please complete previous steps first`);\n return;\n }\n\n this.activeStep.set(index);\n this.stepChange.emit(index);\n\n const currentStep = this.steps()[index];\n if (this.isLastStep() && currentStep?.completed) {\n this.completed.emit();\n }\n }\n\n canGoNext(): boolean {\n const nextIndex = this.activeStep() + 1;\n return nextIndex < this.steps().length && this.canActivateStep(nextIndex);\n }\n\n canGoPrevious(): boolean {\n return this.activeStep() > 0;\n }\n\n canActivateStep(index: number): boolean {\n if (index < 0 || index >= this.steps().length) {\n return false;\n }\n\n if (!this.linear()) return true;\n if (index === 0) return true;\n\n const step = this.steps()[index];\n if (step?.disabled) return false;\n\n return this.steps()\n .slice(0, index)\n .every(s => s.completed && !s.error);\n }\n\n isStepValid(index: number): boolean {\n const step = this.steps()[index];\n return step ? !!step.completed && !step.error : false;\n }\n\n getStepAriaLabel(step: FlowStepConfig, index: number): string {\n const labels = this.effectiveAriaLabels();\n let status: string;\n if (step.error) {\n status = labels.error;\n } else if (step.warning) {\n status = labels.warning;\n } else if (step.completed) {\n status = labels.completed;\n } else if (index === this.activeStep()) {\n status = labels.active;\n } else if (step.disabled) {\n status = labels.disabled;\n } else {\n status = labels.incomplete;\n }\n return `${labels.step} ${index + 1}: ${step.title} - ${status}`;\n }\n\n reset(): void {\n this.activeStep.set(0);\n this.stepChange.emit(0);\n }\n\n handleStepClick(index: number): void {\n const step = this.steps()[index];\n if (step && !step.disabled && this.canActivateStep(index)) {\n this.goToStep(index);\n }\n }\n\n handleKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleStepClick(index);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (this.canGoNext()) {\n this.next();\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (this.canGoPrevious()) {\n this.previous();\n }\n break;\n case 'Home':\n event.preventDefault();\n if (this.canActivateStep(0)) {\n this.goToStep(0);\n }\n break;\n case 'End':\n event.preventDefault();\n const lastIndex = this.steps().length - 1;\n if (this.canActivateStep(lastIndex)) {\n this.goToStep(lastIndex);\n }\n break;\n }\n }\n}\n","<div class=\"flow-track\" role=\"tablist\">\n @for (step of steps(); track $index; let i = $index) {\n <div\n class=\"flow-segment\"\n [class.active]=\"i === activeStep()\"\n [class.completed]=\"step.completed\"\n [class.disabled]=\"step.disabled || (!step.completed && i !== activeStep() && !canActivateStep(i))\"\n [class.error]=\"!!step.error\"\n [class.warning]=\"!!step.warning\"\n [class.loading]=\"step.loading\"\n [class.first]=\"i === 0\"\n [class.last]=\"i === steps().length - 1\"\n role=\"tab\"\n [attr.tabindex]=\"step.disabled ? -1 : 0\"\n [attr.id]=\"'flow-step-' + i\"\n [attr.aria-selected]=\"i === activeStep()\"\n [attr.aria-disabled]=\"step.disabled || (!step.completed && i !== activeStep() && !canActivateStep(i))\"\n [attr.aria-label]=\"getStepAriaLabel(step, i)\"\n [attr.aria-current]=\"i === activeStep() ? 'step' : null\"\n [attr.aria-busy]=\"step.loading\"\n (click)=\"handleStepClick(i)\"\n (keydown)=\"handleKeydown($event, i)\"\n >\n <span class=\"flow-segment-content\">\n @if (step.loading) {\n <i class=\"ph ph-circle-notch spinner\" aria-hidden=\"true\"></i>\n } @else if (step.error) {\n <i class=\"ph ph-x-circle\" aria-hidden=\"true\"></i>\n } @else if (step.warning) {\n <i class=\"ph ph-warning\" aria-hidden=\"true\"></i>\n } @else if (step.completed) {\n <i class=\"ph ph-check-circle\" aria-hidden=\"true\"></i>\n }\n <span class=\"flow-segment-title\">{{ step.title }}</span>\n </span>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n viewChild,\n InjectionToken\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { SwitchSize, SwitchConfig } from './switch.types';\n\nexport const SWITCH_CONFIG = new InjectionToken<Partial<SwitchConfig>>('SWITCH_CONFIG', {\n factory: () => ({\n checked: false,\n disabled: false,\n required: false,\n size: 'medium',\n labelPosition: 'right'\n })\n});\n\n@Component({\n selector: 'psh-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: PshSwitchComponent,\n multi: true\n }],\n host: {\n '[class.switch-wrapper]': 'true',\n '[class.switch-disabled]': 'disabled()',\n '[class.switch-error]': '!!error()',\n '[class.switch-success]': '!!success()'\n }\n})\nexport class PshSwitchComponent implements ControlValueAccessor, FormCheckboxControl {\n private config = inject(SWITCH_CONFIG);\n private uniqueId = `switch-${crypto.randomUUID()}`;\n\n private switchInput = viewChild<ElementRef<HTMLInputElement>>('switchInput');\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n readonly checked = model(this.config.checked ?? false);\n readonly disabled = model(this.config.disabled ?? false);\n touched = model(false);\n\n required = input(this.config.required ?? false);\n size = input<SwitchSize>(this.config.size ?? 'medium');\n labelPosition = input<'left' | 'right'>(this.config.labelPosition ?? 'right');\n\n label = input('');\n error = input('');\n success = input('');\n ariaLabel = input<string>();\n name = input<string>('');\n id = input<string>(this.uniqueId);\n\n computedAriaLabel = computed(() => {\n const customLabel = this.ariaLabel();\n if (customLabel) return customLabel;\n\n const labelText = this.label();\n if (labelText) return labelText;\n\n return 'Switch';\n });\n errorId = computed(() => this.error() ? `${this.id()}-error` : null);\n successId = computed(() => this.success() ? `${this.id()}-success` : null);\n describedBy = computed(() => {\n const ids = [this.errorId(), this.successId()].filter(Boolean);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n toggle(): void {\n if (!this.disabled()) {\n this.checked.update(v => !v);\n this.onChange(this.checked());\n this.onTouched();\n this.touched.set(true);\n }\n }\n\n writeValue(value: boolean): void {\n this.checked.set(value ?? false);\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(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n focus(): void {\n const el = this.switchInput();\n if (el?.nativeElement) {\n el.nativeElement.focus();\n }\n }\n\n blur(): void {\n const el = this.switchInput();\n if (el?.nativeElement) {\n el.nativeElement.blur();\n }\n }\n}\n","<div\n class=\"switch-container\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n>\n <label class=\"switch-label\" [class]=\"labelPosition() === 'left' ? 'label-left' : 'label-right'\">\n <input\n #switchInput\n type=\"checkbox\"\n class=\"switch-input\"\n [id]=\"id()\"\n [name]=\"name() || id()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-invalid]=\"!!error()\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-describedby]=\"describedBy()\"\n (change)=\"toggle()\"\n />\n <span class=\"switch-control\">\n <span class=\"switch-thumb\"></span>\n </span>\n <span class=\"switch-text\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content>Switch</ng-content>\n }\n </span>\n </label>\n\n @if (error()) {\n <div [id]=\"errorId()!\" class=\"switch-error\" role=\"alert\" aria-live=\"polite\">\n {{ error() }}\n </div>\n }\n\n @if (success()) {\n <div [id]=\"successId()!\" class=\"switch-success\" role=\"status\" aria-live=\"polite\">\n {{ success() }}\n </div>\n }\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n InjectionToken\n} from '@angular/core';\nimport { TabBarItem, TabBarConfig, TabBarChangeEvent } from './tab-bar.types';\n\n/**\n * Token d'injection pour la configuration globale de la barre d'onglets\n */\nexport const TAB_BAR_CONFIG = new InjectionToken<Partial<TabBarConfig>>('TAB_BAR_CONFIG', {\n factory: () => ({\n disabled: false,\n position: 'bottom',\n animated: true\n })\n});\n\n\n@Component({\n selector: 'psh-tab-bar',\n templateUrl: './tab-bar.component.html',\n styleUrls: ['./tab-bar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.top]': 'position() === \"top\"',\n '[class.animated]': 'animated()',\n 'role': 'tablist',\n '[attr.aria-label]': '\"Navigation par onglets\"'\n }\n})\nexport class PshTabBarComponent {\n private config = inject(TAB_BAR_CONFIG);\n\n // Model inputs with defaults from config\n disabled = model(this.config.disabled ?? false);\n position = model<'bottom' | 'top'>(this.config.position ?? 'bottom');\n animated = model(this.config.animated ?? true);\n activeIndex = model(0);\n\n // Regular inputs\n items = input.required<TabBarItem[]>();\n\n // Outputs\n tabChange = output<TabBarChangeEvent>();\n\n selectTab(index: number): void {\n const items = this.items();\n const previousIndex = this.activeIndex();\n const selectedItem = items[index];\n\n if (this.disabled() ||\n previousIndex === index ||\n index < 0 ||\n index >= items.length ||\n !selectedItem ||\n selectedItem.disabled) {\n return;\n }\n\n this.activeIndex.set(index);\n this.tabChange.emit({\n index,\n item: selectedItem,\n previousIndex\n });\n }\n}","<div class=\"tab-bar\">\n @for (item of items(); track item.id; let i = $index) {\n <button\n class=\"tab-item\"\n [class.active]=\"activeIndex() === i\"\n [class.disabled]=\"disabled() || item.disabled\"\n role=\"tab\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-disabled]=\"disabled() || item.disabled\"\n [attr.aria-label]=\"item.label\"\n (click)=\"selectTab(i)\"\n >\n <i \n [class]=\"activeIndex() === i ? 'ph-fill ph-' + item.icon : 'ph ph-' + item.icon\"\n aria-hidden=\"true\"\n ></i>\n <span class=\"tab-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"tab-badge\">{{ item.badge }}</span>\n }\n </button>\n }\n</div>","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal, InjectionToken } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { PshInputComponent } from '../input/input.component';\nimport { TableColumn, TableRow, TableSort, TableConfig, TableRowClickEvent } from './table.types';\n\nexport const TABLE_CONFIG = new InjectionToken<Partial<TableConfig>>('TABLE_CONFIG', {\n factory: () => ({\n variant: 'default',\n size: 'medium',\n striped: false,\n hoverable: false,\n bordered: false,\n loading: false,\n emptyMessage: 'No data available',\n noResultsMessage: 'No results found',\n globalSearch: false,\n globalSearchPlaceholder: 'Search in all columns...',\n tableLayout: 'auto',\n truncateText: false,\n fullWidth: false\n })\n});\n\n@Component({\n selector: 'psh-table',\n imports: [NgTemplateOutlet, PshInputComponent],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'psh-table',\n '[class.full-width]': 'fullWidth()'\n }\n})\nexport class PshTableComponent {\n private config = inject(TABLE_CONFIG);\n\n variant = input<'default' | 'outline'>(this.config.variant ?? 'default');\n size = input<'small' | 'medium' | 'large'>(this.config.size ?? 'medium');\n striped = input(this.config.striped ?? false);\n hoverable = input(this.config.hoverable ?? false);\n bordered = input(this.config.bordered ?? false);\n loading = input(this.config.loading ?? false);\n globalSearch = input(this.config.globalSearch ?? false);\n fullWidth = input(this.config.fullWidth ?? false);\n columns = input<TableColumn[]>([]);\n data = input<TableRow[]>([]);\n emptyMessage = input<string>(this.config.emptyMessage ?? 'No data available');\n noResultsMessage = input<string>(this.config.noResultsMessage ?? 'No results found');\n globalSearchPlaceholder = input(this.config.globalSearchPlaceholder ?? 'Search in all columns...');\n tableLayout = input<'auto' | 'fixed'>(this.config.tableLayout ?? 'auto');\n truncateText = input(this.config.truncateText ?? false);\n\n sortChange = output<TableSort>();\n globalSearchChange = output<string>();\n rowClick = output<TableRowClickEvent>();\n\n private currentSortSignal = signal<TableSort | undefined>(undefined);\n readonly searchTermSignal = signal('');\n\n currentSort = computed(() => this.currentSortSignal());\n searchTerm = computed(() => this.searchTermSignal());\n\n computedEmptyMessage = computed(() => {\n return this.searchTerm()\n ? `${this.noResultsMessage()} \"${this.searchTerm()}\"`\n : this.emptyMessage();\n });\n\n state = computed(() => {\n if (this.loading()) return 'loading';\n if (this.filteredData().length === 0) return 'empty';\n return 'default';\n });\n\n filteredData = computed(() => {\n let result = [...this.data()];\n\n if (this.searchTerm()) {\n result = this.filterData(result, this.searchTerm());\n }\n\n const sort = this.currentSort();\n if (sort) {\n result = this.sortData(result, sort);\n }\n\n return result;\n });\n\n /**\n * Trie les données\n */\n private sortData(data: TableRow[], sort: TableSort): TableRow[] {\n return [...data].sort((a, b) => {\n const column = this.columns().find(col => col.key === sort.key);\n \n // Utiliser la fonction de tri personnalisée si elle existe\n if (column?.sortFn) {\n return sort.direction === 'asc' \n ? column.sortFn(a, b)\n : column.sortFn(b, a);\n }\n \n // Sinon, utiliser le tri par défaut avec le chemin\n const aValue = this.getNestedValue(a, column?.path || sort.key);\n const bValue = this.getNestedValue(b, column?.path || sort.key);\n \n if (sort.direction === 'asc') {\n return aValue > bValue ? 1 : -1;\n } else {\n return aValue < bValue ? 1 : -1;\n }\n });\n }\n\n /**\n * Filtre les données\n */\n private filterData(data: TableRow[], searchTerm: string): TableRow[] {\n if (!searchTerm) return data;\n \n const term = searchTerm.toLowerCase();\n return data.filter(row => {\n return this.columns().some(column => {\n const value = this.getNestedValue(row, column.path || column.key);\n return value?.toString().toLowerCase().includes(term);\n });\n });\n }\n\n /**\n * Récupère la valeur d'un objet imbriqué en utilisant un chemin\n */\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => acc?.[part], obj);\n }\n\n handleSort(column: TableColumn): void {\n if (!column.sortable) return;\n\n const direction = !this.currentSort() || this.currentSort()?.key !== column.key\n ? 'asc'\n : this.currentSort()?.direction === 'asc'\n ? 'desc'\n : 'asc';\n\n const sort: TableSort = { key: column.key, direction };\n this.currentSortSignal.set(sort);\n this.sortChange.emit(sort);\n }\n\n onSearchValueChange(value: string): void {\n this.globalSearchChange.emit(value);\n }\n\n handleRowClick(row: TableRow): void {\n this.rowClick.emit({ id: row.id, row });\n }\n\n /**\n * Récupère la valeur d'une cellule pour affichage\n */\n protected getCellValue(row: TableRow, column: TableColumn): any {\n return this.getNestedValue(row, column.path || column.key);\n }\n}","<div\n class=\"table-wrapper\"\n [class.striped]=\"striped()\"\n [class.hoverable]=\"hoverable()\"\n [class.bordered]=\"bordered()\"\n [class.small]=\"size() === 'small'\"\n [class.large]=\"size() === 'large'\"\n [class.outline]=\"variant() === 'outline'\"\n [class.table-fixed]=\"tableLayout() === 'fixed'\"\n [class.truncate]=\"truncateText()\"\n [attr.data-state]=\"state()\"\n>\n @if (globalSearch()) {\n <div class=\"global-search\" role=\"search\">\n <psh-input\n [placeholder]=\"globalSearchPlaceholder()\"\n [ariaLabel]=\"globalSearchPlaceholder()\"\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [showLabel]=\"false\"\n iconStart=\"magnifying-glass\"\n type=\"search\"\n [(value)]=\"searchTermSignal\"\n (valueChange)=\"onSearchValueChange($event)\"\n />\n </div>\n }\n\n <table role=\"table\">\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th \n [style.width]=\"column.width\"\n [attr.aria-sort]=\"column.sortable ? (currentSort()?.key === column.key ? (currentSort()?.direction === 'asc' ? 'ascending' : 'descending') : 'none') : null\"\n [class.sortable]=\"column.sortable\" \n (click)=\"handleSort(column)\"\n >\n <div class=\"th-content\">\n {{ column.label }}\n @if (column.sortable) {\n @if (currentSort()?.key === column.key) {\n <i\n [class]=\"'ph ' + (currentSort()?.direction === 'desc' ? 'ph-sort-descending' : 'ph-sort-ascending')\"\n [attr.aria-label]=\"'Sort ' + currentSort()?.direction\"\n aria-hidden=\"true\">\n </i>\n } @else {\n <i\n class=\"ph ph-arrows-down-up sort-icon-neutral\"\n aria-label=\"Sortable\"\n aria-hidden=\"true\">\n </i>\n }\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n \n <tbody>\n @if (loading()) {\n <tr class=\"loading-row\">\n <td [attr.colspan]=\"columns().length\">\n <div class=\"loading-indicator\">\n <div class=\"spinner\"></div>\n </div>\n </td>\n </tr>\n } @else if (filteredData().length === 0) {\n <tr class=\"empty-row\">\n <td [attr.colspan]=\"columns().length\">\n {{ computedEmptyMessage() }}\n </td>\n </tr>\n } @else {\n @for (row of filteredData(); track row.id) {\n <tr (click)=\"handleRowClick(row)\">\n @for (column of columns(); track column.key) {\n <td>\n @if (column.template) {\n <ng-container\n [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"{ $implicit: row, column: column }\"\n ></ng-container>\n } @else {\n {{ getCellValue(row, column) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal\n} from '@angular/core';\nimport { Tab } from './tabs.types';\n\n@Component({\n selector: 'psh-tab',\n template: '<ng-content />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.tab-panel]': 'true',\n '[class.active]': 'isActive()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': '\"tab-\" + index()',\n '[attr.id]': '\"panel-\" + index()',\n '[attr.tabindex]': 'isActive() ? 0 : -1'\n }\n})\nexport class PshTabComponent {\n header = input.required<string>();\n icon = input<string>();\n disabled = input(false);\n ariaLabel = input<string>();\n\n private _index = signal(0);\n private _isActive = signal(false);\n\n readonly index = this._index.asReadonly();\n readonly isActive = this._isActive.asReadonly();\n\n setIndex(value: number): void {\n this._index.set(value);\n }\n\n setActive(active: boolean): void {\n this._isActive.set(active);\n }\n\n toTabData(): Tab {\n return {\n header: this.header(),\n icon: this.icon(),\n content: '',\n disabled: this.disabled(),\n ariaLabel: this.ariaLabel()\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n InjectionToken\n} from '@angular/core';\nimport { TabsVariant, TabsSize, Tab, TabsConfig, TabChangeEvent } from './tabs.types';\nimport { PshTabComponent } from './tab.component';\n\nexport const TABS_CONFIG = new InjectionToken<Partial<TabsConfig>>('TABS_CONFIG', {\n factory: () => ({\n variant: 'default',\n size: 'medium',\n activeIndex: 0,\n animated: true\n })\n});\n\n@Component({\n selector: 'psh-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n 'role': 'region',\n '[attr.aria-label]': 'ariaLabel() || \"Navigation par onglets\"'\n }\n})\nexport class PshTabsComponent {\n private config = inject(TABS_CONFIG);\n\n variant = input<TabsVariant>(this.config.variant ?? 'default');\n size = input<TabsSize>(this.config.size ?? 'medium');\n animated = input(this.config.animated ?? true);\n tabs = input<Tab[]>([]);\n ariaLabel = input<string>();\n ariaOrientation = input<'horizontal' | 'vertical'>('horizontal');\n\n activeIndex = model(this.config.activeIndex ?? 0);\n\n tabComponents = contentChildren(PshTabComponent);\n\n tabsToDisplay = computed(() => {\n const components = this.tabComponents();\n if (components.length > 0) {\n return components.map(c => c.toTabData());\n }\n return this.tabs();\n });\n\n hasContentProjection = computed(() => this.tabComponents().length > 0);\n\n activeIndexChange = output<number>();\n tabChange = output<TabChangeEvent>();\n\n hostClasses = computed(() => {\n const classes = ['tabs-wrapper'];\n const size = this.size();\n const variant = this.variant();\n\n if (size !== 'medium') classes.push(`tabs-${size}`);\n classes.push(`tabs-${variant}`);\n if (this.animated()) classes.push('tabs-animated');\n\n return classes.join(' ');\n });\n\n constructor() {\n effect(() => {\n const tabs = this.tabComponents();\n const currentIndex = this.activeIndex();\n tabs.forEach((tab, index) => {\n tab.setIndex(index);\n tab.setActive(index === currentIndex);\n });\n });\n\n effect(() => {\n const currentIndex = this.activeIndex();\n const tabs = this.tabsToDisplay();\n if (tabs.length > 0 && currentIndex >= tabs.length) {\n const clampedIndex = Math.max(0, tabs.length - 1);\n this.activeIndex.set(clampedIndex);\n this.activeIndexChange.emit(clampedIndex);\n }\n });\n }\n\n handleKeyDown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n this.selectPrevious();\n break;\n case 'ArrowRight':\n event.preventDefault();\n this.selectNext();\n break;\n case 'Home':\n event.preventDefault();\n this.selectFirst();\n break;\n case 'End':\n event.preventDefault();\n this.selectLast();\n break;\n }\n }\n\n selectTab(index: number): void {\n const tabs = this.tabsToDisplay();\n const tab = tabs[index];\n\n if (!tab || tab.disabled) return;\n\n const previousIndex = this.activeIndex();\n if (previousIndex !== index) {\n this.activeIndex.set(index);\n this.activeIndexChange.emit(index);\n this.tabChange.emit({ previousIndex, currentIndex: index, tab });\n }\n }\n\n selectNext(): void {\n const tabs = this.tabsToDisplay();\n let nextIndex = (this.activeIndex() + 1) % tabs.length;\n\n while (tabs[nextIndex]?.disabled && nextIndex !== this.activeIndex()) {\n nextIndex = (nextIndex + 1) % tabs.length;\n }\n\n if (nextIndex !== this.activeIndex()) {\n this.selectTab(nextIndex);\n }\n }\n\n selectPrevious(): void {\n const tabs = this.tabsToDisplay();\n let prevIndex = (this.activeIndex() - 1 + tabs.length) % tabs.length;\n\n while (tabs[prevIndex]?.disabled && prevIndex !== this.activeIndex()) {\n prevIndex = (prevIndex - 1 + tabs.length) % tabs.length;\n }\n\n if (prevIndex !== this.activeIndex()) {\n this.selectTab(prevIndex);\n }\n }\n\n selectFirst(): void {\n const tabs = this.tabsToDisplay();\n let firstIndex = 0;\n\n while (tabs[firstIndex]?.disabled && firstIndex < tabs.length - 1) {\n firstIndex++;\n }\n\n if (!tabs[firstIndex]?.disabled && firstIndex !== this.activeIndex()) {\n this.selectTab(firstIndex);\n }\n }\n\n selectLast(): void {\n const tabs = this.tabsToDisplay();\n let lastIndex = tabs.length - 1;\n\n while (tabs[lastIndex]?.disabled && lastIndex > 0) {\n lastIndex--;\n }\n\n if (!tabs[lastIndex]?.disabled && lastIndex !== this.activeIndex()) {\n this.selectTab(lastIndex);\n }\n }\n\n getActiveTab(): Tab | undefined {\n return this.tabsToDisplay()[this.activeIndex()];\n }\n\n getTabComponent(index: number): PshTabComponent | undefined {\n return this.tabComponents()[index];\n }\n}\n","<div\n class=\"tabs-container\"\n [class.animated]=\"animated()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"ariaOrientation()\"\n>\n <div class=\"tabs-header\" [class]=\"variant()\">\n @for (tab of tabsToDisplay(); track $index; let i = $index) {\n <button\n class=\"tab-button\"\n role=\"tab\"\n [class.active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [attr.aria-controls]=\"'panel-' + i\"\n [attr.aria-label]=\"tab.ariaLabel || tab.header\"\n [attr.id]=\"'tab-' + i\"\n [tabindex]=\"i === activeIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n (click)=\"$event.preventDefault(); selectTab(i)\"\n (keydown)=\"handleKeyDown($event, i)\"\n >\n @if (tab.icon) {\n <i class=\"ph ph-{{ tab.icon }}\" aria-hidden=\"true\"></i>\n }\n {{ tab.header }}\n </button>\n }\n </div>\n\n <div class=\"tabs-content\">\n @if (hasContentProjection()) {\n <ng-content />\n } @else {\n @for (tab of tabsToDisplay(); track $index; let i = $index) {\n <div\n class=\"tab-panel\"\n role=\"tabpanel\"\n [class.active]=\"i === activeIndex()\"\n [attr.aria-labelledby]=\"'tab-' + i\"\n [attr.id]=\"'panel-' + i\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n [attr.hidden]=\"i !== activeIndex() || null\"\n >\n {{ tab.content }}\n </div>\n }\n }\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { ToastConfig } from './toast.types';\n\nexport const TOAST_CONFIG = new InjectionToken<Partial<ToastConfig>>('TOAST_CONFIG', {\n factory: () => ({\n position: 'top-right',\n duration: 5000,\n maxToasts: 5,\n pauseOnHover: true,\n showIcon: true,\n showCloseButton: true\n })\n});\n","import { Injectable, inject, signal } from '@angular/core';\nimport { TOAST_CONFIG } from './toast.tokens';\nimport { Toast, ToastPosition } from './toast.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PshToastService {\n private _toasts = signal<Toast[]>([]);\n private _position = signal<ToastPosition>('top-right');\n private config = inject(TOAST_CONFIG);\n\n readonly toasts = this._toasts.asReadonly();\n readonly position = this._position.asReadonly();\n\n show(toast: Omit<Toast, 'id'>) {\n const id = crypto.randomUUID();\n const newToast: Toast = {\n ...toast,\n id,\n type: toast.type || 'info',\n duration: toast.duration ?? this.config.duration ?? 5000\n };\n\n const maxToasts = this.config.maxToasts ?? 5;\n this._toasts.update(toasts => {\n const currentToasts = [...toasts];\n while (currentToasts.length >= maxToasts) {\n currentToasts.shift();\n }\n return [...currentToasts, newToast];\n });\n\n return id;\n }\n\n remove(id: string) {\n this._toasts.update(toasts => toasts.filter(t => t.id !== id));\n }\n\n info(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'info', ...options });\n }\n\n success(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'success', ...options });\n }\n\n warning(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'warning', ...options });\n }\n\n error(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'danger', ...options });\n }\n\n danger(message: string, options?: Partial<Omit<Toast, 'id' | 'message' | 'type'>>) {\n return this.show({ message, type: 'danger', ...options });\n }\n\n setPosition(position: ToastPosition) {\n this._position.set(position);\n }\n}\n\n/** @deprecated Use PshToastService instead */\nexport const ToastService = PshToastService;\n","import { PshToastComponent } from './toast.component';\n\n/** @deprecated Use PshToastComponent instead */\nexport const ToastComponent = PshToastComponent;\n","import { ChangeDetectionStrategy, Component, effect, inject, OnDestroy } from '@angular/core';\nimport { Toast, ToastType } from './toast.types';\nimport { PshToastService } from './toast.service';\nimport { TOAST_CONFIG } from './toast.tokens';\n\n@Component({\n selector: 'psh-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.escape)': 'handleEscapeKey()'\n }\n})\nexport class PshToastComponent implements OnDestroy {\n private toastService = inject(PshToastService);\n public config = inject(TOAST_CONFIG);\n\n private timeoutMap = new Map<string, number>();\n private scheduledToastIds = new Set<string>();\n\n readonly toasts = this.toastService.toasts;\n readonly position = this.toastService.position;\n\n constructor() {\n effect(() => {\n const currentToasts = this.toasts();\n\n currentToasts.forEach(toast => {\n if (toast.id && !this.scheduledToastIds.has(toast.id)) {\n this.scheduledToastIds.add(toast.id);\n\n if (toast.duration && toast.duration > 0) {\n this.scheduleRemoval(toast.id, toast.duration);\n }\n }\n });\n\n const currentToastIds = new Set(currentToasts.map(t => t.id).filter(Boolean) as string[]);\n this.scheduledToastIds.forEach(id => {\n if (!currentToastIds.has(id)) {\n this.scheduledToastIds.delete(id);\n }\n });\n });\n }\n\n handleEscapeKey(): void {\n const toasts = this.toasts();\n const lastToast = toasts[toasts.length - 1];\n if (lastToast?.id) {\n this.handleDismiss(lastToast.id);\n }\n }\n\n handleDismiss(id: string | undefined): void {\n if (id) {\n this.clearTimeout(id);\n this.toastService.remove(id);\n }\n }\n\n handleMouseEnter(id: string): void {\n if (this.config.pauseOnHover) {\n this.clearTimeout(id);\n }\n }\n\n handleMouseLeave(id: string): void {\n if (this.config.pauseOnHover) {\n const toast = this.toasts().find(t => t.id === id);\n if (toast?.duration && toast.duration > 0) {\n this.scheduleRemoval(id, toast.duration);\n }\n }\n }\n\n getDefaultIcon(type: ToastType): string {\n const icons: Record<ToastType, string> = {\n info: 'info',\n success: 'check-circle',\n warning: 'warning',\n danger: 'warning-octagon'\n };\n return icons[type] || 'info';\n }\n\n shouldShowCloseButton(toast: Toast): boolean {\n if (toast.showCloseButton !== undefined) {\n return toast.showCloseButton;\n }\n return this.config.showCloseButton !== false;\n }\n\n getCloseButtonAriaLabel(toast: Toast): string {\n return toast.closeButtonAriaLabel ?? this.config.closeButtonAriaLabel ?? 'Close notification';\n }\n\n private scheduleRemoval(id: string, duration: number): void {\n this.clearTimeout(id);\n const timeoutId = window.setTimeout(() => {\n this.toastService.remove(id);\n this.timeoutMap.delete(id);\n }, duration);\n this.timeoutMap.set(id, timeoutId);\n }\n\n private clearTimeout(id: string): void {\n const timeoutId = this.timeoutMap.get(id);\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n this.timeoutMap.delete(id);\n }\n }\n\n ngOnDestroy(): void {\n this.timeoutMap.forEach(timeoutId => {\n window.clearTimeout(timeoutId);\n });\n this.timeoutMap.clear();\n this.scheduledToastIds.clear();\n }\n}\n\nexport { ToastComponent } from './toast.compat';\n","<div\n class=\"toast-container\"\n [class]=\"position()\"\n role=\"region\"\n aria-label=\"Notifications\"\n>\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"toast-item\"\n [class]=\"toast.type\"\n role=\"alert\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [style.--progress-duration]=\"toast.duration + 'ms'\"\n (mouseenter)=\"handleMouseEnter(toast.id!)\"\n (mouseleave)=\"handleMouseLeave(toast.id!)\"\n >\n @if (config.showIcon !== false) {\n <i\n class=\"ph ph-{{ toast.icon || getDefaultIcon(toast.type) }} toast-icon\"\n aria-hidden=\"true\"\n ></i>\n }\n <div class=\"toast-content\">\n {{ toast.message }}\n </div>\n @if (shouldShowCloseButton(toast)) {\n <button\n type=\"button\"\n class=\"toast-close\"\n (click)=\"handleDismiss(toast.id)\"\n [attr.aria-label]=\"getCloseButtonAriaLabel(toast)\"\n >\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n</div>\n","import { Injectable, signal, computed } from '@angular/core';\nimport { Theme, ThemeConfig } from './types/theme.types';\nimport { inject } from '@angular/core';\n\n// Clé pour le stockage localStorage\nconst THEME_STORAGE_KEY = 'helix-theme-preference';\n\n// Interface pour le service de contexte personnalisé\n// Les applications peuvent implémenter cette interface pour fournir leurs propres couleurs\nexport interface InsurerContextService {\n primaryColor(): string;\n secondaryColor(): string;\n}\n\n// Token pour l'injection optionnelle\nimport { InjectionToken } from '@angular/core';\nexport const INSURER_CONTEXT_SERVICE = new InjectionToken<InsurerContextService>('INSURER_CONTEXT_SERVICE');\n\nconst LIGHTEN_PERCENTAGES = {\n light: 20,\n lighter: 40\n};\n\nconst DARKEN_PERCENTAGES = {\n dark: 20,\n darker: 40\n};\n\n/**\n * Convertit une couleur hexadécimale en RGB\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n // Nettoyer le hex code (enlever le # si présent)\n hex = hex.replace(/^#/, '');\n \n // S'assurer que la longueur est correcte\n if (![3, 6].includes(hex.length)) {\n console.error(`Invalid hex color: ${hex}`);\n return null;\n }\n \n // Si c'est un format court (3 chiffres), le convertir en format long (6 chiffres)\n if (hex.length === 3) {\n hex = hex.split('').map(char => char + char).join('');\n }\n \n // Extraire les composantes RGB\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return { r, g, b };\n}\n\n/**\n * Convertit des valeurs RGB en couleur hexadécimale\n */\nfunction rgbToHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b]\n .map(x => {\n const hex = Math.max(0, Math.min(255, Math.round(x))).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n })\n .join('');\n}\n\n/**\n * Éclaircit une couleur hexadécimale d'un certain pourcentage\n */\nfunction lightenColor(hex: string, percent: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n \n const { r, g, b } = rgb;\n const amount = percent / 100;\n \n const newR = r + (255 - r) * amount;\n const newG = g + (255 - g) * amount;\n const newB = b + (255 - b) * amount;\n \n return rgbToHex(newR, newG, newB);\n}\n\n/**\n * Assombrit une couleur hexadécimale d'un certain pourcentage\n */\nfunction darkenColor(hex: string, percent: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n \n const { r, g, b } = rgb;\n const amount = percent / 100;\n \n const newR = r * (1 - amount);\n const newG = g * (1 - amount);\n const newB = b * (1 - amount);\n \n return rgbToHex(newR, newG, newB);\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n private insurerContext = inject(INSURER_CONTEXT_SERVICE, { optional: true });\n private isDarkThemeSignal = signal<boolean>(false);\n private themeNameSignal = signal<Theme>('light');\n private lastChangeSignal = signal<Date>(new Date());\n\n isDarkTheme = computed(() => this.isDarkThemeSignal());\n themeName = computed(() => this.themeNameSignal());\n \n themeInfo = computed(() => ({\n isDark: this.isDarkTheme(),\n name: this.themeName(),\n lastChange: this.lastChangeSignal()\n }));\n\n constructor() {\n // Initialiser le thème en fonction de la préférence stockée ou par défaut 'light'\n this.initializeTheme();\n \n // Listen for system theme changes (commented out to keep user control)\n // window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {\n // this.setDarkTheme(e.matches);\n // });\n \n // Attendre que l'injection soit prête avant d'appliquer le thème\n setTimeout(() => {\n this.applyInsurerTheme();\n }, 0);\n }\n\n setDarkTheme(isDark: boolean) {\n document.documentElement.setAttribute('data-theme', isDark ? 'dark' : 'light');\n this.isDarkThemeSignal.set(isDark);\n this.themeNameSignal.set(isDark ? 'dark' : 'light');\n this.lastChangeSignal.set(new Date());\n \n // Réappliquer les couleurs de l'assureur après le changement de thème\n this.applyInsurerTheme();\n }\n\n toggleTheme() {\n this.setDarkTheme(!this.isDarkThemeSignal());\n }\n\n updateTheme(name: Theme) {\n this.themeNameSignal.set(name);\n this.isDarkThemeSignal.set(name === 'dark');\n this.lastChangeSignal.set(new Date());\n \n // Sauvegarder la préférence dans localStorage\n this.saveThemePreference(name);\n \n // Réappliquer les couleurs de l'assureur après le changement de thème\n this.applyInsurerTheme();\n }\n \n /**\n * Applique les couleurs de l'assureur aux variables CSS\n * Génère automatiquement toutes les variantes et les gradients\n * Si aucun contexte assureur n'est fourni, les fallbacks CSS des thèmes sont utilisés\n */\n applyInsurerTheme() {\n // Récupérer les couleurs de l'assureur si disponibles\n const primaryColor = this.insurerContext?.primaryColor();\n const secondaryColor = this.insurerContext?.secondaryColor();\n\n // Debug: afficher les couleurs utilisées\n console.log('Applying theme colors:', {\n primaryColor,\n secondaryColor,\n hasInsurerContext: !!this.insurerContext,\n currentTheme: this.themeName(),\n usingCssFallbacks: !primaryColor && !secondaryColor\n });\n\n // Si aucun contexte assureur, ne rien faire - les fallbacks CSS seront utilisés\n if (!this.insurerContext) {\n console.log('No InsurerContext service provided - using CSS theme fallback colors');\n return;\n }\n\n if (primaryColor) {\n try {\n // Générer les variantes de couleurs\n const primaryColorLight = lightenColor(primaryColor, 20);\n const primaryColorLighter = lightenColor(primaryColor, 40);\n const primaryColorDark = darkenColor(primaryColor, 20);\n const primaryColorDarker = darkenColor(primaryColor, 40);\n \n // Convertir en RGB pour les besoins de transparence\n const rgb = hexToRgb(primaryColor);\n const primaryColorRgb = rgb ? `${rgb.r}, ${rgb.g}, ${rgb.b}` : null;\n \n // Déterminer si le texte sur cette couleur doit être clair ou foncé\n // Une formule simple: luminosité = 0.299*R + 0.587*G + 0.114*B\n let primaryColorText = '#FFFFFF'; // Par défaut blanc\n if (rgb) {\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n if (luminance > 0.5) {\n primaryColorText = '#000000'; // Texte noir pour les couleurs claires\n }\n }\n \n // Appliquer toutes les variantes primary\n document.documentElement.style.setProperty('--insurer-primary-color', primaryColor);\n document.documentElement.style.setProperty('--insurer-primary-color-light', primaryColorLight);\n document.documentElement.style.setProperty('--insurer-primary-color-lighter', primaryColorLighter);\n document.documentElement.style.setProperty('--insurer-primary-color-dark', primaryColorDark);\n document.documentElement.style.setProperty('--insurer-primary-color-darker', primaryColorDarker);\n document.documentElement.style.setProperty('--insurer-primary-color-text', primaryColorText);\n\n if (primaryColorRgb) {\n document.documentElement.style.setProperty('--insurer-primary-color-rgb', primaryColorRgb);\n }\n\n console.log(`Applied primary color variants:`, {\n base: primaryColor,\n light: primaryColorLight,\n lighter: primaryColorLighter,\n dark: primaryColorDark,\n darker: primaryColorDarker,\n text: primaryColorText\n });\n\n // Appliquer la couleur secondaire et ses variantes\n if (secondaryColor) {\n try {\n // Générer les variantes de couleurs secondaires\n const secondaryColorLight = lightenColor(secondaryColor, 20);\n const secondaryColorLighter = lightenColor(secondaryColor, 40);\n const secondaryColorDark = darkenColor(secondaryColor, 20);\n const secondaryColorDarker = darkenColor(secondaryColor, 40);\n \n // Convertir en RGB pour les besoins de transparence\n const rgb = hexToRgb(secondaryColor);\n const secondaryColorRgb = rgb ? `${rgb.r}, ${rgb.g}, ${rgb.b}` : null;\n \n // Déterminer si le texte sur cette couleur doit être clair ou foncé\n let secondaryColorText = '#FFFFFF'; // Par défaut blanc\n if (rgb) {\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n if (luminance > 0.5) {\n secondaryColorText = '#000000'; // Texte noir pour les couleurs claires\n }\n }\n \n // Appliquer toutes les variantes secondary\n document.documentElement.style.setProperty('--insurer-secondary-color', secondaryColor);\n document.documentElement.style.setProperty('--insurer-secondary-color-light', secondaryColorLight);\n document.documentElement.style.setProperty('--insurer-secondary-color-lighter', secondaryColorLighter);\n document.documentElement.style.setProperty('--insurer-secondary-color-dark', secondaryColorDark);\n document.documentElement.style.setProperty('--insurer-secondary-color-darker', secondaryColorDarker);\n document.documentElement.style.setProperty('--insurer-secondary-color-text', secondaryColorText);\n\n if (secondaryColorRgb) {\n document.documentElement.style.setProperty('--insurer-secondary-color-rgb', secondaryColorRgb);\n }\n\n console.log(`Applied secondary color variants:`, {\n base: secondaryColor,\n light: secondaryColorLight,\n lighter: secondaryColorLighter,\n dark: secondaryColorDark,\n darker: secondaryColorDarker,\n text: secondaryColorText\n });\n } catch (error) {\n console.error('Error applying insurer secondary color theme:', error);\n }\n }\n\n console.log('Theme application complete. Primary gradients will automatically update via CSS fallback system.');\n console.log('To see custom colors, provide INSURER_CONTEXT_SERVICE in your app config.');\n } catch (error) {\n console.error('Error applying insurer theme:', error);\n }\n }\n }\n\n /**\n * Initialise le thème au démarrage de l'application\n * Utilise la préférence stockée ou le thème par défaut 'light'\n */\n private initializeTheme(): void {\n let savedTheme: Theme | null = null;\n \n // Tentative de récupération du thème sauvegardé\n try {\n savedTheme = localStorage.getItem(THEME_STORAGE_KEY) as Theme;\n } catch (error) {\n console.warn('Unable to read theme from localStorage:', error);\n }\n \n // Valider et appliquer le thème\n const isValidTheme = savedTheme === 'light' || savedTheme === 'dark';\n const themeToApply = isValidTheme ? savedTheme : 'light';\n \n this.setDarkTheme(themeToApply === 'dark');\n }\n\n /**\n * Sauvegarde la préférence de thème dans le localStorage\n */\n private saveThemePreference(theme: Theme): void {\n try {\n localStorage.setItem(THEME_STORAGE_KEY, theme);\n } catch (error) {\n console.warn('Unable to save theme to localStorage:', error);\n }\n }\n}","import { Injectable, inject, InjectionToken, Type } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface TranslationProvider {\n translate(key: string, params?: Record<string, any>): string;\n translateAsync(key: string, params?: Record<string, any>): Observable<string>;\n setLanguage(lang: string): void;\n getCurrentLanguage(): string;\n onLangChange(): Observable<string>;\n}\n\n@Injectable()\nexport class NgxTranslateProvider implements TranslationProvider {\n private translateService = inject(TranslateService);\n\n translate(key: string, params?: Record<string, any>): string {\n if (!key) return '';\n return this.translateService.instant(key, params);\n }\n\n translateAsync(key: string, params?: Record<string, any>): Observable<string> {\n if (!key) return new Observable(subscriber => subscriber.next(''));\n return this.translateService.stream(key, params);\n }\n\n setLanguage(lang: string): void {\n this.translateService.use(lang);\n }\n\n getCurrentLanguage(): string {\n return this.translateService.currentLang;\n }\n\n onLangChange(): Observable<string> {\n return this.translateService.onLangChange.pipe(\n map(event => event.lang)\n );\n }\n}\n\nexport const TRANSLATION_PROVIDER = new InjectionToken<TranslationProvider>('TRANSLATION_PROVIDER', {\n factory: () => new NgxTranslateProvider()\n});\n\nexport function provideTranslation(provider: Type<TranslationProvider> = NgxTranslateProvider) {\n return { provide: TRANSLATION_PROVIDER, useClass: provider };\n}","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScrollService {\n constructor(private router: Router) {\n // Subscribe to router events\n this.router.events.pipe(\n // Filter only NavigationEnd events\n filter(event => event instanceof NavigationEnd)\n ).subscribe(() => {\n // Reset scroll position\n window.scrollTo(0, 0);\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_CONFIG","DEFAULT_ARIA_LABELS","i1"],"mappings":";;;;;;;;;;;AAUA;AACA,MAAM,cAAc,GAAgB;AAClC,IAAA,OAAO,EAAE;CACV;AAED;AACA,MAAM,aAAa,GAA2B;AAC5C,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE;CACT;AAED,MAAMA,gBAAc,GAAG;AACrB,IAAA,IAAI,EAAE,MAAmB;AACzB,IAAA,YAAY,EAAE,MAAsB;AACpC,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,QAAqB;AAC3B,IAAA,QAAQ,EAAE;CACX;MASY,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;;AAUE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAYA,gBAAc,CAAC,IAAI,gDAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAeA,gBAAc,CAAC,YAAY,wDAAC;AAC/D,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAACA,gBAAc,CAAC,QAAQ,oDAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAYA,gBAAc,CAAC,IAAI,gDAAC;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAACA,gBAAc,CAAC,QAAQ,oDAAC;QACzC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAa;QACzB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,wDAAC;QAC5C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA0B;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;;QAGnB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;;AAGvB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,uDAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,mDAAC;AAE3D,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC,4DAC1F;AAED,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MACtB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,wDAClF;AAED,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;AACtC,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,iDAAC;AAKH,IAAA;IAHC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;8GArCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC9B,uzBA6BM,EAAA,MAAA,EAAA,CAAA,y7FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uzBAAA,EAAA,MAAA,EAAA,CAAA,y7FAAA,CAAA,EAAA;;;AEhCjD;AACA,MAAMA,gBAAc,GAAG;AACrB,IAAA,IAAI,EAAE,QAAsB;AAC5B,IAAA,KAAK,EAAE,QAAuB;AAC9B,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,IAAI,EAAE;CACP;AAED;AACA,MAAM,qBAAqB,GAAiC;AAC1D,IAAA,MAAM,EAAE,sBAAsB;AAC9B,IAAA,OAAO,EAAE,oBAAoB;AAC7B,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,IAAI,EAAE;CACP;MASY,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;;AAUE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAaA,gBAAc,CAAC,IAAI,gDAAC;AAC7C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAcA,gBAAc,CAAC,KAAK,iDAAC;QAChD,IAAA,CAAA,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACjC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAASA,gBAAc,CAAC,GAAG,+CAAC;;AAGvC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;AACpB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAASA,gBAAc,CAAC,IAAI,gDAAC;QACzC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4B;QAC1C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,oDAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uDAAC;AACnE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mDAAC;AAEjE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,6DAAC;AAElE,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,qBAAqB,CAAC,aAAa,CAAC;AAC7C,QAAA,CAAC,uDAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,iDAAC;AACnD,IAAA;8GA5BY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,KAAA,EAAA,aAAA,EAAA,GAAA,EAAA,WAAA,EAAA,GAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B/B,wzBA2BM,EAAA,MAAA,EAAA,CAAA,8uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wzBAAA,EAAA,MAAA,EAAA,CAAA,8uFAAA,CAAA,EAAA;;;AErBjD,MAAM,cAAc,GAAG;AACrB,IAAA,OAAO,EAAE,SAAyB;AAClC,IAAA,IAAI,EAAE,QAAqB;AAC3B,IAAA,WAAW,EAAE,MAA0B;AACvC,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,QAAQ,EAAE;CACX;MASY,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;AASW,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,cAAc,CAAC,OAAO,mDAAC;AACrD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,cAAc,CAAC,IAAI,gDAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,cAAc,CAAC,WAAW,uDAAC;AACjE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,mDAAC;QACrB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;AAClB,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,+CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,oDAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAgB,cAAc,CAAC,QAAQ,oDAAC;AACxD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsC;QAEvD,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;QAC3B,IAAA,CAAA,WAAW,GAAG,MAAM,EAAK;QAEzB,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,QAAQ,GAAG,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpD;AAEQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,OAAO;AAAE,gBAAA,OAAO,OAAO;AAE3B,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AAC5B,QAAA,CAAC,6DAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,QAAQ;YACpC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,QAAA,CAAC,iDAAC;AAEe,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,iDAAC;AACpD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,qDAAC;AAC5D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,oDAAC;AAErD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YACjC,IAAI,OAAO,YAAY,KAAK,QAAQ;AAAE,gBAAA,OAAO,IAAI;YACjD,OAAO,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC5C,QAAA,CAAC,yDAAC;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACpD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YAEjC,IAAI,CAAC,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACrE,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,OAAO,SAAS,CAAC,YAAY,CAAC;AAChC,QAAA,CAAC,gEAAC;AAEe,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACrD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AAEjC,YAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACpC,gBAAA,OAAO,YAAY,KAAK,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YAC/D;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAC7B;AAEA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;AAC3B,YAAA,OAAO,YAAY,GAAG,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAG,GAAG,CAAA,EAAG,YAAY,EAAE;AACrE,QAAA,CAAC,iEAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE;YACvB;AAEA,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACnD,YAAA,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,gBAAA,OAAO,eAAe;YACxB;AAEA,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;AACrC,QAAA,CAAC,wDAAC;AAKH,IAAA;IAHC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;8GA7FW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,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,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB9B,4lCA8BA,EAAA,MAAA,EAAA,CAAA,qkEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDfY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4lCAAA,EAAA,MAAA,EAAA,CAAA,qkEAAA,CAAA,EAAA;;;MEOpC,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AAYU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,yDAAC;AAE7D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmB,QAAQ,sDAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,mDAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,gDAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAqB,MAAM,wDAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,YAAY,uDAAC;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,sCAAsC,wDAAC;QAC5D,IAAA,CAAA,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,gDAAC;QAErD,IAAA,CAAA,OAAO,GAAG,MAAM,EAAc;QAC9B,IAAA,CAAA,aAAa,GAAG,MAAM,EAAc;AAkBpC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAChC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AAC/C,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,QAAQ;YACxC;AACA,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAC/B,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,6DAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,iDAAC;AAgBH,IAAA;IAhDC,qBAAqB,GAAA;AACnB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;QACpE,IAAI,MAAM,EAAE;YACV,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC;YAChE,IAAI,gBAAgB,EAAE;gBACpB,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9D,gBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE;AACjD,gBAAA,IAAI,WAAW,IAAI,WAAW,KAAK,oBAAoB,EAAE;AACvD,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;gBACrC;AAAO,qBAAA,IAAI,CAAC,WAAW,IAAI,oBAAoB,EAAE;AAC/C,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC;YACF;QACF;IACF;AAqBA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC;IACF;8GApEW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,y7DCzB/B,o0CAqCS,EAAA,MAAA,EAAA,CAAA,uoMAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDZI,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA,EAAA,QAAA,EAAA,o0CAAA,EAAA,MAAA,EAAA,CAAA,uoMAAA,CAAA,EAAA;;;AEPH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAWU,gBAAgB,CAAA;AAmG3B,IAAA,WAAA,GAAA;AAlGQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAGxC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;;;AAGjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,SAAS,mDAAC;;AAGvC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;;AAGxB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;;AAI1B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGzB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;;AAG/B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,SAAS,wDAAC;;AAGjD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,QAAQ,mDAAC;;AAGtC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;;AAGxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;;AAGxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,IAAI,8DAAC;;AAGzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAuB,OAAO,4DAAC;;AAGvD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;;AAGlC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;AAG/C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;;QAIhC,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;;AAI9C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,QAAA,CAAC,0DAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,CAAC,qDAAC;;AAGF,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,OAAO,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACnD,QAAA,CAAC,iEAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9C,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;YAC3C;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,0DAAC;AAGA,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,mBAAmB,EAAE;AAE1B,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;oBAC5C,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAClC;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QAC7C;IACF;AAEA;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAlJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,q5ECpD7B,omEA6DA,EAAA,MAAA,EAAA,CAAA,67OAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDTa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;+BACE,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA,EAAA,QAAA,EAAA,omEAAA,EAAA,MAAA,EAAA,CAAA,67OAAA,CAAA,EAAA;;;ME/CU,UAAU,GAAG,IAAI,cAAc,CAAqB,YAAY,EAAE;AAC7E,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,UAAU,EAAE;KACb;AACF,CAAA;MAQY,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE,yDAAC;QAElC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAa,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAE3B,IAAA,CAAA,OAAO,GAAG,MAAM,EAAc;QAC9B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,WAAW,IAAI,WAAW,KAAK,KAAK;AAAE,gBAAA,OAAO,WAAW;AAE5D,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAE/B,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,6DAAC;AAYO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,QAAQ,wDACzC;QAEQ,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChD;AAEQ,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,SAAS,iDAAC;AAuB1E,IAAA;IAzCC,qBAAqB,GAAA;AACnB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;QAClF,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;AACtD,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B;QACF;IACF;AAYA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AAE5C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAA8B,CAAC;QACnD;IACF;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;8GAvEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+vCCpB5B,4lCAmCM,EAAA,MAAA,EAAA,CAAA,y0EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDfO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4lCAAA,EAAA,MAAA,EAAA,CAAA,y0EAAA,CAAA,EAAA;;;AENjD,MAAM,sBAAsB,GAAmC;AAC7D,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,MAAM,EAAE,2CAA2C;AACnD,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,OAAO,EAAE;CACV;MASY,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;;;QAYE,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;;QAGhC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAG7B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;;QAItB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAkB;;QAGpC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAG1B,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,UAAU,mDAAC;;AAG5C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;;AAGxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;QAG/C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAiB,YAAY,kDAAC;;AAG5C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,wDAAC;;;QAI3B,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;AAGtC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,yDAAC;AAElD,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,+DAAC;AAE9D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,wDAAC;QAEhD,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEtD,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElD,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,IAAI,QAAQ;AAAE,gBAAA,OAAO,QAAQ;AAE7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,OAAO,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI;AACzD,QAAA,CAAC,kEAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE;YAChD,OAAO,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;AAC3C,QAAA,CAAC,qDAAC;;QAGF,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAChB,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,kDACzD;;AAGD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,mDAAC;QAE/C,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEnC,YAAA,OAAO;AACL,kBAAE,CAAA,EAAG,IAAI,KAAK,KAAK,CAAA,EAAA,EAAK,GAAG,CAAA;AAC3B,kBAAE,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,EAAE;AACzB,QAAA,CAAC,6DAAC;;AAGF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC;AAC7B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAE5B,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;AAEzC,YAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACrC;iBAAO;AACL,gBAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;YACvC;AAEA,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAChC;YAEA,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,QAAA,CAAC,0DAAC;AA6BH,IAAA;;IA1BC,IAAc,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5D,IAAc,kBAAkB,KAAK,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACxE,IAAc,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,IAAc,iBAAiB,KAAK,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtE,IAAc,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAElE;;AAEG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAlKW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BjC,w0DA2DA,EAAA,MAAA,EAAA,CAAA,w5IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCY,YAAY,oHAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAM5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,w0DAAA,EAAA,MAAA,EAAA,CAAA,w5IAAA,CAAA,EAAA;;;AEbvC;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;MASU,0BAA0B,CAAA;AARvC,IAAA,WAAA,GAAA;;AAWE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAwB,UAAU,mDAAC;;AAGlD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;;AAGxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;AAG/C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,gBAAgB,qDAAC;;AAG3C,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAS,mBAAmB,+CAAC;;AAGxC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,GAAG,uDAAC;;AAGhC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,mBAAmB,0DAAC;;AAGnD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,gBAAgB,wDAAC;;QAG9C,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;AAG9C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,OAAO;AACL,gBAAA,yBAAyB,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3C,gBAAA,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE;AAC9B,gBAAA,2BAA2B,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/C,gBAAA,8BAA8B,EAAE,IAAI,CAAC,cAAc,EAAE;AACrD,gBAAA,4BAA4B,EAAE,IAAI,CAAC,YAAY,EAAE;gBACjD,GAAG,IAAI,CAAC,WAAW;aACpB;AACH,QAAA,CAAC,0DAAC;AAsBH,IAAA;AApBC;;AAEG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAtFW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,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,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,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CvC,opCAsCM,EAAA,MAAA,EAAA,CAAA,8iGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,opCAAA,EAAA,MAAA,EAAA,CAAA,8iGAAA,CAAA,EAAA;;;AEtCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,oBAAoB,CAAA;AAgH/B,IAAA,WAAA,GAAA;AA9GA,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,4DAAC;;AAGzC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGzB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiB,EAAE,gDAAC;;QAGhC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB;AAC/B,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,UAAU,EAAE;AACb,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,UAAU,mDAAC;;AAG5C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,eAAe,gDAAC;;QAGrC,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyB,EAAE,uDAAC;;AAG/C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;AAGnC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;;AAGjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;QAGhC,IAAA,CAAA,OAAO,GAAG,MAAM,EAA8B;;AAG9C,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAU,IAAI,iEAAC;;AAG5C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAIxC,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,cAAc,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;AACtE,QAAA,CAAC,gEAAC;;AAGF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACnC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,iBAAiB,IAAI,+BAA+B;AAC5E,QAAA,CAAC,gEAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE;YAC5B,OAAO,QAAQ,GAAG,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,CAAC,qDAAC;;AAGF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,OAAO,WAAW,KAAK,SAAS,GAAG,CAAA,kBAAA,EAAqB,SAAS,EAAE,GAAG,kBAAkB,CAAC;AAC3F,QAAA,CAAC,6DAAC;;AAGF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,2DAAC;;AAGF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,QAAA,CAAC,0DAAC;;AAGF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAChC,MAAM,OAAO,GAAa,EAAE;YAC5B,IAAI,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnD,gBAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;YAC3C;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,6DAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAGrC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,mBAAmB,EAAE;AAE1B,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;oBAC5C,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD;QACF;IACF;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAC5F,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9C;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAClC;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QAC7C;IACF;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;QACF;IACF;8GAvKW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,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,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,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCjC,qmFAsFA,EAAA,MAAA,EAAA,CAAA,k8LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FASX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,qmFAAA,EAAA,MAAA,EAAA,CAAA,k8LAAA,CAAA,EAAA;;;MEpBU,eAAe,GAAG,IAAI,cAAc,CAA0B,iBAAiB,EAAE;AAC5F,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE,OAAO;AACtB,QAAA,KAAK,EAAE;KACR;AACF,CAAA;AAED,IAAI,iBAAiB,GAAG,CAAC;MA0BZ,oBAAoB,CAAA;AAwC/B,IAAA,WAAA,GAAA;AAvCiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAA+B,eAAe,yDAAC;AAEtE,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,OAAA,EAAU,EAAE,iBAAiB,EAAE;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAEnB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QAE/B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtC,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC3D,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,uDAAC;AAClG,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,SAAS,6DAAC;AAEjF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,GAAG,GAAG,EAAE;YACd,IAAI,IAAI,CAAC,KAAK,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,CAAC;YACpD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,QAAA,CAAU,CAAC;AACxD,YAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AACnD,QAAA,CAAC,2DAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;YACtC,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,gBAAA,OAAO,eAAe;YAChD,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,gBAAA,OAAO,OAAO;YAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;AACjD,QAAA,CAAC,iDAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACtC,gBAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC;YACtE;AACF,QAAA,CAAC,CAAC;IACJ;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE;QACf;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA,EAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,gBAAgB,CAAC,EAAwB,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACvE,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAC/D,IAAA,gBAAgB,CAAC,UAAmB,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAE7E,IAAA,KAAK,GAAA,EAAW,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;8GAxElD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,k/DAjBpB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC,0JCzCJ,wwCA4CM,EAAA,MAAA,EAAA,CAAA,mxDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDUO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxBhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,mBAGM,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,wBAAwB,EAAE,WAAW;AACrC,wBAAA,0BAA0B,EAAE,aAAa;AACzC,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,0BAA0B,EAAE,+BAA+B;AAC3D,wBAAA,gCAAgC,EAAE,iBAAiB;AACnD,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,wwCAAA,EAAA,MAAA,EAAA,CAAA,mxDAAA,CAAA,EAAA;qGAIwE,eAAe,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,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,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,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,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,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME/C7E,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAEvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;QACvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,SAA4B,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAC1C,SAAS,EAAE,CAAC,KAAsB,KAAI;AACpC,gBAAA,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3C,oBAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAA,4BAAA,CAA8B,CAAC;AACpF,oBAAA,OAAO,SAAS;gBAClB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;QACF,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAwB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,EACnC,SAAS,EAAE,CAAC,KAAmB,KAAI;AACjC,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAA,2BAAA,CAA6B,CAAC;AAChF,oBAAA,OAAO,QAAQ;gBACjB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;AACF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,YAAY,gDAAC;QAC1B,IAAA,CAAA,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACpB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,QAAQ,qDAAC;AACnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,4DAAC;QAE/B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,OAAO,GAAG,MAAM,EAAW;AAEV,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,SAAA,EAAY,EAAE,oBAAoB,CAAC,SAAS,EAAE;AAEvD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,QAAQ,GAAG,GAAG,QAAQ,CAAA,OAAA,CAAS,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,SAAS;AACpE,QAAA,CAAC,oDAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,QAAQ,GAAG,GAAG,QAAQ,CAAA,QAAA,CAAU,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU;AACtE,QAAA,CAAC,qDAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,UAAU;AACtC,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,WAAW;AACnD,QAAA,CAAC,iDAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,cAAc,GAAG,EAAE;AACtD,QAAA,CAAC,0DAAC;AA2CH,IAAA;aA9FgB,IAAA,CAAA,SAAS,GAAG,CAAH,CAAK;IAqD7B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAG;AAC3B,gBAAA,MAAM,QAAQ,GAAG,CAAC,KAAK;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,MAAM,EAAE;gBACb;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACnB,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,KAAK,EAAE;gBACd;gBACA;;IAEN;8GA9FW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2qCCTjC,6qCA4CM,EAAA,MAAA,EAAA,CAAA,woFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDnCO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6qCAAA,EAAA,MAAA,EAAA,CAAA,woFAAA,CAAA,EAAA;;;MEepC,oBAAoB,CAAA;IAoCvB,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,MAAM;AAChC,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,WAAA,GAAA;AAzCQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,mBAAmB,GAAyC,IAAI;;AAGxE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA+C,SAAS,mDAAC;AACxE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,QAAQ,gDAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAoB,cAAc,qDAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,iDAAC;AACpC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,eAAe,iDAAC;QAC9B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGf,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAyB,IAAI,8DAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,4DAAC;;QAGrC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAmB;QACpC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;;QAGvB,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5C,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC3B,IAAI,CAAC,SAAS,EAAE,IAAI,sBAAsB,6DAC3C;QAED,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QASrC,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAiB,KAAI;AAC/C,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACnD,IAAI,CAAC,KAAK,EAAE;gBACd;YACF;AACF,QAAA,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;IAC9D;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,KAAK,EAAE,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;iBAAO;gBACL,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;QACF;IACF;AAEA,IAAA,UAAU,CAAC,IAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AAEF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,cAAc,EAAE;gBACvB;qBAAO;oBACL,IAAI,CAAC,aAAa,EAAE;gBACtB;gBACA;AAEF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,cAAc,EAAE;gBACvB;qBAAO;oBACL,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;gBACA;AAEF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBACjB,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,KAAK,EAAE;gBACd;gBACA;;IAEN;AAEA,IAAA,iBAAiB,CAAC,KAAoB,EAAE,IAAqB,EAAE,KAAa,EAAA;AAC1E,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACrB;AAEF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AAEF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,iBAAiB,EAAE;gBACxB;AAEF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AAEF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AAEF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE;gBACZ;AAEF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,KAAK,EAAE;gBACZ;;IAEN;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5C,QAAA,IAAI,SAAS,GAAG,YAAY,GAAG,CAAC;AAEhC,QAAA,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;AAC7D,YAAA,SAAS,EAAE;QACb;AAEA,QAAA,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE;YAC7B,SAAS,GAAG,CAAC;AACb,YAAA,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;AAC7D,gBAAA,SAAS,EAAE;YACb;QACF;AAEA,QAAA,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAClC;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5C,QAAA,IAAI,aAAa,GAAG,YAAY,GAAG,CAAC;QAEpC,OAAO,aAAa,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE;AAC3D,YAAA,aAAa,EAAE;QACjB;AAEA,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YAChC,OAAO,aAAa,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE;AAC3D,gBAAA,aAAa,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC;AACxC,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACtC;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE;AACrD,YAAA,KAAK,EAAE;QACT;AACA,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9B;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE;AAC3C,YAAA,KAAK,EAAE;QACT;AACA,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9B;IACF;AAEQ,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACpC,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACtD,CAAA,2BAAA,EAA8B,KAAK,CAAA,EAAA,CAAI,CACzB;YAChB,IAAI,EAAE,KAAK,EAAE;AACf,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;QACjE;IACF;8GAzPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,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,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,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBjC,ogEAmEM,EAAA,MAAA,EAAA,CAAA,qzIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ogEAAA,EAAA,MAAA,EAAA,CAAA,qzIAAA,CAAA,EAAA;;;AEW1C,MAAM,YAAY,GAAG;AAC1B,IAAA,YAAY,EAAE,0BAA0B;AACxC,IAAA,YAAY,EAAE;;;MCcH,iBAAiB,CAAA;aAKb,IAAA,CAAA,MAAM,GAAG,CAAH,CAAK;IA4DlB,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,OAAO;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;AACpC,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,WAAA,GAAA;AA1EiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAGvC,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,UAAA,EAAa,iBAAiB,CAAC,MAAM,EAAE,EAAE;AAEnD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AAE/B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,UAAU,mDAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,QAAQ,gDAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,qDAAC;AACvB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,MAAM,gDAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC;QACtC,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4B,IAAI,iDAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,IAAI,mDAAC;AAChD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAA4B,IAAI,gDAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoD,EAAE,uDAAC;QAC1E,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAqB;AAC7C,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,YAAY,EAAE;AACf,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEe,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAW,EAAE,qEAAC;AACxD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,kEAAC;AAC3B,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,iEAAC;QAE9C,IAAA,CAAA,aAAa,GAAkB,IAAI;QACnC,IAAA,CAAA,iBAAiB,GAAkB,IAAI;QAE/C,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;QAC3B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAU;QAEnC,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,CAAC,2DAAC;QACpG,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtE,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9C,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9D,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AAC9B,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,GAAG,UAAU;YACrD;AACA,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,yDAAC;QAEF,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC1F,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,GAAG,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEpH,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAmB/B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAS,KAAI,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAP1B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,aAAa;AAAE,gBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;YAC/D,IAAI,IAAI,CAAC,iBAAiB;AAAE,gBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACzE,QAAA,CAAC,CAAC;IACJ;AAKA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,EAAE;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,gBAAgB,CAAC,EAAuB,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtE,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAE/D,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,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;AAElB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;QACtC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE;AAC3E,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAC7B;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC1C,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B,CAAC,EAAE,GAAG,CAAC;IACT;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAAE;AAE7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC9C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAElD,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjF;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjF;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE;oBAC1D,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC;AAC1C,oBAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,wBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;oBACtC;gBACF;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC;;IAEN;AAEA,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC;IAEA,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C;IAEU,eAAe,GAAA;AACvB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;IACvE;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;QACpE,OAAO,EAAE,KAAK,EAAE;IAClB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IACd;AAEQ,IAAA,0BAA0B,CAAC,KAAa,EAAA;QAC9C,IAAI,IAAI,CAAC,iBAAiB;AAAE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC9C,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC;IAC5C;IAEQ,MAAM,iBAAiB,CAAC,KAAa,EAAA;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAEnC,QAAA,IAAI;YACF,IAAI,OAAO,GAAa,EAAE;AAC1B,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,gBAAA,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;YACjC;AAAO,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAClC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E;AAEA,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACjD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC;IACF;8GArNW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,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,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,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,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wCAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,SAAA,EAxBjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,iBAAiB;AAC9B,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BH,8+FAyGM,oqHDrFM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA2BX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA7B7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,CAAC,EAAA,SAAA,EAGZ;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,iBAAmB;AAC9B,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,WAAW;AAC5B,wBAAA,iBAAiB,EAAE,aAAa;AAChC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,wBAAwB,EAAE,eAAe;AACzC,wBAAA,sBAAsB,EAAE,sCAAsC;AAC9D,wBAAA,kBAAkB,EAAE,0BAA0B;AAC9C,wBAAA,gBAAgB,EAAE,wBAAwB;AAC3C,qBAAA,EAAA,QAAA,EAAA,8+FAAA,EAAA,MAAA,EAAA,CAAA,6mHAAA,CAAA,EAAA;;;ME7BU,cAAc,GAAG,IAAI,cAAc,CAAyB,gBAAgB,EAAE;AACzF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,QAAQ,EAAE,IAAI;KACf;AACF,CAAA;MAkBY,mBAAmB,CAAA;AA4B9B,IAAA,WAAA,GAAA;AA3BQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAA4B;AAC1D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEvC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAChE,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAU;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;QAChC,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,IAAI,CAAC,gBAAgB,EAAE,8CAAC;QAE3C,IAAA,CAAA,KAAK,GAAG,MAAM,EAAQ;QACtB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAkB,KAAK,4DAAC;QAEzC,IAAA,CAAA,WAAW,GAAyC,IAAI;QACxD,IAAA,CAAA,WAAW,GAAyC,IAAI;QACxD,IAAA,CAAA,cAAc,GAA0B,IAAI;AAEpD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,qDAAC;AAClD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,qDAAC;QAGhD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AAC5C,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB,IAAI,CAAC,cAAc,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC5D;IACF;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;QAEA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACnB,IAAI,CAAC,cAAc,EAAE;gBACvB;qBAAO;oBACL,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5C;AACA,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,YAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;QAEA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,YAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAC5D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAE5C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;QAEzC,MAAM,sBAAsB,GAAG,EAAE;AACjC,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE;AAEjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG;AACzB,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM;AAChD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI;AAC3B,QAAA,MAAM,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC,KAAK;QAE7C,IAAI,aAAa,GAAG,iBAAiB;QAErC,QAAQ,iBAAiB;AACvB,YAAA,KAAK,KAAK;gBACR,IAAI,QAAQ,GAAG,sBAAsB,GAAG,MAAM,IAAI,WAAW,GAAG,QAAQ,EAAE;oBACxE,aAAa,GAAG,QAAQ;gBAC1B;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,WAAW,GAAG,sBAAsB,GAAG,MAAM,IAAI,QAAQ,GAAG,WAAW,EAAE;oBAC3E,aAAa,GAAG,KAAK;gBACvB;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,SAAS,GAAG,qBAAqB,GAAG,MAAM,IAAI,UAAU,GAAG,SAAS,EAAE;oBACxE,aAAa,GAAG,OAAO;gBACzB;gBACA;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,UAAU,GAAG,qBAAqB,GAAG,MAAM,IAAI,SAAS,GAAG,UAAU,EAAE;oBACzE,aAAa,GAAG,MAAM;gBACxB;gBACA;;AAGJ,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACjE;8GA/JW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,w+CC3ChC,4tBAyBA,EAAA,MAAA,EAAA,CAAA,kvFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDkBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,WACd,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,kBAAkB,EAAE,iBAAiB;AACrC,wBAAA,iBAAiB,EAAE,gBAAgB;AACnC,wBAAA,kBAAkB,EAAE,YAAY;AACjC,qBAAA,EAAA,QAAA,EAAA,4tBAAA,EAAA,MAAA,EAAA,CAAA,kvFAAA,CAAA,EAAA;;;ME7BU,gBAAgB,CAAA;AA0B3B,IAAA,WAAA,GAAA;AAxBA,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,UAAU,gDAAC;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,SAAS,mDAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;QAC1B,IAAA,CAAA,UAAU,GAAG,KAAK,CAAyB;AACzC,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,QAAQ,EAAE;AACX,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAgB,EAAE,iDAAC;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAW,EAAE,2DAAC;QAErC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAe;QACjC,IAAA,CAAA,aAAa,GAAG,MAAM,EAA4C;AAExD,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,4DAAC;QAE5E,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,uDAAC;QAG1E,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,WAAW;QACxC,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,aAAa;AAC5C,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;IAEA,UAAU,CAAC,IAAiB,EAAE,KAAa,EAAA;QACzC,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,KAAK,EAAE,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC7C;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC;IACF;AAEA,IAAA,UAAU,CAAC,IAAiB,EAAA;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE;AAEA,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD;IACF;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;QAC/D;IACF;AAEA,IAAA,mBAAmB,CAAC,MAAc,EAAA;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;QAC/D;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD;IACF;IAEA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;IAClC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B;AAEQ,IAAA,0BAA0B,CAAC,KAAoB,EAAA;QACrD,MAAM,GAAG,GAAa,EAAE;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D;QACF;AACA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,YAAY,CAAC,IAAiB,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAA,CAAA,CAAG;QACrD;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAA,CAAA,CAAG;QACpD;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAE,IAAiB,EAAE,KAAa,EAAA;QAClE,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B;AAEF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBACzB;AAEF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC7B;AAEF,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACnD,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC9B;gBACA;AAEF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBAClD,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC9B;gBACA;AAEF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AAEF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AAEF,YAAA,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;oBAC3C,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,cAAc,EAAE;gBACvB;gBACA;;IAEN;AAEQ,IAAA,aAAa,CAAC,YAAoB,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;IACrC;AAEQ,IAAA,iBAAiB,CAAC,YAAoB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC1C;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7B;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD;IAEQ,gBAAgB,CAAC,KAAa,EAAE,SAAiB,EAAA;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1B;AAAO,aAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YAChC,KAAK,GAAG,CAAC;QACX;AAEA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC3C,UAAU,CAAC,MAAK;AACd,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,oBAAA,EAAuB,IAAI,CAAC,EAAE,CAAA,EAAA,CAAI,CAAgB;gBACtF,IAAI,EAAE,KAAK,EAAE;AACf,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS;AACnC,YAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;YAC7C;QACF;IACF;8GArNW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,4yRAgNM,EAAA,MAAA,EAAA,CAAA,+3IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzMM,YAAY,+BAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4yRAAA,EAAA,MAAA,EAAA,CAAA,+3IAAA,CAAA,EAAA;;;AEejD;;;;;;;;;;;;;;;;AAgBG;MACU,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,OAAO;AACrB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE;KACd;AACF,CAAA;AAED;;;;;AAKG;MAIU,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,wDAAC;AAErD;;AAEG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,6DAAC;AA+CtE,IAAA;AA7CC;;AAEG;IACH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;IAC/D;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAG;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACd,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAG;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACjB,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACpC;8GArDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;AAyDD;;;;;;;;;;;;;;;;;;;AAmBG;MAQU,iBAAiB,CAAA;AAyJ5B,IAAA,WAAA,GAAA;AAxJiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;QACjD,IAAA,CAAA,qBAAqB,GAAuB,IAAI;QAEhD,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;QAC9B,IAAA,CAAA,gBAAgB,GAAG,GAAG;AAEvC;;AAEG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AAEnB;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAErD;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEhD;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5D;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElD;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,aAAa,iDAAC;AAE5B;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEzD;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3D;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;;;;;;;AAQG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,sDAAC;AAEtB;;;;;;;;AAQG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,EAAE,yDAAC;AAEzB;;AAEG;QACH,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEvB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;AAE1B;;AAEG;AACc,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAa,aAAa,wDAAC;AAEvE;;AAEG;AACc,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAa,eAAe,yDAAC;AAEvE;;AAEG;AACc,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAI;AACxD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACjE,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC;AAED;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAoB,KAAI;YAC3D,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACtC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7B;AACF,QAAA,CAAC;AAED;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,2DAAC;AAEvD;;AAEG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,QAAQ,iDAAC;AAEvD;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,OAAA,CAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExD;;AAEG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,YAAA,CAAc,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElE;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAGpD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE;YACpB;iBAAO;gBACL,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEA;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAA4B;QAClE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACpE;IACF;AAEA;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE;YAClD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;QACxD;IACF;AAEA;;AAEG;IACK,oBAAoB,GAAA;QAC1B,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YAC7D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;QAC3D;IACF;AAEA;;AAEG;IACK,iBAAiB,GAAA;QACvB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC7D;AAEA;;AAEG;IACK,oBAAoB,GAAA;QAC1B,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAChE;AAEA;;AAEG;IACK,iBAAiB,GAAA;QACvB,UAAU,CAAC,MAAK;YACd,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,YAAY;gBAAE;YAEnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;AACjE,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;YACzC,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,KAAK,EAAE;YACtB;QACF,CAAC,EAAE,GAAG,CAAC;IACT;AAEA;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,KAAK,UAAU,EAAE;YACxF,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE;YACrC,CAAC,EAAE,GAAG,CAAC;QACT;IACF;AAEA;;AAEG;AACK,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,YAAY;YAAE;QAEnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;AACjE,QAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE;AAEpC,QAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW;YAAE;AAEnC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa;AAE5C,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,aAAa,KAAK,YAAY,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE;gBACtB,WAAW,CAAC,KAAK,EAAE;YACrB;QACF;aAAO;AACL,YAAA,IAAI,aAAa,KAAK,WAAW,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE;gBACtB,YAAY,CAAC,KAAK,EAAE;YACtB;QACF;IACF;AAEA;;AAEG;AACK,IAAA,oBAAoB,CAAC,SAAsB,EAAA;AACjD,QAAA,MAAM,QAAQ,GAAG;YACf,wBAAwB;YACxB,QAAQ;YACR,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,iCAAiC;AAClC,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC;QAEZ,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAc,QAAQ,CAAC;aAChE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;IAC3C;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAEA;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;AAEA;;;AAGG;AACH,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;YAClE,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA;;;AAGG;IACK,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAE5D,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE;YACzE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW;AAC/E,YAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,mBAAmB,EACnB,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CACtB;QACH;QACA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;IAC3C;AAEA;;AAEG;IACK,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;QAC5D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;IAC9C;AAEA;;AAEG;IACK,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;QACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChE,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC;AAChE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;AAEA;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjF,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC/B;IACF;AAEA;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,mBAAmB,EAAE;IAC5B;8GAxYW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECpJ9B,4/EA8EA,EAAA,MAAA,EAAA,CAAA,yyHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDiEY,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4/EAAA,EAAA,MAAA,EAAA,CAAA,yyHAAA,CAAA,EAAA;AAyGU,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,aAAa,uEAKf,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MElP3D,iBAAiB,GAAG,IAAI,cAAc,CAA4B,mBAAmB,EAAE;AAClG,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,eAAe,EAAE,CAAC;AAClB,QAAA,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;KACpC;AACF,CAAA;MASY,sBAAsB,CAAA;aAElB,IAAA,CAAA,SAAS,GAAG,CAAH,CAAK;AAO7B,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,EAAE,sBAAsB,CAAC,SAAS,EAAE;AAE9E,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;AACtB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;AACrB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,EAAE,wDAAC;AA+Bf,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAA0B,iDAClE,SAAS,EAAE,CAAC,KAAqB,KAAoB;AACnD,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAA,2BAAA,CAA6B,CAAC;AAClF,oBAAA,OAAO,QAAQ;gBACjB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAA8B,oDAC5E,SAAS,EAAE,CAAC,KAAwB,KAAuB;AACzD,gBAAA,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3C,oBAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,KAAK,CAAA,4BAAA,CAA8B,CAAC;AACtF,oBAAA,OAAO,SAAS;gBAClB;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;QACO,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxD,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC/D,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,+DAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,OAAO,sDAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU,yDAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,OAAO,sDAAC;AAC3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,6DAAC;QAC3C,IAAA,CAAA,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACpB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,uBAAuB,qDAAC;QAE3D,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAU;QACrC,IAAA,CAAA,eAAe,GAAG,MAAM,EAAsC;AAE3C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAClC,QAAA,CAAC,wDAAC;AAEiB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACvC,MAAM,KAAK,GAAa,EAAE;AAC1B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC1D,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC;YACzD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YAEzE,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE;AAC5C,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACvD;AAEA,YAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACf;AAEA,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,iDAAC;QAEiB,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,qDAAC;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,yDAAC;AACtD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,uDAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,sDAAC;AAErE,QAAA,IAAA,CAAA,uBAAuB,GAAG,QAAQ,CAAC,MAAK;YACzD,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE;AAC9D,QAAA,CAAC,mEAAC;QAhGA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,OAAO,CAAC,IAAI,CAAC,wCAAwC,KAAK,CAAA,eAAA,CAAiB,CAAC;AAC5E,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC5C,gBAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAA,eAAA,CAAiB,CAAC;AAC/E,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB;iBAAO,IAAI,OAAO,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE;gBACxC,OAAO,CAAC,IAAI,CAAC,CAAA,8BAAA,EAAiC,OAAO,CAAA,sBAAA,EAAyB,KAAK,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAAC;AAC5G,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;AACzC,YAAA,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAClD,gBAAA,OAAO,CAAC,IAAI,CAAC,6CAA6C,UAAU,CAAA,eAAA,CAAiB,CAAC;YACxF;AACF,QAAA,CAAC,CAAC;IACJ;IAwEQ,QAAQ,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;AAAE,YAAA,OAAO,OAAO;QAC5C,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,MAAM;AAC3D,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACzE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B;aAAO,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE;AAC/C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,QAAQ,IAAI,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,EAAE,CAAA,CAAA;AAC9D,aAAA,CAAC;QACJ;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClB;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAY,EAAA;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAE,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;gBACvB;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;gBACpB;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;gBACnB;;IAEN;8GA3KW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,WAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCnC,swFAmGM,EAAA,MAAA,EAAA,CAAA,wjIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvEM,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,swFAAA,EAAA,MAAA,EAAA,CAAA,wjIAAA,CAAA,EAAA;;;ME5BpC,kBAAkB,GAAG,IAAI,cAAc,CAA6B,oBAAoB,EAAE;AACrG,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAkBY,uBAAuB,CAAA;AA+ClC,IAAA,WAAA,GAAA;AA9CQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;;QAG3C,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrC,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;QAGnC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrE,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC3D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACvB,IAAA,CAAA,aAAa,GAAG,KAAK,CAA2B,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnF,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAG3B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAU;;AAGnC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;YACzB,IAAI,MAAM,IAAI,CAAC;AAAE,gBAAA,OAAO,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC;AACzD,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,2DAAC;QACjE,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,qDAAC;AACnF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,sDAAC;AAEvD,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;YACpC,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,YAAY;YACrC;YACA,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA,CAAA,CAAG;AAC5C,QAAA,CAAC,iEAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,YAAY;YACrC;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG;AAC5D,QAAA,CAAC,wDAAC;AAGA,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,YAAY,GAAG,KAAK;QAExB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;YAEzB,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE;AAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBACrB,YAAY,GAAG,IAAI;YACrB;AAEA,YAAA,IAAI,GAAG,GAAG,MAAM,EAAE;gBAChB,YAAY,GAAG,KAAK;YACtB;YAEA,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,IAAI,UAAU,IAAI,SAAS,IAAI,iBAAiB,GAAG,SAAS,EAAE;AAC5D,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrC,iBAAiB,GAAG,SAAS;gBAC/B;YACF;AAEA,YAAA,IAAI,UAAU,GAAG,EAAE,EAAE;gBACnB,iBAAiB,GAAG,CAAC,CAAC;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;8GA7EW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,0mDC/BpC,qjBAmBM,EAAA,MAAA,EAAA,CAAA,unEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDYO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,mBAAmB,EAAE,QAAQ;AAC7B,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,QAAA,EAAA,qjBAAA,EAAA,MAAA,EAAA,CAAA,unEAAA,CAAA,EAAA;;;MEZU,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAEY,YAAY,GAAG,IAAI,cAAc,CAA2B,cAAc,EAAE;AACvF,IAAA,OAAO,EAAE,MAAM;AAChB,CAAA;AAED;;AAEG;AACH,IAAI,cAAc,GAAG,CAAC;MAiBT,iBAAiB,CAAA;AAS5B,IAAA,IAAsB,YAAY,CAAC,CAAU,EAAA,EAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAGtE,IAAA,IAAuB,aAAa,CAAC,CAAU,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAqDzE,IAAA,WAAA,GAAA;AAhEQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,MAAA,EAAS,EAAE,cAAc,EAAE;;;;QAK9C,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAG9C,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAGhD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG/C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;AACnB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;QAChB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGrE,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAM,aAAa,qDAAC;AAC1C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,+DAAC;;AAGnC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;QACtD,IAAA,CAAA,WAAW,GAAG,MAAM,EAAO;;AAG3B,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,wDAAC;QAEhE,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAE/B,YAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,GAAG,SAAS,GAAG,OAAO;AACzD,QAAA,CAAC,6DAAC;QAEF,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACxB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,GAAG,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpD;QAED,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,QAAA,CAAU,GAAG,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxD;AAED,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,GAAG,GAAa,EAAE;YACxB,IAAI,IAAI,CAAC,cAAc,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAG,CAAC;YAC3D,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAG,CAAC;AAC/D,YAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AACnD,QAAA,CAAC,2DAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACrE,gBAAA,OAAO,CAAC,IAAI,CACV,0GAA0G,CAC3G;YACH;AACF,QAAA,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAClC;IAEQ,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,UAAU;QACtC,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,OAAO;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,SAAS;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;IACjD;AAEA,IAAA,sBAAsB,CAAC,UAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1C;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC;QACF;IACF;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,QAAO,KAAK,CAAC,GAAG;AACd,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AACF,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB;;IAEN;IAEQ,cAAc,GAAA;;;IAGtB;IAEQ,kBAAkB,GAAA;;;IAG1B;8GAhIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,46DCnD9B,8wCA6CM,EAAA,MAAA,EAAA,CAAA,u4EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDMO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,wBAAwB,EAAE,YAAY;AACtC,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,8wCAAA,EAAA,MAAA,EAAA,CAAA,u4EAAA,CAAA,EAAA;;sBAWA,KAAK;uBAAC,SAAS;;sBAGf,KAAK;uBAAC,UAAU;o4BAeqB,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA;sBAIlD;;sBACA;;;MExCU,kBAAkB,CAAA;AA8E7B,IAAA,WAAA,GAAA;AA7EiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAE7E,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,IAAI,iDAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAG/B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,gDAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAEvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA6C,EAAE,mDAAC;AAC/D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,yBAAyB,uDAAC;AACtD,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,0BAA0B,+DAAC;AAC/D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4B,SAAS,iDAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAC;QAC/D,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe;AACjC,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,SAAS,EAAE;AACZ,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,EAAE,4DAAC;AAC7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,6DAAC;QAElD,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU,CAAC;QAC5B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAE1B,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5C,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,SAAS,iDAAC;AAEzF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YACjC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAE1D,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,EAAE;AACtF,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1E;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAClD,gBAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,IACxC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CACzD;AACD,gBAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACjG;YAEA,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,YAAiB,CAAC,CAAC;AAC7F,YAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AACvD,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE;AAClD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI;AAEtB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AACpB,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;oBAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9E,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;gBACnE;AACA,gBAAA,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI;AAC5D,YAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAsD,GAAG,KAAK,IAAI,CAAC;AACnF,QAAA,CAAC,2DAAC;AAgBM,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAd1B,QAAA,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAI;AACzC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC1E,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACtF;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;AAKA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAuB,CAAC;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,gBAAgB,CAAC,EAAO,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtD,iBAAiB,CAAC,EAAO,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AACxD,IAAA,gBAAgB,CAAC,UAAmB,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7E,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACzD;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;AAEA,IAAA,MAAM,CAAC,MAAuB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ;YAAE;AAExC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,KAAK,EAAU,CAAC,GAAG,EAAE;YAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1B;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;aAAO;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE;QACd;QACA,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,KAAK,CAAC,KAAiB,EAAA;QACrB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,IAAI,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAqB;AACtC,QAAA,IAAI,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,YAAY,EAAE;AACtD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB;IACF;AAEU,IAAA,aAAa,CAAC,IAA4C,EAAA;QAClE,OAAO,SAAS,IAAI,IAAI;IAC1B;AAEU,IAAA,YAAY,CAAC,IAA4C,EAAA;QACjE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,KAAK,IAAI,CAAC,KAAK,CAAA,CAAE;IACzE;AAEU,IAAA,UAAU,CAAC,MAAuB,EAAA;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D;AACA,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,GAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;IACnE;IAEU,QAAQ,GAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAChE,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;IAC1C;AAEQ,IAAA,cAAc,CAAC,OAAmD,EAAA;AACxE,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,EAAuB,CAAC;IAClI;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE;IACzE;8GAzLW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAnBlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,05EAsIM,EAAA,MAAA,EAAA,CAAA,ktFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjHM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAsBxB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,SAAA,EAGzB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,kBAAoB;AAC/B,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,2BAA2B,EAAE,aAAa;AAC1C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,yBAAyB,EAAE,YAAY;AACvC,wBAAA,wBAAwB,EAAE,WAAW;AACrC,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,05EAAA,EAAA,MAAA,EAAA,CAAA,ktFAAA,CAAA,EAAA;;;MEvBU,cAAc,GAAG,IAAI,cAAc,CAAyB,gBAAgB,EAAE;AACzF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAiBY,mBAAmB,CAAA;IA0CtB,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,QAAQ;QACpC,IAAI,IAAI,CAAC,IAAI,EAAE;AAAE,YAAA,OAAO,MAAM;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,WAAA,GAAA;AA/CiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAA,CAAA,wBAAwB,GAAuB,IAAI;QACnD,IAAA,CAAA,cAAc,GAA0B,IAAI;QAC5C,IAAA,CAAA,iBAAiB,GAA8C,IAAI;AAE3E,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;QACnB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjE,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnD,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,oBAAoB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrE,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEjE,IAAA,CAAA,MAAM,GAAG,MAAM,EAAW;QAC1B,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,eAAe,GAAG,MAAM,EAAW;AAElB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;QACrC,IAAA,CAAA,iBAAiB,GAAmB,IAAI;QAEhD,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9C,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACzE,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEtB,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAI;AACxD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,SAAS,EAAE;gBACxF,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC;AAEgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAoB,KAAI;AAC3D,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;AACF,QAAA,CAAC;QASC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;YAE/B,IAAI,OAAO,KAAK,IAAI;gBAAE;AAEtB,YAAA,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE;YACtB;AAAO,iBAAA,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE;gBAC7B,IAAI,CAAC,cAAc,EAAE;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEzC,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,YAAA,EAAe,UAAU,CAAA,CAAA,CAAG,CAAC;QACrE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAElD,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAsB,KAAI;YAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,QAAA,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACxE;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACzE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,aAA4B;QACrE,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,qBAAqB,CAAC,MAAK;AACzB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAChE,0EAA0E,CAC5D;gBAChB,IAAI,cAAc,EAAE;oBAClB,cAAc,CAAC,KAAK,EAAE;gBACxB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEzC,IAAI,CAAC,oBAAoB,EAAE;AAE3B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;QACvC;QAEA,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QACzC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC7D;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QACzC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAChE;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB;IACF;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEQ,IAAA,SAAS,CAAC,KAAoB,EAAA;AACpC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CACtE,0EAA0E,CAC3E;AAED,QAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE;AAEpC,QAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAgB;QAC1D,MAAM,aAAa,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAgB;AAEpF,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa;YAAE;AAEvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,cAAc,EAAE;gBAC7C,KAAK,CAAC,cAAc,EAAE;gBACtB,aAAa,CAAC,KAAK,EAAE;YACvB;QACF;aAAO;AACL,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,aAAa,EAAE;gBAC5C,KAAK,CAAC,cAAc,EAAE;gBACtB,cAAc,CAAC,KAAK,EAAE;YACxB;QACF;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;IACtC;8GAhMW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,2CAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9ChC,wjBAqBC,EAAA,MAAA,EAAA,CAAA,miDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYW,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAaX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,CAAC,mBAGN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,MAAM,EAAE,eAAe;AACvB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,oBAAoB,EAAE,SAAS;AAC/B,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,mBAAmB,EAAE,yCAAyC;AAC9D,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,wjBAAA,EAAA,MAAA,EAAA,CAAA,miDAAA,CAAA,EAAA;;;MEzCU,iBAAiB,GAAG,IAAI,cAAc,CAA4B,mBAAmB,EAAE;AAClG,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE;KACR;AACF,CAAA;MAmBY,sBAAsB,CAAA;AAYjC,IAAA,WAAA,GAAA;AAXQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAE1C,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnE,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC1D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,qBAAqB,qDAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAyB,QAAQ,oDAAC;AAElD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;QAG1B,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC;gBACxE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAEzC,gBAAA,MAAM,OAAO,GAAG,CAAC,CAAsB,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5E,gBAAA,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;YAChD;AACF,QAAA,CAAC,CAAC;IACJ;8GAtBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6mCC5BnC,qkBAuBA,EAAA,MAAA,EAAA,CAAA,wgHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDKa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE,WAAW;AAChC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,eAAe,EAAE,oBAAoB;AACrC,wBAAA,uBAAuB,EAAE,gBAAgB;AAC1C,qBAAA,EAAA,QAAA,EAAA,qkBAAA,EAAA,MAAA,EAAA,CAAA,wgHAAA,CAAA,EAAA;;;MELU,gBAAgB,CAAA;AAd7B,IAAA,WAAA,GAAA;AAeE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;QAChC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC1B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACzB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEjB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAShD,IAAA;AAPC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;8GAvBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,u9CAZjB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAYf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,gBAAgB,EAAE,YAAY;AAC9B,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,wBAAwB,EAAE,mBAAmB;AAC7C,wBAAA,WAAW,EAAE,oBAAoB;AACjC,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;ACJD,MAAMC,qBAAmB,GAAsB;AAC7C,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,QAAQ,EAAE;CACX;MAEY,cAAc,GAAG,IAAI,cAAc,CAAyB,gBAAgB,EAAE;AACzF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAEA;KACb;AACF,CAAA;MAeY,mBAAmB,CAAA;AA2C9B,IAAA,WAAA,GAAA;AA1CQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAEvC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;QACrB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjE,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAE1C,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;QACvC,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4D;QAEpF,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;AAElC,QAAA,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,gBAAgB,0DAAC;AAElD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;AACxD,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC,iDAAC;AAEJ,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAIA,qBAAmB,+DACnE;AAED,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,uDAAC;QACrD,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,sDAAC;AAC1E,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAClB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG;AACpB,cAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI;cAClD,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACN;QACD,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACxB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnD;QAGC,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE;AAE7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC;AAClC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C;IACF;IAEA,MAAM,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC7C,YAAA,MAAM,QAAQ,GAAG,CAAA,oBAAA,EAAuB,KAAK,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC;QACF;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC5C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI;AACF,gBAAA,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC/E,IAAI,CAAC,SAAS,EAAE;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,0BAAA,CAA4B,CAAC;oBACjH;gBACF;YACF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,mCAAmC;AAC7F,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC;YACF;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,KAAK,CAAA,sCAAA,CAAwC,CAAC;YAChG;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QACvC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE,SAAS,EAAE;AAC/C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB;IACF;IAEA,SAAS,GAAA;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;AACvC,QAAA,OAAO,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IAC3E;IAEA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IAC9B;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,EAAE,QAAQ;AAAE,YAAA,OAAO,KAAK;QAEhC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,KAAK,CAAC,CAAC,EAAE,KAAK;AACd,aAAA,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACjD;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAChC,QAAA,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;IACvD;IAEA,gBAAgB,CAAC,IAAgB,EAAE,KAAa,EAAA;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;AAClC,YAAA,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM;gBAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC/B,MAAM,CAAC,UAAU;AAC/B,QAAA,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAA,GAAA,EAAM,MAAM,EAAE;IACjE;IAEA,kBAAkB,CAAC,IAAgB,EAAE,KAAa,EAAA;QAChD,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE;QACvC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;QAC3C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;AAC3C,QAAA,OAAO,IAAI;IACb;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;IACF;IAEA,aAAa,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC/C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC3B;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB,IAAI,CAAC,IAAI,EAAE;gBACb;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,QAAQ,EAAE;gBACjB;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClB;gBACA;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC;AACzC,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC1B;gBACA;;IAEN;8GA/MW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAcG,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DnD,64EAkEA,EAAA,MAAA,EAAA,CAAA,ylJAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDrBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,2BAA2B,EAAE,MAAM;AACnC,wBAAA,kBAAkB,EAAE,0BAA0B;AAC9C,wBAAA,kBAAkB,EAAE,0BAA0B;AAC9C,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,64EAAA,EAAA,MAAA,EAAA,CAAA,ylJAAA,CAAA,EAAA;s1BAgBgC,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5CtC,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QACtB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEjB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAShD,IAAA;AAPC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;8GApBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,43BANrB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;ACED,MAAM,mBAAmB,GAAiC;AACxD,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,KAAK,EAAE;CACR;MAEY,2BAA2B,GAAG,IAAI,cAAc,CAAoC,6BAA6B,EAAE;AAC9H,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE;KACb;AACF,CAAA;MAgBY,8BAA8B,CAAA;AAwCzC,IAAA,WAAA,GAAA;AAvCQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAEpD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;QACrB,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC1C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAyB,QAAQ,gDAAC;QAE9C,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;QAClD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4D;QAEpF,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAQ;QAC1B,IAAA,CAAA,eAAe,GAAG,MAAM,EAAU;AAElC,QAAA,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,oBAAoB,0DAAC;AAEtD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;AACxD,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC,iDAAC;AAEJ,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,mBAAmB,+DACnE;AAED,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,uDAAC;QACrD,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,sDAAC;AAC1E,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAClB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG;AACpB,cAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI;cAClD,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACN;QACD,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACxB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnD;QAGC,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE;AAE7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC;AAClC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C;IACF;IAEA,MAAM,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC7C,YAAA,MAAM,QAAQ,GAAG,CAAA,oBAAA,EAAuB,KAAK,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC;QACF;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC5C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI;AACF,gBAAA,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC/E,IAAI,CAAC,SAAS,EAAE;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,0BAAA,CAA4B,CAAC;oBACjH;gBACF;YACF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,mCAAmC;AAC7F,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC;YACF;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,KAAK,CAAA,sCAAA,CAAwC,CAAC;YAChG;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QACvC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE,SAAS,EAAE;AAC/C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB;IACF;IAEA,SAAS,GAAA;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;AACvC,QAAA,OAAO,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IAC3E;IAEA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IAC9B;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,EAAE,QAAQ;AAAE,YAAA,OAAO,KAAK;QAEhC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,KAAK,CAAC,CAAC,EAAE,KAAK;AACd,aAAA,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAChC,QAAA,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;IACvD;IAEA,gBAAgB,CAAC,IAAoB,EAAE,KAAa,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,QAAA,IAAI,MAAc;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,GAAG,MAAM,CAAC,KAAK;QACvB;AAAO,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,MAAM,GAAG,MAAM,CAAC,OAAO;QACzB;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AACzB,YAAA,MAAM,GAAG,MAAM,CAAC,SAAS;QAC3B;AAAO,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;AACtC,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM;QACxB;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,MAAM,GAAG,MAAM,CAAC,QAAQ;QAC1B;aAAO;AACL,YAAA,MAAM,GAAG,MAAM,CAAC,UAAU;QAC5B;AACA,QAAA,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAA,GAAA,EAAM,MAAM,EAAE;IACjE;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;IACF;IAEA,aAAa,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC/C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC3B;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB,IAAI,CAAC,IAAI,EAAE;gBACb;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,QAAQ,EAAE;gBACjB;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClB;gBACA;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC;AACzC,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC1B;gBACA;;IAEN;8GA/MW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAcR,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DvD,gnDAsCA,EAAA,MAAA,EAAA,CAAA,mnHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDSa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAd1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,8BAA8B,EAAE,MAAM;AACtC,wBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,wBAAA,qBAAqB,EAAE,qBAAqB;AAC5C,wBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,gnDAAA,EAAA,MAAA,EAAA,CAAA,mnHAAA,CAAA,EAAA;g1BAgBgC,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME9C1C,aAAa,GAAG,IAAI,cAAc,CAAwB,eAAe,EAAE;AACtF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE;KAChB;AACF,CAAA;MAmBY,kBAAkB,CAAA;AAjB/B,IAAA,WAAA,GAAA;AAkBU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,OAAA,EAAU,MAAM,CAAC,UAAU,EAAE,EAAE;AAE1C,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,aAAa,uDAAC;AAEpE,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAc,KAAI,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAEnB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACxD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;QAEtB,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7E,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;QACnB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,QAAA,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,8CAAC;AAEjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAAW;AAAE,gBAAA,OAAO,WAAW;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;AAE/B,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,6DAAC;QACF,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ,GAAG,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpE,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,CAAU,GAAG,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC1E,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9D,YAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC9C,QAAA,CAAC,uDAAC;AAwCH,IAAA;IAtCC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;IAClC;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,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,QAAA,IAAI,EAAE,EAAE,aAAa,EAAE;AACrB,YAAA,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1B;IACF;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,QAAA,IAAI,EAAE,EAAE,aAAa,EAAE;AACrB,YAAA,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE;QACzB;IACF;8GA7EW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,syDAZlB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC,sJClCJ,sxCA6CM,EAAA,MAAA,EAAA,CAAA,8gGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDHO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,aACpC,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,kBAAoB;AAC/B,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,YAAY;AACvC,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,wBAAwB,EAAE;AAC3B,qBAAA,EAAA,QAAA,EAAA,sxCAAA,EAAA,MAAA,EAAA,CAAA,8gGAAA,CAAA,EAAA;yEAM6D,aAAa,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,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,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,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,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,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,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,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnC7E;;AAEG;MACU,cAAc,GAAG,IAAI,cAAc,CAAwB,gBAAgB,EAAE;AACxF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE;KACX;AACF,CAAA;MAeY,kBAAkB,CAAA;AAZ/B,IAAA,WAAA,GAAA;AAaU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;;QAGvC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpE,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;;AAGtB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAgB;;QAGtC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAqB;AAuBxC,IAAA;AArBC,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AACxC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QAEjC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,aAAa,KAAK,KAAK;AACvB,YAAA,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,KAAK,CAAC,MAAM;AACrB,YAAA,CAAC,YAAY;YACb,YAAY,CAAC,QAAQ,EAAE;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,KAAK;AACL,YAAA,IAAI,EAAE,YAAY;YAClB;AACD,SAAA,CAAC;IACJ;8GAnCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,uiCCnC/B,yvBAsBM,EAAA,MAAA,EAAA,CAAA,0nEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDaO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,sBAAsB;AACrC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,yvBAAA,EAAA,MAAA,EAAA,CAAA,0nEAAA,CAAA,EAAA;;;ME5BU,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,gBAAgB,EAAE,kBAAkB;AACpC,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,SAAS,EAAE;KACZ;AACF,CAAA;MAaY,iBAAiB,CAAA;AAX9B,IAAA,WAAA,GAAA;AAYU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAErC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,IAAI,GAAG,KAAK,CAA+B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/C,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7C,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACjD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAgB,EAAE,mDAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,EAAE,gDAAC;QAC5B,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,mBAAmB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC7E,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpF,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,IAAI,0BAA0B,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAClG,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEvD,IAAA,CAAA,UAAU,GAAG,MAAM,EAAa;QAChC,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAU;QACrC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAsB;AAE/B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAwB,SAAS,6DAAC;AAC3D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,EAAE,4DAAC;QAEtC,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACnC,OAAO,IAAI,CAAC,UAAU;kBAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,EAAE,CAAA,CAAA;AAClD,kBAAE,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,gEAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS;AACpC,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,OAAO;AACpD,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,iDAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC3B,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAE7B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD;AAEA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;YAC/B,IAAI,IAAI,EAAE;gBACR,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;YACtC;AAEA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,wDAAC;AA8EH,IAAA;AA5EC;;AAEG;IACK,QAAQ,CAAC,IAAgB,EAAE,IAAe,EAAA;AAChD,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;;AAG/D,YAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,gBAAA,OAAO,IAAI,CAAC,SAAS,KAAK;sBACtB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;sBAClB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;YACzB;;AAGA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAC/D,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAE/D,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5B,gBAAA,OAAO,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC;iBAAO;AACL,gBAAA,OAAO,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,UAAU,CAAC,IAAgB,EAAE,UAAkB,EAAA;AACrD,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;AAE5B,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE;AACrC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAG;YACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;AAClC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;AACjE,gBAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;IAChE;AAEA,IAAA,UAAU,CAAC,MAAmB,EAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE;AAEtB,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,MAAM,CAAC;AAC1E,cAAE;cACA,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,KAAK;AAClC,kBAAE;kBACA,KAAK;QAEX,MAAM,IAAI,GAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE;AACtD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEA,IAAA,cAAc,CAAC,GAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;IACzC;AAEA;;AAEG;IACO,YAAY,CAAC,GAAa,EAAE,MAAmB,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;IAC5D;8GAnIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,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,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,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,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,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,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClC9B,ksGAgGM,EAAA,MAAA,EAAA,CAAA,07FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvEM,gBAAgB,oJAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,aAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FASlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAG7B,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,WAAW;AACpB,wBAAA,oBAAoB,EAAE;AACvB,qBAAA,EAAA,QAAA,EAAA,ksGAAA,EAAA,MAAA,EAAA,CAAA,07FAAA,CAAA,EAAA;;;MEXU,eAAe,CAAA;AAb5B,IAAA,WAAA,GAAA;AAcE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;QACjC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEnB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAmBhD,IAAA;AAjBC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5B;IAEA,SAAS,GAAA;QACP,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;IACH;8GA5BW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4yBAXhB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAWf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,gBAAgB,EAAE,YAAY;AAC9B,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,WAAW,EAAE,oBAAoB;AACjC,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;MCLY,WAAW,GAAG,IAAI,cAAc,CAAsB,aAAa,EAAE;AAChF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,QAAQ,EAAE;KACX;AACF,CAAA;MAaY,gBAAgB,CAAA;AAuC3B,IAAA,WAAA,GAAA;AAtCQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QAEpC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,gDAAC;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA4B,YAAY,2DAAC;QAEhE,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEjD,QAAA,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,eAAe,yDAAC;AAEhD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,gBAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3C;AACA,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,gEAAC;QAEtE,IAAA,CAAA,iBAAiB,GAAG,MAAM,EAAU;QACpC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAkB;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC;AAChC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAE9B,IAAI,IAAI,KAAK,QAAQ;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAA,CAAE,CAAC;AACnD,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAA,CAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AAElD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,uDAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAC1B,gBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnB,gBAAA,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,YAAY,CAAC;AACvC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAClD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,aAAa,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC/C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,EAAE;gBACrB;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,EAAE;gBAClB;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE;gBACjB;;IAEN;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ;YAAE;AAE1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AACxC,QAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAClE;IACF;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;AAEtD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YACpE,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;QAC3C;AAEA,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;AAEpE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpE,YAAA,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QACzD;AAEA,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,UAAU,GAAG,CAAC;AAElB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,YAAA,UAAU,EAAE;QACd;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpE,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC5B;IACF;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE;AACjD,YAAA,SAAS,EAAE;QACb;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AAClE,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3B;IACF;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjD;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;IACpC;8GAzJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAYK,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CjD,2jDAkDA,EAAA,MAAA,EAAA,CAAA,4tGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDfa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,2jDAAA,EAAA,MAAA,EAAA,CAAA,4tGAAA,CAAA,EAAA;q1BAc+B,eAAe,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5CpC,YAAY,GAAG,IAAI,cAAc,CAAuB,cAAc,EAAE;AACnF,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,eAAe,EAAE;KAClB;AACF,CAAA;;MCLY,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,EAAE,mDAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAgB,WAAW,qDAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAkDhD,IAAA;AAhDC,IAAA,IAAI,CAAC,KAAwB,EAAA;AAC3B,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;AAC9B,QAAA,MAAM,QAAQ,GAAU;AACtB,YAAA,GAAG,KAAK;YACR,EAAE;AACF,YAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI;SACrD;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAG;AAC3B,YAAA,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC;AACjC,YAAA,OAAO,aAAa,CAAC,MAAM,IAAI,SAAS,EAAE;gBACxC,aAAa,CAAC,KAAK,EAAE;YACvB;AACA,YAAA,OAAO,CAAC,GAAG,aAAa,EAAE,QAAQ,CAAC;AACrC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE;IAEA,IAAI,CAAC,OAAe,EAAE,OAAyD,EAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IACzD;IAEA,OAAO,CAAC,OAAe,EAAE,OAAyD,EAAA;AAChF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5D;IAEA,OAAO,CAAC,OAAe,EAAE,OAAyD,EAAA;AAChF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5D;IAEA,KAAK,CAAC,OAAe,EAAE,OAAyD,EAAA;AAC9E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3D;IAEA,MAAM,CAAC,OAAe,EAAE,OAAyD,EAAA;AAC/E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3D;AAEA,IAAA,WAAW,CAAC,QAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B;8GAvDW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;AA2DD;AACO,MAAM,YAAY,GAAG;;AChE5B;AACO,MAAM,cAAc,GAAG;;MCWjB,iBAAiB,CAAA;AAU5B,IAAA,WAAA,GAAA;AATQ,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAkB;AACtC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAU;AAEpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ;QAG5C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AAEnC,YAAA,aAAa,CAAC,OAAO,CAAC,KAAK,IAAG;AAC5B,gBAAA,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACrD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAEpC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;wBACxC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC;oBAChD;gBACF;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;AACzF,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAG;gBAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,SAAS,EAAE,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC;IACF;AAEA,IAAA,aAAa,CAAC,EAAsB,EAAA;QAClC,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YAClD,IAAI,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC1C;QACF;IACF;AAEA,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,MAAM,KAAK,GAA8B;AACvC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE;SACT;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM;IAC9B;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE;YACvC,OAAO,KAAK,CAAC,eAAe;QAC9B;AACA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,KAAK;IAC9C;AAEA,IAAA,uBAAuB,CAAC,KAAY,EAAA;QAClC,OAAO,KAAK,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,oBAAoB;IAC/F;IAEQ,eAAe,CAAC,EAAU,EAAE,QAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,CAAC,EAAE,QAAQ,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACpC;AAEQ,IAAA,YAAY,CAAC,EAAU,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;AAClC,YAAA,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;AAChC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;IAChC;8GA3GW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,8ICd9B,qlCAuCA,EAAA,MAAA,EAAA,CAAA,4+GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDzBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,2BAA2B,EAAE;AAC9B,qBAAA,EAAA,QAAA,EAAA,qlCAAA,EAAA,MAAA,EAAA,CAAA,4+GAAA,CAAA,EAAA;;;AERH;AACA,MAAM,iBAAiB,GAAG,wBAAwB;MAWrC,uBAAuB,GAAG,IAAI,cAAc,CAAwB,yBAAyB;AAE1G,MAAM,mBAAmB,GAAG;AAC1B,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,OAAO,EAAE;CACV;AAED,MAAM,kBAAkB,GAAG;AACzB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,MAAM,EAAE;CACT;AAED;;AAEG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAA;;IAE3B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;;AAG3B,IAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAChC,QAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAA,CAAE,CAAC;AAC1C,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACpB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACvD;;AAGA,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAE3C,IAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB;AAEA;;AAEG;AACH,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;IAC/C,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SAClB,GAAG,CAAC,CAAC,IAAG;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClE,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3C,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb;AAEA;;AAEG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,OAAe,EAAA;AAChD,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzB,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,GAAG;IAEpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG;AACvB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;IAE5B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM;IAEnC,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACnC;AAEA;;AAEG;AACH,SAAS,WAAW,CAAC,GAAW,EAAE,OAAe,EAAA;AAC/C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzB,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,GAAG;IAEpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG;AACvB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;IAE5B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAE7B,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACnC;MAKa,YAAY,CAAA;AAevB,IAAA,WAAA,GAAA;QAdQ,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,6DAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAQ,OAAO,2DAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAO,IAAI,IAAI,EAAE,4DAAC;QAEnD,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACtD,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,OAAO;AAC1B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB;AAClC,SAAA,CAAC,qDAAC;;QAID,IAAI,CAAC,eAAe,EAAE;;;;;;QAQtB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,iBAAiB,EAAE;QAC1B,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9E,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;;QAGrC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9C;AAEA,IAAA,WAAW,CAAC,IAAW,EAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;;AAGrC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;;QAG9B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA;;;;AAIG;IACH,iBAAiB,GAAA;;QAEf,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE;;AAG5D,QAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACpC,YAAY;YACZ,cAAc;AACd,YAAA,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AACxC,YAAA,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,iBAAiB,EAAE,CAAC,YAAY,IAAI,CAAC;AACtC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC;YACnF;QACF;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI;;gBAEF,MAAM,iBAAiB,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;gBACxD,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC1D,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;gBACtD,MAAM,kBAAkB,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;;AAGxD,gBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAClC,MAAM,eAAe,GAAG,GAAG,GAAG,CAAA,EAAG,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI;;;AAInE,gBAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC;gBACjC,IAAI,GAAG,EAAE;oBACP,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG;AACvE,oBAAA,IAAI,SAAS,GAAG,GAAG,EAAE;AACnB,wBAAA,gBAAgB,GAAG,SAAS,CAAC;oBAC/B;gBACF;;gBAGA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,YAAY,CAAC;gBACnF,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,iBAAiB,CAAC;gBAC9F,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;gBAClG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,gBAAgB,CAAC;gBAC5F,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;gBAChG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,gBAAgB,CAAC;gBAE5F,IAAI,eAAe,EAAE;oBACnB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,eAAe,CAAC;gBAC5F;AAEA,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,+BAAA,CAAiC,EAAE;AAC7C,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,MAAM,EAAE,kBAAkB;AAC1B,oBAAA,IAAI,EAAE;AACP,iBAAA,CAAC;;gBAGH,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI;;wBAEF,MAAM,mBAAmB,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC5D,MAAM,qBAAqB,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC9D,MAAM,kBAAkB,GAAG,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC1D,MAAM,oBAAoB,GAAG,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;;AAG5D,wBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC;wBACpC,MAAM,iBAAiB,GAAG,GAAG,GAAG,CAAA,EAAG,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI;;AAGrE,wBAAA,IAAI,kBAAkB,GAAG,SAAS,CAAC;wBACnC,IAAI,GAAG,EAAE;4BACP,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG;AACvE,4BAAA,IAAI,SAAS,GAAG,GAAG,EAAE;AACnB,gCAAA,kBAAkB,GAAG,SAAS,CAAC;4BACjC;wBACF;;wBAGA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,cAAc,CAAC;wBACvF,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;wBAClG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAmC,EAAE,qBAAqB,CAAC;wBACtG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;wBAChG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,kCAAkC,EAAE,oBAAoB,CAAC;wBACpG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;wBAEhG,IAAI,iBAAiB,EAAE;4BACrB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,iBAAiB,CAAC;wBAChG;AAEA,wBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,iCAAA,CAAmC,EAAE;AAC/C,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,KAAK,EAAE,mBAAmB;AAC1B,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,IAAI,EAAE,kBAAkB;AACxB,4BAAA,MAAM,EAAE,oBAAoB;AAC5B,4BAAA,IAAI,EAAE;AACP,yBAAA,CAAC;oBACJ;oBAAE,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC;oBACvE;gBACF;AAEA,gBAAA,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC;AAC/G,gBAAA,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC;YACzF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;YACvD;QACF;IACF;AAEA;;;AAGG;IACK,eAAe,GAAA;QACrB,IAAI,UAAU,GAAiB,IAAI;;AAGnC,QAAA,IAAI;AACF,YAAA,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAU;QAC/D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC;QAChE;;QAGA,MAAM,YAAY,GAAG,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM;QACpE,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO;AAExD,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,KAAK,MAAM,CAAC;IAC5C;AAEA;;AAEG;AACK,IAAA,mBAAmB,CAAC,KAAY,EAAA;AACtC,QAAA,IAAI;AACF,YAAA,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QAChD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC;QAC9D;IACF;8GAjNW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCxFY,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAyBpD,IAAA;IAvBC,SAAS,CAAC,GAAW,EAAE,MAA4B,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;IACnD;IAEA,cAAc,CAAC,GAAW,EAAE,MAA4B,EAAA;AACtD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;IAClD;AAEA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW;IAC1C;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAC5C,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CACzB;IACH;8GAzBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;MA6BY,oBAAoB,GAAG,IAAI,cAAc,CAAsB,sBAAsB,EAAE;AAClG,IAAA,OAAO,EAAE,MAAM,IAAI,oBAAoB;AACxC,CAAA;AAEK,SAAU,kBAAkB,CAAC,QAAA,GAAsC,oBAAoB,EAAA;IAC3F,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC9D;;MCzCa,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;;AAExB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;;AAErB,QAAA,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAChD,CAAC,SAAS,CAAC,MAAK;;AAEf,YAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB,QAAA,CAAC,CAAC;IACJ;8GAVW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACND;;AAEG;;;;"}
|