{"version":3,"file":"taiga-ui-kit-components-input-time.mjs","sources":["../../../projects/kit/components/input-time/input-time.options.ts","../../../projects/kit/components/input-time/input-time.directive.ts","../../../projects/kit/components/input-time/input-time-content.component.ts","../../../projects/kit/components/input-time/input-time.component.ts","../../../projects/kit/components/input-time/input-time.ts","../../../projects/kit/components/input-time/taiga-ui-kit-components-input-time.ts"],"sourcesContent":["import {type MaskitoTimeParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputTimeOptions extends Required<\n    // TODO(v6): move `mode`, `timeSegmentMinValues` and `timeSegmentMaxValues` to `TUI_TIME_FORMAT`\n    Pick<MaskitoTimeParams, 'mode' | 'timeSegmentMaxValues' | 'timeSegmentMinValues'>\n> {\n    readonly icon: string;\n    readonly valueTransformer: TuiValueTransformer<TuiTime | null, any> | null;\n}\n\nexport const TUI_INPUT_TIME_DEFAULT_OPTIONS: TuiInputTimeOptions = {\n    icon: '@tui.clock',\n    mode: 'HH:MM',\n    timeSegmentMaxValues: {},\n    timeSegmentMinValues: {},\n    valueTransformer: null,\n};\n\nexport const [TUI_INPUT_TIME_OPTIONS, tuiInputTimeOptionsProvider] = tuiCreateOptions(\n    TUI_INPUT_TIME_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, inject, input, untracked} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions} from '@maskito/core';\nimport {\n    maskitoAddOnFocusPlugin,\n    maskitoCaretGuard,\n    maskitoParseTime,\n    maskitoRemoveOnBlurPlugin,\n    maskitoSelectionChangeHandler,\n    maskitoStringifyTime,\n    maskitoTime,\n    type MaskitoTimeMode,\n    type MaskitoTimeParams,\n} from '@maskito/kit';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {TuiTime} from '@taiga-ui/cdk/date-time';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n    tuiAsTextfieldAccessor,\n    type TuiTextfieldAccessor,\n    TuiTextfieldComponent,\n    TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiIconEnd} from '@taiga-ui/core/directives/icons';\nimport {\n    TuiDropdownDirective,\n    tuiDropdownEnabled,\n    TuiDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\nimport {TUI_TIME_FORMAT, TUI_TIME_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_TIME_OPTIONS} from './input-time.options';\n\n@Directive({\n    selector: 'input[tuiInputTime]',\n    providers: [\n        tuiAsControl(TuiInputTimeDirective),\n        tuiAsTextfieldAccessor(TuiInputTimeDirective),\n        tuiValueTransformerFrom(TUI_INPUT_TIME_OPTIONS),\n        tuiAsOptionContent(TuiSelectOption),\n    ],\n    hostDirectives: [TuiWithInput, MaskitoDirective],\n    host: {\n        inputmode: 'numeric',\n        '[disabled]': 'disabled()',\n        '(blur)': 'onBlur($event.target.value)',\n        '(click)': 'toggle()',\n        '(input)': 'onInput($event.target.value)',\n    },\n})\nexport class TuiInputTimeDirective\n    extends TuiControl<TuiTime | null>\n    implements TuiTextfieldAccessor<TuiTime | null>\n{\n    private readonly input = inject(TuiInputDirective);\n    private readonly dropdown = inject(TuiDropdownDirective);\n    private readonly open = inject(TuiDropdownOpen).open;\n    private readonly options = inject(TUI_INPUT_TIME_OPTIONS);\n    private readonly fillers = inject(TUI_TIME_TEXTS);\n    private readonly format = inject(TUI_TIME_FORMAT);\n\n    private readonly params = computed<Required<MaskitoTimeParams>>(() => ({\n        ...this.options,\n        mode: this.timeMode(),\n        step: this.interactive() && !this.dropdown.content() ? 1 : 0,\n        prefix: this.prefix(),\n        postfix: this.postfix(),\n        separators: [],\n        dayPeriod: this.format().dayPeriod,\n        locale: '', // TODO: add to public API\n    }));\n\n    protected readonly icon = tuiIconEnd(this.options.icon);\n\n    protected readonly dropdownEnabled = tuiDropdownEnabled(\n        computed(() => !this.native && this.interactive()),\n    );\n\n    protected readonly filler = tuiDirectiveBinding(\n        TuiTextfieldComponent,\n        'filler',\n        computed(() => {\n            const filler = this.fillers()?.[this.timeMode()] ?? '';\n            const [am] = this.format().dayPeriod;\n            const dayPeriodFiller = am && ` ${'A'.repeat(am.length)}`;\n\n            return this.postfix() ? '' : `${this.prefix()}${filler}${dayPeriodFiller}`;\n        }),\n        {},\n    );\n\n    protected readonly mask = tuiMaskito(computed(() => this.computeMask(this.params())));\n\n    public readonly accept = input<readonly TuiTime[]>([]);\n    public readonly timeMode = input<MaskitoTimeMode>(this.options.mode, {alias: 'mode'});\n    public readonly prefix = input('');\n    public readonly postfix = input('');\n\n    public readonly native =\n        !!inject(TuiWithNativePicker, {optional: true}) && inject(WA_IS_MOBILE);\n\n    public setValue(value: TuiTime | null): void {\n        this.onChange(value);\n\n        if (value) {\n            this.input.value.set(this.stringify(value));\n        } else {\n            this.input.setValue(value);\n        }\n\n        if (!value && this.dropdownEnabled()) {\n            this.open.set(true);\n        }\n    }\n\n    public override writeValue(value: TuiTime | null): void {\n        const reset = this.control.pristine && this.control.untouched && !value;\n        const changed = untracked(() => value !== this.value());\n\n        if (changed || reset) {\n            super.writeValue(value);\n            untracked(() => this.input.value.set(this.stringify(this.value())));\n        }\n    }\n\n    protected onInput(valueWithAffixes: string): void {\n        const value = valueWithAffixes\n            .replace(this.prefix(), '')\n            .replace(this.postfix(), '');\n\n        const time = this.isComplete(value) ? this.parse(value) : null;\n\n        const newValue =\n            this.accept().length && time\n                ? this.findNearestTime(time, this.accept())\n                : time;\n\n        this.control?.control?.updateValueAndValidity({emitEvent: false});\n        this.onChange(newValue);\n\n        if (newValue && newValue !== time) {\n            this.input.value.set(this.stringify(newValue));\n        }\n    }\n\n    protected toggle(): void {\n        this.open.update((x) => !x);\n    }\n\n    protected onBlur(valueWithAffixes: string): void {\n        const value = valueWithAffixes\n            .replace(this.prefix(), '')\n            .replace(this.postfix(), '');\n\n        if (value && !this.value()) {\n            const time = this.parse(value);\n\n            const newValue = this.accept().length\n                ? this.findNearestTime(time, this.accept())\n                : time;\n\n            this.control?.control?.updateValueAndValidity({emitEvent: false});\n            this.onChange(newValue);\n\n            if (newValue) {\n                this.input.value.set(this.stringify(newValue));\n            }\n        }\n    }\n\n    private computeMask(params: Required<MaskitoTimeParams>): MaskitoOptions {\n        const options = maskitoTime(params);\n        const {mode, prefix, postfix, dayPeriod} = params;\n\n        const inputModeSwitchPlugin = maskitoSelectionChangeHandler((element) => {\n            element.inputMode =\n                element.selectionStart! >=\n                // TODO(v6): delete `replace()`\n                mode.replace(' AA', '').length\n                    ? 'text'\n                    : 'numeric';\n        });\n\n        const caretGuardPlugin = maskitoCaretGuard((value) => [\n            prefix.length,\n            value.length - postfix.length,\n        ]);\n\n        return {\n            ...options,\n            plugins: options.plugins.concat(\n                caretGuardPlugin,\n                maskitoAddOnFocusPlugin(`${prefix}${postfix}`),\n                maskitoRemoveOnBlurPlugin(`${prefix}${postfix}`),\n                mode.includes('AA') || dayPeriod.some(Boolean)\n                    ? inputModeSwitchPlugin\n                    : [],\n            ),\n        };\n    }\n\n    private findNearestTime(value: TuiTime, items: readonly TuiTime[]): TuiTime | null {\n        // eslint-disable-next-line no-restricted-syntax\n        return items.reduce((previous, current) =>\n            Math.abs(current.valueOf() - value.valueOf()) <\n            Math.abs(previous.valueOf() - value.valueOf())\n                ? current\n                : previous,\n        );\n    }\n\n    private isComplete(value: string): boolean {\n        const [am] = this.format().dayPeriod;\n        const dayPeriodLength = am ? ` ${am}`.length : 0;\n\n        return value.length === this.timeMode().length + dayPeriodLength;\n    }\n\n    private parse(value: string): TuiTime {\n        return TuiTime.fromAbsoluteMilliseconds(maskitoParseTime(value, this.params()));\n    }\n\n    private stringify(time: TuiTime | null): string {\n        const value = time\n            ? maskitoStringifyTime(time.toAbsoluteMilliseconds(), this.params())\n            : '';\n\n        return `${this.prefix()}${value}${this.postfix()}`;\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    inject,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {maskitoParseTime} from '@maskito/kit';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiTime} from '@taiga-ui/cdk/date-time';\n\nimport {TuiInputTimeComponent} from './input-time.component';\nimport {TuiInputTimeDirective} from './input-time.directive';\n\n@Component({\n    selector: 'tui-input-time-content',\n    template: `\n        @if (host.native) {\n            <input\n                type=\"time\"\n                [attr.list]=\"component.list\"\n                [step]=\"step()\"\n                [value]=\"value()\"\n                (change)=\"setValue($any($event.target).value)\"\n            />\n        }\n    `,\n    styles: `\n        [data-tui-version='${TUI_VERSION}'] {\n            @import './input-time.style.less';\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiInputTimeContent {\n    protected readonly component = inject(TuiInputTimeComponent);\n    protected readonly host = inject(TuiInputTimeDirective);\n\n    protected readonly value = computed(() =>\n        this.component.toISOString(this.host.value()),\n    );\n\n    protected readonly step = computed(() =>\n        this.component.getStep(this.host.timeMode()),\n    );\n\n    protected setValue(value: string): void {\n        this.host.setValue(\n            TuiTime.fromAbsoluteMilliseconds(\n                maskitoParseTime(value, {mode: 'HH:MM:SS.MSS'}),\n            ),\n        );\n    }\n}\n","import {Directive, HostAttributeToken, inject} from '@angular/core';\nimport {type MaskitoTimeMode} from '@maskito/kit';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {type TuiDay, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {\n    tuiAsTextfieldContent,\n    TuiTextfieldContent,\n    TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputTimeContent} from './input-time-content.component';\n\n@Directive({host: {'[attr.list]': 'null'}})\nexport abstract class TuiNativeTimePicker {\n    public readonly list = inject(new HostAttributeToken('list'), {optional: true});\n\n    public getStep(timeMode: MaskitoTimeMode): number {\n        switch (timeMode) {\n            case 'HH:MM:SS':\n            case 'HH:MM:SS AA':\n                return 1;\n            case 'HH:MM:SS.MSS':\n            case 'HH:MM:SS.MSS AA':\n                return 0.001;\n            default:\n                return 60;\n        }\n    }\n\n    public toISOString(\n        value: TuiTime | readonly [TuiDay, TuiTime | null] | null,\n    ): string {\n        const [day, time] = Array.isArray(value) ? value : [null, value];\n        const dateString = day ? day.toJSON() + (time ? 'T' : '') : '';\n        const timeString = time ? time.toString('HH:MM:SS.MSS') : '';\n\n        return dateString + timeString;\n    }\n}\n\n@Directive({\n    selector: 'input[tuiInputTime][type=\"time\"]',\n    providers: [tuiAsTextfieldContent(() => TuiInputTimeContent)],\n    hostDirectives: [TuiWithNativePicker, TuiTextfieldContent],\n    host: {'data-tui-version': TUI_VERSION},\n})\n// TODO(v6): rename to TuiInputTimeDirective\nexport class TuiInputTimeComponent extends TuiNativeTimePicker {}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n    TuiTextfieldComponent,\n    TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputTimeComponent} from './input-time.component';\nimport {TuiInputTimeDirective} from './input-time.directive';\n\nexport const TuiInputTime = [\n    TuiInputTimeDirective,\n    TuiInputTimeComponent,\n    TuiLabel,\n    TuiTextfieldComponent,\n    TuiTextfieldOptionsDirective,\n    TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,8BAA8B,GAAwB;AAC/D,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,gBAAgB,EAAE,IAAI;;AAGnB,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,GAAG,gBAAgB,CACjF,8BAA8B;;ACiC5B,MAAO,qBACT,SAAQ,UAA0B,CAAA;AAlBtC,IAAA,WAAA,GAAA;;AAqBqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACvC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAEhC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAA8B,OAAO;YACnE,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;AAC5D,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS;YAClC,MAAM,EAAE,EAAE;AACb,SAAA,CAAC,CAAC;QAEgB,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAEpC,QAAA,IAAA,CAAA,eAAe,GAAG,kBAAkB,CACnD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CACrD;QAEkB,IAAA,CAAA,MAAM,GAAG,mBAAmB,CAC3C,qBAAqB,EACrB,QAAQ,EACR,QAAQ,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;YACtD,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS;AACpC,YAAA,MAAM,eAAe,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAEzD,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAA,EAAG,eAAe,CAAA,CAAE;AAC9E,QAAA,CAAC,CAAC,EACF,EAAE,CACL;AAEkB,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAErE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAqB,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;AACrE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;AAEnB,QAAA,IAAA,CAAA,MAAM,GAClB,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;AAkI9E,IAAA;AAhIU,IAAA,QAAQ,CAAC,KAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEpB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C;aAAO;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;QAEA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB;IACJ;AAEgB,IAAA,UAAU,CAAC,KAAqB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,KAAK;AACvE,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAEvD,QAAA,IAAI,OAAO,IAAI,KAAK,EAAE;AAClB,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YACvB,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvE;IACJ;AAEU,IAAA,OAAO,CAAC,gBAAwB,EAAA;QACtC,MAAM,KAAK,GAAG;AACT,aAAA,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE;aACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;QAE9D,MAAM,QAAQ,GACV,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI;cAClB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;cACxC,IAAI;AAEd,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAEvB,QAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD;IACJ;IAEU,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B;AAEU,IAAA,MAAM,CAAC,gBAAwB,EAAA;QACrC,MAAM,KAAK,GAAG;AACT,aAAA,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE;aACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;QAEhC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAE9B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;kBACzB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;kBACxC,IAAI;AAEV,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAEvB,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClD;QACJ;IACJ;AAEQ,IAAA,WAAW,CAAC,MAAmC,EAAA;AACnD,QAAA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;QACnC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAC,GAAG,MAAM;AAEjD,QAAA,MAAM,qBAAqB,GAAG,6BAA6B,CAAC,CAAC,OAAO,KAAI;AACpE,YAAA,OAAO,CAAC,SAAS;AACb,gBAAA,OAAO,CAAC,cAAe;;oBAEvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpB,sBAAE;sBACA,SAAS;AACvB,QAAA,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAClD,YAAA,MAAM,CAAC,MAAM;AACb,YAAA,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAChC,SAAA,CAAC;QAEF,OAAO;AACH,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAC3B,gBAAgB,EAChB,uBAAuB,CAAC,CAAA,EAAG,MAAM,GAAG,OAAO,CAAA,CAAE,CAAC,EAC9C,yBAAyB,CAAC,CAAA,EAAG,MAAM,CAAA,EAAG,OAAO,EAAE,CAAC,EAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO;AACzC,kBAAE;kBACA,EAAE,CACX;SACJ;IACL;IAEQ,eAAe,CAAC,KAAc,EAAE,KAAyB,EAAA;;QAE7D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAClC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AACzC,cAAE;cACA,QAAQ,CACjB;IACL;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;QAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS;AACpC,QAAA,MAAM,eAAe,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,MAAM,GAAG,CAAC;AAEhD,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,eAAe;IACpE;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACnF;AAEQ,IAAA,SAAS,CAAC,IAAoB,EAAA;QAClC,MAAM,KAAK,GAAG;AACV,cAAE,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;cACjE,EAAE;AAER,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,EAAG,KAAK,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,EAAE;IACtD;+GAlLS,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAfnB;YACP,YAAY,CAAC,qBAAqB,CAAC;YACnC,sBAAsB,CAAC,qBAAqB,CAAC;YAC7C,uBAAuB,CAAC,sBAAsB,CAAC;YAC/C,kBAAkB,CAAC,eAAe,CAAC;AACtC,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAUQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAjBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACP,wBAAA,YAAY,CAAA,qBAAA,CAAuB;AACnC,wBAAA,sBAAsB,CAAA,qBAAA,CAAuB;wBAC7C,uBAAuB,CAAC,sBAAsB,CAAC;wBAC/C,kBAAkB,CAAC,eAAe,CAAC;AACtC,qBAAA;AACD,oBAAA,cAAc,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;AAChD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,QAAQ,EAAE,6BAA6B;AACvC,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,SAAS,EAAE,8BAA8B;AAC5C,qBAAA;AACJ,iBAAA;;;MCnBY,mBAAmB,CAAA;AArBhC,IAAA,WAAA,GAAA;AAsBuB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAEpC,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAChD;QAEkB,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAC/C;AASJ,IAAA;AAPa,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CACd,OAAO,CAAC,wBAAwB,CAC5B,gBAAgB,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC,CAClD,CACJ;IACL;+GAlBS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBlB;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FASQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBArB/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,QAAA,EACxB;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,aAAA,EAMc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA;;;MCpB7B,mBAAmB,CAAA;AADzC,IAAA,WAAA,GAAA;AAEoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAwBlF,IAAA;AAtBU,IAAA,OAAO,CAAC,QAAyB,EAAA;QACpC,QAAQ,QAAQ;AACZ,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,aAAa;AACd,gBAAA,OAAO,CAAC;AACZ,YAAA,KAAK,cAAc;AACnB,YAAA,KAAK,iBAAiB;AAClB,gBAAA,OAAO,KAAK;AAChB,YAAA;AACI,gBAAA,OAAO,EAAE;;IAErB;AAEO,IAAA,WAAW,CACd,KAAyD,EAAA;QAEzD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;QAChE,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;AAC9D,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE;QAE5D,OAAO,UAAU,GAAG,UAAU;IAClC;+GAxBkB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,MAAM,EAAC,EAAC;;AAkC1C;AACM,MAAO,qBAAsB,SAAQ,mBAAmB,CAAA;+GAAjD,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,SAAA,EALnB,CAAC,qBAAqB,CAAC,MAAM,mBAAmB,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAKpD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,SAAS,EAAE,CAAC,qBAAqB,CAAC,MAAM,mBAAmB,CAAC,CAAC;AAC7D,oBAAA,cAAc,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;AAC1D,oBAAA,IAAI,EAAE,EAAC,kBAAkB,EAAE,WAAW,EAAC;AAC1C,iBAAA;;;ACnCM,MAAM,YAAY,GAAG;IACxB,qBAAqB;IACrB,qBAAqB;IACrB,QAAQ;IACR,qBAAqB;IACrB,4BAA4B;IAC5B,kBAAkB;;;AChBtB;;AAEG;;;;"}