@weeehaoooz/talos-ui 0.1.0 → 0.1.2
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 +2 -0
- package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +115 -18
- package/fesm2022/weeehaoooz-talos-ui-button.mjs.map +1 -0
- package/fesm2022/weeehaoooz-talos-ui-data-display.mjs +3110 -0
- package/fesm2022/weeehaoooz-talos-ui-data-display.mjs.map +1 -0
- package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs +2414 -0
- package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs.map +1 -0
- package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs +1039 -0
- package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs.map +1 -0
- package/fesm2022/weeehaoooz-talos-ui-feedback.mjs +2885 -0
- package/fesm2022/weeehaoooz-talos-ui-feedback.mjs.map +1 -0
- package/fesm2022/weeehaoooz-talos-ui-form.mjs +10799 -0
- package/fesm2022/weeehaoooz-talos-ui-form.mjs.map +1 -0
- package/fesm2022/weeehaoooz-talos-ui-layout.mjs +1320 -11
- package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
- package/fesm2022/weeehaoooz-talos-ui-nav.mjs +119 -72
- package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
- package/fesm2022/weeehaoooz-talos-ui.mjs +22190 -15213
- package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
- package/package.json +20 -135
- package/styles/_breadcrumb.scss +16 -0
- package/styles/_button-group.scss +156 -7
- package/styles/_buttons.scss +156 -8
- package/styles/_dropdown.scss +438 -0
- package/styles/_form-controls.scss +13 -0
- package/styles/_progress-bar.scss +43 -0
- package/styles/_skeleton.scss +176 -0
- package/styles/_spinner.scss +58 -0
- package/styles/_variables.scss +37 -0
- package/styles/index.scss +6 -1
- package/types/weeehaoooz-talos-ui-button.d.ts +92 -0
- package/types/weeehaoooz-talos-ui-button.d.ts.map +1 -0
- package/types/weeehaoooz-talos-ui-data-display.d.ts +1018 -0
- package/types/weeehaoooz-talos-ui-data-display.d.ts.map +1 -0
- package/types/weeehaoooz-talos-ui-data-viz.d.ts +839 -0
- package/types/weeehaoooz-talos-ui-data-viz.d.ts.map +1 -0
- package/types/weeehaoooz-talos-ui-dropdown.d.ts +187 -0
- package/types/weeehaoooz-talos-ui-dropdown.d.ts.map +1 -0
- package/types/weeehaoooz-talos-ui-feedback.d.ts +1495 -0
- package/types/weeehaoooz-talos-ui-feedback.d.ts.map +1 -0
- package/types/weeehaoooz-talos-ui-form.d.ts +2639 -0
- package/types/weeehaoooz-talos-ui-form.d.ts.map +1 -0
- package/types/weeehaoooz-talos-ui-layout.d.ts +851 -3
- package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -1
- package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
- package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
- package/types/weeehaoooz-talos-ui.d.ts +6949 -4137
- package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
- package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -93
- package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
- package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
- package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
- package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
- package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
- package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
- package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
- package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
- package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
- package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
- package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
- package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
- package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
- package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
- package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
- package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
- package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
- package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
- package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
- package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
- package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
- package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
- package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
- package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
- package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
- package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
- package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
- package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
- package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
- package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
- package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
- package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
- package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
- package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
- package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
- package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -59
- package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
- package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
- package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
- package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
- package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
- package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
- package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
- package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
- package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
- package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
- package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
- package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
- package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
- package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
- package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
- package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
- package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
- package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
- package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
- package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
- package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
- package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
- package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
- package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
- package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
- package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
- package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
- package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
- package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
- package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
- package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
- package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
- package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
- package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
- package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
- package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weeehaoooz-talos-ui-data-viz.mjs","sources":["../../../projects/talos-ui/data-viz/category-bar/category-bar.types.ts","../../../projects/talos-ui/data-viz/category-bar/category-bar.component.ts","../../../projects/talos-ui/data-viz/category-bar/category-bar.component.html","../../../projects/talos-ui/data-viz/category-bar/category-bar.module.ts","../../../projects/talos-ui/data-viz/heatmap/heatmap.component.ts","../../../projects/talos-ui/data-viz/heatmap/heatmap.component.html","../../../projects/talos-ui/data-viz/heatmap/heatmap.module.ts","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.types.ts","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.component.ts","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.component.html","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.module.ts","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.types.ts","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.component.ts","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.component.html","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.module.ts","../../../projects/talos-ui/data-viz/sparkline/sparkline.types.ts","../../../projects/talos-ui/data-viz/sparkline/sparkline.component.ts","../../../projects/talos-ui/data-viz/sparkline/sparkline.component.html","../../../projects/talos-ui/data-viz/sparkline/sparkline.module.ts","../../../projects/talos-ui/data-viz/weeehaoooz-talos-ui-data-viz.ts"],"sourcesContent":["/**\n * Talos Category Bar Type Definitions\n */\n\nexport type CategoryBarSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type CategoryBarShape = 'pill' | 'rounded' | 'square';\n\nexport type CategoryBarLabelPosition = 'top' | 'bottom' | 'none';\n\nexport type CategoryBarColorScheme =\n | 'blue'\n | 'emerald'\n | 'violet'\n | 'amber'\n | 'rose'\n | 'cyan'\n | 'lime'\n | 'indigo'\n | 'pink'\n | 'orange'\n | 'fuchsia'\n | 'teal'\n | 'sky'\n | 'red'\n | 'slate'\n | 'purple';\n\n/**\n * Individual category segment definition for the category bar.\n */\nexport interface CategoryBarSegment {\n /** Segment numeric value (width will be proportional to value / sum(values)) */\n value: number;\n /** Human-readable category label (displayed in tooltip, legend, or accessibility text) */\n label?: string;\n /** Specific CSS color string (e.g. '#3b82f6', 'rgb(59, 130, 246)', 'var(--talos-primary-color)') */\n color?: string;\n /** Named color scheme preset (e.g. 'blue', 'emerald', 'violet', 'amber', 'rose', etc.) */\n colorScheme?: CategoryBarColorScheme | string;\n /** Custom tooltip text or template text */\n tooltip?: string;\n /** Optional metadata passed to click and hover events */\n meta?: Record<string, unknown>;\n}\n\n/**\n * Marker needle definition for the category bar.\n */\nexport interface CategoryBarMarker {\n /** Numeric value indicating where the marker sits along the range */\n value: number;\n /** Custom label displayed for the marker (e.g. 'Target: $220k', 'Current: 220') */\n label?: string;\n /** Custom marker color (defaults to neutral dark/white or category color) */\n color?: string;\n /** Custom tooltip content for the marker */\n tooltip?: string;\n /** Whether to animate marker position changes (defaults to true) */\n showAnimation?: boolean;\n /** Custom marker shape / style ('pill' | 'line' | 'pin' | 'needle') */\n variant?: 'pill' | 'line' | 'pin' | 'needle';\n}\n\n/**\n * Normalized computed segment model used internally by the template.\n */\nexport interface CategoryBarComputedSegment {\n index: number;\n value: number;\n label: string;\n color: string;\n percentage: number;\n cumulativeStart: number;\n cumulativeEnd: number;\n cumulativeStartPercent: number;\n cumulativeEndPercent: number;\n formattedValue: string;\n tooltipText: string;\n raw: CategoryBarSegment;\n}\n\n/**\n * Scale boundary label item.\n */\nexport interface CategoryBarScaleLabel {\n index: number;\n value: number;\n text: string;\n leftPercent: number;\n}\n\n/**\n * Event emitted when a segment is clicked.\n */\nexport interface CategoryBarSegmentClickEvent {\n segment: CategoryBarComputedSegment;\n index: number;\n event: Event;\n}\n\nexport type CategoryBarClickEvent = CategoryBarSegmentClickEvent;\n\n/**\n * Event emitted when the marker is clicked.\n */\nexport interface CategoryBarMarkerClickEvent {\n marker: CategoryBarMarker;\n value: number;\n percent: number;\n event: Event;\n}\n","import {\n Component,\n ElementRef,\n computed,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback';\n\nimport {\n CategoryBarColorScheme,\n CategoryBarComputedSegment,\n CategoryBarLabelPosition,\n CategoryBarMarker,\n CategoryBarMarkerClickEvent,\n CategoryBarScaleLabel,\n CategoryBarSegment,\n CategoryBarSegmentClickEvent,\n CategoryBarShape,\n CategoryBarSize\n} from './category-bar.types';\n\nconst PRESET_PALETTE: Record<string, string> = {\n blue: '#3b82f6',\n emerald: '#10b981',\n violet: '#8b5cf6',\n purple: '#9333ea',\n amber: '#f59e0b',\n orange: '#f97316',\n rose: '#f43f5e',\n pink: '#ec4899',\n cyan: '#06b6d4',\n lime: '#84cc16',\n indigo: '#6366f1',\n teal: '#14b8a6',\n sky: '#0284c7',\n red: '#ef4444',\n slate: '#64748b'\n};\n\nconst DEFAULT_COLOR_ORDER: string[] = [\n '#3b82f6', // blue\n '#10b981', // emerald\n '#8b5cf6', // violet\n '#f59e0b', // amber\n '#ec4899', // pink\n '#06b6d4', // cyan\n '#84cc16', // lime\n '#f97316', // orange\n '#6366f1', // indigo\n '#14b8a6' // teal\n];\n\n@Component({\n selector: 'talos-category-bar',\n imports: [TalosTooltipDirective],\n templateUrl: './category-bar.component.html',\n styleUrl: './category-bar.component.scss',\n host: {\n 'class': 'talos-category-bar',\n '[class.talos-category-bar-animated]': 'animated()',\n '[class.talos-category-bar-sm]': 'size() === \"sm\"',\n '[class.talos-category-bar-md]': 'size() === \"md\"',\n '[class.talos-category-bar-lg]': 'size() === \"lg\"',\n '[class.talos-category-bar-xs]': 'size() === \"xs\"',\n '[attr.role]': '\"meter\"',\n '[attr.aria-valuenow]': 'markerVal()',\n '[attr.aria-valuemin]': 'computedMin()',\n '[attr.aria-valuemax]': 'computedMax()',\n '[attr.aria-label]': 'ariaLabel()'\n }\n})\nexport class TalosCategoryBarComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Simple numeric values array for each category (e.g. [120, 80, 60, 40]).\n */\n readonly values = input<number[] | null>(null);\n\n /**\n * Detailed category segments with labels, colors, and metadata.\n */\n readonly categories = input<CategoryBarSegment[] | null>(null);\n\n /**\n * Custom palette or color list for segments. Can be CSS color strings or preset names.\n */\n readonly colors = input<string[]>(DEFAULT_COLOR_ORDER);\n\n /**\n * Numeric position for the needle marker.\n */\n readonly markerValue = input<number | null>(null);\n\n /**\n * Detailed marker object definition.\n */\n readonly marker = input<CategoryBarMarker | null>(null);\n\n /**\n * Minimum scale bound (defaults to 0).\n */\n readonly minValue = input<number | null>(null);\n\n /**\n * Maximum scale bound (defaults to sum of all category values).\n */\n readonly maxValue = input<number | null>(null);\n\n /**\n * Whether to show category scale labels at segment boundaries.\n */\n readonly showLabels = input<boolean>(true);\n\n /**\n * Custom boundary label strings. If not provided, computed cumulative values are shown.\n */\n readonly labels = input<string[] | null>(null);\n\n /**\n * Placement of scale boundary labels: 'top', 'bottom', or 'none'.\n */\n readonly labelPosition = input<CategoryBarLabelPosition>('top');\n\n /**\n * Custom label formatter function for boundary values.\n */\n readonly labelFormatter = input<((value: number, index: number) => string) | null>(null);\n\n /**\n * Custom value formatter for segment tooltip / legends.\n */\n readonly valueFormatter = input<((value: number) => string) | null>(null);\n\n /**\n * Custom marker value formatter for tooltip.\n */\n readonly markerFormatter = input<((value: number) => string) | null>(null);\n\n /**\n * Height size variant of the category bar: 'xs' (6px), 'sm' (8px), 'md' (12px), 'lg' (16px).\n */\n readonly size = input<CategoryBarSize>('md');\n\n /**\n * Corner shape of the bar: 'pill' (fully rounded capsule), 'rounded' (6px), 'square' (0px).\n */\n readonly shape = input<CategoryBarShape>('pill');\n\n /**\n * Optional title above the bar.\n */\n readonly title = input<string>('');\n\n /**\n * Optional subtitle below the title.\n */\n readonly subtitle = input<string>('');\n\n /**\n * Whether to display a bottom legend row with category names and color indicators.\n */\n readonly showLegend = input<boolean>(false);\n\n /**\n * Whether hovering segments or marker displays interactive tooltips.\n */\n readonly showTooltip = input<boolean>(true);\n\n /**\n * Enable smooth CSS transition animation.\n */\n readonly animated = input<boolean>(true);\n\n /**\n * Output event when a segment is clicked.\n */\n readonly segmentClick = output<CategoryBarSegmentClickEvent>();\n\n /**\n * Output event when the marker is clicked.\n */\n readonly markerClick = output<CategoryBarMarkerClickEvent>();\n\n /**\n * Output event when a segment is hovered.\n */\n readonly segmentHover = output<CategoryBarComputedSegment | null>();\n\n // Internal reactive hover states\n protected readonly hoveredSegment = signal<CategoryBarComputedSegment | null>(null);\n protected readonly hoveredMarker = signal<boolean>(false);\n protected readonly tooltipPosition = signal<{ x: number; y: number } | null>(null);\n\n /**\n * Resolves raw category items from either `categories` or `values` input.\n */\n private readonly rawCategories = computed<CategoryBarSegment[]>(() => {\n const cats = this.categories();\n if (cats && cats.length > 0) {\n return cats;\n }\n const vals = this.values();\n if (vals && vals.length > 0) {\n return vals.map((val, idx) => ({\n value: val,\n label: `Category ${idx + 1}`\n }));\n }\n return [];\n });\n\n /**\n * Resolved color array mapping named color presets to hex codes if needed.\n */\n private readonly resolvedPalette = computed<string[]>(() => {\n const customColors = this.colors();\n if (customColors && customColors.length > 0) {\n return customColors.map(c => PRESET_PALETTE[c] || c);\n }\n return DEFAULT_COLOR_ORDER;\n });\n\n /**\n * Total sum of all positive category values.\n */\n protected readonly totalSum = computed<number>(() => {\n const raw = this.rawCategories();\n return raw.reduce((sum, item) => sum + Math.max(0, item.value || 0), 0);\n });\n\n /**\n * Computed minimum boundary.\n */\n protected readonly computedMin = computed<number>(() => {\n const customMin = this.minValue();\n return customMin !== null ? customMin : 0;\n });\n\n /**\n * Computed maximum boundary.\n */\n protected readonly computedMax = computed<number>(() => {\n const customMax = this.maxValue();\n if (customMax !== null) {\n return customMax;\n }\n const sum = this.totalSum();\n return sum > 0 ? sum : 100;\n });\n\n /**\n * Normalized computed segments for rendering with cumulative positions and percentages.\n */\n protected readonly normalizedSegments = computed<CategoryBarComputedSegment[]>(() => {\n const raw = this.rawCategories();\n const total = this.totalSum();\n const palette = this.resolvedPalette();\n const vFormatter = this.valueFormatter();\n\n if (raw.length === 0 || total <= 0) {\n return [];\n }\n\n let cumulative = 0;\n\n return raw.map((item, index) => {\n const val = Math.max(0, item.value || 0);\n const percentage = (val / total) * 100;\n const start = cumulative;\n const end = cumulative + val;\n const startPercent = (start / total) * 100;\n const endPercent = (end / total) * 100;\n cumulative = end;\n\n // Color resolution\n let color = item.color;\n if (!color && item.colorScheme) {\n color = PRESET_PALETTE[item.colorScheme] || item.colorScheme;\n }\n if (!color) {\n color = palette[index % palette.length];\n }\n\n const formattedVal = vFormatter ? vFormatter(val) : val.toLocaleString();\n const label = item.label || `Category ${index + 1}`;\n const tooltipText = item.tooltip || `${label}: ${formattedVal} (${percentage.toFixed(1)}%)`;\n\n return {\n index,\n value: val,\n label,\n color,\n percentage,\n cumulativeStart: start,\n cumulativeEnd: end,\n cumulativeStartPercent: startPercent,\n cumulativeEndPercent: endPercent,\n formattedValue: formattedVal,\n tooltipText,\n raw: item\n };\n });\n });\n\n /**\n * Computed scale boundary labels positioned at tick intersections.\n */\n protected readonly scaleLabels = computed<CategoryBarScaleLabel[]>(() => {\n if (!this.showLabels() || this.labelPosition() === 'none') {\n return [];\n }\n\n const customLabels = this.labels();\n const segments = this.normalizedSegments();\n const lFormatter = this.labelFormatter();\n const min = this.computedMin();\n const max = this.computedMax();\n\n if (customLabels && customLabels.length > 0) {\n const count = customLabels.length;\n return customLabels.map((text, index) => {\n const leftPercent = count > 1 ? (index / (count - 1)) * 100 : 0;\n return {\n index,\n value: min + ((max - min) * leftPercent) / 100,\n text,\n leftPercent\n };\n });\n }\n\n if (segments.length === 0) {\n return [];\n }\n\n // Generate boundary ticks: [0, seg1.end, seg2.end, ...]\n const ticks: CategoryBarScaleLabel[] = [];\n\n // Start tick (0 / min)\n const startVal = min;\n const startText = lFormatter ? lFormatter(startVal, 0) : startVal.toLocaleString();\n ticks.push({\n index: 0,\n value: startVal,\n text: startText,\n leftPercent: 0\n });\n\n segments.forEach((seg, idx) => {\n const val = seg.cumulativeEnd;\n const text = lFormatter ? lFormatter(val, idx + 1) : val.toLocaleString();\n ticks.push({\n index: idx + 1,\n value: val,\n text,\n leftPercent: seg.cumulativeEndPercent\n });\n });\n\n return ticks;\n });\n\n /**\n * Resolved marker value.\n */\n protected readonly markerVal = computed<number | null>(() => {\n const m = this.marker();\n if (m && typeof m.value === 'number') {\n return m.value;\n }\n const mv = this.markerValue();\n return typeof mv === 'number' ? mv : null;\n });\n\n /**\n * Marker needle placement and metadata.\n */\n protected readonly markerState = computed<{\n visible: boolean;\n percent: number;\n color: string;\n label: string;\n tooltip: string;\n variant: 'pill' | 'line' | 'pin' | 'needle';\n } | null>(() => {\n const val = this.markerVal();\n if (val === null) {\n return null;\n }\n\n const min = this.computedMin();\n const max = this.computedMax();\n const span = max - min;\n if (span <= 0) {\n return null;\n }\n\n const rawPercent = ((val - min) / span) * 100;\n const clampedPercent = Math.max(0, Math.min(100, rawPercent));\n\n const m = this.marker();\n const mFormatter = this.markerFormatter();\n const formattedVal = mFormatter ? mFormatter(val) : val.toLocaleString();\n\n // Pick marker color: custom marker color -> category color at that position -> primary accent\n let color = m?.color;\n if (!color) {\n const segments = this.normalizedSegments();\n const currentSegment = segments.find(\n s => clampedPercent >= s.cumulativeStartPercent && clampedPercent <= s.cumulativeEndPercent\n );\n color = currentSegment ? currentSegment.color : '#6366f1';\n }\n\n const label = m?.label || `Marker: ${formattedVal}`;\n const tooltip = m?.tooltip || `${label} (${clampedPercent.toFixed(1)}%)`;\n const variant = m?.variant || 'pill';\n\n return {\n visible: true,\n percent: clampedPercent,\n color,\n label,\n tooltip,\n variant\n };\n });\n\n /**\n * Accessible description for screen readers.\n */\n protected readonly ariaLabel = computed<string>(() => {\n const t = this.title();\n const mVal = this.markerVal();\n const total = this.totalSum();\n if (t) {\n return `${t}, Total: ${total}${mVal !== null ? `, Current Marker: ${mVal}` : ''}`;\n }\n return `Category bar with ${this.rawCategories().length} categories, Total: ${total}`;\n });\n\n // Event handlers\n onSegmentClick(seg: CategoryBarComputedSegment, event: Event): void {\n this.segmentClick.emit({\n segment: seg,\n index: seg.index,\n event\n });\n }\n\n onSegmentMouseEnter(seg: CategoryBarComputedSegment, event: MouseEvent): void {\n this.hoveredSegment.set(seg);\n this.segmentHover.emit(seg);\n this.updateTooltipPos(event);\n }\n\n onSegmentMouseLeave(): void {\n this.hoveredSegment.set(null);\n this.segmentHover.emit(null);\n }\n\n onMarkerMouseEnter(event: MouseEvent): void {\n this.hoveredMarker.set(true);\n this.updateTooltipPos(event);\n }\n\n onMarkerMouseLeave(): void {\n this.hoveredMarker.set(false);\n }\n\n onMarkerClick(event: Event): void {\n const ms = this.markerState();\n const mVal = this.markerVal();\n if (ms && mVal !== null) {\n const mObj: CategoryBarMarker = this.marker() || { value: mVal };\n this.markerClick.emit({\n marker: mObj,\n value: mVal,\n percent: ms.percent,\n event\n });\n }\n }\n\n private updateTooltipPos(event: MouseEvent): void {\n const hostEl = this.elementRef.nativeElement;\n const rect = hostEl.getBoundingClientRect();\n this.tooltipPosition.set({\n x: event.clientX - rect.left,\n y: event.clientY - rect.top\n });\n }\n}\n","<!-- Header Block (Title / Subtitle / Custom Header) -->\n@if (title() || subtitle()) {\n<div class=\"talos-category-bar-header\">\n @if (title()) {\n <div class=\"talos-category-bar-title\">{{ title() }}</div>\n }\n @if (subtitle()) {\n <div class=\"talos-category-bar-subtitle\">{{ subtitle() }}</div>\n }\n</div>\n}\n\n<ng-content select=\"[talosCategoryBarHeader]\"></ng-content>\n\n<!-- Top Scale Boundary Labels -->\n@if (showLabels() && labelPosition() === 'top' && scaleLabels().length > 0) {\n<div class=\"talos-category-bar-labels talos-category-bar-labels-top\" aria-hidden=\"true\">\n @for (tick of scaleLabels(); track tick.index; let first = $first; let last = $last) {\n <span class=\"talos-category-bar-label-tick\" [class.is-first]=\"first\" [class.is-last]=\"last\"\n [style.left.%]=\"tick.leftPercent\">\n {{ tick.text }}\n </span>\n }\n</div>\n}\n\n<!-- Main Bar Track Wrapper -->\n<div class=\"talos-category-bar-track-wrapper\">\n <div class=\"talos-category-bar-track\" [class.shape-pill]=\"shape() === 'pill'\"\n [class.shape-rounded]=\"shape() === 'rounded'\" [class.shape-square]=\"shape() === 'square'\"\n [class.size-xs]=\"size() === 'xs'\" [class.size-sm]=\"size() === 'sm'\" [class.size-md]=\"size() === 'md'\"\n [class.size-lg]=\"size() === 'lg'\">\n @for (seg of normalizedSegments(); track seg.index; let first = $first; let last = $last) {\n <div class=\"talos-category-bar-segment\" [class.is-first]=\"first\" [class.is-last]=\"last\"\n [class.is-hovered]=\"hoveredSegment()?.index === seg.index\" [style.width.%]=\"seg.percentage\"\n [style.background-color]=\"seg.color\" [talosTooltip]=\"seg.tooltipText\" [tooltipDisabled]=\"!showTooltip()\"\n tooltipPosition=\"top\" role=\"button\" tabindex=\"0\" [attr.aria-label]=\"seg.tooltipText\"\n (mouseenter)=\"onSegmentMouseEnter(seg, $event)\" (mouseleave)=\"onSegmentMouseLeave()\"\n (click)=\"onSegmentClick(seg, $event)\" (keydown.enter)=\"onSegmentClick(seg, $event)\"\n (keydown.space)=\"onSegmentClick(seg, $event)\"></div>\n }\n\n <!-- Marker Needle / Pin Indicator -->\n @if (markerState(); as ms) {\n <div class=\"talos-category-bar-marker\" [class.variant-pill]=\"ms.variant === 'pill'\"\n [class.variant-line]=\"ms.variant === 'line'\" [class.variant-needle]=\"ms.variant === 'needle'\"\n [class.is-hovered]=\"hoveredMarker()\" [style.left.%]=\"ms.percent\" [style.--marker-color]=\"ms.color\"\n [talosTooltip]=\"ms.tooltip\" [tooltipDisabled]=\"!showTooltip()\" tooltipPosition=\"top\" role=\"slider\" tabindex=\"0\"\n [attr.aria-valuenow]=\"markerVal()\" [attr.aria-label]=\"ms.label\" (mouseenter)=\"onMarkerMouseEnter($event)\"\n (mouseleave)=\"onMarkerMouseLeave()\" (click)=\"onMarkerClick($event)\" (keydown.enter)=\"onMarkerClick($event)\"\n (keydown.space)=\"onMarkerClick($event)\">\n <div class=\"talos-category-bar-marker-handle\"></div>\n </div>\n }\n </div>\n</div>\n\n<!-- Bottom Scale Boundary Labels -->\n@if (showLabels() && labelPosition() === 'bottom' && scaleLabels().length > 0) {\n<div class=\"talos-category-bar-labels talos-category-bar-labels-bottom\" aria-hidden=\"true\">\n @for (tick of scaleLabels(); track tick.index; let first = $first; let last = $last) {\n <span class=\"talos-category-bar-label-tick\" [class.is-first]=\"first\" [class.is-last]=\"last\"\n [style.left.%]=\"tick.leftPercent\">\n {{ tick.text }}\n </span>\n }\n</div>\n}\n\n<!-- Optional Legend Row -->\n@if (showLegend() && normalizedSegments().length > 0) {\n<div class=\"talos-category-bar-legend\">\n @for (seg of normalizedSegments(); track seg.index) {\n <div class=\"talos-category-bar-legend-item\" [class.is-hovered]=\"hoveredSegment()?.index === seg.index\"\n [talosTooltip]=\"seg.tooltipText\" [tooltipDisabled]=\"!showTooltip()\" tooltipPosition=\"top\"\n (mouseenter)=\"onSegmentMouseEnter(seg, $event)\" (mouseleave)=\"onSegmentMouseLeave()\"\n (click)=\"onSegmentClick(seg, $event)\">\n <span class=\"legend-dot\" [style.background-color]=\"seg.color\"></span>\n <span class=\"legend-label\">{{ seg.label }}</span>\n <span class=\"legend-value\">{{ seg.formattedValue }}</span>\n </div>\n }\n</div>\n}","import { NgModule } from '@angular/core';\nimport { TalosCategoryBarComponent } from './category-bar.component';\n\n@NgModule({\n imports: [TalosCategoryBarComponent],\n exports: [TalosCategoryBarComponent]\n})\nexport class TalosCategoryBarModule { }\n","import {\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n LucideRefreshCw,\n LucideUpload,\n LucideMaximize2,\n LucideMinimize2,\n LucideChevronDown,\n LucideCheck,\n LucideFileSpreadsheet,\n LucideFileJson,\n LucideCalendar,\n LucideClock,\n LucideArrowLeftRight\n} from '@lucide/angular';\nimport {\n addDays,\n addWeeks,\n endOfDay,\n endOfISOWeek,\n isBefore,\n isSameDay,\n isValid,\n startOfDay,\n startOfISOWeek,\n subWeeks\n} from 'date-fns';\nimport { formatDate } from '@weeehaoooz/talos-ui/core';\nimport { DateRangePickerComponent } from '@weeehaoooz/talos-ui/form';\nimport type { DateRangePreset, DateRangeValue } from '@weeehaoooz/talos-ui/form';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback';\nimport {\n HeatmapCell,\n HeatmapCellClickEvent,\n HeatmapCellShape,\n HeatmapCellSize,\n HeatmapColorScheme,\n HeatmapDataInput,\n HeatmapDataPoint,\n HeatmapExportFormat,\n HeatmapInterval,\n HeatmapMatrixData,\n HeatmapMetric,\n HeatmapTimeFormat,\n HeatmapTimeRange,\n HeatmapTimestampData\n} from './heatmap.types';\n\nconst DEFAULT_DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\ninterface ColorStop {\n r: number;\n g: number;\n b: number;\n}\n\nconst PALETTE_CONFIG: Record<\n HeatmapColorScheme,\n { zero: { bg: string; text: string }; min: ColorStop; max: ColorStop; gradientCss: string }\n> = {\n indigo: {\n zero: { bg: '#eef2ff', text: '#4338ca' },\n min: { r: 219, g: 228, b: 255 }, // #dbe4ff\n max: { r: 67, g: 56, b: 202 }, // #4338ca\n gradientCss: 'linear-gradient(90deg, #dbe4ff 0%, #818cf8 50%, #4338ca 100%)'\n },\n blue: {\n zero: { bg: '#eff6ff', text: '#1d4ed8' },\n min: { r: 219, g: 234, b: 254 }, // #dbeafe\n max: { r: 29, g: 78, b: 216 }, // #1d4ed8\n gradientCss: 'linear-gradient(90deg, #dbeafe 0%, #60a5fa 50%, #1d4ed8 100%)'\n },\n emerald: {\n zero: { bg: '#ecfdf5', text: '#047857' },\n min: { r: 209, g: 250, b: 229 }, // #d1fae5\n max: { r: 4, g: 120, b: 87 }, // #047857\n gradientCss: 'linear-gradient(90deg, #d1fae5 0%, #34d399 50%, #047857 100%)'\n },\n rose: {\n zero: { bg: '#fff1f2', text: '#be123c' },\n min: { r: 255, g: 228, b: 230 }, // #ffe4e6\n max: { r: 190, g: 18, b: 60 }, // #be123c\n gradientCss: 'linear-gradient(90deg, #ffe4e6 0%, #fb7185 50%, #be123c 100%)'\n },\n amber: {\n zero: { bg: '#fffbeb', text: '#b45309' },\n min: { r: 254, g: 243, b: 199 }, // #fef3c7\n max: { r: 180, g: 83, b: 9 }, // #b45309\n gradientCss: 'linear-gradient(90deg, #fef3c7 0%, #fbbf24 50%, #b45309 100%)'\n },\n violet: {\n zero: { bg: '#f5f3ff', text: '#6d28d9' },\n min: { r: 237, g: 233, b: 254 }, // #ede9fe\n max: { r: 109, g: 40, b: 217 }, // #6d28d9\n gradientCss: 'linear-gradient(90deg, #ede9fe 0%, #a78bfa 50%, #6d28d9 100%)'\n },\n slate: {\n zero: { bg: '#f8fafc', text: '#334155' },\n min: { r: 226, g: 232, b: 240 }, // #e2e8f0\n max: { r: 51, g: 65, b: 85 }, // #334155\n gradientCss: 'linear-gradient(90deg, #e2e8f0 0%, #94a3b8 50%, #334155 100%)'\n },\n custom: {\n zero: { bg: '#eef2ff', text: '#4338ca' },\n min: { r: 219, g: 228, b: 255 },\n max: { r: 67, g: 56, b: 202 },\n gradientCss: 'linear-gradient(90deg, #dbe4ff 0%, #4338ca 100%)'\n }\n};\n\n@Component({\n selector: 'talos-heatmap',\n imports: [\n FormsModule,\n DateRangePickerComponent,\n TalosTooltipDirective,\n LucideRefreshCw,\n LucideUpload,\n LucideMaximize2,\n LucideMinimize2,\n LucideChevronDown,\n LucideCheck,\n LucideFileSpreadsheet,\n LucideFileJson,\n LucideCalendar,\n LucideClock,\n LucideArrowLeftRight\n ],\n templateUrl: './heatmap.component.html',\n styleUrl: './heatmap.component.scss',\n host: {\n 'class': 'talos-heatmap',\n '[class.talos-heatmap-expanded]': 'isExpanded()',\n '[class.talos-heatmap-loading]': 'loading()',\n '[class.talos-heatmap-sm]': 'cellSize() === \"sm\"',\n '[class.talos-heatmap-md]': 'cellSize() === \"md\"',\n '[class.talos-heatmap-lg]': 'cellSize() === \"lg\"',\n '[class.talos-heatmap-pill]': 'cellShape() === \"pill\"',\n '[class.talos-heatmap-rounded]': 'cellShape() === \"rounded\"',\n '[class.talos-heatmap-square]': 'cellShape() === \"square\"',\n '[class.talos-heatmap-fit-width]': 'isFitWidth()',\n '[class.talos-heatmap-compact-square]': '!isFitWidth()',\n '[class.talos-heatmap-swapped-axes]': 'swapAxes()',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': 'title()'\n }\n})\nexport class TalosHeatmapComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // Inputs & Models\n readonly data = input<HeatmapDataInput>([]);\n readonly metrics = input<HeatmapMetric[]>([]);\n readonly selectedMetricId = model<string | undefined>(undefined);\n readonly interval = model<HeatmapInterval>('hour');\n readonly dateRange = model<DateRangeValue | null>(null);\n readonly swapAxes = model<boolean>(false);\n readonly title = input<string>('Busiest times');\n readonly hoursRange = input<[number, number]>([9, 17]);\n readonly timeFormat = input<HeatmapTimeFormat>('12h');\n readonly days = input<string[]>(DEFAULT_DAYS);\n readonly colorScheme = input<HeatmapColorScheme>('indigo');\n readonly customColorStops = input<[string, string] | undefined>(undefined);\n readonly showLegend = input<boolean>(true);\n readonly showValues = input<boolean>(true);\n readonly cellShape = input<HeatmapCellShape>('pill');\n readonly cellSize = input<HeatmapCellSize>('md');\n readonly fitWidth = input<boolean | undefined>(undefined);\n readonly loading = input<boolean>(false);\n readonly showToolbar = input<boolean>(true);\n readonly showRefresh = input<boolean>(true);\n readonly showExport = input<boolean>(true);\n readonly showExpand = input<boolean>(true);\n readonly showSwapAxes = input<boolean>(false);\n readonly showIntervalToggle = input<boolean>(false);\n readonly showDateRangePicker = input<boolean>(false);\n readonly dateRangePresets = input<DateRangePreset[] | null>(null);\n readonly unit = input<string>('');\n readonly maxValue = input<number | undefined>(undefined);\n readonly minValue = input<number | undefined>(undefined);\n\n // Outputs\n readonly cellClick = output<HeatmapCellClickEvent>();\n readonly cellHover = output<HeatmapCell | null>();\n readonly timeRangeChange = output<HeatmapTimeRange>();\n readonly refresh = output<void>();\n readonly metricChange = output<HeatmapMetric>();\n readonly export = output<{ format: HeatmapExportFormat; data: unknown }>();\n\n // State signals\n readonly isExpanded = signal<boolean>(false);\n readonly isMetricDropdownOpen = signal<boolean>(false);\n readonly isExportDropdownOpen = signal<boolean>(false);\n readonly hoveredCell = signal<HeatmapCell | null>(null);\n readonly focusedCoord = signal<{ colIndex: number; rowIndex: number } | null>(null);\n\n // Layout Fit computation\n readonly isFitWidth = computed<boolean>(() => {\n const fw = this.fitWidth();\n if (fw !== undefined) return fw;\n return this.cellShape() !== 'square';\n });\n\n // Active Metric computation\n readonly currentMetric = computed<HeatmapMetric | undefined>(() => {\n const list = this.metrics();\n if (!list || list.length === 0) return undefined;\n const selectedId = this.selectedMetricId();\n if (selectedId) {\n const found = list.find((m) => m.id === selectedId);\n if (found) return found;\n }\n return list[0];\n });\n\n // Effective Active Color Scheme\n readonly activeColorScheme = computed<HeatmapColorScheme>(() => {\n const metric = this.currentMetric();\n if (metric && metric.colorScheme) return metric.colorScheme;\n return this.colorScheme();\n });\n\n // Effective Unit\n readonly activeUnit = computed<string>(() => {\n const metric = this.currentMetric();\n if (metric && metric.unit !== undefined) return metric.unit;\n return this.unit();\n });\n\n // Effective Raw Data Input\n readonly activeDataInput = computed<HeatmapDataInput>(() => {\n const metric = this.currentMetric();\n if (metric) return metric.data;\n return this.data();\n });\n\n // Hours array from range (for hour-by-hour mode)\n readonly hours = computed<number[]>(() => {\n const [start, end] = this.hoursRange();\n const clampedStart = Math.max(0, Math.min(23, start));\n const clampedEnd = Math.max(clampedStart, Math.min(23, end));\n const result: number[] = [];\n for (let h = clampedStart; h <= clampedEnd; h++) {\n result.push(h);\n }\n return result;\n });\n\n // Resolved Date Range bounds\n readonly parsedDateRange = computed<{ start: Date | null; end: Date | null }>(() => {\n const dr = this.dateRange();\n if (!dr || (!dr.startDate && !dr.endDate)) {\n return { start: null, end: null };\n }\n const s = dr.startDate ? startOfDay(new Date(dr.startDate as any)) : null;\n const e = dr.endDate ? endOfDay(new Date(dr.endDate as any)) : (s ? endOfDay(s) : null);\n return { start: s, end: e };\n });\n\n // Day list for Day-by-Day mode (weeks grouping)\n readonly dayModeWeeks = computed<{ label: string; start: Date; end: Date; days: Date[] }[]>(() => {\n const { start, end } = this.parsedDateRange();\n const effectiveStart = start || startOfISOWeek(subWeeks(new Date(), 3));\n const effectiveEnd = end || endOfISOWeek(new Date());\n\n const weeks: { label: string; start: Date; end: Date; days: Date[] }[] = [];\n let currentWeekStart = startOfISOWeek(effectiveStart);\n const lastWeekEnd = endOfISOWeek(effectiveEnd);\n\n while (isSameDay(currentWeekStart, lastWeekEnd) || isBefore(currentWeekStart, lastWeekEnd)) {\n const currentWeekEnd = addDays(currentWeekStart, 6);\n const daysInWeek: Date[] = [];\n\n for (let i = 0; i < 7; i++) {\n daysInWeek.push(addDays(currentWeekStart, i));\n }\n\n const label = `${formatDate(currentWeekStart, 'MMM d')} - ${formatDate(currentWeekEnd, 'MMM d')}`;\n weeks.push({\n label,\n start: currentWeekStart,\n end: currentWeekEnd,\n days: daysInWeek\n });\n\n currentWeekStart = addWeeks(currentWeekStart, 1);\n }\n\n return weeks;\n });\n\n // Normalized Value Map:\n // For 'hour': Map<`${colKey}_${hour}`, { value, meta }>\n // For 'day': Map<`${yyyy-MM-dd}`, { value, meta }> AND Map<`${colKey}`, { value, meta }>\n readonly normalizedValueMap = computed<Map<string, { value: number; meta?: Record<string, unknown> }>>(() => {\n const map = new Map<string, { value: number; meta?: Record<string, unknown> }>();\n const rawInput = this.activeDataInput();\n const currentDays = this.days();\n const currentInterval = this.interval();\n\n if (!rawInput) return map;\n\n if (Array.isArray(rawInput)) {\n if (rawInput.length === 0) return map;\n\n const firstItem = rawInput[0];\n\n if (\n typeof firstItem === 'string' ||\n firstItem instanceof Date ||\n (typeof firstItem === 'number' && firstItem > 1000000000)\n ) {\n // Raw Timestamp list\n (rawInput as HeatmapTimestampData).forEach((ts) => {\n const date = new Date(ts);\n if (isValid(date)) {\n if (currentInterval === 'day') {\n const dayKey = formatDate(date, 'yyyy-MM-dd');\n const existing = map.get(dayKey);\n if (existing) existing.value += 1;\n else map.set(dayKey, { value: 1 });\n } else {\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const dayName = dayNames[date.getDay()];\n const matchedDay = currentDays.find((d) => d.toLowerCase().startsWith(dayName.toLowerCase())) || dayName;\n const hour = date.getHours();\n const key = `${matchedDay}_${hour}`;\n const existing = map.get(key);\n if (existing) existing.value += 1;\n else map.set(key, { value: 1 });\n }\n }\n });\n } else {\n // HeatmapDataPoint array\n (rawInput as HeatmapDataPoint[]).forEach((point) => {\n if (currentInterval === 'day') {\n let dayKey = '';\n if (point.date) {\n dayKey = typeof point.date === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(point.date)\n ? point.date.substring(0, 10)\n : formatDate(new Date(point.date), 'yyyy-MM-dd');\n } else if (point.day instanceof Date) {\n dayKey = formatDate(point.day, 'yyyy-MM-dd');\n } else if (typeof point.day === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(point.day)) {\n dayKey = point.day.substring(0, 10);\n } else {\n dayKey = String(point.day ?? '');\n }\n\n if (dayKey) {\n const existing = map.get(dayKey);\n if (existing) {\n existing.value += point.value;\n if (point.meta) existing.meta = { ...existing.meta, ...point.meta };\n } else {\n map.set(dayKey, { value: point.value, meta: point.meta });\n }\n }\n } else {\n // Hour by hour\n let dayKey = '';\n if (point.day instanceof Date) {\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const dayName = dayNames[point.day.getDay()];\n dayKey = currentDays.find((d) => d.toLowerCase().startsWith(dayName.toLowerCase())) || dayName;\n } else if (typeof point.day === 'number') {\n dayKey = currentDays[point.day] || String(point.day);\n } else {\n dayKey = String(point.day ?? '');\n }\n\n const hour = point.hour ?? 0;\n const key = `${dayKey}_${hour}`;\n const existing = map.get(key);\n if (existing) {\n existing.value += point.value;\n if (point.meta) existing.meta = { ...existing.meta, ...point.meta };\n } else {\n map.set(key, { value: point.value, meta: point.meta });\n }\n }\n });\n }\n } else if (typeof rawInput === 'object') {\n // HeatmapMatrixData\n const matrix = rawInput as HeatmapMatrixData;\n Object.entries(matrix).forEach(([outerKey, innerObj]) => {\n if (typeof innerObj === 'object' && innerObj !== null) {\n Object.entries(innerObj).forEach(([innerKey, val]) => {\n const numVal = Number(val) || 0;\n if (currentInterval === 'day') {\n const key = `${outerKey}_${innerKey}`;\n map.set(key, { value: numVal });\n } else {\n const isInnerHour = !isNaN(Number(innerKey));\n if (isInnerHour) {\n const hour = Number(innerKey);\n const key = `${outerKey}_${hour}`;\n map.set(key, { value: numVal });\n } else {\n const hour = Number(outerKey);\n const key = `${innerKey}_${hour}`;\n map.set(key, { value: numVal });\n }\n }\n });\n }\n });\n }\n\n return map;\n });\n\n // Effective min & max value for heat scale\n readonly computedScaleBounds = computed<{ min: number; max: number }>(() => {\n const customMin = this.minValue();\n const customMax = this.maxValue();\n const map = this.normalizedValueMap();\n\n let dataMax = 0;\n for (const item of map.values()) {\n if (item.value > dataMax) dataMax = item.value;\n }\n\n const min = customMin !== undefined ? customMin : 0;\n const max = customMax !== undefined ? customMax : Math.max(1, dataMax);\n\n return { min, max };\n });\n\n // Gradient CSS for Legend bar\n readonly legendGradientCss = computed<string>(() => {\n const scheme = this.activeColorScheme();\n return PALETTE_CONFIG[scheme]?.gradientCss || PALETTE_CONFIG.indigo.gradientCss;\n });\n\n // Column Headers computation (supports axis swapping)\n readonly columnHeaders = computed<{ key: string | number; label: string }[]>(() => {\n const isSwapped = this.swapAxes();\n const currentInterval = this.interval();\n\n if (!isSwapped) {\n return this.days().map((day) => ({ key: day, label: day }));\n }\n\n // When axes are swapped:\n if (currentInterval === 'day') {\n const weeks = this.dayModeWeeks();\n return weeks.map((w) => ({ key: w.label, label: w.label }));\n }\n\n const hoursList = this.hours();\n const format = this.timeFormat();\n return hoursList.map((hour) => ({\n key: hour,\n label: this.formatHourLabel(hour, format)\n }));\n });\n\n // Grid Matrix computation\n readonly gridRows = computed<{ key: string | number; label: string; cells: HeatmapCell[] }[]>(() => {\n const currentInterval = this.interval();\n const isSwapped = this.swapAxes();\n const map = this.normalizedValueMap();\n const { min, max } = this.computedScaleBounds();\n const scheme = this.activeColorScheme();\n const palette = PALETTE_CONFIG[scheme] || PALETTE_CONFIG.indigo;\n const unitStr = this.activeUnit();\n const unitSuffix = unitStr ? ` ${unitStr}` : '';\n const format = this.timeFormat();\n\n const getVisuals = (val: number) => {\n const intensity = max > min ? Math.max(0, Math.min(1, (val - min) / (max - min))) : 0;\n let bgColor = '';\n let textColor = '';\n if (val === 0) {\n bgColor = palette.zero.bg;\n textColor = palette.zero.text;\n } else {\n const r = Math.round(palette.min.r + (palette.max.r - palette.min.r) * intensity);\n const g = Math.round(palette.min.g + (palette.max.g - palette.min.g) * intensity);\n const b = Math.round(palette.min.b + (palette.max.b - palette.min.b) * intensity);\n bgColor = `rgb(${r}, ${g}, ${b})`;\n textColor = intensity >= 0.55 ? '#ffffff' : palette.zero.text;\n }\n return { intensity, bgColor, textColor };\n };\n\n // --- DAY-BY-DAY MODE ---\n if (currentInterval === 'day') {\n const weeks = this.dayModeWeeks();\n const dayLabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\n if (!isSwapped) {\n // Standard: Rows = Weeks, Columns = Days\n return weeks.map((week, weekIdx) => {\n const cells: HeatmapCell[] = week.days.map((d, dayIdx) => {\n const dateStr = formatDate(d, 'yyyy-MM-dd');\n const dayName = dayLabels[dayIdx];\n const entry = map.get(dateStr) || map.get(`${dayName}_${weekIdx}`);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${formatDate(d, 'EEEE, MMMM d, yyyy')}: ${val}${unitSuffix}`;\n\n return {\n id: dateStr,\n colKey: dayName,\n colLabel: `${dayName} (${formatDate(d, 'd')})`,\n rowKey: week.label,\n rowLabel: week.label,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n date: d,\n meta: entry?.meta\n };\n });\n\n return {\n key: week.label,\n label: week.label,\n cells\n };\n });\n } else {\n // Swapped: Rows = Days (Mon..Sun), Columns = Weeks\n return dayLabels.map((dayName, dayIdx) => {\n const cells: HeatmapCell[] = weeks.map((week, weekIdx) => {\n const d = week.days[dayIdx];\n const dateStr = formatDate(d, 'yyyy-MM-dd');\n const entry = map.get(dateStr) || map.get(`${dayName}_${weekIdx}`);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${formatDate(d, 'EEEE, MMMM d, yyyy')}: ${val}${unitSuffix}`;\n\n return {\n id: `${dateStr}_swapped`,\n colKey: week.label,\n colLabel: week.label,\n rowKey: dayName,\n rowLabel: dayName,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n date: d,\n meta: entry?.meta\n };\n });\n\n return {\n key: dayName,\n label: dayName,\n cells\n };\n });\n }\n }\n\n // --- HOUR-BY-HOUR MODE ---\n const hoursList = this.hours();\n const colsList = this.days();\n\n if (!isSwapped) {\n // Standard: Rows = Hours, Columns = Days\n return hoursList.map((hour) => {\n const hourLabel = this.formatHourLabel(hour, format);\n const cells: HeatmapCell[] = colsList.map((col) => {\n const key = `${col}_${hour}`;\n const entry = map.get(key);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${col}, ${hourLabel}: ${val}${unitSuffix}`;\n\n return {\n id: key,\n colKey: col,\n colLabel: col,\n rowKey: hour,\n rowLabel: hourLabel,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n meta: entry?.meta\n };\n });\n\n return {\n key: hour,\n label: hourLabel,\n cells\n };\n });\n } else {\n // Swapped: Rows = Days, Columns = Hours\n return colsList.map((day) => {\n const cells: HeatmapCell[] = hoursList.map((hour) => {\n const hourLabel = this.formatHourLabel(hour, format);\n const key = `${day}_${hour}`;\n const entry = map.get(key);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${day}, ${hourLabel}: ${val}${unitSuffix}`;\n\n return {\n id: `${key}_swapped`,\n colKey: hour,\n colLabel: hourLabel,\n rowKey: day,\n rowLabel: day,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n meta: entry?.meta\n };\n });\n\n return {\n key: day,\n label: day,\n cells\n };\n });\n }\n });\n\n constructor() {\n // Notify parent on time range boundaries changes\n effect(() => {\n const days = this.days();\n const hours = this.hours();\n const inter = this.interval();\n const dr = this.dateRange();\n const swapped = this.swapAxes();\n\n this.timeRangeChange.emit({\n interval: inter,\n startHour: hours.length > 0 ? hours[0] : undefined,\n endHour: hours.length > 0 ? hours[hours.length - 1] : undefined,\n days,\n startDate: dr?.startDate ? new Date(dr.startDate as any) : undefined,\n endDate: dr?.endDate ? new Date(dr.endDate as any) : undefined,\n dateRange: dr,\n swapAxes: swapped\n });\n });\n\n // Close dropdowns on outside click\n if (typeof document !== 'undefined') {\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (!this.elementRef.nativeElement.contains(target)) {\n this.isMetricDropdownOpen.set(false);\n this.isExportDropdownOpen.set(false);\n }\n });\n }\n }\n\n formatHourLabel(hour: number, format: HeatmapTimeFormat): string {\n if (format === '24h') {\n return `${hour.toString().padStart(2, '0')}:00`;\n }\n if (hour === 0) return '12 AM';\n if (hour < 12) return `${hour} AM`;\n if (hour === 12) return '12 PM';\n return `${hour - 12} PM`;\n }\n\n setInterval(newInterval: HeatmapInterval): void {\n this.interval.set(newInterval);\n }\n\n toggleSwapAxes(): void {\n this.swapAxes.update((v) => !v);\n }\n\n onDateRangePickerChange(val: DateRangeValue | null): void {\n this.dateRange.set(val);\n }\n\n toggleExpand(): void {\n this.isExpanded.update((v) => !v);\n }\n\n toggleMetricDropdown(event: MouseEvent): void {\n event.stopPropagation();\n this.isMetricDropdownOpen.update((v) => !v);\n this.isExportDropdownOpen.set(false);\n }\n\n toggleExportDropdown(event: MouseEvent): void {\n event.stopPropagation();\n this.isExportDropdownOpen.update((v) => !v);\n this.isMetricDropdownOpen.set(false);\n }\n\n selectMetric(metric: HeatmapMetric): void {\n this.selectedMetricId.set(metric.id);\n this.isMetricDropdownOpen.set(false);\n this.metricChange.emit(metric);\n }\n\n onRefreshClick(): void {\n this.refresh.emit();\n }\n\n onCellMouseEnter(cell: HeatmapCell): void {\n this.hoveredCell.set(cell);\n this.cellHover.emit(cell);\n }\n\n onCellMouseLeave(): void {\n this.hoveredCell.set(null);\n this.cellHover.emit(null);\n }\n\n onCellClick(cell: HeatmapCell, event: MouseEvent): void {\n this.cellClick.emit({\n cell,\n colKey: cell.colKey,\n rowKey: cell.rowKey,\n value: cell.value,\n interval: this.interval(),\n event\n });\n }\n\n onKeydown(event: KeyboardEvent, colIdx: number, rowIdx: number): void {\n const rows = this.gridRows();\n const cols = this.columnHeaders();\n let targetRow = rowIdx;\n let targetCol = colIdx;\n\n if (event.key === 'ArrowUp') {\n targetRow = Math.max(0, rowIdx - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowDown') {\n targetRow = Math.min(rows.length - 1, rowIdx + 1);\n event.preventDefault();\n } else if (event.key === 'ArrowLeft') {\n targetCol = Math.max(0, colIdx - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowRight') {\n targetCol = Math.min(cols.length - 1, colIdx + 1);\n event.preventDefault();\n } else if (event.key === 'Enter' || event.key === ' ') {\n const cell = rows[rowIdx]?.cells[colIdx];\n if (cell) {\n this.cellClick.emit({\n cell,\n colKey: cell.colKey,\n rowKey: cell.rowKey,\n value: cell.value,\n interval: this.interval(),\n event\n });\n }\n event.preventDefault();\n return;\n }\n\n if (targetRow !== rowIdx || targetCol !== colIdx) {\n this.focusedCoord.set({ colIndex: targetCol, rowIndex: targetRow });\n const cellEl = this.elementRef.nativeElement.querySelector(\n `[data-cell-coord=\"${targetRow}_${targetCol}\"]`\n ) as HTMLElement;\n cellEl?.focus();\n }\n }\n\n triggerExport(format: HeatmapExportFormat): void {\n this.isExportDropdownOpen.set(false);\n const rows = this.gridRows();\n const cols = this.days();\n\n if (format === 'csv') {\n const header = ['Period', ...cols].join(',');\n const body = rows.map((r) => [r.label, ...r.cells.map((c) => c.value)].join(',')).join('\\n');\n const csvContent = `${header}\\n${body}`;\n\n this.downloadFile(csvContent, 'text/csv;charset=utf-8;', `heatmap_${this.title().toLowerCase().replace(/\\s+/g, '_')}.csv`);\n this.export.emit({ format: 'csv', data: csvContent });\n } else if (format === 'json') {\n const jsonRecords: Record<string, Record<string, number>> = {};\n rows.forEach((r) => {\n jsonRecords[r.label] = {};\n r.cells.forEach((c) => {\n jsonRecords[r.label][c.colKey] = c.value;\n });\n });\n const jsonStr = JSON.stringify(jsonRecords, null, 2);\n this.downloadFile(jsonStr, 'application/json;charset=utf-8;', `heatmap_${this.title().toLowerCase().replace(/\\s+/g, '_')}.json`);\n this.export.emit({ format: 'json', data: jsonRecords });\n }\n }\n\n private downloadFile(content: string, mimeType: string, filename: string): void {\n if (typeof window === 'undefined') return;\n const blob = new Blob([content], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n}\n","<div class=\"talos-heatmap-container\">\n <!-- Header Toolbar -->\n @if (showToolbar()) {\n <div class=\"talos-heatmap-header\">\n <div class=\"talos-heatmap-title-area\">\n <h3 class=\"talos-heatmap-title\">{{ title() }}</h3>\n </div>\n\n <div class=\"talos-heatmap-actions\">\n <!-- Interval Selector Toggle (Hour vs Day) -->\n @if (showIntervalToggle()) {\n <div class=\"talos-heatmap-interval-group\" role=\"radiogroup\" aria-label=\"Time Interval\">\n <button type=\"button\" class=\"talos-heatmap-interval-btn\" [class.is-active]=\"interval() === 'hour'\"\n (click)=\"setInterval('hour')\" role=\"radio\" [attr.aria-checked]=\"interval() === 'hour'\">\n <svg lucideClock [size]=\"13\"></svg>\n <span>Hour</span>\n </button>\n <button type=\"button\" class=\"talos-heatmap-interval-btn\" [class.is-active]=\"interval() === 'day'\"\n (click)=\"setInterval('day')\" role=\"radio\" [attr.aria-checked]=\"interval() === 'day'\">\n <svg lucideCalendar [size]=\"13\"></svg>\n <span>Day</span>\n </button>\n </div>\n }\n\n <!-- Date Range Picker Integration -->\n @if (showDateRangePicker()) {\n <div class=\"talos-heatmap-daterange-box\">\n <talos-date-range-picker size=\"sm\" [ngModel]=\"dateRange()\" (rangeChange)=\"onDateRangePickerChange($event)\"\n [presets]=\"dateRangePresets()\" placeholder=\"Select date range\" />\n </div>\n }\n\n <!-- Metric Dropdown Selector -->\n @if (metrics().length > 0) {\n <div class=\"talos-heatmap-dropdown-wrapper\">\n <button type=\"button\" class=\"talos-heatmap-dropdown-btn\" [class.is-open]=\"isMetricDropdownOpen()\"\n (click)=\"toggleMetricDropdown($event)\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"isMetricDropdownOpen()\">\n <span class=\"talos-heatmap-dropdown-label\">{{ currentMetric()?.label || 'Select metric' }}</span>\n <svg lucideChevronDown [size]=\"14\" class=\"talos-heatmap-dropdown-icon\"></svg>\n </button>\n\n @if (isMetricDropdownOpen()) {\n <div class=\"talos-heatmap-menu\" role=\"listbox\">\n @for (m of metrics(); track m.id) {\n <button type=\"button\" class=\"talos-heatmap-menu-item\" [class.is-selected]=\"m.id === currentMetric()?.id\"\n (click)=\"selectMetric(m)\" role=\"option\" [attr.aria-selected]=\"m.id === currentMetric()?.id\">\n <span>{{ m.label }}</span>\n @if (m.id === currentMetric()?.id) {\n <svg lucideCheck [size]=\"14\" class=\"talos-heatmap-check-icon\"></svg>\n }\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Refresh Button -->\n @if (showRefresh()) {\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" [class.is-spinning]=\"loading()\" (click)=\"onRefreshClick()\"\n title=\"Refresh data\" aria-label=\"Refresh data\">\n <svg lucideRefreshCw [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n </button>\n }\n\n <!-- Export Dropdown Button -->\n @if (showExport()) {\n <div class=\"talos-heatmap-dropdown-wrapper\">\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" (click)=\"toggleExportDropdown($event)\" title=\"Export data\"\n aria-label=\"Export data\">\n <svg lucideUpload [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n </button>\n\n @if (isExportDropdownOpen()) {\n <div class=\"talos-heatmap-menu talos-heatmap-export-menu\" role=\"menu\">\n <button type=\"button\" class=\"talos-heatmap-menu-item\" (click)=\"triggerExport('csv')\" role=\"menuitem\">\n <svg lucideFileSpreadsheet [size]=\"14\" class=\"talos-heatmap-menu-icon\"></svg>\n <span>Export to CSV</span>\n </button>\n <button type=\"button\" class=\"talos-heatmap-menu-item\" (click)=\"triggerExport('json')\" role=\"menuitem\">\n <svg lucideFileJson [size]=\"14\" class=\"talos-heatmap-menu-icon\"></svg>\n <span>Export to JSON</span>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Swap Axes Button -->\n @if (showSwapAxes()) {\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" [class.is-active]=\"swapAxes()\" (click)=\"toggleSwapAxes()\"\n [title]=\"swapAxes() ? 'Reset axis orientation' : 'Swap axes (Days / Hours)'\"\n [attr.aria-label]=\"swapAxes() ? 'Reset axis orientation' : 'Swap axes (Days / Hours)'\">\n <svg lucideArrowLeftRight [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n </button>\n }\n\n <!-- Fullscreen / Expand Button -->\n @if (showExpand()) {\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" (click)=\"toggleExpand()\"\n [title]=\"isExpanded() ? 'Minimize' : 'Expand'\" [aria-label]=\"isExpanded() ? 'Minimize' : 'Expand'\">\n @if (isExpanded()) {\n <svg lucideMinimize2 [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n } @else {\n <svg lucideMaximize2 [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n }\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Heatmap Matrix Grid Wrapper -->\n <div class=\"talos-heatmap-body\" [class.is-loading]=\"loading()\">\n <!-- Grid Table -->\n <div class=\"talos-heatmap-grid\" role=\"grid\" [attr.aria-rowcount]=\"gridRows().length + 1\"\n [attr.aria-colcount]=\"columnHeaders().length + 1\">\n <!-- Column Headers -->\n <div class=\"talos-heatmap-row talos-heatmap-header-row\" role=\"row\" aria-rowindex=\"1\">\n <div class=\"talos-heatmap-corner-cell\" role=\"columnheader\"></div>\n @for (col of columnHeaders(); track col.key; let colIdx = $index) {\n <div class=\"talos-heatmap-col-header\" role=\"columnheader\" [attr.aria-colindex]=\"colIdx + 2\">\n {{ col.label }}\n </div>\n }\n </div>\n\n <!-- Data Rows -->\n @for (row of gridRows(); track row.key; let rowIdx = $index) {\n <div class=\"talos-heatmap-row\" role=\"row\" [attr.aria-rowindex]=\"rowIdx + 2\">\n <!-- Row Header (Hour or Week Range) -->\n <div class=\"talos-heatmap-row-header\" role=\"rowheader\" aria-colindex=\"1\" [title]=\"row.label\">\n {{ row.label }}\n </div>\n\n <!-- Heatmap Cells -->\n @for (cell of row.cells; track cell.id; let colIdx = $index) {\n <div class=\"talos-heatmap-cell-wrapper\" role=\"gridcell\" [attr.aria-colindex]=\"colIdx + 2\"\n [attr.aria-label]=\"cell.tooltipText\" tabindex=\"0\" [attr.data-cell-coord]=\"rowIdx + '_' + colIdx\"\n [talosTooltip]=\"cell.tooltipText\" (mouseenter)=\"onCellMouseEnter(cell)\" (mouseleave)=\"onCellMouseLeave()\"\n (click)=\"onCellClick(cell, $event)\" (keydown)=\"onKeydown($event, colIdx, rowIdx)\">\n <div class=\"talos-heatmap-pill\" [style.background-color]=\"cell.backgroundColor\" [style.color]=\"cell.textColor\"\n [class.has-value]=\"cell.value > 0\">\n @if (showValues()) {\n <span class=\"talos-heatmap-cell-value\">{{ cell.formattedValue }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Loading Skeleton Shimmer Overlay -->\n @if (loading()) {\n <div class=\"talos-heatmap-loading-overlay\" aria-hidden=\"true\">\n <div class=\"talos-heatmap-loading-spinner-box\">\n <svg lucideRefreshCw [size]=\"16\" class=\"talos-heatmap-loading-spinner\"></svg>\n <span>Loading data...</span>\n </div>\n </div>\n }\n </div>\n\n <!-- Bottom Legend Bar -->\n @if (showLegend()) {\n <div class=\"talos-heatmap-legend\">\n <span class=\"talos-heatmap-legend-bound\">{{ computedScaleBounds().min }}</span>\n <div class=\"talos-heatmap-legend-bar\" [style.background]=\"legendGradientCss()\" aria-hidden=\"true\"></div>\n <span class=\"talos-heatmap-legend-bound\">{{ computedScaleBounds().max }}</span>\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TalosHeatmapComponent } from './heatmap.component';\n\n@NgModule({\n imports: [TalosHeatmapComponent],\n exports: [TalosHeatmapComponent]\n})\nexport class TalosHeatmapModule { }\n","/**\n * Types and interfaces for TalosMiniDonutComponent\n */\n\nexport type MiniDonutSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'custom';\n\nexport type MiniDonutLineCap = 'round' | 'butt';\n\nexport type MiniDonutColorScheme =\n | 'primary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'violet'\n | 'emerald'\n | 'rose'\n | 'amber'\n | 'cyan'\n | 'slate'\n | string;\n\nexport interface MiniDonutSegment {\n value: number;\n color?: string;\n label?: string;\n tooltip?: string;\n id?: string;\n}\n\nexport interface ComputedDonutSegment {\n index: number;\n value: number;\n percentage: number;\n color: string;\n label?: string;\n tooltip?: string;\n dashArray: string;\n dashOffset: number;\n pathLength: number;\n}\n","import { Component, computed, input, output } from '@angular/core';\nimport {\n ComputedDonutSegment,\n MiniDonutColorScheme,\n MiniDonutLineCap,\n MiniDonutSegment,\n MiniDonutSize\n} from './mini-donut.types';\n\nconst PRESET_COLORS: Record<string, string> = {\n primary: '#2563eb',\n blue: '#3b82f6',\n success: '#16a34a',\n emerald: '#10b981',\n danger: '#ef4444',\n rose: '#f43f5e',\n warning: '#f59e0b',\n amber: '#d97706',\n info: '#0284c7',\n cyan: '#06b6d4',\n violet: '#8b5cf6',\n purple: '#9333ea',\n pink: '#ec4899',\n slate: '#64748b'\n};\n\nconst DEFAULT_PALETTE = ['#3b82f6', '#10b981', '#8b5cf6', '#f59e0b', '#ec4899', '#06b6d4'];\n\nconst SIZE_PRESETS: Record<Exclude<MiniDonutSize, 'custom'>, { px: number; stroke: number }> = {\n xs: { px: 24, stroke: 3 },\n sm: { px: 32, stroke: 4 },\n md: { px: 48, stroke: 5 },\n lg: { px: 64, stroke: 6 },\n xl: { px: 88, stroke: 8 }\n};\n\n@Component({\n selector: 'talos-mini-donut',\n templateUrl: './mini-donut.component.html',\n styleUrl: './mini-donut.component.scss',\n host: {\n 'class': 'talos-mini-donut',\n '[class.talos-mini-donut-xs]': 'size() === \"xs\"',\n '[class.talos-mini-donut-sm]': 'size() === \"sm\"',\n '[class.talos-mini-donut-md]': 'size() === \"md\"',\n '[class.talos-mini-donut-lg]': 'size() === \"lg\"',\n '[class.talos-mini-donut-xl]': 'size() === \"xl\"',\n '[class.talos-mini-donut-animated]': 'animated()',\n '[style.width.px]': 'pixelDimension()',\n '[style.height.px]': 'pixelDimension()',\n '[attr.role]': '\"meter\"',\n '[attr.aria-valuenow]': 'currentAriaValue()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosMiniDonutComponent {\n /** Single progress value (e.g. 75 or 450) */\n readonly value = input<number | null>(null);\n\n /** Minimum value for single progress mode */\n readonly min = input<number>(0);\n\n /** Maximum value for single progress mode */\n readonly max = input<number>(100);\n\n /** Multi-segment dataset */\n readonly segments = input<MiniDonutSegment[] | null>(null);\n\n /** Size preset */\n readonly size = input<MiniDonutSize>('md');\n\n /** Custom dimension override in px */\n readonly dimension = input<number | null>(null);\n\n /** Custom stroke width override */\n readonly strokeWidth = input<number | null>(null);\n\n /** Color scheme or hex string for single progress mode */\n readonly color = input<MiniDonutColorScheme>('primary');\n\n /** Background track ring color */\n readonly trackColor = input<string | null>(null);\n\n /** Show background track */\n readonly showTrack = input<boolean>(true);\n\n /** SVG stroke linecap */\n readonly lineCap = input<MiniDonutLineCap>('round');\n\n /** Gap spacing between segments in multi-segment mode (in px) */\n readonly gap = input<number>(2);\n\n /** Show built-in center percentage or text */\n readonly showCenterText = input<boolean>(false);\n\n /** Explicit center primary text override */\n readonly centerText = input<string | null>(null);\n\n /** Secondary center subtext */\n readonly centerSubtext = input<string | null>(null);\n\n /** Enable smooth CSS animation */\n readonly animated = input<boolean>(true);\n\n /** Custom ARIA label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Segment click event */\n readonly segmentClick = output<MiniDonutSegment>();\n\n // Internal SVG coordinate constants (viewBox is 0 0 100 100)\n protected readonly svgSize = 100;\n protected readonly center = 50;\n\n /** Computed pixel dimension */\n readonly pixelDimension = computed(() => {\n const custom = this.dimension();\n if (custom !== null) return custom;\n const s = this.size();\n return s !== 'custom' ? SIZE_PRESETS[s].px : 48;\n });\n\n /** Computed stroke width in SVG coordinates */\n readonly computedStrokeWidth = computed(() => {\n const custom = this.strokeWidth();\n if (custom !== null) {\n // Scale according to ratio with pixel dimension\n const px = this.pixelDimension();\n return (custom / px) * this.svgSize;\n }\n const s = this.size();\n const preset = s !== 'custom' ? SIZE_PRESETS[s] : SIZE_PRESETS['md'];\n return (preset.stroke / preset.px) * this.svgSize;\n });\n\n /** Radius in SVG coordinates */\n readonly radius = computed(() => {\n const sw = this.computedStrokeWidth();\n return (this.svgSize - sw) / 2;\n });\n\n /** Circumference */\n readonly circumference = computed(() => {\n return 2 * Math.PI * this.radius();\n });\n\n /** Effective single progress color */\n readonly effectiveColor = computed(() => {\n const c = this.color();\n return PRESET_COLORS[c] || c;\n });\n\n /** Computed percentage for single progress mode */\n readonly singlePercentage = computed(() => {\n const val = this.value();\n if (val === null) return 0;\n const minVal = this.min();\n const maxVal = this.max();\n if (maxVal <= minVal) return 0;\n const pct = ((val - minVal) / (maxVal - minVal)) * 100;\n return Math.min(100, Math.max(0, pct));\n });\n\n /** Single progress dash offset/array */\n readonly singleDashArray = computed(() => {\n const circ = this.circumference();\n const pct = this.singlePercentage();\n const filled = (pct / 100) * circ;\n return `${filled} ${circ}`;\n });\n\n /** Computed multi-segment values with offsets */\n readonly computedSegments = computed<ComputedDonutSegment[]>(() => {\n const segs = this.segments();\n if (!segs || segs.length === 0) return [];\n\n const circ = this.circumference();\n const totalVal = segs.reduce((acc, s) => acc + Math.max(0, s.value), 0);\n if (totalVal <= 0) return [];\n\n const gapPx = this.gap();\n const count = segs.length;\n const totalGap = count > 1 ? count * gapPx : 0;\n const availableCirc = Math.max(0, circ - totalGap);\n\n let accumulatedOffset = 0;\n\n return segs.map((seg, idx) => {\n const pct = (Math.max(0, seg.value) / totalVal) * 100;\n const length = (Math.max(0, seg.value) / totalVal) * availableCirc;\n const color = seg.color ? (PRESET_COLORS[seg.color] || seg.color) : DEFAULT_PALETTE[idx % DEFAULT_PALETTE.length];\n\n const dashArray = `${length} ${circ}`;\n // Dashoffset starts at accumulatedOffset (negative because SVG stroke-dashoffset clockwise)\n const dashOffset = -accumulatedOffset;\n\n accumulatedOffset += length + (count > 1 ? gapPx : 0);\n\n return {\n index: idx,\n value: seg.value,\n percentage: pct,\n color,\n label: seg.label,\n tooltip: seg.tooltip,\n dashArray,\n dashOffset,\n pathLength: circ\n };\n });\n });\n\n /** Display text inside center */\n readonly computedCenterText = computed(() => {\n const explicit = this.centerText();\n if (explicit !== null) return explicit;\n if (this.value() !== null) {\n return `${Math.round(this.singlePercentage())}%`;\n }\n return '';\n });\n\n /** ARIA attributes */\n readonly currentAriaValue = computed(() => {\n if (this.value() !== null) return this.value();\n const segs = this.segments();\n if (segs && segs.length > 0) return segs.reduce((a, b) => a + b.value, 0);\n return 0;\n });\n\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n if (this.value() !== null) {\n return `Progress: ${Math.round(this.singlePercentage())}%`;\n }\n const segs = this.segments();\n if (segs && segs.length > 0) {\n return `Donut chart with ${segs.length} categories`;\n }\n return 'Mini donut chart';\n });\n\n protected onSegmentClick(segIndex: number): void {\n const rawSegs = this.segments();\n if (rawSegs && rawSegs[segIndex]) {\n this.segmentClick.emit(rawSegs[segIndex]);\n }\n }\n}\n","<svg\n class=\"talos-mini-donut-svg\"\n [attr.viewBox]=\"'0 0 ' + svgSize + ' ' + svgSize\"\n aria-hidden=\"true\"\n>\n <!-- Background Track -->\n @if (showTrack()) {\n <circle\n class=\"talos-mini-donut-track\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"computedStrokeWidth()\"\n [attr.stroke]=\"trackColor() || 'var(--talos-border-color, #e2e8f0)'\"\n fill=\"none\"\n />\n }\n\n <!-- Single Value Progress Mode -->\n @if (segments() === null && value() !== null) {\n <circle\n class=\"talos-mini-donut-progress\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"computedStrokeWidth()\"\n [attr.stroke]=\"effectiveColor()\"\n [attr.stroke-dasharray]=\"singleDashArray()\"\n [attr.stroke-linecap]=\"lineCap()\"\n fill=\"none\"\n />\n }\n\n <!-- Multi-Segment Mode -->\n @if (segments() !== null) {\n @for (seg of computedSegments(); track seg.index) {\n <circle\n class=\"talos-mini-donut-segment\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"computedStrokeWidth()\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dashArray\"\n [attr.stroke-dashoffset]=\"seg.dashOffset\"\n [attr.stroke-linecap]=\"lineCap()\"\n fill=\"none\"\n (click)=\"onSegmentClick(seg.index)\"\n />\n }\n }\n</svg>\n\n<!-- Center Content Slot or Built-in Text -->\n<div class=\"talos-mini-donut-center\">\n <ng-content>\n @if (showCenterText() && computedCenterText()) {\n <span class=\"talos-mini-donut-center-text\">{{ computedCenterText() }}</span>\n @if (centerSubtext()) {\n <span class=\"talos-mini-donut-center-subtext\">{{ centerSubtext() }}</span>\n }\n }\n </ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosMiniDonutComponent } from './mini-donut.component';\n\n@NgModule({\n imports: [TalosMiniDonutComponent],\n exports: [TalosMiniDonutComponent]\n})\nexport class TalosMiniDonutModule {}\n","/**\n * Types and interfaces for TalosMiniGaugeComponent\n */\n\nexport type MiniGaugeType = 'semi-circle' | 'arch' | 'linear';\n\nexport type GaugeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'responsive' | 'custom';\n\nexport type MiniGaugeIndicator = 'arc' | 'needle' | 'dot';\n\nexport interface GaugeThreshold {\n from: number;\n to: number;\n color: string;\n label?: string;\n}\n\nexport interface GaugeMarker {\n value: number;\n color?: string;\n label?: string;\n shape?: 'line' | 'dot' | 'triangle';\n}\n","import { Component, computed, input } from '@angular/core';\nimport {\n GaugeSize,\n GaugeThreshold,\n MiniGaugeIndicator,\n MiniGaugeType\n} from './mini-gauge.types';\n\nconst PRESET_COLORS: Record<string, string> = {\n primary: '#2563eb',\n blue: '#3b82f6',\n success: '#16a34a',\n emerald: '#10b981',\n danger: '#ef4444',\n rose: '#f43f5e',\n warning: '#f59e0b',\n amber: '#d97706',\n info: '#0284c7',\n cyan: '#06b6d4',\n violet: '#8b5cf6',\n slate: '#64748b'\n};\n\nconst DEFAULT_THRESHOLDS: GaugeThreshold[] = [\n { from: 0, to: 60, color: '#10b981' },\n { from: 60, to: 85, color: '#f59e0b' },\n { from: 85, to: 100, color: '#ef4444' }\n];\n\ninterface ArcSegment {\n path: string;\n color: string;\n from: number;\n to: number;\n isFirst: boolean;\n isLast: boolean;\n}\n\n@Component({\n selector: 'talos-mini-gauge',\n templateUrl: './mini-gauge.component.html',\n styleUrl: './mini-gauge.component.scss',\n host: {\n 'class': 'talos-mini-gauge',\n '[class.talos-gauge-semi-circle]': 'type() === \"semi-circle\"',\n '[class.talos-gauge-arch]': 'type() === \"arch\"',\n '[class.talos-gauge-linear]': 'type() === \"linear\"',\n '[class.talos-gauge-xs]': 'size() === \"xs\"',\n '[class.talos-gauge-sm]': 'size() === \"sm\"',\n '[class.talos-gauge-md]': 'size() === \"md\"',\n '[class.talos-gauge-lg]': 'size() === \"lg\"',\n '[class.talos-gauge-xl]': 'size() === \"xl\"',\n '[class.talos-gauge-responsive]': 'size() === \"responsive\"',\n '[class.talos-gauge-animated]': 'animated()',\n '[style.width]': 'hostWidth()',\n '[style.height]': 'hostHeight()',\n '[attr.role]': '\"meter\"',\n '[attr.aria-valuenow]': 'value()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosMiniGaugeComponent {\n /** Current gauge value */\n readonly value = input<number>(0);\n\n /** Minimum gauge scale */\n readonly min = input<number>(0);\n\n /** Maximum gauge scale */\n readonly max = input<number>(100);\n\n /** Optional target benchmark marker value */\n readonly target = input<number | null>(null);\n\n /** Gauge rendering style */\n readonly type = input<MiniGaugeType>('semi-circle');\n\n /** Value indicator pointer style: arc fill, needle, or dot */\n readonly indicator = input<MiniGaugeIndicator>('arc');\n\n /** Custom colored threshold zones */\n readonly thresholds = input<GaugeThreshold[] | null>(null);\n\n /** Base color or palette when no thresholds are used */\n readonly color = input<string>('primary');\n\n /** Background track color */\n readonly trackColor = input<string | null>(null);\n\n /** Preset size */\n readonly size = input<GaugeSize>('md');\n\n /** Custom width */\n readonly width = input<number | string | null>(null);\n\n /** Custom height */\n readonly height = input<number | string | null>(null);\n\n /** Arc stroke width */\n readonly strokeWidth = input<number>(8);\n\n /** Arc stroke linecap style ('round' | 'butt') */\n readonly lineCap = input<'round' | 'butt'>('round');\n\n /** Show numerical value readout in center/bottom */\n readonly showValue = input<boolean>(true);\n\n /** Show min and max numbers at gauge edges */\n readonly showMinMax = input<boolean>(false);\n\n /** Unit label string (e.g. '%', 'ms', 'rpm') */\n readonly unit = input<string>('');\n\n /** Value formatter */\n readonly valueFormatter = input<(val: number) => string>((val) => val.toLocaleString());\n\n /** Custom ARIA label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Enable animation */\n readonly animated = input<boolean>(true);\n\n /** SVG Coordinate constants */\n protected readonly cx = 50;\n protected readonly cySemi = 44;\n protected readonly cyArch = 42;\n protected readonly radius = 36;\n\n /** Needle length tailored per circular gauge type */\n readonly needleLength = computed(() => {\n return this.type() === 'semi-circle' ? 30 : 26;\n });\n\n readonly hostWidth = computed(() => {\n const custom = this.width();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n if (this.size() === 'responsive') return '100%';\n return null;\n });\n\n readonly hostHeight = computed(() => {\n const custom = this.height();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n return null;\n });\n\n /** Clamped and normalized ratio [0..1] */\n readonly normalizedRatio = computed(() => {\n const val = this.value();\n const minVal = this.min();\n const maxVal = this.max();\n if (maxVal <= minVal) return 0;\n return Math.min(1, Math.max(0, (val - minVal) / (maxVal - minVal)));\n });\n\n /** Target ratio [0..1] */\n readonly targetRatio = computed(() => {\n const tgt = this.target();\n if (tgt === null) return null;\n const minVal = this.min();\n const maxVal = this.max();\n if (maxVal <= minVal) return 0;\n return Math.min(1, Math.max(0, (tgt - minVal) / (maxVal - minVal)));\n });\n\n /** ViewBox string based on gauge type */\n readonly viewBox = computed(() => {\n const t = this.type();\n if (t === 'semi-circle') return '0 0 100 50';\n if (t === 'arch') return '0 0 100 66';\n return '0 0 100 14';\n });\n\n /** Start & End angles in degrees for circular gauge types */\n readonly angleSpan = computed(() => {\n const t = this.type();\n if (t === 'semi-circle') {\n return { start: 180, end: 0, total: 180 };\n }\n // Arch: 240 degree arc from 210° (bottom-left) to -30° (bottom-right)\n return { start: 210, end: -30, total: 240 };\n });\n\n /** Current value angle in degrees */\n readonly currentAngle = computed(() => {\n const { start, total } = this.angleSpan();\n const ratio = this.normalizedRatio();\n return start - ratio * total;\n });\n\n /** Needle transform for needle indicator */\n readonly needleTransform = computed(() => {\n const t = this.type();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const angle = this.currentAngle();\n // SVG rotation: angle 0 is right, 180 is left. Standard SVG rotate origin is center.\n const svgRotation = 180 - angle;\n return `rotate(${svgRotation} ${this.cx} ${cy})`;\n });\n\n /** Target marker position & rotation */\n readonly targetMarkerProps = computed(() => {\n const ratio = this.targetRatio();\n if (ratio === null) return null;\n\n const t = this.type();\n if (t === 'linear') {\n return { x: ratio * 100, y: 0, rotation: 0 };\n }\n\n const { start, total } = this.angleSpan();\n const angle = start - ratio * total;\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const rad = (angle * Math.PI) / 180;\n const r = this.radius;\n\n const x = this.cx + r * Math.cos(rad);\n const y = cy - r * Math.sin(rad);\n\n return { x, y, angle };\n });\n\n /** Dot transform for dot indicator (rotates along the circular arc path) */\n readonly dotTransform = computed(() => {\n const t = this.type();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const angle = this.currentAngle();\n // SVG rotation: angle 0 is right, 180 is left. Standard SVG rotate origin is center.\n const svgRotation = 180 - angle;\n return `rotate(${svgRotation} ${this.cx} ${cy})`;\n });\n\n /** Dot indicator position */\n readonly dotIndicatorPosition = computed(() => {\n const t = this.type();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const angle = this.currentAngle();\n const rad = (angle * Math.PI) / 180;\n const r = this.radius;\n\n const x = this.cx + r * Math.cos(rad);\n const y = cy - r * Math.sin(rad);\n return { x, y };\n });\n\n /** Base track SVG path */\n readonly trackPath = computed(() => {\n const t = this.type();\n if (t === 'linear') return '';\n\n const { start, end } = this.angleSpan();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n return this.createArcSvgPath(this.cx, cy, this.radius, start, end);\n });\n\n /** Active value arc SVG path */\n readonly valueArcPath = computed(() => {\n const t = this.type();\n if (t === 'linear') return '';\n\n const { start } = this.angleSpan();\n const curAngle = this.currentAngle();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n\n // Minimum small arc to prevent SVG zero-length render glitches\n const safeEndAngle = Math.abs(curAngle - start) < 0.1 ? start - 0.1 : curAngle;\n return this.createArcSvgPath(this.cx, cy, this.radius, start, safeEndAngle);\n });\n\n /** Active color based on thresholds or color input */\n readonly activeColor = computed(() => {\n const val = this.value();\n const ths = this.thresholds();\n\n if (ths && ths.length > 0) {\n for (const th of ths) {\n if (val >= th.from && val <= th.to) {\n return PRESET_COLORS[th.color] || th.color;\n }\n }\n return PRESET_COLORS[ths[ths.length - 1].color] || ths[ths.length - 1].color;\n }\n\n const c = this.color();\n return PRESET_COLORS[c] || c;\n });\n\n /** Threshold band segments */\n readonly thresholdSegments = computed<ArcSegment[]>(() => {\n const ths = this.thresholds();\n if (!ths || ths.length === 0) return [];\n\n const t = this.type();\n const minVal = this.min();\n const maxVal = this.max();\n const span = maxVal - minVal;\n if (span <= 0) return [];\n\n const { start, total } = this.angleSpan();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n\n return ths.map((th, idx) => {\n const fromRatio = Math.min(1, Math.max(0, (th.from - minVal) / span));\n const toRatio = Math.min(1, Math.max(0, (th.to - minVal) / span));\n\n const angleStart = start - fromRatio * total;\n const angleEnd = start - toRatio * total;\n\n const path = t !== 'linear' ? this.createArcSvgPath(this.cx, cy, this.radius, angleStart, angleEnd) : '';\n const color = PRESET_COLORS[th.color] || th.color;\n\n return {\n path,\n color,\n from: th.from,\n to: th.to,\n isFirst: idx === 0,\n isLast: idx === ths.length - 1\n };\n });\n });\n\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n const u = this.unit() ? ` ${this.unit()}` : '';\n return `Gauge: ${this.valueFormatter()(this.value())}${u} (Range ${this.min()} to ${this.max()})`;\n });\n\n /** Helper to generate SVG Arc Path 'M x1 y1 A r r 0 largeArc sweep x2 y2' */\n private createArcSvgPath(\n cx: number,\n cy: number,\n r: number,\n startAngleDeg: number,\n endAngleDeg: number\n ): string {\n const startRad = (startAngleDeg * Math.PI) / 180;\n const endRad = (endAngleDeg * Math.PI) / 180;\n\n const x1 = cx + r * Math.cos(startRad);\n const y1 = cy - r * Math.sin(startRad);\n\n const x2 = cx + r * Math.cos(endRad);\n const y2 = cy - r * Math.sin(endRad);\n\n // Delta angle in degrees clockwise\n const deltaAngle = startAngleDeg - endAngleDeg;\n const largeArcFlag = deltaAngle > 180 ? 1 : 0;\n const sweepFlag = 1; // clockwise downwards\n\n return `M ${x1.toFixed(2)} ${y1.toFixed(2)} A ${r} ${r} 0 ${largeArcFlag} ${sweepFlag} ${x2.toFixed(2)} ${y2.toFixed(2)}`;\n }\n}\n","<svg\n class=\"talos-mini-gauge-svg\"\n [attr.viewBox]=\"viewBox()\"\n aria-hidden=\"true\"\n>\n <!-- Circular Types: Semi-circle and Arch -->\n @if (type() === 'semi-circle' || type() === 'arch') {\n <!-- Full Background Track (if no thresholds or as base) -->\n @if (thresholds() === null) {\n <path\n class=\"talos-gauge-track\"\n [attr.d]=\"trackPath()\"\n [attr.stroke]=\"trackColor() || 'var(--talos-border-color, #e2e8f0)'\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n [attr.stroke-linecap]=\"lineCap()\"\n />\n }\n\n <!-- Colored Threshold Bands with curved outer ends -->\n @if (thresholds() !== null) {\n @for (band of thresholdSegments(); track band.from) {\n <path\n class=\"talos-gauge-threshold-band\"\n [attr.d]=\"band.path\"\n [attr.stroke]=\"band.color\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n [attr.stroke-linecap]=\"lineCap() === 'round' && (band.isFirst || band.isLast) ? 'round' : 'butt'\"\n />\n }\n }\n\n <!-- Value Indicator: Arc Fill -->\n @if (indicator() === 'arc' && thresholds() === null) {\n <path\n class=\"talos-gauge-value-arc\"\n [attr.d]=\"valueArcPath()\"\n [attr.stroke]=\"activeColor()\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n [attr.stroke-linecap]=\"lineCap()\"\n />\n }\n\n <!-- Value Indicator: Needle -->\n @if (indicator() === 'needle') {\n <g\n class=\"talos-gauge-needle-group\"\n [attr.transform]=\"needleTransform()\"\n >\n <line\n [attr.x1]=\"cx\"\n [attr.y1]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n [attr.x2]=\"cx - needleLength()\"\n [attr.y2]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n [attr.stroke]=\"activeColor()\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n />\n <circle\n [attr.cx]=\"cx\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"4\"\n [attr.fill]=\"activeColor()\"\n stroke=\"#ffffff\"\n stroke-width=\"1.5\"\n />\n <circle\n [attr.cx]=\"cx\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"1.5\"\n fill=\"#ffffff\"\n />\n </g>\n }\n\n <!-- Value Indicator: Dot Glow Marker -->\n @if (indicator() === 'dot') {\n <g\n class=\"talos-gauge-dot-group\"\n [attr.transform]=\"dotTransform()\"\n >\n <circle\n class=\"talos-gauge-dot-outer\"\n [attr.cx]=\"cx - radius\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"6\"\n [attr.fill]=\"activeColor()\"\n opacity=\"0.3\"\n />\n <circle\n class=\"talos-gauge-dot\"\n [attr.cx]=\"cx - radius\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"3.5\"\n [attr.fill]=\"activeColor()\"\n stroke=\"#ffffff\"\n stroke-width=\"1.5\"\n />\n </g>\n }\n\n <!-- Target Marker Tick -->\n @if (targetMarkerProps(); as tgt) {\n <circle\n class=\"talos-gauge-target-tick\"\n [attr.cx]=\"tgt.x\"\n [attr.cy]=\"tgt.y\"\n r=\"2.5\"\n fill=\"var(--talos-text-color, #0f172a)\"\n stroke=\"#ffffff\"\n stroke-width=\"1\"\n />\n }\n }\n\n <!-- Linear / Bullet Type -->\n @if (type() === 'linear') {\n <!-- Linear Track -->\n <rect\n class=\"talos-gauge-linear-track\"\n x=\"0\"\n y=\"2\"\n width=\"100\"\n height=\"8\"\n rx=\"4\"\n ry=\"4\"\n [attr.fill]=\"trackColor() || 'var(--talos-border-color, #e2e8f0)'\"\n />\n\n <!-- Linear Value Fill -->\n <rect\n class=\"talos-gauge-linear-fill\"\n x=\"0\"\n y=\"2\"\n [attr.width]=\"normalizedRatio() * 100\"\n height=\"8\"\n rx=\"4\"\n ry=\"4\"\n [attr.fill]=\"activeColor()\"\n />\n\n <!-- Linear Target Marker -->\n @if (targetRatio() !== null) {\n <line\n class=\"talos-gauge-linear-target\"\n [attr.x1]=\"targetRatio()! * 100\"\n y1=\"0\"\n [attr.x2]=\"targetRatio()! * 100\"\n y2=\"12\"\n stroke=\"var(--talos-text-color, #0f172a)\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n />\n }\n }\n</svg>\n\n<!-- Center / Bottom Readout -->\n@if (showValue()) {\n <div class=\"talos-gauge-readout\">\n <span class=\"talos-gauge-value\">{{ valueFormatter()(value()) }}</span>\n @if (unit()) {\n <span class=\"talos-gauge-unit\">{{ unit() }}</span>\n }\n </div>\n}\n\n<!-- Min / Max labels -->\n@if (showMinMax()) {\n <div class=\"talos-gauge-minmax\">\n <span class=\"talos-gauge-min\">{{ min() }}</span>\n <span class=\"talos-gauge-max\">{{ max() }}</span>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosMiniGaugeComponent } from './mini-gauge.component';\n\n@NgModule({\n imports: [TalosMiniGaugeComponent],\n exports: [TalosMiniGaugeComponent]\n})\nexport class TalosMiniGaugeModule {}\n","/**\n * Types and interfaces for TalosSparklineComponent\n */\n\nexport type SparklineType = 'line' | 'area' | 'bar';\n\nexport type SparklineSize = 'xs' | 'sm' | 'md' | 'lg' | 'responsive' | 'custom';\n\nexport type SparklineColorScheme =\n | 'primary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'violet'\n | 'emerald'\n | 'rose'\n | 'amber'\n | 'cyan'\n | 'slate'\n | string;\n\nexport type SparklineMarkerMode = 'none' | 'all' | 'endpoints' | 'min-max' | 'last';\n\nexport interface SparklinePoint {\n value: number;\n label?: string;\n date?: string;\n color?: string;\n}\n\nexport type SparklineInputData = (number | SparklinePoint)[];\n\nexport const GOLDEN_RATIO = 1.618;\n\nexport type SparklineAspectRatio = number | 'golden' | string;\n\nexport interface SparklineHoverEvent {\n index: number;\n value: number;\n label?: string;\n x: number;\n y: number;\n}\n","import {\n Component,\n DestroyRef,\n ElementRef,\n afterNextRender,\n computed,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport {\n GOLDEN_RATIO,\n SparklineAspectRatio,\n SparklineColorScheme,\n SparklineHoverEvent,\n SparklineInputData,\n SparklineMarkerMode,\n SparklinePoint,\n SparklineSize,\n SparklineType\n} from './sparkline.types';\n\nconst PRESET_PALETTES: Record<string, { stroke: string; fillStart: string; fillEnd: string }> = {\n primary: { stroke: '#2563eb', fillStart: 'rgba(37, 99, 235, 0.35)', fillEnd: 'rgba(37, 99, 235, 0.0)' },\n blue: { stroke: '#3b82f6', fillStart: 'rgba(59, 130, 246, 0.35)', fillEnd: 'rgba(59, 130, 246, 0.0)' },\n success: { stroke: '#16a34a', fillStart: 'rgba(22, 163, 74, 0.35)', fillEnd: 'rgba(22, 163, 74, 0.0)' },\n emerald: { stroke: '#10b981', fillStart: 'rgba(16, 185, 129, 0.35)', fillEnd: 'rgba(16, 185, 129, 0.0)' },\n danger: { stroke: '#ef4444', fillStart: 'rgba(239, 68, 68, 0.35)', fillEnd: 'rgba(239, 68, 68, 0.0)' },\n rose: { stroke: '#f43f5e', fillStart: 'rgba(244, 63, 94, 0.35)', fillEnd: 'rgba(244, 63, 94, 0.0)' },\n warning: { stroke: '#f59e0b', fillStart: 'rgba(245, 158, 11, 0.35)', fillEnd: 'rgba(245, 158, 11, 0.0)' },\n amber: { stroke: '#d97706', fillStart: 'rgba(217, 119, 6, 0.35)', fillEnd: 'rgba(217, 119, 6, 0.0)' },\n info: { stroke: '#0284c7', fillStart: 'rgba(2, 132, 199, 0.35)', fillEnd: 'rgba(2, 132, 199, 0.0)' },\n cyan: { stroke: '#06b6d4', fillStart: 'rgba(6, 182, 212, 0.35)', fillEnd: 'rgba(6, 182, 212, 0.0)' },\n violet: { stroke: '#8b5cf6', fillStart: 'rgba(139, 92, 246, 0.35)', fillEnd: 'rgba(139, 92, 246, 0.0)' },\n slate: { stroke: '#64748b', fillStart: 'rgba(100, 116, 139, 0.3)', fillEnd: 'rgba(100, 116, 139, 0.0)' }\n};\n\n// Golden Ratio (~1.618:1) and proportional defaults\nconst DEFAULT_SIZE_DIMENSIONS: Record<SparklineSize, { width: number; height: number }> = {\n xs: { width: 64, height: 40 },\n sm: { width: 96, height: 60 },\n md: { width: 130, height: 80 },\n lg: { width: 180, height: 110 },\n responsive: { width: 240, height: 60 },\n custom: { width: 130, height: 80 }\n};\n\nlet uniqueIdCounter = 0;\n\ninterface InternalPoint {\n index: number;\n value: number;\n label?: string;\n date?: string;\n x: number;\n y: number;\n color?: string;\n isMin?: boolean;\n isMax?: boolean;\n isFirst?: boolean;\n isLast?: boolean;\n}\n\ninterface BarSegment {\n index: number;\n value: number;\n label?: string;\n x: number;\n y: number;\n width: number;\n height: number;\n color: string;\n}\n\n@Component({\n selector: 'talos-sparkline',\n templateUrl: './sparkline.component.html',\n styleUrl: './sparkline.component.scss',\n host: {\n 'class': 'talos-sparkline',\n '[class.talos-sparkline-xs]': 'size() === \"xs\"',\n '[class.talos-sparkline-sm]': 'size() === \"sm\"',\n '[class.talos-sparkline-md]': 'size() === \"md\"',\n '[class.talos-sparkline-lg]': 'size() === \"lg\"',\n '[class.talos-sparkline-responsive]': 'size() === \"responsive\"',\n '[style.width]': 'hostWidth()',\n '[style.height]': 'hostHeight()',\n '[style.aspectRatio]': 'computedAspectRatio()',\n '[attr.role]': '\"img\"',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosSparklineComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private resizeObserver?: ResizeObserver;\n\n /** Data points (numbers or objects) */\n readonly data = input<SparklineInputData>([]);\n\n /** Chart type: line, area, or bar */\n readonly type = input<SparklineType>('area');\n\n /** Visual color theme or custom hex code */\n readonly color = input<SparklineColorScheme>('primary');\n\n /** Automatically choose green/red based on first -> last delta */\n readonly autoColorTrend = input<boolean>(false);\n\n /** Smooth Bezier interpolation vs straight line */\n readonly smooth = input<boolean>(true);\n\n /** Stroke line width */\n readonly strokeWidth = input<number>(2);\n\n /** Marker dots display mode */\n readonly showMarkers = input<SparklineMarkerMode>('none');\n\n /** Marker circle radius */\n readonly markerRadius = input<number>(3.5);\n\n /** Optional reference horizontal baseline */\n readonly referenceValue = input<number | null>(null);\n\n /** Show interactive hover tooltip */\n readonly showTooltip = input<boolean>(true);\n\n /** Interactive mouse events enabled */\n readonly interactive = input<boolean>(true);\n\n /** Gap between bars for bar sparklines */\n readonly barGap = input<number>(3);\n\n /** Corner radius for bars */\n readonly barRadius = input<number>(2);\n\n /** Preset size */\n readonly size = input<SparklineSize>('md');\n\n /** Aspect ratio configuration (e.g. 'golden', 1.618, '2:1', '16:9') */\n readonly aspectRatio = input<SparklineAspectRatio | null>(null);\n\n /** Custom width override (e.g. '120px' or '100%') */\n readonly width = input<number | string | null>(null);\n\n /** Custom height override (e.g. '36px') */\n readonly height = input<number | string | null>(null);\n\n /** Explicit minimum value bounds */\n readonly min = input<number | null>(null);\n\n /** Explicit maximum value bounds */\n readonly max = input<number | null>(null);\n\n /** Custom accessible label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Value formatter for tooltip */\n readonly valueFormatter = input<(val: number) => string>((val) => val.toLocaleString());\n\n /** Hover event emitter */\n readonly pointHover = output<SparklineHoverEvent | null>();\n\n /** Click event emitter */\n readonly pointClick = output<SparklineHoverEvent>();\n\n // Unique ID for SVG linear gradient IDs\n readonly gradientId = `talos-sparkline-grad-${++uniqueIdCounter}`;\n\n // Interactive hover state\n protected readonly hoveredPoint = signal<InternalPoint | null>(null);\n protected readonly isHovering = signal<boolean>(false);\n\n // Dynamic container dimensions for 1:1 SVG coordinate rendering (prevents non-uniform stretching)\n protected readonly containerWidth = signal<number>(120);\n protected readonly containerHeight = signal<number>(36);\n\n readonly svgWidth = computed(() => this.containerWidth());\n readonly svgHeight = computed(() => this.containerHeight());\n\n protected readonly padding = computed(() => {\n if (this.type() === 'bar') return 2;\n if (this.showMarkers() !== 'none' || this.interactive()) return 5;\n return 3;\n });\n\n constructor() {\n afterNextRender(() => {\n this.updateDimensions();\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n if (width > 0 && height > 0) {\n this.containerWidth.set(Math.round(width));\n this.containerHeight.set(Math.round(height));\n }\n }\n });\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n this.resizeObserver?.disconnect();\n });\n }\n\n private updateDimensions(): void {\n const el = this.elementRef.nativeElement;\n const rect = el.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n this.containerWidth.set(Math.round(rect.width));\n this.containerHeight.set(Math.round(rect.height));\n } else {\n const defaultDims = DEFAULT_SIZE_DIMENSIONS[this.size()] || DEFAULT_SIZE_DIMENSIONS.md;\n this.containerWidth.set(defaultDims.width);\n this.containerHeight.set(defaultDims.height);\n }\n }\n\n /** Host styles */\n readonly hostWidth = computed(() => {\n const custom = this.width();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n return null;\n });\n\n readonly hostHeight = computed(() => {\n const custom = this.height();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n return null;\n });\n\n readonly computedAspectRatio = computed(() => {\n const ar = this.aspectRatio();\n if (ar === 'golden') return `${GOLDEN_RATIO} / 1`;\n if (typeof ar === 'number') return `${ar} / 1`;\n if (typeof ar === 'string') {\n if (ar.includes(':')) {\n const [w, h] = ar.split(':');\n return `${w.trim()} / ${h.trim()}`;\n }\n return ar;\n }\n return null;\n });\n\n /** Normalized points array */\n readonly normalizedPoints = computed<SparklinePoint[]>(() => {\n const raw = this.data();\n if (!raw || raw.length === 0) return [];\n return raw.map((item, idx) => {\n if (typeof item === 'number') {\n return { value: item };\n }\n return item;\n });\n });\n\n /** Determine effective color palette */\n readonly effectiveColor = computed(() => {\n if (this.autoColorTrend()) {\n const pts = this.normalizedPoints();\n if (pts.length >= 2) {\n const first = pts[0].value;\n const last = pts[pts.length - 1].value;\n if (last >= first) {\n return PRESET_PALETTES['success'];\n } else {\n return PRESET_PALETTES['danger'];\n }\n }\n }\n\n const c = this.color();\n if (PRESET_PALETTES[c]) {\n return PRESET_PALETTES[c];\n }\n // Custom hex/rgb\n return {\n stroke: c,\n fillStart: c.startsWith('#') ? `${c}40` : 'rgba(37, 99, 235, 0.3)',\n fillEnd: c.startsWith('#') ? `${c}00` : 'rgba(37, 99, 235, 0.0)'\n };\n });\n\n /** Min & Max calculation */\n readonly valueBounds = computed(() => {\n const pts = this.normalizedPoints();\n if (pts.length === 0) return { min: 0, max: 100, span: 100, rawMin: 0, rawMax: 100 };\n\n let calculatedMin = pts[0].value;\n let calculatedMax = pts[0].value;\n\n for (const p of pts) {\n if (p.value < calculatedMin) calculatedMin = p.value;\n if (p.value > calculatedMax) calculatedMax = p.value;\n }\n\n // Include reference value if set\n const ref = this.referenceValue();\n if (ref !== null) {\n if (ref < calculatedMin) calculatedMin = ref;\n if (ref > calculatedMax) calculatedMax = ref;\n }\n\n // Explicit override\n const explicitMin = this.min();\n const explicitMax = this.max();\n\n const finalMin = explicitMin !== null ? explicitMin : calculatedMin;\n const finalMax = explicitMax !== null ? explicitMax : calculatedMax;\n\n // Prevent divide by zero if constant value\n const span = finalMax === finalMin ? 1 : finalMax - finalMin;\n\n return { min: finalMin, max: finalMax, span, rawMin: calculatedMin, rawMax: calculatedMax };\n });\n\n /** Computed internal points with SVG coordinates */\n readonly internalPoints = computed<InternalPoint[]>(() => {\n const pts = this.normalizedPoints();\n if (pts.length === 0) return [];\n\n const { min, span, rawMin, rawMax } = this.valueBounds();\n const w = this.svgWidth();\n const h = this.svgHeight();\n const p = this.padding();\n const availableW = Math.max(1, w - p * 2);\n const availableH = Math.max(1, h - p * 2);\n\n const count = pts.length;\n const stepX = count > 1 ? availableW / (count - 1) : availableW / 2;\n\n return pts.map((pt, idx) => {\n const x = count === 1 ? w / 2 : p + idx * stepX;\n // Invert Y because SVG 0 is top\n const normalizedRatio = (pt.value - min) / span;\n const y = h - p - normalizedRatio * availableH;\n\n return {\n index: idx,\n value: pt.value,\n label: pt.label,\n date: pt.date,\n x,\n y,\n color: pt.color,\n isMin: pt.value === rawMin,\n isMax: pt.value === rawMax,\n isFirst: idx === 0,\n isLast: idx === count - 1\n };\n });\n });\n\n /** SVG Path line data */\n readonly linePath = computed<string>(() => {\n const pts = this.internalPoints();\n if (pts.length < 2) return '';\n\n if (!this.smooth()) {\n return pts.map((p, idx) => `${idx === 0 ? 'M' : 'L'} ${p.x.toFixed(2)} ${p.y.toFixed(2)}`).join(' ');\n }\n\n // Smooth Bezier Curve (Catmull-Rom or Monotone-like control points)\n let d = `M ${pts[0].x.toFixed(2)} ${pts[0].y.toFixed(2)}`;\n for (let i = 0; i < pts.length - 1; i++) {\n const p0 = i > 0 ? pts[i - 1] : pts[i];\n const p1 = pts[i];\n const p2 = pts[i + 1];\n const p3 = i < pts.length - 2 ? pts[i + 2] : p2;\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`;\n }\n return d;\n });\n\n /** SVG Area path (closed polygon under curve) */\n readonly areaPath = computed<string>(() => {\n const line = this.linePath();\n const pts = this.internalPoints();\n if (!line || pts.length < 2) return '';\n\n const lastPt = pts[pts.length - 1];\n const firstPt = pts[0];\n const baselineY = this.svgHeight();\n\n return `${line} L ${lastPt.x.toFixed(2)} ${baselineY} L ${firstPt.x.toFixed(2)} ${baselineY} Z`;\n });\n\n /** Bar chart segments */\n readonly barSegments = computed<BarSegment[]>(() => {\n const pts = this.normalizedPoints();\n if (pts.length === 0) return [];\n\n const explicitMin = this.min();\n const explicitMax = this.max();\n const { rawMin, rawMax } = this.valueBounds();\n\n // For bar charts, default baseline is 0 unless min is explicitly provided\n const barMin = explicitMin !== null ? explicitMin : Math.min(0, rawMin);\n const barMax = explicitMax !== null ? explicitMax : Math.max(0, rawMax);\n const barSpan = barMax === barMin ? (barMax !== 0 ? Math.abs(barMax) : 1) : barMax - barMin;\n\n const w = this.svgWidth();\n const h = this.svgHeight();\n const p = this.padding();\n const gap = this.barGap();\n const count = pts.length;\n\n const availableW = Math.max(1, w - p * 2);\n const totalGaps = (count - 1) * gap;\n const barW = Math.max(2, (availableW - totalGaps) / count);\n const availableH = Math.max(1, h - p * 2);\n const baseColor = this.effectiveColor().stroke;\n\n // Calculate Y position of zero baseline\n const zeroRatio = Math.max(0, Math.min(1, (0 - barMin) / barSpan));\n const zeroY = h - p - zeroRatio * availableH;\n\n return pts.map((pt, idx) => {\n const x = p + idx * (barW + gap);\n const val = pt.value;\n\n let y: number;\n let barH: number;\n\n if (barMin >= 0) {\n // All positive (standard case)\n const ratio = Math.max(0, Math.min(1, (val - barMin) / barSpan));\n barH = Math.max(2, ratio * availableH);\n y = h - p - barH;\n } else if (barMax <= 0) {\n // All negative\n const ratio = Math.max(0, Math.min(1, Math.abs(val) / barSpan));\n barH = Math.max(2, ratio * availableH);\n y = p;\n } else {\n // Mixed positive & negative values around zero baseline\n if (val >= 0) {\n const ratio = Math.min(1, val / barSpan);\n barH = Math.max(2, ratio * availableH);\n y = zeroY - barH;\n } else {\n const ratio = Math.min(1, Math.abs(val) / barSpan);\n barH = Math.max(2, ratio * availableH);\n y = zeroY;\n }\n }\n\n return {\n index: idx,\n value: pt.value,\n label: pt.label,\n x,\n y,\n width: barW,\n height: barH,\n color: pt.color || baseColor\n };\n });\n });\n\n /** Highlight markers based on showMarkers input */\n readonly markersToRender = computed<InternalPoint[]>(() => {\n const mode = this.showMarkers();\n if (mode === 'none') return [];\n const pts = this.internalPoints();\n\n switch (mode) {\n case 'all':\n return pts;\n case 'endpoints':\n return pts.filter((p) => p.isFirst || p.isLast);\n case 'min-max':\n return pts.filter((p) => p.isMin || p.isMax);\n case 'last':\n return pts.length > 0 ? [pts[pts.length - 1]] : [];\n default:\n return [];\n }\n });\n\n /** Reference baseline Y coordinate */\n readonly referenceLineY = computed<number | null>(() => {\n const ref = this.referenceValue();\n if (ref === null) return null;\n\n const { min, span } = this.valueBounds();\n const h = this.svgHeight();\n const p = this.padding();\n const availableH = Math.max(1, h - p * 2);\n const ratio = (ref - min) / span;\n return h - p - ratio * availableH;\n });\n\n /** Aria label for accessibility */\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n\n const pts = this.normalizedPoints();\n if (pts.length === 0) return 'Empty sparkline';\n const first = pts[0].value;\n const last = pts[pts.length - 1].value;\n const delta = last - first;\n const direction = delta >= 0 ? 'increased' : 'decreased';\n return `Sparkline trend: ${first} to ${last} (${direction} by ${Math.abs(delta).toFixed(1)})`;\n });\n\n /** Handle mouse move for interactive hover tracking */\n protected onMouseMove(event: MouseEvent): void {\n if (!this.interactive()) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const mouseX = event.clientX - rect.left;\n\n if (this.type() === 'bar') {\n const bars = this.barSegments();\n if (bars.length === 0) return;\n\n let nearest = bars[0];\n let minDistance = Math.abs(bars[0].x + bars[0].width / 2 - mouseX);\n\n for (let i = 1; i < bars.length; i++) {\n const centerX = bars[i].x + bars[i].width / 2;\n const dist = Math.abs(centerX - mouseX);\n if (dist < minDistance) {\n minDistance = dist;\n nearest = bars[i];\n }\n }\n\n const point: InternalPoint = {\n index: nearest.index,\n value: nearest.value,\n label: nearest.label,\n x: Math.round(nearest.x + nearest.width / 2),\n y: nearest.y\n };\n\n this.hoveredPoint.set(point);\n this.isHovering.set(true);\n\n this.pointHover.emit({\n index: nearest.index,\n value: nearest.value,\n label: nearest.label,\n x: point.x,\n y: point.y\n });\n return;\n }\n\n const pts = this.internalPoints();\n if (pts.length === 0) return;\n\n // Find nearest point based on direct pixel coordinate\n let nearest = pts[0];\n let minDistance = Math.abs(pts[0].x - mouseX);\n\n for (let i = 1; i < pts.length; i++) {\n const dist = Math.abs(pts[i].x - mouseX);\n if (dist < minDistance) {\n minDistance = dist;\n nearest = pts[i];\n }\n }\n\n this.hoveredPoint.set(nearest);\n this.isHovering.set(true);\n\n this.pointHover.emit({\n index: nearest.index,\n value: nearest.value,\n label: nearest.label,\n x: nearest.x,\n y: nearest.y\n });\n }\n\n /** Handle mouse leave */\n protected onMouseLeave(): void {\n if (!this.interactive()) return;\n this.hoveredPoint.set(null);\n this.isHovering.set(false);\n this.pointHover.emit(null);\n }\n\n /** Handle point click */\n protected onPointClick(point: InternalPoint | BarSegment): void {\n const x = 'width' in point ? Math.round(point.x + point.width / 2) : ('x' in point ? point.x : 0);\n this.pointClick.emit({\n index: point.index,\n value: point.value,\n label: point.label,\n x,\n y: 'y' in point ? point.y : 0\n });\n }\n}\n","<svg\n class=\"talos-sparkline-svg\"\n [attr.viewBox]=\"'0 0 ' + svgWidth() + ' ' + svgHeight()\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseleave)=\"onMouseLeave()\"\n aria-hidden=\"true\"\n>\n <defs>\n <linearGradient [id]=\"gradientId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" [attr.stop-color]=\"effectiveColor().fillStart\" />\n <stop offset=\"100%\" [attr.stop-color]=\"effectiveColor().fillEnd\" />\n </linearGradient>\n </defs>\n\n <!-- Reference Baseline (if provided) -->\n @if (referenceLineY() !== null) {\n <line\n class=\"talos-sparkline-reference-line\"\n [attr.x1]=\"0\"\n [attr.y1]=\"referenceLineY()\"\n [attr.x2]=\"svgWidth()\"\n [attr.y2]=\"referenceLineY()\"\n />\n }\n\n <!-- Chart Type: Area / Line -->\n @if (type() === 'area' || type() === 'line') {\n @if (type() === 'area' && areaPath()) {\n <path\n class=\"talos-sparkline-area\"\n [attr.d]=\"areaPath()\"\n [attr.fill]=\"'url(#' + gradientId + ')'\"\n />\n }\n\n @if (linePath()) {\n <path\n class=\"talos-sparkline-line\"\n [attr.d]=\"linePath()\"\n [attr.stroke]=\"effectiveColor().stroke\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n }\n }\n\n <!-- Chart Type: Bar -->\n @if (type() === 'bar') {\n @for (bar of barSegments(); track bar.index) {\n <rect\n class=\"talos-sparkline-bar\"\n [class.talos-sparkline-bar-hovered]=\"isHovering() && hoveredPoint()?.index === bar.index\"\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.rx]=\"barRadius()\"\n [attr.ry]=\"barRadius()\"\n [attr.fill]=\"bar.color\"\n (click)=\"onPointClick(bar)\"\n />\n }\n }\n\n <!-- Highlight Markers -->\n @for (marker of markersToRender(); track marker.index) {\n <circle\n class=\"talos-sparkline-marker\"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"markerRadius()\"\n [attr.fill]=\"marker.color || effectiveColor().stroke\"\n [attr.stroke]=\"'#ffffff'\"\n [attr.stroke-width]=\"1.5\"\n (click)=\"onPointClick(marker)\"\n />\n }\n\n <!-- Interactive Hover Crosshair / Cursor Dot (Line/Area only) -->\n @if (type() !== 'bar' && isHovering() && hoveredPoint(); as pt) {\n <line\n class=\"talos-sparkline-cursor-line\"\n [attr.x1]=\"pt.x\"\n [attr.y1]=\"0\"\n [attr.x2]=\"pt.x\"\n [attr.y2]=\"svgHeight()\"\n />\n <circle\n class=\"talos-sparkline-hover-dot-outer\"\n [attr.cx]=\"pt.x\"\n [attr.cy]=\"pt.y\"\n [attr.r]=\"markerRadius() + 2.5\"\n [attr.fill]=\"effectiveColor().stroke\"\n opacity=\"0.25\"\n />\n <circle\n class=\"talos-sparkline-hover-dot\"\n [attr.cx]=\"pt.x\"\n [attr.cy]=\"pt.y\"\n [attr.r]=\"markerRadius() + 0.5\"\n [attr.fill]=\"effectiveColor().stroke\"\n stroke=\"#ffffff\"\n [attr.stroke-width]=\"1.5\"\n />\n }\n</svg>\n\n<!-- Floating Tooltip on Hover -->\n@if (showTooltip() && isHovering() && hoveredPoint(); as pt) {\n <div\n class=\"talos-sparkline-tooltip\"\n [style.left.px]=\"pt.x\"\n >\n @if (pt.label) {\n <span class=\"talos-sparkline-tooltip-label\">{{ pt.label }}</span>\n }\n <span class=\"talos-sparkline-tooltip-value\">{{ valueFormatter()(pt.value) }}</span>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosSparklineComponent } from './sparkline.component';\n\n@NgModule({\n imports: [TalosSparklineComponent],\n exports: [TalosSparklineComponent]\n})\nexport class TalosSparklineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PRESET_COLORS"],"mappings":";;;;;;;;;;AAAA;;AAEG;;ACsBH,MAAM,cAAc,GAA2B;AAC7C,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,KAAK,EAAE;CACR;AAED,MAAM,mBAAmB,GAAa;AACpC,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,SAAS;CACV;MAqBY,yBAAyB,CAAA;AACnB,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEzE;;AAEG;IACM,MAAM,GAAG,KAAK,CAAkB,IAAI;+EAAC;AAE9C;;AAEG;IACM,UAAU,GAAG,KAAK,CAA8B,IAAI;mFAAC;AAE9D;;AAEG;IACM,MAAM,GAAG,KAAK,CAAW,mBAAmB;+EAAC;AAEtD;;AAEG;IACM,WAAW,GAAG,KAAK,CAAgB,IAAI;oFAAC;AAEjD;;AAEG;IACM,MAAM,GAAG,KAAK,CAA2B,IAAI;+EAAC;AAEvD;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAgB,IAAI;iFAAC;AAE9C;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAgB,IAAI;iFAAC;AAE9C;;AAEG;IACM,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;AAE1C;;AAEG;IACM,MAAM,GAAG,KAAK,CAAkB,IAAI;+EAAC;AAE9C;;AAEG;IACM,aAAa,GAAG,KAAK,CAA2B,KAAK;sFAAC;AAE/D;;AAEG;IACM,cAAc,GAAG,KAAK,CAAoD,IAAI;uFAAC;AAExF;;AAEG;IACM,cAAc,GAAG,KAAK,CAAqC,IAAI;uFAAC;AAEzE;;AAEG;IACM,eAAe,GAAG,KAAK,CAAqC,IAAI;wFAAC;AAE1E;;AAEG;IACM,IAAI,GAAG,KAAK,CAAkB,IAAI;6EAAC;AAE5C;;AAEG;IACM,KAAK,GAAG,KAAK,CAAmB,MAAM;8EAAC;AAEhD;;AAEG;IACM,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAElC;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAS,EAAE;iFAAC;AAErC;;AAEG;IACM,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;AAE3C;;AAEG;IACM,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;AAE3C;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;AAExC;;AAEG;IACM,YAAY,GAAG,MAAM,EAAgC;AAE9D;;AAEG;IACM,WAAW,GAAG,MAAM,EAA+B;AAE5D;;AAEG;IACM,YAAY,GAAG,MAAM,EAAqC;;IAGhD,cAAc,GAAG,MAAM,CAAoC,IAAI;uFAAC;IAChE,aAAa,GAAG,MAAM,CAAU,KAAK;sFAAC;IACtC,eAAe,GAAG,MAAM,CAAkC,IAAI;wFAAC;AAElF;;AAEG;AACc,IAAA,aAAa,GAAG,QAAQ,CAAuB,MAAK;AACnE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM;AAC7B,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,KAAK,EAAE,CAAA,SAAA,EAAY,GAAG,GAAG,CAAC,CAAA;AAC3B,aAAA,CAAC,CAAC;QACL;AACA,QAAA,OAAO,EAAE;IACX,CAAC;sFAAC;AAEF;;AAEG;AACc,IAAA,eAAe,GAAG,QAAQ,CAAW,MAAK;AACzD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;QAClC,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD;AACA,QAAA,OAAO,mBAAmB;IAC5B,CAAC;wFAAC;AAEF;;AAEG;AACgB,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AAClD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AAChC,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;iFAAC;AAEF;;AAEG;AACgB,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAK;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,OAAO,SAAS,KAAK,IAAI,GAAG,SAAS,GAAG,CAAC;IAC3C,CAAC;oFAAC;AAEF;;AAEG;AACgB,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAK;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,SAAS,KAAK,IAAI,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;IAC5B,CAAC;oFAAC;AAEF;;AAEG;AACgB,IAAA,kBAAkB,GAAG,QAAQ,CAA+B,MAAK;AAClF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;QAExC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AAClC,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,UAAU,GAAG,CAAC;QAElB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC7B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,GAAG;YACtC,MAAM,KAAK,GAAG,UAAU;AACxB,YAAA,MAAM,GAAG,GAAG,UAAU,GAAG,GAAG;YAC5B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG;YAC1C,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,GAAG;YACtC,UAAU,GAAG,GAAG;;AAGhB,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;AACtB,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC9B,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW;YAC9D;YACA,IAAI,CAAC,KAAK,EAAE;gBACV,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;YACzC;AAEA,YAAA,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA,SAAA,EAAY,KAAK,GAAG,CAAC,CAAA,CAAE;AACnD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,KAAK,CAAA,EAAA,EAAK,YAAY,CAAA,EAAA,EAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAE3F,OAAO;gBACL,KAAK;AACL,gBAAA,KAAK,EAAE,GAAG;gBACV,KAAK;gBACL,KAAK;gBACL,UAAU;AACV,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,aAAa,EAAE,GAAG;AAClB,gBAAA,sBAAsB,EAAE,YAAY;AACpC,gBAAA,oBAAoB,EAAE,UAAU;AAChC,gBAAA,cAAc,EAAE,YAAY;gBAC5B,WAAW;AACX,gBAAA,GAAG,EAAE;aACN;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;2FAAC;AAEF;;AAEG;AACgB,IAAA,WAAW,GAAG,QAAQ,CAA0B,MAAK;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,EAAE;AACzD,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;QAE9B,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM;YACjC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;gBACtC,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;gBAC/D,OAAO;oBACL,KAAK;AACL,oBAAA,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,WAAW,IAAI,GAAG;oBAC9C,IAAI;oBACJ;iBACD;AACH,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,EAAE;QACX;;QAGA,MAAM,KAAK,GAA4B,EAAE;;QAGzC,MAAM,QAAQ,GAAG,GAAG;AACpB,QAAA,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,cAAc,EAAE;QAClF,KAAK,CAAC,IAAI,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAC5B,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa;YAC7B,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE;YACzE,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,GAAG,GAAG,CAAC;AACd,gBAAA,KAAK,EAAE,GAAG;gBACV,IAAI;gBACJ,WAAW,EAAE,GAAG,CAAC;AAClB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,KAAK;IACd,CAAC;oFAAC;AAEF;;AAEG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAgB,MAAK;AAC1D,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACvB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;YACpC,OAAO,CAAC,CAAC,KAAK;QAChB;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,QAAA,OAAO,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,GAAG,IAAI;IAC3C,CAAC;kFAAC;AAEF;;AAEG;AACgB,IAAA,WAAW,GAAG,QAAQ,CAO/B,MAAK;AACb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,QAAA,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG;AACtB,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;AACb,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG;AAC7C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAE7D,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;AACzC,QAAA,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE;;AAGxE,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK;QACpB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;YAC1C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,CAAC,IAAI,cAAc,IAAI,CAAC,CAAC,sBAAsB,IAAI,cAAc,IAAI,CAAC,CAAC,oBAAoB,CAC5F;AACD,YAAA,KAAK,GAAG,cAAc,GAAG,cAAc,CAAC,KAAK,GAAG,SAAS;QAC3D;QAEA,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAA,QAAA,EAAW,YAAY,CAAA,CAAE;AACnD,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;AACxE,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM;QAEpC,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,cAAc;YACvB,KAAK;YACL,KAAK;YACL,OAAO;YACP;SACD;IACH,CAAC;oFAAC;AAEF;;AAEG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAS,MAAK;AACnD,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,CAAC,EAAE;AACL,YAAA,OAAO,GAAG,CAAC,CAAA,SAAA,EAAY,KAAK,CAAA,EAAG,IAAI,KAAK,IAAI,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAE,GAAG,EAAE,EAAE;QACnF;QACA,OAAO,CAAA,kBAAA,EAAqB,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAA,oBAAA,EAAuB,KAAK,CAAA,CAAE;IACvF,CAAC;kFAAC;;IAGF,cAAc,CAAC,GAA+B,EAAE,KAAY,EAAA;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB;AACD,SAAA,CAAC;IACJ;IAEA,mBAAmB,CAAC,GAA+B,EAAE,KAAiB,EAAA;AACpE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,QAAA,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,YAAA,MAAM,IAAI,GAAsB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAChE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB;AACD,aAAA,CAAC;QACJ;IACF;AAEQ,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC5C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC3C,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACvB,YAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAC5B,YAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACzB,SAAA,CAAC;IACJ;uGAraW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1EtC,qqIAmFC,EAAA,MAAA,EAAA,CAAA,2wMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1BW,qBAAqB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAiBpB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB,CAAC,qBAAqB,CAAC,EAAA,IAAA,EAG1B;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC7B,wBAAA,qCAAqC,EAAE,YAAY;AACnD,wBAAA,+BAA+B,EAAE,iBAAiB;AAClD,wBAAA,+BAA+B,EAAE,iBAAiB;AAClD,wBAAA,+BAA+B,EAAE,iBAAiB;AAClD,wBAAA,+BAA+B,EAAE,iBAAiB;AAClD,wBAAA,aAAa,EAAE,SAAS;AACxB,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,qqIAAA,EAAA,MAAA,EAAA,CAAA,2wMAAA,CAAA,EAAA;;;MEjEU,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,OAAA,EAAA,CAHvB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzB,yBAAyB,CAAA,EAAA,CAAA;wGAExB,sBAAsB,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB;AACpC,iBAAA;;;ACoDD,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAQtE,MAAM,cAAc,GAGhB;AACF,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;AAC7B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;AAC7B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;AAC5B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AAC7B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;AAC9B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AAC5B,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;AAC7B,QAAA,WAAW,EAAE;AACd;CACF;MAuCY,qBAAqB,CAAA;AACf,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGhE,IAAI,GAAG,KAAK,CAAmB,EAAE;6EAAC;IAClC,OAAO,GAAG,KAAK,CAAkB,EAAE;gFAAC;IACpC,gBAAgB,GAAG,KAAK,CAAqB,SAAS;yFAAC;IACvD,QAAQ,GAAG,KAAK,CAAkB,MAAM;iFAAC;IACzC,SAAS,GAAG,KAAK,CAAwB,IAAI;kFAAC;IAC9C,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,KAAK,GAAG,KAAK,CAAS,eAAe;8EAAC;AACtC,IAAA,UAAU,GAAG,KAAK,CAAmB,CAAC,CAAC,EAAE,EAAE,CAAC;mFAAC;IAC7C,UAAU,GAAG,KAAK,CAAoB,KAAK;mFAAC;IAC5C,IAAI,GAAG,KAAK,CAAW,YAAY;6EAAC;IACpC,WAAW,GAAG,KAAK,CAAqB,QAAQ;oFAAC;IACjD,gBAAgB,GAAG,KAAK,CAA+B,SAAS;yFAAC;IACjE,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,SAAS,GAAG,KAAK,CAAmB,MAAM;kFAAC;IAC3C,QAAQ,GAAG,KAAK,CAAkB,IAAI;iFAAC;IACvC,QAAQ,GAAG,KAAK,CAAsB,SAAS;iFAAC;IAChD,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;IAClC,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;IAClC,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,YAAY,GAAG,KAAK,CAAU,KAAK;qFAAC;IACpC,kBAAkB,GAAG,KAAK,CAAU,KAAK;2FAAC;IAC1C,mBAAmB,GAAG,KAAK,CAAU,KAAK;4FAAC;IAC3C,gBAAgB,GAAG,KAAK,CAA2B,IAAI;yFAAC;IACxD,IAAI,GAAG,KAAK,CAAS,EAAE;6EAAC;IACxB,QAAQ,GAAG,KAAK,CAAqB,SAAS;iFAAC;IAC/C,QAAQ,GAAG,KAAK,CAAqB,SAAS;iFAAC;;IAG/C,SAAS,GAAG,MAAM,EAAyB;IAC3C,SAAS,GAAG,MAAM,EAAsB;IACxC,eAAe,GAAG,MAAM,EAAoB;IAC5C,OAAO,GAAG,MAAM,EAAQ;IACxB,YAAY,GAAG,MAAM,EAAiB;IACtC,MAAM,GAAG,MAAM,EAAkD;;IAGjE,UAAU,GAAG,MAAM,CAAU,KAAK;mFAAC;IACnC,oBAAoB,GAAG,MAAM,CAAU,KAAK;6FAAC;IAC7C,oBAAoB,GAAG,MAAM,CAAU,KAAK;6FAAC;IAC7C,WAAW,GAAG,MAAM,CAAqB,IAAI;oFAAC;IAC9C,YAAY,GAAG,MAAM,CAAgD,IAAI;qFAAC;;AAG1E,IAAA,UAAU,GAAG,QAAQ,CAAU,MAAK;AAC3C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC1B,IAAI,EAAE,KAAK,SAAS;AAAE,YAAA,OAAO,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,QAAQ;IACtC,CAAC;mFAAC;;AAGO,IAAA,aAAa,GAAG,QAAQ,CAA4B,MAAK;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS;AAChD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC1C,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC;AACnD,YAAA,IAAI,KAAK;AAAE,gBAAA,OAAO,KAAK;QACzB;AACA,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB,CAAC;sFAAC;;AAGO,IAAA,iBAAiB,GAAG,QAAQ,CAAqB,MAAK;AAC7D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,WAAW;AAC3D,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B,CAAC;0FAAC;;AAGO,IAAA,UAAU,GAAG,QAAQ,CAAS,MAAK;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,IAAI;AAC3D,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB,CAAC;mFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAmB,MAAK;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,IAAI;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB,CAAC;wFAAC;;AAGO,IAAA,KAAK,GAAG,QAAQ,CAAW,MAAK;QACvC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;AACtC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAa,EAAE;AAC3B,QAAA,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChB;AACA,QAAA,OAAO,MAAM;IACf,CAAC;8EAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAA2C,MAAK;AACjF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,QAAA,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;YACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;QACnC;QACA,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAgB,CAAC,CAAC,GAAG,IAAI;AACzE,QAAA,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,OAAc,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvF,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC7B,CAAC;wFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAA4D,MAAK;QAC/F,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE;AAC7C,QAAA,MAAM,cAAc,GAAG,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;QAEpD,MAAM,KAAK,GAA8D,EAAE;AAC3E,QAAA,IAAI,gBAAgB,GAAG,cAAc,CAAC,cAAc,CAAC;AACrD,QAAA,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC;AAE9C,QAAA,OAAO,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE;YAC1F,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACnD,MAAM,UAAU,GAAW,EAAE;AAE7B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC/C;AAEA,YAAA,MAAM,KAAK,GAAG,CAAA,EAAG,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA,GAAA,EAAM,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;YACjG,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;AACL,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,GAAG,EAAE,cAAc;AACnB,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;AAEF,YAAA,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClD;AAEA,QAAA,OAAO,KAAK;IACd,CAAC;qFAAC;;;;AAKO,IAAA,kBAAkB,GAAG,QAAQ,CAAiE,MAAK;AAC1G,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6D;AAChF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE;AAC/B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEvC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,GAAG;AAEzB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,GAAG;AAErC,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC;YAE7B,IACE,OAAO,SAAS,KAAK,QAAQ;AAC7B,gBAAA,SAAS,YAAY,IAAI;iBACxB,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,EACzD;;AAEC,gBAAA,QAAiC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAChD,oBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;AACzB,oBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACjB,wBAAA,IAAI,eAAe,KAAK,KAAK,EAAE;4BAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;4BAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAChC,4BAAA,IAAI,QAAQ;AAAE,gCAAA,QAAQ,CAAC,KAAK,IAAI,CAAC;;gCAC5B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;wBACpC;6BAAO;AACL,4BAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;4BAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;4BACvC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,OAAO;AACxG,4BAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,4BAAA,MAAM,GAAG,GAAG,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,IAAI,EAAE;4BACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,4BAAA,IAAI,QAAQ;AAAE,gCAAA,QAAQ,CAAC,KAAK,IAAI,CAAC;;gCAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;wBACjC;oBACF;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;;AAEJ,gBAAA,QAA+B,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACjD,oBAAA,IAAI,eAAe,KAAK,KAAK,EAAE;wBAC7B,IAAI,MAAM,GAAG,EAAE;AACf,wBAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,4BAAA,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;kCAC3E,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE;AAC5B,kCAAE,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;wBACpD;AAAO,6BAAA,IAAI,KAAK,CAAC,GAAG,YAAY,IAAI,EAAE;4BACpC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC;wBAC9C;AAAO,6BAAA,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BAChF,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;wBACrC;6BAAO;4BACL,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;wBAClC;wBAEA,IAAI,MAAM,EAAE;4BACV,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;4BAChC,IAAI,QAAQ,EAAE;AACZ,gCAAA,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;gCAC7B,IAAI,KAAK,CAAC,IAAI;AAAE,oCAAA,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;4BACrE;iCAAO;AACL,gCAAA,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;4BAC3D;wBACF;oBACF;yBAAO;;wBAEL,IAAI,MAAM,GAAG,EAAE;AACf,wBAAA,IAAI,KAAK,CAAC,GAAG,YAAY,IAAI,EAAE;AAC7B,4BAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;4BAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;4BAC5C,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,OAAO;wBAChG;AAAO,6BAAA,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,4BAAA,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;wBACtD;6BAAO;4BACL,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;wBAClC;AAEA,wBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5B,wBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,EAAE;wBAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;wBAC7B,IAAI,QAAQ,EAAE;AACZ,4BAAA,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;4BAC7B,IAAI,KAAK,CAAC,IAAI;AAAE,gCAAA,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;wBACrE;6BAAO;AACL,4BAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;wBACxD;oBACF;AACF,gBAAA,CAAC,CAAC;YACJ;QACF;AAAO,aAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;;YAEvC,MAAM,MAAM,GAAG,QAA6B;AAC5C,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAI;gBACtD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrD,oBAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAI;wBACnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,wBAAA,IAAI,eAAe,KAAK,KAAK,EAAE;AAC7B,4BAAA,MAAM,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,EAAE;4BACrC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;wBACjC;6BAAO;4BACL,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAC5C,IAAI,WAAW,EAAE;AACf,gCAAA,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC7B,gCAAA,MAAM,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,EAAE;gCACjC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;4BACjC;iCAAO;AACL,gCAAA,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC7B,gCAAA,MAAM,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,EAAE;gCACjC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;4BACjC;wBACF;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,OAAO,GAAG;IACZ,CAAC;2FAAC;;AAGO,IAAA,mBAAmB,GAAG,QAAQ,CAA+B,MAAK;AACzE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAErC,IAAI,OAAO,GAAG,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO;AAAE,gBAAA,OAAO,GAAG,IAAI,CAAC,KAAK;QAChD;AAEA,QAAA,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,CAAC;QACnD,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;AAEtE,QAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;IACrB,CAAC;4FAAC;;AAGO,IAAA,iBAAiB,GAAG,QAAQ,CAAS,MAAK;AACjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,IAAI,cAAc,CAAC,MAAM,CAAC,WAAW;IACjF,CAAC;0FAAC;;AAGO,IAAA,aAAa,GAAG,QAAQ,CAA4C,MAAK;AAChF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEvC,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D;;AAGA,QAAA,IAAI,eAAe,KAAK,KAAK,EAAE;AAC7B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC9B,YAAA,GAAG,EAAE,IAAI;YACT,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM;AACzC,SAAA,CAAC,CAAC;IACL,CAAC;sFAAC;;AAGO,IAAA,QAAQ,GAAG,QAAQ,CAAkE,MAAK;AACjG,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACrC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC/C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACvC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM;AAC/D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,UAAU,GAAG,OAAO,GAAG,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,GAAG,EAAE;AAC/C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAEhC,QAAA,MAAM,UAAU,GAAG,CAAC,GAAW,KAAI;AACjC,YAAA,MAAM,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACrF,IAAI,OAAO,GAAG,EAAE;YAChB,IAAI,SAAS,GAAG,EAAE;AAClB,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI;YAC/B;iBAAO;AACL,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;AACjF,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;AACjF,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;gBACjF,OAAO,GAAG,OAAO,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,GAAG;AACjC,gBAAA,SAAS,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI;YAC/D;AACA,YAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;AAC1C,QAAA,CAAC;;AAGD,QAAA,IAAI,eAAe,KAAK,KAAK,EAAE;AAC7B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YAEnE,IAAI,CAAC,SAAS,EAAE;;gBAEd,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAI;AACjC,oBAAA,MAAM,KAAK,GAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,KAAI;wBACvD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC;AAC3C,wBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;AACjC,wBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,OAAO,IAAI,OAAO,CAAA,CAAE,CAAC;AAClE,wBAAA,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC;AAC7B,wBAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC;AACzD,wBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,UAAU,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,EAAG,UAAU,EAAE;wBAE7E,OAAO;AACL,4BAAA,EAAE,EAAE,OAAO;AACX,4BAAA,MAAM,EAAE,OAAO;4BACf,QAAQ,EAAE,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,CAAG;4BAC9C,MAAM,EAAE,IAAI,CAAC,KAAK;4BAClB,QAAQ,EAAE,IAAI,CAAC,KAAK;AACpB,4BAAA,KAAK,EAAE,GAAG;4BACV,SAAS;AACT,4BAAA,eAAe,EAAE,OAAO;4BACxB,SAAS;AACT,4BAAA,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC;AAC3B,4BAAA,WAAW,EAAE,OAAO;AACpB,4BAAA,IAAI,EAAE,CAAC;4BACP,IAAI,EAAE,KAAK,EAAE;yBACd;AACH,oBAAA,CAAC,CAAC;oBAEF,OAAO;wBACL,GAAG,EAAE,IAAI,CAAC,KAAK;wBACf,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB;qBACD;AACH,gBAAA,CAAC,CAAC;YACJ;iBAAO;;gBAEL,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;oBACvC,MAAM,KAAK,GAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAI;wBACvD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC;AAC3C,wBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,OAAO,IAAI,OAAO,CAAA,CAAE,CAAC;AAClE,wBAAA,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC;AAC7B,wBAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC;AACzD,wBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,UAAU,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,EAAG,UAAU,EAAE;wBAE7E,OAAO;4BACL,EAAE,EAAE,CAAA,EAAG,OAAO,CAAA,QAAA,CAAU;4BACxB,MAAM,EAAE,IAAI,CAAC,KAAK;4BAClB,QAAQ,EAAE,IAAI,CAAC,KAAK;AACpB,4BAAA,MAAM,EAAE,OAAO;AACf,4BAAA,QAAQ,EAAE,OAAO;AACjB,4BAAA,KAAK,EAAE,GAAG;4BACV,SAAS;AACT,4BAAA,eAAe,EAAE,OAAO;4BACxB,SAAS;AACT,4BAAA,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC;AAC3B,4BAAA,WAAW,EAAE,OAAO;AACpB,4BAAA,IAAI,EAAE,CAAC;4BACP,IAAI,EAAE,KAAK,EAAE;yBACd;AACH,oBAAA,CAAC,CAAC;oBAEF,OAAO;AACL,wBAAA,GAAG,EAAE,OAAO;AACZ,wBAAA,KAAK,EAAE,OAAO;wBACd;qBACD;AACH,gBAAA,CAAC,CAAC;YACJ;QACF;;AAGA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE;QAE5B,IAAI,CAAC,SAAS,EAAE;;AAEd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;gBACpD,MAAM,KAAK,GAAkB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChD,oBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,EAAE;oBAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B,oBAAA,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC;AAC7B,oBAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC;oBACzD,MAAM,OAAO,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,SAAS,CAAA,EAAA,EAAK,GAAG,CAAA,EAAG,UAAU,CAAA,CAAE;oBAE3D,OAAO;AACL,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,QAAQ,EAAE,SAAS;AACnB,wBAAA,KAAK,EAAE,GAAG;wBACV,SAAS;AACT,wBAAA,eAAe,EAAE,OAAO;wBACxB,SAAS;AACT,wBAAA,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC;AAC3B,wBAAA,WAAW,EAAE,OAAO;wBACpB,IAAI,EAAE,KAAK,EAAE;qBACd;AACH,gBAAA,CAAC,CAAC;gBAEF,OAAO;AACL,oBAAA,GAAG,EAAE,IAAI;AACT,oBAAA,KAAK,EAAE,SAAS;oBAChB;iBACD;AACH,YAAA,CAAC,CAAC;QACJ;aAAO;;AAEL,YAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBAC1B,MAAM,KAAK,GAAkB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;oBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;AACpD,oBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,EAAE;oBAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B,oBAAA,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC;AAC7B,oBAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC;oBACzD,MAAM,OAAO,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,SAAS,CAAA,EAAA,EAAK,GAAG,CAAA,EAAG,UAAU,CAAA,CAAE;oBAE3D,OAAO;wBACL,EAAE,EAAE,CAAA,EAAG,GAAG,CAAA,QAAA,CAAU;AACpB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,QAAQ,EAAE,SAAS;AACnB,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,KAAK,EAAE,GAAG;wBACV,SAAS;AACT,wBAAA,eAAe,EAAE,OAAO;wBACxB,SAAS;AACT,wBAAA,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC;AAC3B,wBAAA,WAAW,EAAE,OAAO;wBACpB,IAAI,EAAE,KAAK,EAAE;qBACd;AACH,gBAAA,CAAC,CAAC;gBAEF,OAAO;AACL,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,GAAG;oBACV;iBACD;AACH,YAAA,CAAC,CAAC;QACJ;IACF,CAAC;iFAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE/B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS;gBAClD,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS;gBAC/D,IAAI;AACJ,gBAAA,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAgB,CAAC,GAAG,SAAS;AACpE,gBAAA,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,OAAc,CAAC,GAAG,SAAS;AAC9D,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,KAAI;AACvD,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnD,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;gBACtC;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,eAAe,CAAC,IAAY,EAAE,MAAyB,EAAA;AACrD,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;QACjD;QACA,IAAI,IAAI,KAAK,CAAC;AAAE,YAAA,OAAO,OAAO;QAC9B,IAAI,IAAI,GAAG,EAAE;YAAE,OAAO,CAAA,EAAG,IAAI,CAAA,GAAA,CAAK;QAClC,IAAI,IAAI,KAAK,EAAE;AAAE,YAAA,OAAO,OAAO;AAC/B,QAAA,OAAO,CAAA,EAAG,IAAI,GAAG,EAAE,KAAK;IAC1B;AAEA,IAAA,WAAW,CAAC,WAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;IAChC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC;AAEA,IAAA,uBAAuB,CAAC,GAA0B,EAAA;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IACzB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC;AAEA,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;IACtC;AAEA,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;IACtC;AAEA,IAAA,YAAY,CAAC,MAAqB,EAAA;QAChC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,IAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEA,WAAW,CAAC,IAAiB,EAAE,KAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB;AACD,SAAA,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAE,MAAc,EAAE,MAAc,EAAA;AAC5D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,SAAS,GAAG,MAAM;QACtB,IAAI,SAAS,GAAG,MAAM;AAEtB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAC3B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,cAAc,EAAE;QACxB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACpC,YAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;YACjD,KAAK,CAAC,cAAc,EAAE;QACxB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACpC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,cAAc,EAAE;QACxB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;AACrC,YAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;YACjD,KAAK,CAAC,cAAc,EAAE;QACxB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;YACxC,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAClB,IAAI;oBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;oBACzB;AACD,iBAAA,CAAC;YACJ;YACA,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;QAEA,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACnE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACxD,qBAAqB,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,EAAA,CAAI,CACjC;YAChB,MAAM,EAAE,KAAK,EAAE;QACjB;IACF;AAEA,IAAA,aAAa,CAAC,MAA2B,EAAA;AACvC,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,YAAA,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5F,YAAA,MAAM,UAAU,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,IAAI,EAAE;YAEvC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,yBAAyB,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,IAAA,CAAM,CAAC;AAC1H,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACvD;AAAO,aAAA,IAAI,MAAM,KAAK,MAAM,EAAE;YAC5B,MAAM,WAAW,GAA2C,EAAE;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACjB,gBAAA,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpB,oBAAA,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;AAC1C,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,iCAAiC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,KAAA,CAAO,CAAC;AAChI,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACzD;IACF;AAEQ,IAAA,YAAY,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB,EAAA;QACtE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,QAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,QAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,KAAK,EAAE;AACT,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5B,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;IAC1B;uGAjqBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,eAAA,EAAA,kCAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7JlC,k/PA6KM,EAAA,MAAA,EAAA,CAAA,k1TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDF,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,wBAAwB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,qBAAqB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,YAAY,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,WAAW,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,qBAAqB,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,cAAc,EAAA,QAAA,EAAA,4CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,cAAc,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,WAAW,6DACX,oBAAoB,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA;;2FAqBX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArCjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB;wBACP,WAAW;wBACX,wBAAwB;wBACxB,qBAAqB;wBACrB,eAAe;wBACf,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,WAAW;wBACX,qBAAqB;wBACrB,cAAc;wBACd,cAAc;wBACd,WAAW;wBACX;qBACD,EAAA,IAAA,EAGK;AACJ,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,gCAAgC,EAAE,cAAc;AAChD,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,0BAA0B,EAAE,qBAAqB;AACjD,wBAAA,0BAA0B,EAAE,qBAAqB;AACjD,wBAAA,0BAA0B,EAAE,qBAAqB;AACjD,wBAAA,4BAA4B,EAAE,wBAAwB;AACtD,wBAAA,+BAA+B,EAAE,2BAA2B;AAC5D,wBAAA,8BAA8B,EAAE,0BAA0B;AAC1D,wBAAA,iCAAiC,EAAE,cAAc;AACjD,wBAAA,sCAAsC,EAAE,eAAe;AACvD,wBAAA,oCAAoC,EAAE,YAAY;AAClD,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,k/PAAA,EAAA,MAAA,EAAA,CAAA,k1TAAA,CAAA,EAAA;;;MEpJU,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAlB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA;AAEpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,qBAAqB,CAAA,EAAA,CAAA;;2FAGpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;;ACND;;AAEG;;ACOH,MAAMA,eAAa,GAA2B;AAC5C,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE;CACR;AAED,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAE1F,MAAM,YAAY,GAA6E;IAC7F,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACzB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACzB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACzB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACzB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;CACxB;MAuBY,uBAAuB,CAAA;;IAEzB,KAAK,GAAG,KAAK,CAAgB,IAAI;8EAAC;;IAGlC,GAAG,GAAG,KAAK,CAAS,CAAC;4EAAC;;IAGtB,GAAG,GAAG,KAAK,CAAS,GAAG;4EAAC;;IAGxB,QAAQ,GAAG,KAAK,CAA4B,IAAI;iFAAC;;IAGjD,IAAI,GAAG,KAAK,CAAgB,IAAI;6EAAC;;IAGjC,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;;IAGtC,WAAW,GAAG,KAAK,CAAgB,IAAI;oFAAC;;IAGxC,KAAK,GAAG,KAAK,CAAuB,SAAS;8EAAC;;IAG9C,UAAU,GAAG,KAAK,CAAgB,IAAI;mFAAC;;IAGvC,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;;IAGhC,OAAO,GAAG,KAAK,CAAmB,OAAO;gFAAC;;IAG1C,GAAG,GAAG,KAAK,CAAS,CAAC;4EAAC;;IAGtB,cAAc,GAAG,KAAK,CAAU,KAAK;uFAAC;;IAGtC,UAAU,GAAG,KAAK,CAAgB,IAAI;mFAAC;;IAGvC,aAAa,GAAG,KAAK,CAAgB,IAAI;sFAAC;;IAG1C,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;;IAG/B,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;;IAGtC,YAAY,GAAG,MAAM,EAAoB;;IAG/B,OAAO,GAAG,GAAG;IACb,MAAM,GAAG,EAAE;;AAGrB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,MAAM;AAClC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,OAAO,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;IACjD,CAAC;uFAAC;;AAGO,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;;AAEnB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;YAChC,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO;QACrC;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;AACpE,QAAA,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO;IACnD,CAAC;4FAAC;;AAGO,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,CAAC;+EAAC;;AAGO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACrC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;IACpC,CAAC;sFAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,OAAOA,eAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;uFAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACxB,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,CAAC;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;QACzB,IAAI,MAAM,IAAI,MAAM;AAAE,YAAA,OAAO,CAAC;AAC9B,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG;AACtD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;yFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI;AACjC,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,EAAE;IAC5B,CAAC;wFAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAyB,MAAK;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAEzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,QAAQ,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE;AAE5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;AACzB,QAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC;AAC9C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;QAElD,IAAI,iBAAiB,GAAG,CAAC;QAEzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAC3B,YAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,GAAG;AACrD,YAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,aAAa;AAClE,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAIA,eAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC;AAEjH,YAAA,MAAM,SAAS,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,EAAE;;AAErC,YAAA,MAAM,UAAU,GAAG,CAAC,iBAAiB;AAErC,YAAA,iBAAiB,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAErD,OAAO;AACL,gBAAA,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,gBAAA,UAAU,EAAE,GAAG;gBACf,KAAK;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS;gBACT,UAAU;AACV,gBAAA,UAAU,EAAE;aACb;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;yFAAC;;AAGO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;QAClC,IAAI,QAAQ,KAAK,IAAI;AAAE,YAAA,OAAO,QAAQ;AACtC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACzB,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA,CAAA,CAAG;QAClD;AACA,QAAA,OAAO,EAAE;IACX,CAAC;2FAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,OAAO,CAAC;IACV,CAAC;yFAAC;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AACzB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACzB,OAAO,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA,CAAA,CAAG;QAC5D;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC5B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,aAAa;QACrD;AACA,QAAA,OAAO,kBAAkB;IAC3B,CAAC;0FAAC;AAEQ,IAAA,cAAc,CAAC,QAAgB,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C;IACF;uGAjMW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,y2FCzDpC,i6DAgEA,EAAA,MAAA,EAAA,CAAA,47EAAA,CAAA,EAAA,CAAA;;2FDPa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,IAAA,EAGtB;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,mCAAmC,EAAE,YAAY;AACjD,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,mBAAmB,EAAE,kBAAkB;AACvC,wBAAA,aAAa,EAAE,SAAS;AACxB,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,i6DAAA,EAAA,MAAA,EAAA,CAAA,47EAAA,CAAA,EAAA;;;MEhDU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA;wGAEtB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB;AAClC,iBAAA;;;ACND;;AAEG;;ACMH,MAAM,aAAa,GAA2B;AAC5C,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,KAAK,EAAE;CACR;AAED,MAAM,kBAAkB,GAAqB;IAC3C,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;IACtC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS;CACtC;MAoCY,uBAAuB,CAAA;;IAEzB,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;;IAGxB,GAAG,GAAG,KAAK,CAAS,CAAC;4EAAC;;IAGtB,GAAG,GAAG,KAAK,CAAS,GAAG;4EAAC;;IAGxB,MAAM,GAAG,KAAK,CAAgB,IAAI;+EAAC;;IAGnC,IAAI,GAAG,KAAK,CAAgB,aAAa;6EAAC;;IAG1C,SAAS,GAAG,KAAK,CAAqB,KAAK;kFAAC;;IAG5C,UAAU,GAAG,KAAK,CAA0B,IAAI;mFAAC;;IAGjD,KAAK,GAAG,KAAK,CAAS,SAAS;8EAAC;;IAGhC,UAAU,GAAG,KAAK,CAAgB,IAAI;mFAAC;;IAGvC,IAAI,GAAG,KAAK,CAAY,IAAI;6EAAC;;IAG7B,KAAK,GAAG,KAAK,CAAyB,IAAI;8EAAC;;IAG3C,MAAM,GAAG,KAAK,CAAyB,IAAI;+EAAC;;IAG5C,WAAW,GAAG,KAAK,CAAS,CAAC;oFAAC;;IAG9B,OAAO,GAAG,KAAK,CAAmB,OAAO;gFAAC;;IAG1C,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;;IAGhC,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;;IAGlC,IAAI,GAAG,KAAK,CAAS,EAAE;6EAAC;;IAGxB,cAAc,GAAG,KAAK,CAA0B,CAAC,GAAG,KAAK,GAAG,CAAC,cAAc,EAAE;uFAAC;;IAG9E,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;;IAGtC,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;;IAGrB,EAAE,GAAG,EAAE;IACP,MAAM,GAAG,EAAE;IACX,MAAM,GAAG,EAAE;IACX,MAAM,GAAG,EAAE;;AAGrB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,aAAa,GAAG,EAAE,GAAG,EAAE;IAChD,CAAC;qFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;QAC3B,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,GAAG,MAAM;AAC/E,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY;AAAE,YAAA,OAAO,MAAM;AAC/C,QAAA,OAAO,IAAI;IACb,CAAC;kFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,GAAG,MAAM;AAC/E,QAAA,OAAO,IAAI;IACb,CAAC;mFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;QACzB,IAAI,MAAM,IAAI,MAAM;AAAE,YAAA,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;wFAAC;;AAGO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;QACzB,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;QACzB,IAAI,MAAM,IAAI,MAAM;AAAE,YAAA,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;oFAAC;;AAGO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,aAAa;AAAE,YAAA,OAAO,YAAY;QAC5C,IAAI,CAAC,KAAK,MAAM;AAAE,YAAA,OAAO,YAAY;AACrC,QAAA,OAAO,YAAY;IACrB,CAAC;gFAAC;;AAGO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,KAAK,aAAa,EAAE;AACvB,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC3C;;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;IAC7C,CAAC;kFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,QAAA,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK;IAC9B,CAAC;qFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;;AAEjC,QAAA,MAAM,WAAW,GAAG,GAAG,GAAG,KAAK;QAC/B,OAAO,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,CAAG;IAClD,CAAC;wFAAC;;AAGO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;AAE/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,KAAK,QAAQ,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC9C;QAEA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AACzC,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AACnC,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAC1D,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG;AACnC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM;AAErB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAEhC,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;IACxB,CAAC;0FAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;;AAEjC,QAAA,MAAM,WAAW,GAAG,GAAG,GAAG,KAAK;QAC/B,OAAO,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,CAAG;IAClD,CAAC;qFAAC;;AAGO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG;AACnC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM;AAErB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;IACjB,CAAC;6FAAC;;AAGO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE;QAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AACvC,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1D,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC;IACpE,CAAC;kFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE;QAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;QAG1D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ;AAC9E,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;IAC7E,CAAC;qFAAC;;AAGO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;QAE7B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACpB,gBAAA,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;oBAClC,OAAO,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK;gBAC5C;YACF;YACA,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;QAC9E;AAEA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;oFAAC;;AAGO,IAAA,iBAAiB,GAAG,QAAQ,CAAe,MAAK;AACvD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAEvC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM;QAC5B,IAAI,IAAI,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE;QAExB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AACzC,QAAA,MAAM,EAAE,GAAG,CAAC,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAE1D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAI;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC;AAEjE,YAAA,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK;AAC5C,YAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK;AAExC,YAAA,MAAM,IAAI,GAAG,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE;AACxG,YAAA,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK;YAEjD,OAAO;gBACL,IAAI;gBACJ,KAAK;gBACL,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,OAAO,EAAE,GAAG,KAAK,CAAC;AAClB,gBAAA,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG;aAC9B;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;0FAAC;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AACzB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,EAAE;QAC9C,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA,EAAG,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,CAAG;IACnG,CAAC;0FAAC;;IAGM,gBAAgB,CACtB,EAAU,EACV,EAAU,EACV,CAAS,EACT,aAAqB,EACrB,WAAmB,EAAA;QAEnB,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG;QAChD,MAAM,MAAM,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG;AAE5C,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEtC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;;AAGpC,QAAA,MAAM,UAAU,GAAG,aAAa,GAAG,WAAW;AAC9C,QAAA,MAAM,YAAY,GAAG,UAAU,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7C,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,QAAA,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,EAAM,YAAY,IAAI,SAAS,CAAA,CAAA,EAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;IAC3H;uGAnSW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,o0GC/DpC,u7JAgLA,EAAA,MAAA,EAAA,CAAA,y8JAAA,CAAA,EAAA,CAAA;;2FDjHa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,IAAA,EAGtB;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,0BAA0B;AAC7D,wBAAA,0BAA0B,EAAE,mBAAmB;AAC/C,wBAAA,4BAA4B,EAAE,qBAAqB;AACnD,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,gCAAgC,EAAE,yBAAyB;AAC3D,wBAAA,8BAA8B,EAAE,YAAY;AAC5C,wBAAA,eAAe,EAAE,aAAa;AAC9B,wBAAA,gBAAgB,EAAE,cAAc;AAChC,wBAAA,aAAa,EAAE,SAAS;AACxB,wBAAA,sBAAsB,EAAE,SAAS;AACjC,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,u7JAAA,EAAA,MAAA,EAAA,CAAA,y8JAAA,CAAA,EAAA;;;MEtDU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA;wGAEtB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB;AAClC,iBAAA;;;ACND;;AAEG;AA+BI,MAAM,YAAY,GAAG;;ACV5B,MAAM,eAAe,GAA2E;AAC9F,IAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACvG,IAAA,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,yBAAyB,EAAE;AACtG,IAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACvG,IAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,yBAAyB,EAAE;AACzG,IAAA,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACtG,IAAA,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACpG,IAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,yBAAyB,EAAE;AACzG,IAAA,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACrG,IAAA,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACpG,IAAA,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,wBAAwB,EAAE;AACpG,IAAA,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,yBAAyB,EAAE;AACxG,IAAA,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,0BAA0B;CACvG;AAED;AACA,MAAM,uBAAuB,GAA6D;IACxF,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7B,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7B,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9B,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/B,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IACtC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;CACjC;AAED,IAAI,eAAe,GAAG,CAAC;MA6CV,uBAAuB,CAAA;AACjB,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACjE,IAAA,cAAc;;IAGb,IAAI,GAAG,KAAK,CAAqB,EAAE;6EAAC;;IAGpC,IAAI,GAAG,KAAK,CAAgB,MAAM;6EAAC;;IAGnC,KAAK,GAAG,KAAK,CAAuB,SAAS;8EAAC;;IAG9C,cAAc,GAAG,KAAK,CAAU,KAAK;uFAAC;;IAGtC,MAAM,GAAG,KAAK,CAAU,IAAI;+EAAC;;IAG7B,WAAW,GAAG,KAAK,CAAS,CAAC;oFAAC;;IAG9B,WAAW,GAAG,KAAK,CAAsB,MAAM;oFAAC;;IAGhD,YAAY,GAAG,KAAK,CAAS,GAAG;qFAAC;;IAGjC,cAAc,GAAG,KAAK,CAAgB,IAAI;uFAAC;;IAG3C,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;;IAGlC,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;;IAGlC,MAAM,GAAG,KAAK,CAAS,CAAC;+EAAC;;IAGzB,SAAS,GAAG,KAAK,CAAS,CAAC;kFAAC;;IAG5B,IAAI,GAAG,KAAK,CAAgB,IAAI;6EAAC;;IAGjC,WAAW,GAAG,KAAK,CAA8B,IAAI;oFAAC;;IAGtD,KAAK,GAAG,KAAK,CAAyB,IAAI;8EAAC;;IAG3C,MAAM,GAAG,KAAK,CAAyB,IAAI;+EAAC;;IAG5C,GAAG,GAAG,KAAK,CAAgB,IAAI;4EAAC;;IAGhC,GAAG,GAAG,KAAK,CAAgB,IAAI;4EAAC;;IAGhC,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;;IAGtC,cAAc,GAAG,KAAK,CAA0B,CAAC,GAAG,KAAK,GAAG,CAAC,cAAc,EAAE;uFAAC;;IAG9E,UAAU,GAAG,MAAM,EAA8B;;IAGjD,UAAU,GAAG,MAAM,EAAuB;;AAG1C,IAAA,UAAU,GAAG,CAAA,qBAAA,EAAwB,EAAE,eAAe,EAAE;;IAG9C,YAAY,GAAG,MAAM,CAAuB,IAAI;qFAAC;IACjD,UAAU,GAAG,MAAM,CAAU,KAAK;mFAAC;;IAGnC,cAAc,GAAG,MAAM,CAAS,GAAG;uFAAC;IACpC,eAAe,GAAG,MAAM,CAAS,EAAE;wFAAC;IAE9C,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE;iFAAC;IAChD,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE;kFAAC;AAExC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK;AAAE,YAAA,OAAO,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,CAAC;AACjE,QAAA,OAAO,CAAC;IACV,CAAC;gFAAC;AAEF,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;gBACzC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACnD,oBAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;wBAC3B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW;wBAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAC3B,4BAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,4BAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC9C;oBACF;AACF,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC5D;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACnC,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AACxC,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE;AACvC,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD;aAAO;AACL,YAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,uBAAuB,CAAC,EAAE;YACtF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;QAC9C;IACF;;AAGS,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;QAC3B,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,GAAG,MAAM;AAC/E,QAAA,OAAO,IAAI;IACb,CAAC;kFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,GAAG,MAAM;AAC/E,QAAA,OAAO,IAAI;IACb,CAAC;mFAAC;AAEO,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;QAC7B,IAAI,EAAE,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,YAAY,CAAA,IAAA,CAAM;QACjD,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,EAAE,CAAA,IAAA,CAAM;AAC9C,QAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpB,gBAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5B,OAAO,CAAA,EAAG,CAAC,CAAC,IAAI,EAAE,CAAA,GAAA,EAAM,CAAC,CAAC,IAAI,EAAE,CAAA,CAAE;YACpC;AACA,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,IAAI;IACb,CAAC;4FAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAmB,MAAK;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QACvC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;AAC3B,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,gBAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;YACxB;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ,CAAC;yFAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;gBACnB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AAC1B,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;AACtC,gBAAA,IAAI,IAAI,IAAI,KAAK,EAAE;AACjB,oBAAA,OAAO,eAAe,CAAC,SAAS,CAAC;gBACnC;qBAAO;AACL,oBAAA,OAAO,eAAe,CAAC,QAAQ,CAAC;gBAClC;YACF;QACF;AAEA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE;AACtB,YAAA,OAAO,eAAe,CAAC,CAAC,CAAC;QAC3B;;QAEA,OAAO;AACL,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA,EAAA,CAAI,GAAG,wBAAwB;AAClE,YAAA,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA,EAAA,CAAI,GAAG;SACzC;IACH,CAAC;uFAAC;;AAGO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;QAEpF,IAAI,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;QAChC,IAAI,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AAEhC,QAAA,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,CAAC,KAAK,GAAG,aAAa;AAAE,gBAAA,aAAa,GAAG,CAAC,CAAC,KAAK;AACpD,YAAA,IAAI,CAAC,CAAC,KAAK,GAAG,aAAa;AAAE,gBAAA,aAAa,GAAG,CAAC,CAAC,KAAK;QACtD;;AAGA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,IAAI,GAAG,GAAG,aAAa;gBAAE,aAAa,GAAG,GAAG;YAC5C,IAAI,GAAG,GAAG,aAAa;gBAAE,aAAa,GAAG,GAAG;QAC9C;;AAGA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AAE9B,QAAA,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,GAAG,WAAW,GAAG,aAAa;AACnE,QAAA,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,GAAG,WAAW,GAAG,aAAa;;AAGnE,QAAA,MAAM,IAAI,GAAG,QAAQ,KAAK,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,QAAQ;AAE5D,QAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE;IAC7F,CAAC;oFAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAkB,MAAK;AACvD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAE/B,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AACxD,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM;QACxB,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;QAEnE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAI;AACzB,YAAA,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK;;YAE/C,MAAM,eAAe,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,GAAG,UAAU;YAE9C,OAAO;AACL,gBAAA,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,CAAC;gBACD,CAAC;gBACD,KAAK,EAAE,EAAE,CAAC,KAAK;AACf,gBAAA,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM;AAC1B,gBAAA,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM;gBAC1B,OAAO,EAAE,GAAG,KAAK,CAAC;AAClB,gBAAA,MAAM,EAAE,GAAG,KAAK,KAAK,GAAG;aACzB;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;uFAAC;;AAGO,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AACxC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtG;;QAGA,IAAI,CAAC,GAAG,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AACzD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtC,YAAA,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAE/C,YAAA,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;AACrC,YAAA,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;AACrC,YAAA,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;AACrC,YAAA,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;YAErC,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;QAC/H;AACA,QAAA,OAAO,CAAC;IACV,CAAC;iFAAC;;AAGO,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AACxC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;QAEtC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAElC,OAAO,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,GAAA,EAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,EAAA,CAAI;IACjG,CAAC;iFAAC;;AAGO,IAAA,WAAW,GAAG,QAAQ,CAAe,MAAK;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAE/B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;;QAG7C,MAAM,MAAM,GAAG,WAAW,KAAK,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;QACvE,MAAM,MAAM,GAAG,WAAW,KAAK,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACvE,QAAA,MAAM,OAAO,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,MAAM;AAE3F,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM;AAExB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,SAAS,IAAI,KAAK,CAAC;AAC1D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM;;QAG9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,UAAU;QAE5C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAI;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC;AAChC,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK;AAEpB,YAAA,IAAI,CAAS;AACb,YAAA,IAAI,IAAY;AAEhB,YAAA,IAAI,MAAM,IAAI,CAAC,EAAE;;gBAEf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC;gBAChE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;AACtC,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;YAClB;AAAO,iBAAA,IAAI,MAAM,IAAI,CAAC,EAAE;;gBAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBAC/D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;gBACtC,CAAC,GAAG,CAAC;YACP;iBAAO;;AAEL,gBAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACZ,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC;oBACxC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;AACtC,oBAAA,CAAC,GAAG,KAAK,GAAG,IAAI;gBAClB;qBAAO;AACL,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;oBAClD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;oBACtC,CAAC,GAAG,KAAK;gBACX;YACF;YAEA,OAAO;AACL,gBAAA,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,CAAC;gBACD,CAAC;AACD,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI;aACpB;AACH,QAAA,CAAC,CAAC;IACJ,CAAC;oFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAkB,MAAK;AACxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAC/B,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,EAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;QAEjC,QAAQ,IAAI;AACV,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,GAAG;AACZ,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC;AACjD,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;AAC9C,YAAA,KAAK,MAAM;gBACT,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACpD,YAAA;AACE,gBAAA,OAAO,EAAE;;IAEf,CAAC;wFAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAgB,MAAK;AACrD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;QACjC,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAE7B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AACxC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI;AAChC,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,UAAU;IACnC,CAAC;uFAAC;;AAGO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AAEzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,iBAAiB;QAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AAC1B,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,WAAW;AACxD,QAAA,OAAO,oBAAoB,KAAK,CAAA,IAAA,EAAO,IAAI,CAAA,EAAA,EAAK,SAAS,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;IAC/F,CAAC;0FAAC;;AAGQ,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAClE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAExC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE;AACzB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE;AAEvB,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC;AAElE,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;AACvC,gBAAA,IAAI,IAAI,GAAG,WAAW,EAAE;oBACtB,WAAW,GAAG,IAAI;AAClB,oBAAA,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;gBACnB;YACF;AAEA,YAAA,MAAM,KAAK,GAAkB;gBAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,gBAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC5C,CAAC,EAAE,OAAO,CAAC;aACZ;AAED,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAEzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC;AACV,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE;;AAGtB,QAAA,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;AACpB,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAE7C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACxC,YAAA,IAAI,IAAI,GAAG,WAAW,EAAE;gBACtB,WAAW,GAAG,IAAI;AAClB,gBAAA,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;YAClB;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAEzB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC;AACZ,SAAA,CAAC;IACJ;;IAGU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;;AAGU,IAAA,YAAY,CAAC,KAAiC,EAAA;AACtD,QAAA,MAAM,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACjG,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,CAAC;AACD,YAAA,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG;AAC7B,SAAA,CAAC;IACJ;uGAjgBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4yGC7FpC,igHAyHA,EAAA,MAAA,EAAA,CAAA,s8EAAA,CAAA,EAAA,CAAA;;2FD5Ba,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAlBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,IAAA,EAGrB;AACJ,wBAAA,OAAO,EAAE,iBAAiB;AAC1B,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,oCAAoC,EAAE,yBAAyB;AAC/D,wBAAA,eAAe,EAAE,aAAa;AAC9B,wBAAA,gBAAgB,EAAE,cAAc;AAChC,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,aAAa,EAAE,OAAO;AACtB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,igHAAA,EAAA,MAAA,EAAA,CAAA,s8EAAA,CAAA,EAAA;;;MEpFU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA;wGAEtB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB;AAClC,iBAAA;;;ACND;;AAEG;;;;"}
|