@alexfriesen/ngx-mat-timepicker
Version:
ngx-mat-timepicker is an Angular material 17+ extension to add time pickers!
1 lines • 225 kB
Source Map (JSON)
{"version":3,"file":"alexfriesen-ngx-mat-timepicker.mjs","sources":["../../../projects/ngx-mat-timepicker/src/lib/tokens/ngx-mat-timepicker-config.token.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-format.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-periods.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/utils/datetime-unit-fix.utils.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker-adapter.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-units.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker.service.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker-event.service.ts","../../../projects/ngx-mat-timepicker/src/lib/tokens/ngx-mat-timepicker-time-locale.token.ts","../../../projects/ngx-mat-timepicker/src/lib/tokens/ngx-mat-timepicker-time-numberingsystem.token.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker-locale.service.ts","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker-base.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/utils/ngx-mat-timepicker.utils.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-measures.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-time-localizer.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-minutes-formatter.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-active-minute.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-active-hour.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-face/ngx-mat-timepicker-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-face/ngx-mat-timepicker-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-period/ngx-mat-timepicker-period.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-period/ngx-mat-timepicker-period.component.html","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-parser.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker-autofocus.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker/ngx-mat-timepicker.component.ts","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker-toggle-icon.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-control/ngx-mat-timepicker-control.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-control/ngx-mat-timepicker-control.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component.html","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-time-formatter.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/ngx-mat-timepicker.module.ts","../../../projects/ngx-mat-timepicker/src/alexfriesen-ngx-mat-timepicker.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nimport { NgxMatTimepickerConfig } from '../models/ngx-mat-timepicker-config.interface';\n\nexport const NGX_MAT_TIMEPICKER_CONFIG =\n new InjectionToken<NgxMatTimepickerConfig>('NGX_MAT_TIMEPICKER_CONFIG');\n\nexport function provideNgxMatTimepickerOptions(\n config: NgxMatTimepickerConfig,\n): Provider[] {\n return [{ provide: NGX_MAT_TIMEPICKER_CONFIG, useValue: config }];\n}\n","export enum NgxMatTimepickerFormat {\n TWELVE = \"hh:mm a\",\n TWELVE_SHORT = \"h:m a\",\n TWENTY_FOUR = \"HH:mm\",\n TWENTY_FOUR_SHORT = \"H:m\"\n}\n","export enum NgxMatTimepickerPeriods {\n AM = \"AM\",\n PM = \"PM\"\n}\n","import { DateTimeUnit } from 'luxon';\n\nexport type DateTimeUnitWithDeprecatedTypes =\n | DateTimeUnit\n | 'hours'\n | 'minutes';\n\nexport function fixDateTimeUnit(\n unit: DateTimeUnitWithDeprecatedTypes,\n): DateTimeUnit {\n switch (unit) {\n case 'hours':\n case 'minutes':\n printDeprecationWarning(unit);\n return fixUnit(unit);\n default:\n return unit;\n }\n}\n\nexport function fixUnit(unit: DateTimeUnitWithDeprecatedTypes): DateTimeUnit {\n switch (unit) {\n case 'hours':\n return 'hour';\n case 'minutes':\n return 'minute';\n default:\n return unit;\n }\n}\n\nfunction printDeprecationWarning(unit: DateTimeUnitWithDeprecatedTypes) {\n console.warn(`'${unit}' is deprecated. Use '${fixUnit(unit)}' instead.`);\n}\n","import { DateTime, LocaleOptions, NumberingSystem } from 'luxon';\n\nimport { NgxMatTimepickerFormat } from '../models/ngx-mat-timepicker-format.enum';\nimport { NgxMatTimepickerPeriods } from '../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerFormatType } from '../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerOptions } from '../models/ngx-mat-timepicker-options.interface';\n\nimport {\n DateTimeUnitWithDeprecatedTypes,\n fixDateTimeUnit,\n} from '../utils/datetime-unit-fix.utils';\n\n// @dynamic\nexport class NgxMatTimepickerAdapter {\n static defaultFormat: NgxMatTimepickerFormatType = 12;\n static defaultLocale = 'en-US';\n static defaultNumberingSystem: NumberingSystem = 'latn';\n\n /***\n * Format hour according to time format (12 or 24)\n */\n static formatHour(\n currentHour: number,\n format: NgxMatTimepickerFormatType,\n period: NgxMatTimepickerPeriods,\n ): number {\n if (this.isTwentyFour(format)) {\n return currentHour;\n }\n const hour =\n period === NgxMatTimepickerPeriods.AM ? currentHour : currentHour + 12;\n\n if (period === NgxMatTimepickerPeriods.AM && hour >= 12) {\n return 0;\n } else if (period === NgxMatTimepickerPeriods.PM && hour >= 24) {\n return 12;\n }\n\n return hour;\n }\n\n static formatTime(time: string, opts: NgxMatTimepickerOptions): string {\n if (!time) {\n return 'Invalid Time';\n }\n const parsedTime = this.parseTime(time, opts).setLocale(this.defaultLocale);\n if (!parsedTime.isValid) {\n return 'Invalid time';\n }\n const isTwelve = !this.isTwentyFour(\n opts.format as NgxMatTimepickerFormatType,\n );\n if (isTwelve) {\n return parsedTime\n .toLocaleString({\n ...DateTime.TIME_SIMPLE,\n hour12: isTwelve,\n })\n .replace(/\\u200E/g, '');\n }\n\n return parsedTime\n .toISOTime({\n includeOffset: false,\n suppressMilliseconds: true,\n suppressSeconds: true,\n })\n .replace(/\\u200E/g, '');\n }\n\n static fromDateTimeToString(\n time: DateTime,\n format: NgxMatTimepickerFormatType,\n ): string {\n return time\n .reconfigure({\n numberingSystem: this.defaultNumberingSystem,\n locale: this.defaultLocale,\n })\n .toFormat(\n this.isTwentyFour(format)\n ? NgxMatTimepickerFormat.TWENTY_FOUR\n : NgxMatTimepickerFormat.TWELVE,\n );\n }\n\n static isBetween(\n time: DateTime,\n before: DateTime,\n after: DateTime,\n unit: DateTimeUnitWithDeprecatedTypes = 'minute',\n ): boolean {\n unit = fixDateTimeUnit(unit);\n const innerUnit = unit === 'hour' ? unit : undefined;\n\n return (\n this.isSameOrBefore(time, after, innerUnit) &&\n this.isSameOrAfter(time, before, innerUnit)\n );\n }\n\n static isSameOrAfter(\n time: DateTime,\n compareWith: DateTime,\n unit: DateTimeUnitWithDeprecatedTypes = 'minute',\n ): boolean {\n unit = fixDateTimeUnit(unit);\n if (unit === 'hour') {\n return time.hour >= compareWith.hour;\n }\n\n return (\n time.hasSame(compareWith, unit) || time.valueOf() > compareWith.valueOf()\n );\n }\n\n static isSameOrBefore(\n time: DateTime,\n compareWith: DateTime,\n unit: DateTimeUnitWithDeprecatedTypes = 'minute',\n ): boolean {\n unit = fixDateTimeUnit(unit);\n if (unit === 'hour') {\n return time.hour <= compareWith.hour;\n }\n\n return (\n time.hasSame(compareWith, unit) || time.valueOf() <= compareWith.valueOf()\n );\n }\n\n static isTimeAvailable(\n time: string,\n min?: DateTime,\n max?: DateTime,\n granularity?: DateTimeUnitWithDeprecatedTypes,\n minutesGap?: number | null,\n format?: number,\n ): boolean {\n if (!time) {\n return undefined;\n }\n\n const convertedTime = this.parseTime(time, { format });\n const minutes = convertedTime.minute;\n\n if (minutesGap && minutes === minutes && minutes % minutesGap !== 0) {\n throw new Error(\n `Your minutes - ${minutes} doesn't match your minutesGap - ${minutesGap}`,\n );\n }\n\n granularity = fixDateTimeUnit(granularity);\n const isAfter =\n min && !max && this.isSameOrAfter(convertedTime, min, granularity);\n const isBefore =\n max && !min && this.isSameOrBefore(convertedTime, max, granularity);\n const between =\n min && max && this.isBetween(convertedTime, min, max, granularity);\n const isAvailable = !min && !max;\n\n return isAfter || isBefore || between || isAvailable;\n }\n\n static isTwentyFour(format: NgxMatTimepickerFormatType): boolean {\n return format === 24;\n }\n\n static parseTime(time: string, opts: NgxMatTimepickerOptions): DateTime {\n const localeOpts = this._getLocaleOptionsByTime(time, opts);\n let timeMask = NgxMatTimepickerFormat.TWENTY_FOUR_SHORT;\n // If there's a space, means we have the meridiem. Way faster than splitting text\n // if (~time.indexOf(\" \")) {\n // 09/02/2023 it seems that sometimes the space from the formatter is a nnbsp (Chromium >= 110)\n // which causes the indexOf(\" \") to fail: charCode 32, while nbsp is 8239\n if (time.match(/\\s/g)) {\n /*\n * We translate the meridiem in simple AM or PM letters (instead of A.M.)\n * because even if we set the locale with NgxMatTimepickerModule.setLocale\n * the default (en-US) will always be used here\n */\n time = time.replace(/\\.\\s*/g, '');\n timeMask = NgxMatTimepickerFormat.TWELVE_SHORT;\n }\n\n return DateTime.fromFormat(time.replace(/\\s+/g, ' '), timeMask, {\n numberingSystem: localeOpts.numberingSystem,\n locale: localeOpts.locale,\n });\n }\n\n static toLocaleTimeString(\n time: string,\n opts: NgxMatTimepickerOptions = {},\n ): string {\n const { format = this.defaultFormat, locale = this.defaultLocale } = opts;\n let hourCycle: 'h12' | 'h23' = 'h12';\n let timeMask = NgxMatTimepickerFormat.TWELVE_SHORT;\n if (this.isTwentyFour(format as NgxMatTimepickerFormatType)) {\n hourCycle = 'h23';\n timeMask = NgxMatTimepickerFormat.TWENTY_FOUR_SHORT;\n }\n\n return DateTime.fromFormat(time, timeMask)\n .reconfigure({\n locale,\n numberingSystem: opts.numberingSystem,\n outputCalendar: opts.outputCalendar,\n })\n .toLocaleString({\n ...DateTime.TIME_SIMPLE,\n hourCycle,\n });\n }\n\n /**\n *\n * @param time\n * @param opts\n * @private\n */\n private static _getLocaleOptionsByTime(\n time: string,\n opts: NgxMatTimepickerOptions,\n ): LocaleOptions {\n const { numberingSystem, locale } = DateTime.now()\n .reconfigure({\n locale: opts.locale,\n numberingSystem: opts.numberingSystem,\n outputCalendar: opts.outputCalendar,\n })\n .resolvedLocaleOptions();\n\n return isNaN(parseInt(time, 10))\n ? {\n numberingSystem: numberingSystem as NumberingSystem,\n locale,\n }\n : {\n numberingSystem: this.defaultNumberingSystem,\n locale: this.defaultLocale,\n };\n }\n}\n","export enum NgxMatTimepickerUnits {\n HOUR,\n MINUTE,\n}\n","import { Injectable } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerClockFace } from '../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerPeriods } from '../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerAdapter } from './ngx-mat-timepicker-adapter';\n\nconst DEFAULT_HOUR: NgxMatTimepickerClockFace = {\n time: 12,\n angle: 360,\n};\nconst DEFAULT_MINUTE: NgxMatTimepickerClockFace = {\n time: 0,\n angle: 360,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxMatTimepickerService {\n setHour(hour: NgxMatTimepickerClockFace) {\n this.hour$.next(hour);\n }\n\n setMinute(minute: NgxMatTimepickerClockFace) {\n this.minute$.next(minute);\n }\n\n setPeriod(period: NgxMatTimepickerPeriods) {\n const isPeriodValid =\n period === NgxMatTimepickerPeriods.AM ||\n period === NgxMatTimepickerPeriods.PM;\n\n if (isPeriodValid) {\n this.period$.next(period);\n }\n }\n\n readonly hour$ = new BehaviorSubject<NgxMatTimepickerClockFace>(DEFAULT_HOUR);\n readonly minute$ = new BehaviorSubject<NgxMatTimepickerClockFace>(\n DEFAULT_MINUTE,\n );\n readonly period$ = new BehaviorSubject<NgxMatTimepickerPeriods>(\n NgxMatTimepickerPeriods.AM,\n );\n\n readonly hour = toSignal(this.hour$);\n readonly minute = toSignal(this.minute$);\n readonly period = toSignal(this.period$);\n\n getFullTime(format: number): string {\n const selectedHour = this.hour().time;\n const selectedMinute = this.minute().time;\n const hour = selectedHour != null ? selectedHour : DEFAULT_HOUR.time;\n const minute =\n selectedMinute != null ? selectedMinute : DEFAULT_MINUTE.time;\n const period = format === 12 ? this.period() : '';\n const time = `${hour}:${minute} ${period}`.trim();\n\n return NgxMatTimepickerAdapter.formatTime(time, { format });\n }\n\n setDefaultTimeIfAvailable(\n time: string,\n min: DateTime,\n max: DateTime,\n format: number,\n minutesGap?: number,\n ) {\n if (!time) {\n this._resetTime();\n }\n /* Workaround to double error message*/\n try {\n if (\n NgxMatTimepickerAdapter.isTimeAvailable(\n time,\n min,\n max,\n 'minute',\n minutesGap,\n )\n ) {\n this._setDefaultTime(time, format);\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n private _resetTime(): void {\n this.setHour({ ...DEFAULT_HOUR });\n this.setMinute({ ...DEFAULT_MINUTE });\n this.setPeriod(NgxMatTimepickerPeriods.AM);\n }\n\n private _setDefaultTime(time: string, format: number) {\n const defaultDto = NgxMatTimepickerAdapter.parseTime(time, { format });\n\n if (defaultDto.isValid) {\n const period = time.substring(time.length - 2).toUpperCase();\n const hour = defaultDto.hour;\n\n this.setHour({\n ...DEFAULT_HOUR,\n time: formatHourByPeriod(hour, period as NgxMatTimepickerPeriods),\n });\n this.setMinute({ ...DEFAULT_MINUTE, time: defaultDto.minute });\n this.setPeriod(period as NgxMatTimepickerPeriods);\n } else {\n this._resetTime();\n }\n }\n}\n\n/***\n * Format hour in 24hours format to meridian (AM or PM) format\n */\nfunction formatHourByPeriod(\n hour: number,\n period: NgxMatTimepickerPeriods,\n): number {\n switch (period) {\n case NgxMatTimepickerPeriods.AM:\n return hour === 0 ? 12 : hour;\n case NgxMatTimepickerPeriods.PM:\n return hour === 12 ? 12 : hour - 12;\n default:\n return hour;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxMatTimepickerEventService {\n get backdropClick(): Observable<MouseEvent> {\n return this._backdropClick$\n .asObservable()\n .pipe(shareReplay({ bufferSize: 1, refCount: true }));\n }\n\n get keydownEvent(): Observable<KeyboardEvent> {\n return this._keydownEvent$\n .asObservable()\n .pipe(shareReplay({ bufferSize: 1, refCount: true }));\n }\n\n private _backdropClick$ = new Subject<MouseEvent>();\n private _keydownEvent$ = new Subject<KeyboardEvent>();\n\n dispatchEvent(event: KeyboardEvent | MouseEvent): void {\n switch (event.type) {\n case 'click':\n this._backdropClick$.next(event as MouseEvent);\n break;\n case 'keydown':\n this._keydownEvent$.next(event as KeyboardEvent);\n break;\n default:\n throw new Error('no such event type');\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\n\nexport const NGX_MAT_TIMEPICKER_LOCALE = new InjectionToken<string>(\n 'TimeLocale',\n {\n providedIn: 'root',\n factory: () => NgxMatTimepickerAdapter.defaultLocale,\n },\n);\n","import { InjectionToken } from '@angular/core';\nimport type { NumberingSystem } from 'luxon';\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\n\nexport const NGX_MAT_TIMEPICKER_NUMBERINGSYSTEM =\n new InjectionToken<NumberingSystem>('TIMEPICKER_NUMBERINGSYSTEM', {\n providedIn: 'root',\n factory: () => NgxMatTimepickerAdapter.defaultNumberingSystem,\n });\n","import { Injectable, inject } from '@angular/core';\nimport { DateTime, NumberingSystem } from 'luxon';\n\nimport { NGX_MAT_TIMEPICKER_LOCALE } from '../tokens/ngx-mat-timepicker-time-locale.token';\nimport { NGX_MAT_TIMEPICKER_NUMBERINGSYSTEM } from '../tokens/ngx-mat-timepicker-time-numberingsystem.token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxMatTimepickerLocaleService {\n get locale(): string {\n return this._locale;\n }\n\n get numberingSystem(): string {\n return this._numberingSystem;\n }\n\n private _locale = inject(NGX_MAT_TIMEPICKER_LOCALE);\n private _numberingSystem = inject(NGX_MAT_TIMEPICKER_NUMBERINGSYSTEM);\n\n updateLocale(newValue: string): void {\n this._locale = newValue;\n }\n\n updateNumberingSystemByLocale(newValue: string): void {\n this._numberingSystem = this.resolveNumberingSystemByLocale(newValue);\n }\n\n updateNumberingSystem(newValue: NumberingSystem): void {\n this._numberingSystem = newValue;\n }\n\n private resolveNumberingSystemByLocale(locale: string): NumberingSystem {\n return DateTime.local().setLocale(locale).resolvedLocaleOptions()\n .numberingSystem;\n }\n}\n","import {\n Directive,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n model,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject } from 'rxjs';\nimport { shareReplay, takeUntil } from 'rxjs/operators';\n\nimport { NgxMatTimepickerEventService } from '../services/ngx-mat-timepicker-event.service';\nimport { NgxMatTimepickerLocaleService } from '../services/ngx-mat-timepicker-locale.service';\nimport { NgxMatTimepickerService } from '../services/ngx-mat-timepicker.service';\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\n\nimport { NgxMatTimepickerUnits } from '../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerPeriods } from '../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerConfig } from '../models/ngx-mat-timepicker-config.interface';\nimport { NGX_MAT_TIMEPICKER_CONFIG } from '../tokens/ngx-mat-timepicker-config.token';\n\n@Directive({\n selector: '[ngxMatTimepickerBase]',\n standalone: true,\n})\nexport class NgxMatTimepickerBaseDirective implements OnInit, OnDestroy {\n protected readonly color = model<ThemePalette>('primary');\n\n get defaultTime(): string {\n return this._defaultTime;\n }\n\n @Input()\n set defaultTime(time: string) {\n this._defaultTime = time;\n this._setDefaultTime(time);\n }\n\n private get _locale(): string {\n return this._timepickerLocaleSrv.locale;\n }\n\n readonly selectedHour = this._timepickerSrv.hour;\n readonly selectedHour$ = this._timepickerSrv.hour$.pipe(\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly selectedMinute = this._timepickerSrv.minute;\n readonly selectedMinute$ = this._timepickerSrv.minute$.pipe(\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly selectedPeriod = this._timepickerSrv.period;\n readonly selectedPeriod$ = this._timepickerSrv.period$.pipe(\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n activeTimeUnit: NgxMatTimepickerUnits = NgxMatTimepickerUnits.HOUR;\n timeUnit: typeof NgxMatTimepickerUnits = NgxMatTimepickerUnits;\n\n protected _defaultTime: string;\n protected _subsCtrl$: Subject<void> = new Subject<void>();\n\n constructor(\n protected _timepickerSrv: NgxMatTimepickerService,\n protected _eventSrv: NgxMatTimepickerEventService,\n protected _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n @Inject(NGX_MAT_TIMEPICKER_CONFIG) public data: NgxMatTimepickerConfig,\n ) {\n this.color.set(data.color);\n this.defaultTime = data.defaultTime;\n }\n\n changePeriod(period: NgxMatTimepickerPeriods): void {\n this._timepickerSrv.setPeriod(period);\n this._onTimeChange();\n }\n\n changeTimeUnit(unit: NgxMatTimepickerUnits): void {\n this.activeTimeUnit = unit;\n }\n\n close(): void {\n this.data.timepickerBaseRef.close();\n }\n\n ngOnDestroy(): void {\n this._subsCtrl$.next();\n this._subsCtrl$.complete();\n }\n\n ngOnInit(): void {\n this._defineTime();\n\n this.data.timepickerBaseRef.timeUpdated$\n .pipe(takeUntil(this._subsCtrl$))\n .subscribe({\n next: (v: string) => {\n if (v) {\n this._setDefaultTime(v);\n }\n },\n });\n }\n\n onHourChange(hour: NgxMatTimepickerClockFace): void {\n this._timepickerSrv.setHour(hour);\n this._onTimeChange();\n }\n\n onHourSelected(hour: number): void {\n if (!this.data.hoursOnly) {\n this.changeTimeUnit(NgxMatTimepickerUnits.MINUTE);\n }\n this.data.timepickerBaseRef.hourSelected.emit(hour);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(e: KeyboardEvent): void {\n this._eventSrv.dispatchEvent(e);\n e.stopPropagation();\n }\n\n onMinuteChange(minute: NgxMatTimepickerClockFace): void {\n this._timepickerSrv.setMinute(minute);\n this._onTimeChange();\n }\n\n setTime(): void {\n this.data.timepickerBaseRef.timeSet.emit(\n this._timepickerSrv.getFullTime(this.data.format),\n );\n this.close();\n }\n\n protected _defineTime(): void {\n const minTime = this.data.minTime;\n\n if (minTime && !this.data.time && !this.data.defaultTime) {\n const time = NgxMatTimepickerAdapter.fromDateTimeToString(\n minTime,\n this.data.format,\n );\n\n this._setDefaultTime(time);\n }\n }\n\n protected _onTimeChange(): void {\n const time = NgxMatTimepickerAdapter.toLocaleTimeString(\n this._timepickerSrv.getFullTime(this.data.format),\n {\n locale: this._locale,\n format: this.data.format,\n },\n );\n\n this.data.timepickerBaseRef.timeChanged.emit(time);\n }\n\n protected _setDefaultTime(time: string): void {\n this._timepickerSrv.setDefaultTimeIfAvailable(\n time,\n this.data.minTime,\n this.data.maxTime,\n this.data.format,\n this.data.minutesGap,\n );\n }\n}\n","import { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerClockFace } from '../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\nimport { NgxMatTimepickerFormat } from '../models/ngx-mat-timepicker-format.enum';\nimport { NgxMatTimepickerDisabledConfig } from '../models/ngx-mat-timepicker-disabled-config.interface';\n\nconst HOURS_24 = [\n {\n time: 1,\n angle: 30,\n },\n {\n time: 2,\n angle: 60,\n },\n {\n time: 3,\n angle: 90,\n },\n {\n time: 4,\n angle: 120,\n },\n {\n time: 5,\n angle: 150,\n },\n {\n time: 6,\n angle: 180,\n },\n {\n time: 7,\n angle: 210,\n },\n {\n time: 8,\n angle: 240,\n },\n {\n time: 9,\n angle: 270,\n },\n {\n time: 10,\n angle: 300,\n },\n {\n time: 11,\n angle: 330,\n },\n {\n time: 0,\n angle: 360,\n },\n {\n time: 13,\n angle: 390,\n },\n {\n time: 14,\n angle: 420,\n },\n {\n time: 15,\n angle: 450,\n },\n {\n time: 16,\n angle: 480,\n },\n {\n time: 17,\n angle: 510,\n },\n {\n time: 18,\n angle: 540,\n },\n {\n time: 19,\n angle: 570,\n },\n {\n time: 20,\n angle: 600,\n },\n {\n time: 21,\n angle: 630,\n },\n {\n time: 22,\n angle: 660,\n },\n {\n time: 23,\n angle: 690,\n },\n {\n time: 12,\n angle: 720,\n },\n];\n\nconst HOURS_12 = [\n {\n time: 1,\n angle: 30,\n },\n {\n time: 2,\n angle: 60,\n },\n {\n time: 3,\n angle: 90,\n },\n {\n time: 4,\n angle: 120,\n },\n {\n time: 5,\n angle: 150,\n },\n {\n time: 6,\n angle: 180,\n },\n {\n time: 7,\n angle: 210,\n },\n {\n time: 8,\n angle: 240,\n },\n {\n time: 9,\n angle: 270,\n },\n {\n time: 10,\n angle: 300,\n },\n {\n time: 11,\n angle: 330,\n },\n {\n time: 12,\n angle: 360,\n },\n];\n\nexport function disableHours(\n hours: NgxMatTimepickerClockFace[],\n config: NgxMatTimepickerDisabledConfig,\n): NgxMatTimepickerClockFace[] {\n if (config.min || config.max) {\n return hours.map((value) => {\n const hour = NgxMatTimepickerAdapter.isTwentyFour(config.format)\n ? value.time\n : NgxMatTimepickerAdapter.formatHour(\n value.time,\n config.format,\n config.period,\n );\n const currentTime = DateTime.fromObject({ hour }).toFormat(\n NgxMatTimepickerFormat.TWELVE,\n );\n\n return {\n ...value,\n disabled: !NgxMatTimepickerAdapter.isTimeAvailable(\n currentTime,\n config.min,\n config.max,\n 'hour',\n ),\n };\n });\n }\n\n return hours;\n}\n\nexport function disableMinutes(\n minutes: NgxMatTimepickerClockFace[],\n selectedHour: number,\n config: NgxMatTimepickerDisabledConfig,\n) {\n if (config.min || config.max) {\n const hour = NgxMatTimepickerAdapter.formatHour(\n selectedHour,\n config.format,\n config.period,\n );\n let currentTime = DateTime.fromObject({\n hour,\n minute: 0,\n });\n\n return minutes.map((value) => {\n currentTime = currentTime.set({ minute: value.time });\n\n return {\n ...value,\n disabled: !NgxMatTimepickerAdapter.isTimeAvailable(\n currentTime.toFormat(NgxMatTimepickerFormat.TWELVE),\n config.min,\n config.max,\n 'minute',\n ),\n };\n });\n }\n\n return minutes;\n}\n\nexport function getHours(format: number): NgxMatTimepickerClockFace[] {\n if (format === 24) {\n return HOURS_24;\n }\n return HOURS_12;\n}\n\nexport function getMinutes(gap = 1): NgxMatTimepickerClockFace[] {\n const minutesCount = 60;\n const angleStep = 360 / minutesCount;\n const minutes = [];\n\n for (let i = 0; i < minutesCount; i++) {\n const angle = angleStep * i;\n if (i % gap === 0) {\n minutes.push({\n time: i,\n angle: angle !== 0 ? angle : 360,\n });\n }\n }\n\n return minutes;\n}\n\nexport function isDigit(e: KeyboardEvent) {\n // Allow: backspace, delete, tab, escape, enter\n if (\n [46, 8, 9, 27, 13].some((n) => n === e.keyCode) ||\n // Allow: Ctrl/cmd+A\n (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\n // Allow: Ctrl/cmd+C\n (e.keyCode === 67 && (e.ctrlKey === true || e.metaKey === true)) ||\n // Allow: Ctrl/cmd+X\n (e.keyCode === 88 && (e.ctrlKey === true || e.metaKey === true)) ||\n // Allow: home, end, left, right, up, down\n (e.keyCode >= 35 && e.keyCode <= 40)\n ) {\n return true;\n }\n\n // Allow: 0-9\n return !(\n (e.keyCode < 48 || e.keyCode > 57) &&\n (e.keyCode < 96 || e.keyCode > 105)\n );\n}\n\nexport const NgxMatTimepickerUtils = {\n disableHours,\n disableMinutes,\n getHours,\n getMinutes,\n isDigit,\n};\n","export enum NgxMatTimepickerMeasure {\n hour = 'hour',\n minute = 'minute',\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerUnits } from '../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerMeasure } from '../models/ngx-mat-timepicker-measures.enum';\nimport { NgxMatTimepickerLocaleService } from '../services/ngx-mat-timepicker-locale.service';\n\n@Pipe({\n name: 'timeLocalizer',\n standalone: true,\n})\nexport class NgxMatTimepickerTimeLocalizerPipe implements PipeTransform {\n private readonly _timepickerLocaleSrv = inject(NgxMatTimepickerLocaleService);\n\n private get _locale(): string {\n return this._timepickerLocaleSrv.locale;\n }\n\n private get _numberingSystem() {\n return this._timepickerLocaleSrv.numberingSystem;\n }\n\n transform(\n time: number | string,\n timeUnit: NgxMatTimepickerUnits,\n isKeyboardEnabled = false,\n ): string {\n if (time == null || time === '') {\n return '';\n }\n\n switch (timeUnit) {\n case NgxMatTimepickerUnits.HOUR: {\n const format = time === 0 || isKeyboardEnabled ? 'HH' : 'H';\n\n return this._formatTime(NgxMatTimepickerMeasure.hour, time, format);\n }\n case NgxMatTimepickerUnits.MINUTE:\n return this._formatTime(NgxMatTimepickerMeasure.minute, time, 'mm');\n default:\n throw new Error(`There is no Time Unit with type ${timeUnit}`);\n }\n }\n\n private _formatTime(\n timeMeasure: NgxMatTimepickerMeasure,\n time: string | number,\n format: string,\n ): string {\n try {\n return DateTime.fromObject({ [timeMeasure]: +time })\n .reconfigure({\n locale: this._locale,\n numberingSystem: this._numberingSystem,\n })\n .toFormat(format);\n } catch {\n throw new Error(\n `Cannot format provided time - ${time} to locale - ${this._locale}`,\n );\n }\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n name: \"minutesFormatter\",\n standalone: true\n})\nexport class NgxMatTimepickerMinutesFormatterPipe implements PipeTransform {\n\n transform(minute: number, gap = 5): number | string {\n if (!minute) {\n return minute;\n }\n\n return minute % gap === 0 ? minute : \"\";\n }\n\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n name: \"activeMinute\",\n standalone: true\n})\nexport class NgxMatTimepickerActiveMinutePipe implements PipeTransform {\n\n transform(minute: number, currentMinute: number, gap: number, isClockFaceDisabled: boolean): boolean {\n if (minute == null || isClockFaceDisabled) {\n return false;\n }\n const defaultGap = 5;\n\n return ((currentMinute === minute) && (minute % (gap || defaultGap) === 0));\n }\n\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n name: \"activeHour\",\n standalone: true\n})\nexport class NgxMatTimepickerActiveHourPipe implements PipeTransform {\n\n transform(hour: number, currentHour: number, isClockFaceDisabled: boolean): boolean {\n if (hour == null || isClockFaceDisabled) {\n return false;\n }\n\n return hour === currentHour;\n }\n\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n output,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatMiniFabButton } from '@angular/material/button';\n\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerAdapter } from '../../services/ngx-mat-timepicker-adapter';\nimport { NgxMatTimepickerTimeLocalizerPipe } from '../../pipes/ngx-mat-timepicker-time-localizer.pipe';\nimport { NgxMatTimepickerMinutesFormatterPipe } from '../../pipes/ngx-mat-timepicker-minutes-formatter.pipe';\nimport { NgxMatTimepickerActiveMinutePipe } from '../../pipes/ngx-mat-timepicker-active-minute.pipe';\nimport { NgxMatTimepickerActiveHourPipe } from '../../pipes/ngx-mat-timepicker-active-hour.pipe';\n\nfunction roundAngle(angle: number, step: number): number {\n return Math.round(angle / step) * step;\n}\n\nfunction countAngleByCords(\n x0: number,\n y0: number,\n x: number,\n y: number,\n currentAngle: number,\n): number {\n if (y > y0 && x >= x0) {\n // II quarter\n return 180 - currentAngle;\n } else if (y > y0 && x < x0) {\n // III quarter\n return 180 + currentAngle;\n } else if (y < y0 && x < x0) {\n // IV quarter\n return 360 - currentAngle;\n } else {\n // I quarter\n return currentAngle;\n }\n}\n\nconst CLOCK_HAND_STYLES = {\n small: {\n height: '75px',\n top: 'calc(50% - 75px)',\n },\n large: {\n height: '103px',\n top: 'calc(50% - 103px)',\n },\n};\n\n@Component({\n selector: 'ngx-mat-timepicker-face',\n templateUrl: './ngx-mat-timepicker-face.component.html',\n styleUrls: ['./ngx-mat-timepicker-face.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n SlicePipe,\n MatMiniFabButton,\n NgxMatTimepickerActiveHourPipe,\n NgxMatTimepickerActiveMinutePipe,\n NgxMatTimepickerMinutesFormatterPipe,\n NgxMatTimepickerTimeLocalizerPipe,\n ],\n})\nexport class NgxMatTimepickerFaceComponent\n implements AfterViewInit, OnChanges, OnDestroy\n{\n readonly clockFace = viewChild.required<ElementRef>('clockFace');\n readonly clockHand = viewChild.required<ElementRef>('clockHand');\n\n @Input() color: ThemePalette = 'primary';\n\n @Input() faceTime: NgxMatTimepickerClockFace[];\n\n @Input() unit: NgxMatTimepickerUnits;\n @Input() format: NgxMatTimepickerFormatType;\n\n @Input() minutesGap: number;\n\n @Input() selectedTime: NgxMatTimepickerClockFace;\n\n readonly timeChange = output<NgxMatTimepickerClockFace>();\n\n readonly timeSelected = output<number>();\n\n innerClockFaceSize = 85;\n isClockFaceDisabled: boolean;\n timeUnit = NgxMatTimepickerUnits;\n\n private _isStarted: boolean;\n private _touchEndHandler: (e: MouseEvent) => void;\n private _touchStartHandler: (e: MouseEvent) => void;\n\n ngAfterViewInit(): void {\n this._setClockHandPosition();\n this._addTouchEvents();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const faceTimeChanges = changes['faceTime'];\n const selectedTimeChanges = changes['selectedTime'];\n\n if (\n faceTimeChanges &&\n faceTimeChanges.currentValue &&\n selectedTimeChanges &&\n selectedTimeChanges.currentValue\n ) {\n /* Set time according to pass an input value */\n this.selectedTime = this.faceTime.find(\n (time) => time.time === this.selectedTime.time,\n );\n }\n if (selectedTimeChanges && selectedTimeChanges.currentValue) {\n this._setClockHandPosition();\n }\n if (faceTimeChanges && faceTimeChanges.currentValue) {\n // To avoid an error ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => this._selectAvailableTime());\n }\n }\n\n ngOnDestroy() {\n this._removeTouchEvents();\n }\n\n @HostListener('mousedown', ['$event'])\n onMousedown(e: MouseEvent) {\n e.preventDefault();\n this._isStarted = true;\n }\n\n @HostListener('mouseup', ['$event'])\n onMouseup(e: MouseEvent) {\n e.preventDefault();\n this._isStarted = false;\n }\n\n @HostListener('click', ['$event'])\n @HostListener('touchmove', ['$event.changedTouches[0]'])\n @HostListener('touchend', ['$event.changedTouches[0]'])\n @HostListener('mousemove', ['$event'])\n selectTime(e: MouseEvent): void {\n if (!this._isStarted && e instanceof MouseEvent && e.type !== 'click') {\n return;\n }\n const clockFaceCords =\n this.clockFace().nativeElement.getBoundingClientRect();\n\n /* Get x0 and y0 of the circle */\n const centerX = clockFaceCords.left + clockFaceCords.width / 2;\n const centerY = clockFaceCords.top + clockFaceCords.height / 2;\n\n /* Counting the arctangent and convert it to from radian to deg */\n const arctangent =\n (Math.atan(\n Math.abs(e.clientX - centerX) / Math.abs(e.clientY - centerY),\n ) *\n 180) /\n Math.PI;\n /* Get angle according to quadrant */\n const circleAngle = countAngleByCords(\n centerX,\n centerY,\n e.clientX,\n e.clientY,\n arctangent,\n );\n /* Check if selected time from the inner clock face (24 hours format only) */\n const isInnerClockChosen =\n this.format &&\n this._isInnerClockFace(centerX, centerY, e.clientX, e.clientY);\n /* Round angle according to angle step */\n const angleStep =\n this.unit === NgxMatTimepickerUnits.MINUTE\n ? 6 * (this.minutesGap || 1)\n : 30;\n const roundedAngle = roundAngle(circleAngle, angleStep);\n const angle = (roundedAngle || 360) + (isInnerClockChosen ? 360 : 0);\n\n const selectedTime = this.faceTime.find((val) => val.angle === angle);\n\n if (selectedTime && !selectedTime.disabled) {\n this.timeChange.emit(selectedTime);\n\n /* To let know whether user ended interaction with clock face */\n if (!this._isStarted) {\n this.timeSelected.emit(selectedTime.time);\n }\n }\n }\n\n private _addTouchEvents(): void {\n this._touchStartHandler = this.onMousedown.bind(this);\n this._touchEndHandler = this.onMouseup.bind(this);\n\n this.clockFace().nativeElement.addEventListener(\n 'touchstart',\n this._touchStartHandler,\n );\n this.clockFace().nativeElement.addEventListener(\n 'touchend',\n this._touchEndHandler,\n );\n }\n\n private _decreaseClockHand(): void {\n this.clockHand().nativeElement.style.height =\n CLOCK_HAND_STYLES.small.height;\n this.clockHand().nativeElement.style.top = CLOCK_HAND_STYLES.small.top;\n }\n\n private _increaseClockHand(): void {\n this.clockHand().nativeElement.style.height =\n CLOCK_HAND_STYLES.large.height;\n this.clockHand().nativeElement.style.top = CLOCK_HAND_STYLES.large.top;\n }\n\n private _isInnerClockFace(\n x0: number,\n y0: number,\n x: number,\n y: number,\n ): boolean {\n /* Detect whether time from the inner clock face or not (24 format only) */\n return (\n Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)) <\n this.innerClockFaceSize\n );\n }\n\n private _removeTouchEvents(): void {\n this.clockFace().nativeElement.removeEventListener(\n 'touchstart',\n this._touchStartHandler,\n );\n this.clockFace().nativeElement.removeEventListener(\n 'touchend',\n this._touchEndHandler,\n );\n }\n\n private _selectAvailableTime(): void {\n const currentTime = this.faceTime.find(\n (time) => this.selectedTime.time === time.time,\n );\n this.isClockFaceDisabled = this.faceTime.every((time) => time.disabled);\n\n if (currentTime && currentTime.disabled && !this.isClockFaceDisabled) {\n const availableTime = this.faceTime.find((time) => !time.disabled);\n\n this.timeChange.emit(availableTime);\n }\n }\n\n private _setClockHandPosition(): void {\n if (NgxMatTimepickerAdapter.isTwentyFour(this.format)) {\n if (this.selectedTime.time > 11) {\n this._decreaseClockHand();\n } else {\n this._increaseClockHand();\n }\n }\n\n if (this.selectedTime) {\n this.clockHand().nativeElement.style.transform = `rotate(${this.selectedTime.angle}deg)`;\n }\n }\n}\n","<!-- DEFAULT TEMPLATES - START -->\n<ng-template #hourButton let-time>\n <button\n mat-mini-fab\n disableRipple\n class=\"mat-elevation-z0\"\n [color]=\"\n (time.time | activeHour: selectedTime?.time : isClockFaceDisabled)\n ? color\n : 'void'\n \"\n [style.transform]=\"'rotateZ(-' + time.angle + 'deg)'\"\n [disabled]=\"time.disabled\"\n >\n {{ time.time | timeLocalizer: timeUnit.HOUR }}\n </button>\n</ng-template>\n<!-- DEFAULT TEMPLATES - END -->\n<div class=\"clock-face\" #clockFace>\n @if (unit !== timeUnit.MINUTE) {\n <div class=\"clock-face__container\">\n @for (time of faceTime | slice: 0 : 12; track time.time) {\n <div\n class=\"clock-face__number clock-face__number--outer\"\n [style.transform]=\"'rotateZ(' + time.angle + 'deg)'\"\n >\n <ng-content\n *ngTemplateOutlet=\"hourButton; context: { $implicit: time }\"\n />\n </div>\n }\n @if (faceTime.length > 12) {\n <div class=\"clock-face__inner\">\n @for (time of faceTime | slice: 12 : 24; track time.time) {\n <div\n class=\"clock-face__number clock-face__number--inner\"\n [style.top]=\"'calc(50% - ' + innerClockFaceSize + 'px)'\"\n [style.transform]=\"'rotateZ(' + time.angle + 'deg)'\"\n [style.height.px]=\"innerClockFaceSize\"\n >\n <ng-content\n *ngTemplateOutlet=\"hourButton; context: { $implicit: time }\"\n />\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"clock-face__container\">\n @for (time of faceTime; track time.time) {\n <div\n class=\"clock-face__number clock-face__number--outer\"\n [style.transform]=\"'rotateZ(' + time.angle + 'deg)'\"\n >\n <button\n mat-mini-fab\n disableRipple\n class=\"mat-elevation-z0\"\n [color]=\"\n (time.time\n | activeMinute\n : selectedTime?.time\n : minutesGap\n : isClockFaceDisabled)\n ? color\n : 'void'\n \"\n [style.transform]=\"'rotateZ(-' + time.angle + 'deg)'\"\n [disabled]=\"time.disabled\"\n >\n {{\n time.time\n | minutesFormatter: minutesGap\n | timeLocalizer: timeUnit.MINUTE\n }}\n </button>\n </div>\n }\n </div>\n }\n <div\n #clockHand\n class=\"clock-face__clock-hand\"\n [class.clock-face__clock-hand_minute]=\"unit === timeUnit.MINUTE\"\n [hidden]=\"isClockFaceDisabled\"\n >\n @if (unit === timeUnit.MINUTE) {\n <button mat-mini-fab [color]=\"color\">\n <span class=\"clock-face__clock-hand_minute_dot\"></span>\n </button>\n }\n </div>\n <div class=\"clock-face__center\"></div>\n</div>\n","import { Component, computed, input, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerPeriods } from '../../models/ngx-mat-timepicker-periods.enum';\nimport {\n getMinutes,\n disableMinutes,\n} from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerFaceComponent } from '../ngx-mat-timepicker-face/ngx-mat-timepicker-face.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-minutes-face',\n templateUrl: './ngx-mat-timepicker-minutes-face.component.html',\n imports: [NgxMatTimepickerFaceComponent],\n})\nexport class NgxMatTimepickerMinutesFaceComponent {\n readonly color = input<ThemePalette>('primary');\n\n readonly format = input<NgxMatTimepickerFormatType>();\n readonly maxTime = input<DateTime>();\n readonly minTime = input<DateTime>();\n\n readonly minuteChange = output<NgxMatTimepickerClockFace>();\n readonly minutesGap = input<number>();\n\n readonly minutesList = computed(() => {\n const minutes = getMinutes(this.minutesGap());\n return disableMinutes(minutes, this.selectedHour(), {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n period: this.period(),\n });\n });\n readonly period = input<NgxMatTimepickerPeriods>();\n readonly selectedHour = input<number>();\n\n readonly selectedMinute = input<NgxMatTimepickerClockFace>();\n timeUnit = NgxMatTimepickerUnits;\n}\n","<ngx-mat-timepicker-face\n [color]=\"color()\"\n [faceTime]=\"minutesList()\"\n [selectedTime]=\"selectedMinute()\"\n [minutesGap]=\"minutesGap()\"\n [unit]=\"timeUnit.MINUTE\"\n (timeChange)=\"minuteChange.emit($event)\"\n/>\n","import { Directive, computed, input, model, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { getHours } from '../../utils/ngx-mat-timepicker.utils';\n\n@Directive({\n selector: '[ngxMatTimepickerHoursFace]',\n standalone: true,\n})\nexport class NgxMatTimepickerHoursFaceDirective {\n readonly color = input<ThemePalette>('primary');\n\n readonly format = model<NgxMatTimepickerFormatType>(24);\n readonly availableHours = computed(() => {\n return getHours(this.format());\n });\n readonly hoursList = computed(() => {\n return this.computeHoursList();\n });\n\n readonly maxTime = input<DateTime>();\n readonly minTime = input<DateTime>();\n readonly selectedHour = input<NgxMatTimepickerClockFace>();\n\n readonly hourChange = output<NgxMatTimepickerClockFace>();\n readonly hourSelected = output<number>();\n\n timeUnit = NgxMatTimepickerUnits;\n\n onTimeSelected(time: number): void {\n this.hourSelected.emit(time);\n }\n\n protected computeHoursList(): NgxMatTimepickerClockFace[] {\n return this.availableHours();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { NgxMatTimepickerPeriods } from '../../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { disableHours } from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerHoursFaceDirective } from '../ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive';\nimport { NgxMatTimepickerFaceComponent } from '../ngx-mat-timepicker-face/ngx-mat-timepicker-face.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-12-hours-face',\n templateUrl: 'ngx-mat-timepicker-12-hours-face.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxMatTimepickerFaceComponent]\n})\nexport class NgxMatTimepicker12HoursFaceComponent extends NgxMatTimepickerHoursFaceDirective {\n readonly period = input<NgxMatTimepickerPeriods>();\n constructor() {\n super();\n this.format.set(12);\n }\n\n protected override computeHoursList(): NgxMatTimepickerClockFace[] {\n return disableHours(this.availableHours(), {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n period: this.period(),\n });\n }\n}\n","<ngx-mat-timepicker-face\n [unit]=\"timeUnit.HOUR\"\n [format]=\"format()\"\n [color]=\"color()\"\n [faceTime]=\"hoursList()\"\n [selectedTime]=\"selectedHour()\"\n (timeChange)=\"hourChange.emit($event)\"\n (timeSelected)=\"onTimeSelected($event)\"\n/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { disableHours } from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerHoursFaceDirective } from '../ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive';\nimport { NgxMatTimepickerFaceComponent } from '../ngx-mat-timepicker-face/ngx-mat-timepicker-face.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-24-hours-face',\n templateUrl: 'ngx-mat-timepicker-24-hours-face.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxMatTimepickerFaceComponent]\n})\nexport class NgxMatTimepicker24HoursFaceComponent extends NgxMatTimepickerHoursFaceDirective {\n constructor() {\n super();\n this.format.set(24);\n }\n\n protected override computeHoursList(): NgxMatTimepickerClockFace[] {\n return disableHours(this.availableHours(), {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n });\n }\n}\n","<ngx-mat-timepicker-face\n [unit]=\"timeUnit.HOUR\"\n [format]=\"format()\"\n [color]=\"color()\"\n [faceTime]=\"hoursList()\"\n [selectedTime]=\"selectedHour()\"\n (timeChange)=\"hourChange.emit($event)\"\n (timeSelected)=\"onTimeSelected($event)\"\n/>\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport {\n animate,\n sequence,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n ScrollStrategy,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n} from '@angular/cdk/overlay';\nimport {\n MatButtonToggleGroup,\n MatButtonToggle,\n} from '@angular/material/button-toggle';\n\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerPeriods } from '../../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport {\n disableHours,\n disableMinutes,\n} from '../../utils/ngx-mat-timepicker.utils';\n\n@Component({\n selector: 'ngx-mat-timepicker-period',\n templateUrl: 'ngx-mat-timepicker-period.component.html',\n styleUrls: ['ngx-mat-timepicker-period.component.scss'],\n animations: [\n trigger('scaleInOut', [\n transition(':enter', [\n style({ transform: 'scale(0)' }),\n animate('.2s', style({ transform: 'scale(1)' })),\n sequence([\n animate('3s', style({ opacity: 1 })),\n animate('.3s', style({ opacity: 0 })),\n ]),\n ]),\n ]),\n ],\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n MatButtonToggleGroup,\n MatButtonToggle,\n ],\n})\nexport class NgxMatTimepickerPeriodComponent {\n protected readonly _overlay = inject(Overlay);\n\n readonly activeTimeUnit = input<NgxMatTimepickerUnits>();\n readonly format = input<NgxMatTimepickerFormatType>();\n\n readonly hours = input<NgxMatTimepickerClockFace[]>();\n readonly minutes = input<NgxMatTimepickerClockFace[]>();\n\n readonly maxTime = input<DateTime>();\n readonly minTime = input<DateTime>();\n\n readonly meridiems = input<string[]>();\n readonly selectedHour = input<number | string>();\n readonly selectedPeriod = input<NgxMatTimepickerPeriods>();\n\n readonly periodChanged = output<NgxMatTimepickerPeriods>();\n\n readonly isAmDisabled = computed(() => {\n const times = this._getDisabledTimeByPeriod(NgxMatTimepickerPeriods.AM);\n return times.every((t) => t.disabled);\n });\n readonly isPmDisabled = computed(() => {\n const times = this._getDisabledTimeByPeriod(NgxMatTimepickerPeriods.PM);\n return times.every((t) => t.disabled);\n });\n\n readonly isPeriodAvailable = computed(() => {\n const period = this.selectedPeriod();\n if (period === NgxMatTimepickerPeriods.AM) {\n return !this.isAmDisabled();\n }\n if (period === NgxMatTimepickerPeriods.PM) {\n return !this.isPmDisabled();\n }\n return false;\n });\n\n timePeriod = NgxMatTimepickerPeriods;\n overlayPositionStrategy: FlexibleConnectedPositionStrategy;\n overlayScrollStrategy: ScrollStrategy =\n this._overlay.scrollStrategies.reposition();\n\n changePeriod(period: NgxMatTimepickerPeriods): void {\n const allowed = this._isSwitchPeriodAvailable(period);\n if (allowed) {\n this.periodChanged.emit(period);\n }\n }\n\n private _getDisabledTimeByPeriod(\n period: NgxMatTimepickerPeriods,\n ): NgxMatTimepickerClockFace[] {\n switch (this.activeTimeUnit()) {\n case NgxMatTimepickerUnits.HOUR:\n return disableHours(this.hours(), {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n period,\n });\n\n case NgxMatTimepickerUnits.MINUTE:\n return disableMinutes(this.minutes(), +this.selectedHour(), {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n period,\n });\n default:\n throw new Error('no such NgxMatTimepickerUnits');\n }\n }\n\n private _isSwitchPeriodAvailable(period: NgxMatTimepickerPeriods): boolean {\n const time = this._getDisabledTimeByPeriod(period);\n\n return !time.every((t) => t.disabled);\n }\n}\n","<div\n class=\"timepicker-period\"\n cdkOverlayOrigin\n #eventPanelOrigin=\"cdkOverlayOrigin\"\n>\n <mat-button-toggle-group\n vertical\n hideSingleSelectionIndicator\n [value]=\"selectedPeriod()\"\n (valueChange)=\"changePeriod($event)\"\n >\n <mat-button-toggle [value]=\"timePeriod.AM\" [disabled]=\"isAmDisabled()\">\n {{ meridiems()[0] }}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"timePeriod.PM\" [disabled]=\"isPmDisabled()\">\n {{ meridiems()[1] }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayPanelClass=\"todo-remove-pointer-events-if-necessary\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayPositionStrategy]=\"overlayPositionStrategy\"\n [cdkConnectedOverlayOrigin]=\"eventPanelOrigin\"\n [cdkConnectedOverlayOpen]=\"!isPeriodAvailable\"\n>\n @if (!isPeriodAvailable()) {\n <div class=\"timepicker-period__warning\" [@scaleInOut]>\n <p>Current time would be invalid in this period.</p>\n </div>\n }\n</ng-template>\n","import { Injectable, Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { NgxMatTimepickerUnits } from '../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerMeasure } from '../models/ngx-mat-timepicker-measures.enum';\nimport { NgxMatTimepickerLocaleService } from '../services/ngx-mat-timepicker-locale.service';\n\nimport { DateTime } from 'luxon';\n\n@Pipe({\n name: 'ngxMatTimepickerParser',\n standalone: true,\n})\n@Injectable()\nexport class NgxMatTimepickerParserPipe implements PipeTransform {\n private readonly _timepickerLocaleSrv = inject(NgxMatTimepickerLocaleService);\n\n private get _locale(): string {\n return this._timepickerLocaleSrv.locale;\n }\n\n private get _numberingSystem(): string {\n return this._timepickerLocaleSrv.numberingSystem;\n }\n\n transform(\n time: string | number,\n timeUnit = NgxMatTimepickerUnits.HOUR,\n ): string {\n if (time == null || time === '') {\n return '';\n }\n\n if (!isNaN(+time)) {\n return `${time}`;\n }\n\n if (timeUnit === NgxMatTimepickerUnits.MINUTE) {\n return this._parseTime(\n time,\n 'mm',\n NgxMatTimepickerMeasure.minute,\n ).toString();\n }\n\n return this._parseTime(time, 'HH', NgxMatTimepickerMeasure.hour).toString();\n }\n\n private _parseTime(\n time: string | number,\n format: string,\n timeMeasure: NgxMatTimepickerMeasure,\n ): number {\n const parsedTime = DateTime.fromFormat(String(time), format, {\n locale: this._locale,\n numberingSystem: this._numberingSystem,\n })[timeMeasure];\n\n if (!isNaN(parsedTime)) {\n return parsedTime;\n }\n\n throw new Error(`Cannot parse time - ${time}`);\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n inject,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[ngxMatTimepickerAutofocus]',\n standalone: true,\n})\nexport class NgxMatTimepickerAutofocusDirective\n implements OnChanges, OnDestroy\n{\n private readonly _element = inject(ElementRef);\n private readonly _document = inject(DOCUMENT, { optional: true });\n\n @Input('ngxMatTimepickerAutofocus') isFocusActive: boolean;\n\n private _activeElement = this._document?.activeElement as HTMLElement;\n\n ngOnChanges() {\n if (this.isFocusActive) {\n // To avoid ExpressionChangedAfterItHasBeenCheckedError;\n setTimeout(() =>\n this._element.nativeElement.focus({ preventScroll: true }),\n );\n }\n }\n\n ngOnDestroy() {\n // To avoid ExpressionChangedAfterItHasBeenCheckedError;\n setTimeout(() => this._activeElement?.focus({ preventScroll: true }));\n }\n}\n","import {\n Component,\n OnDestroy,\n Input,\n ElementRef,\n AfterViewInit,\n output,\n booleanAttribute,\n inject,\n ChangeDetectionStrategy,\n input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerParserPipe } from '../../pipes/ngx-mat-timepicker-parser.pipe';\nimport { NgxMatTimepickerTimeLocalizerPipe } from '../../pipes/ngx-mat-timepicker-time-localizer.pipe';\nimport { NgxMatTimepickerAutofocusDirective } from '../../directives/ngx-mat-timepicker-autofocus.directive';\nimport { isDigit } from '../../utils/ngx-mat-timepicker.utils';\n\nfunction retainSelection(this: HTMLInputElement) {\n this.selectionStart = this.selectionEnd;\n}\n\n@Component({\n selector: 'ngx-mat-timepicker-dial-control',\n templateUrl: 'ngx-mat-timepicker-dial-control.component.html',\n styleUrls: ['ngx-mat-timepicker-dial-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NgxMatTimepickerParserPipe],\n imports: [\n FormsModule,\n NgxMatTimepickerAutofocusDirective,\n NgxMatTimepickerParserPipe,\n NgxMatTimepickerTimeLocalizerPipe,\n ],\n})\nexport class NgxMatTimepickerDialControlComponent\n implements AfterViewInit, OnDestroy\n{\n private get _selectedTime(): NgxMatTimepickerClockFace | undefined {\n if (this.time) {\n return this.timeList().find((t) => t.time === +this.time);\n }\n\n return undefined;\n }\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly isActive = input(false, { transform: booleanAttribute });\n readonly isEditable = input(false, { transform: booleanAttribute });\n\n readonly minutesGap = input(1);\n readonly timeList = input<NgxMatTimepickerClockFace[]>([]);\n\n previousTime: number | string;\n\n @Input() time: string;\n\n @Input() timeUnit: NgxMatTimepickerUnits;\n\n readonly timeChanged = output<NgxMatTimepickerClockFace>();\n readonly timeUnitChanged = output<NgxMatTimepickerUnits>();\n readonly focused = output<void>();\n readonly unfocused = output<void>();\n\n private readonly _elRef = inject(ElementRef);\n private readonly _timeParserPipe = inject(NgxMatTimepickerParserPipe);\n\n focusChanged(value: boolean) {\n if (value) {\n this.focused.emit();\n } else {\n this.unfocused.emit();\n }\n }\n\n changeTimeByKeyboard(e: KeyboardEvent): void {\n const char = String.fromCharCode(e.keyCode);\n\n if (isTimeDisabledToChange(this.time, char, this.timeList())) {\n e.preventDefault();\n }\n }\n\n ngAfterViewInit(): void {\n this._elRef.nativeElement\n .querySelector('input')\n .addEventListener('select', retainSelection, false);\n }\n\n ngOnDestroy(): void {\n this._elRef.nativeElement\n ?.querySelector('input')\n ?.removeEventListener('select', retainSelection);\n }\n\n onKeydown(e: KeyboardEvent): void {\n if (!isDigit(e)) {\n e.preventDefault();\n } else {\n this._changeTimeByArrow(e.keyCode);\n }\n }\n\n onModelChange(value: string): void {\n this.time = this._timeParserPipe.transform(value, this.timeUnit);\n }\n\n saveTimeAndChangeTimeUnit(\n event: FocusEvent,\n unit: NgxMatTimepickerUnits,\n ): void {\n event.preventDefault();\n this.previousTime = this.time;\n this.timeUnitChanged.emit(unit);\n\n this.focusChanged(true);\n }\n\n updateTime(): void {\n if (this._selectedTime) {\n this.timeChanged.emit(this._selectedTime);\n this.previousTime = this._selectedTime.time;\n }\n }\n\n private _addTime(amount: number): string {\n return `${+this.time + amount}`.padStart(2, '0');\n }\n\n private _changeTimeByArrow(keyCode: number): void {\n let time: string;\n\n // arrow up\n if (keyCode === 38) {\n time = this._addTime(this.minutesGap() || 1);\n }\n // arrow down\n else if (keyCode === 40) {\n time = this._addTime(-1 * (this.minutesGap() || 1));\n }\n\n if (!isTimeUnavailable(time, this.timeList())) {\n this.time = time;\n this.updateTime();\n }\n }\n}\n\nfunction isTimeDisabledToChange(\n currentTime: string,\n nextTime: string,\n timeList: NgxMatTimepickerClockFace[],\n): boolean | undefined {\n const isNumber = /\\d/.test(nextTime);\n\n if (isNumber) {\n const time = currentTime + nextTime;\n\n return isTimeUnavailable(time, timeList);\n }\n\n return undefined;\n}\n\nfunction isTimeUnavailable(\n time: string,\n timeList: NgxMatTimepickerClockFace[],\n): boolean {\n const selectedTime = timeList.find((value) => value.time === +time);\n\n return !selectedTime || (selectedTime && selectedTime.disabled);\n}\n","<div class=\"wrapper\" [class.active]=\"isActive()\">\n @if (!isEditable()) {\n <input\n readonly\n class=\"control\"\n [ngModel]=\"time | timeLocalizer: timeUnit : true\"\n [disabled]=\"disabled()\"\n [ngxMatTimepickerAutofocus]=\"isActive()\"\n (input)=\"updateTime()\"\n (focus)=\"saveTimeAndChangeTimeUnit($event, timeUnit)\"\n (blur)=\"focusChanged(false)\"\n (ngModelChange)=\"time = $event\"\n />\n } @else {\n <input\n class=\"control\"\n [ngModel]=\"\n time | ngxMatTimepickerParser: timeUnit | timeLocalizer: timeUnit : true\n \"\n [disabled]=\"disabled()\"\n [ngxMatTimepickerAutofocus]=\"isActive()\"\n (input)=\"updateTime()\"\n (focus)=\"saveTimeAndChangeTimeUnit($event, timeUnit)\"\n (blur)=\"focusChanged(false)\"\n (keydown)=\"onKeydown($event)\"\n (keypress)=\"changeTimeByKeyboard($event)\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { DateTime, Info } from 'luxon';\n\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerPeriods } from '../../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerLocaleService } from '../../services/ngx-mat-timepicker-locale.service';\nimport {\n disableHours,\n disableMinutes,\n getHours,\n getMinutes,\n} from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerPeriodComponent } from '../ngx-mat-timepicker-period/ngx-mat-timepicker-period.component';\nimport { NgxMatTimepickerDialControlComponent } from '../ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-dial',\n templateUrl: 'ngx-mat-timepicker-dial.component.html',\n styleUrls: ['ngx-mat-timepicker-dial.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n NgxMatTimepickerDialControlComponent,\n NgxMatTimepickerPeriodComponent,\n ]\n})\nexport class NgxMatTimepickerDialComponent {\n private locale = inject(NgxMatTimepickerLocaleService).locale;\n\n meridiems = Info.meridiems({ locale: this.locale });\n timeUnit = NgxMatTimepickerUnits;\n\n readonly color = input<ThemePalette>('primary');\n\n readonly editableHintTmpl = input<TemplateRef<Node>>();\n readonly format = input<NgxMatTimepickerFormatType>();\n readonly hour = input<number | string>();\n readonly minute = input<number | string>();\n readonly minutesGap = input<number>();\n readonly period = input<NgxMatTimepickerPeriods>();\n readonly activeTimeUnit = input<NgxMatTimepickerUnits>();\n\n readonly hoursOnly = input<boolean>();\n readonly isEditable = input<boolean>();\n\n readonly maxTime = input<DateTime>();\n readonly minTime = input<DateTime>();\n\n readonly isHintVisible = signal(false);\n\n readonly hourString = computed(() => `${this.hour()}`);\n readonly minuteString = computed(() => `${this.minute()}`);\n\n readonly hours = computed(() => {\n const hours = getHours(this.format());\n return disableHours(hours, {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n period: this.period(),\n });\n });\n readonly minutes = computed(() => {\n const minutes = getMinutes(this.minutesGap());\n return disableMinutes(minutes, +this.hour(), {\n min: this.minTime(),\n max: this.maxTime(),\n format: this.format(),\n period: this.period(),\n });\n });\n\n readonly hourChanged = output<NgxMatTimepickerClockFace>();\n readonly minuteChanged = output<NgxMatTimepickerClockFace>();\n readonly periodChanged = output<NgxMatTimepickerPeriods>();\n readonly timeUnitChanged = output<NgxMatTimepickerUnits>();\n\n changeHour(hour: NgxMatTimepickerClockFace): void {\n this.hourChanged.emit(hour);\n }\n\n changeMinute(minute: NgxMatTimepickerClockFace): void {\n this.minuteChanged.emit(minute);\n }\n\n changePeriod(period: NgxMatTimepickerPeriods): void {\n this.periodChanged.emit(period);\n }\n\n changeTimeUnit(unit: NgxMatTimepickerUnits): void {\n this.timeUnitChanged.emit(unit);\n }\n\n hideHint(): void {\n this.isHintVisible.set(false);\n }\n\n showHint(): void {\n this.isHintVisible.set(true);\n }\n}\n","<div class=\"container\">\n <div class=\"time\">\n <ngx-mat-timepicker-dial-control\n [timeList]=\"hours()\"\n [time]=\"hourString()\"\n [timeUnit]=\"timeUnit.HOUR\"\n [isActive]=\"activeTimeUnit() === timeUnit.HOUR\"\n [isEditable]=\"isEditable()\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (timeChanged)=\"changeHour($event)\"\n (focused)=\"showHint()\"\n (unfocused)=\"hideHint()\"\n />\n <span class=\"seperator\">:</span>\n <ngx-mat-timepicker-dial-control\n [timeList]=\"minutes()\"\n [time]=\"minuteString()\"\n [timeUnit]=\"timeUnit.MINUTE\"\n [isActive]=\"activeTimeUnit() === timeUnit.MINUTE\"\n [isEditable]=\"isEditable()\"\n [minutesGap]=\"minutesGap()\"\n [disabled]=\"hoursOnly()\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (timeChanged)=\"changeMinute($event)\"\n (focused)=\"showHint()\"\n (unfocused)=\"hideHint()\"\n />\n </div>\n @if (format() !== 24) {\n <ngx-mat-timepicker-period\n class=\"period\"\n [selectedPeriod]=\"period()\"\n [activeTimeUnit]=\"activeTimeUnit()\"\n [maxTime]=\"maxTime()\"\n [minTime]=\"minTime()\"\n [format]=\"format()\"\n [hours]=\"hours()\"\n [minutes]=\"minutes()\"\n [selectedHour]=\"hour()\"\n [meridiems]=\"meridiems\"\n (periodChanged)=\"changePeriod($event)\"\n />\n }\n</div>\n\n@if (isEditable() || editableHintTmpl()) {\n <div [class.hint-hidden]=\"!isHintVisible()\">\n <ng-container\n *ngTemplateOutlet=\"\n editableHintTmpl() ? editableHintTmpl() : editableHintDefault\n \"\n />\n <ng-template #editableHintDefault>\n <small class=\"hint\">\n * use arrows (<span>⇅</span>) to change the time\n </small>\n </ng-template>\n </div>\n}\n","import { Component, Input, booleanAttribute } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-mat-timepicker-content',\n templateUrl: './ngx-mat-timepicker-content.component.html',\n imports: [NgTemplateOutlet]\n})\nexport class NgxMatTimepickerContentComponent {\n @Input({ transform: booleanAttribute }) appendToInput: boolean;\n @Input() inputElement: HTMLInputElement;\n}\n","@if (appendToInput) {\n <div>\n <ng-container *ngTemplateOutlet=\"timepickerOutlet\" />\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"timepickerOutlet\" />\n}\n<ng-template #timepickerOutlet>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, Inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogContent,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatButton } from '@angular/material/button';\n\nimport { NgxMatTimepickerBaseDirective } from '../../directives/ngx-mat-timepicker-base.directive';\nimport { NgxMatTimepickerConfig } from '../../models/ngx-mat-timepicker-config.interface';\nimport { NgxMatTimepickerLocaleService } from '../../services/ngx-mat-timepicker-locale.service';\nimport { NgxMatTimepickerService } from '../../services/ngx-mat-timepicker.service';\nimport { NgxMatTimepickerEventService } from '../../services/ngx-mat-timepicker-event.service';\nimport { NgxMatTimepickerMinutesFaceComponent } from '../ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component';\nimport { NgxMatTimepicker12HoursFaceComponent } from '../ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component';\nimport { NgxMatTimepicker24HoursFaceComponent } from '../ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component';\nimport { NgxMatTimepickerDialComponent } from '../ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component';\nimport { NgxMatTimepickerContentComponent } from '../ngx-mat-timepicker-content/ngx-mat-timepicker-content.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-dialog',\n styleUrls: ['./ngx-mat-timepicker-dialog.component.scss'],\n templateUrl: './ngx-mat-timepicker-dialog.component.html',\n imports: [\n // Common\n NgTemplateOutlet,\n // Material\n MatButton,\n MatDialogContent,\n MatDialogActions,\n // NgxMatTimepicker\n NgxMatTimepickerContentComponent,\n NgxMatTimepickerDialComponent,\n NgxMatTimepicker24HoursFaceComponent,\n NgxMatTimepicker12HoursFaceComponent,\n NgxMatTimepickerMinutesFaceComponent,\n ],\n})\nexport class NgxMatTimepickerDialogComponent extends NgxMatTimepickerBaseDirective {\n constructor(\n @Inject(MAT_DIALOG_DATA) public override data: NgxMatTimepickerConfig,\n protected _dialogRef: MatDialogRef<NgxMatTimepickerDialogComponent>,\n timepickerSrv: NgxMatTimepickerService,\n eventSrv: NgxMatTimepickerEventService,\n timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n ) {\n super(timepickerSrv, eventSrv, timepickerLocaleSrv, data);\n }\n\n override close(): void {\n this._dialogRef.close();\n }\n}\n","<ng-template #cancelBtnDefault>\n <button mat-button [color]=\"color()\">CANCEL</button>\n</ng-template>\n\n<ng-template #confirmBtnDefault>\n <button mat-button [color]=\"color()\">OK</button>\n</ng-template>\n\n<div mat-dialog-content>\n <ngx-mat-timepicker-content\n [appendToInput]=\"data.appendToInput\"\n [inputElement]=\"data.inputElement\"\n >\n <div class=\"timepicker\" [class]=\"data.timepickerClass\">\n <div\n [class.is-editable]=\"data.enableKeyboardInput\"\n class=\"timepicker-header\"\n >\n <ngx-mat-timepicker-dial\n [color]=\"color()\"\n [format]=\"data.format\"\n [hour]=\"selectedHour()?.time\"\n [minute]=\"selectedMinute()?.time\"\n [period]=\"selectedPeriod()\"\n [activeTimeUnit]=\"activeTimeUnit\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n [isEditable]=\"data.enableKeyboardInput\"\n [editableHintTmpl]=\"data.editableHintTmpl\"\n [minutesGap]=\"data.minutesGap\"\n [hoursOnly]=\"data.hoursOnly\"\n (periodChanged)=\"changePeriod($event)\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (hourChanged)=\"onHourChange($event)\"\n (minuteChanged)=\"onMinuteChange($event)\"\n />\n </div>\n <div class=\"timepicker-body\">\n @switch (activeTimeUnit) {\n @case (timeUnit.HOUR) {\n <div>\n @if (data.format === 24) {\n <ngx-mat-timepicker-24-hours-face\n [color]=\"color()\"\n [selectedHour]=\"selectedHour()\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n [format]=\"data.format\"\n (hourChange)=\"onHourChange($event)\"\n (hourSelected)=\"onHourSelected($event)\"\n />\n } @else {\n <ngx-mat-timepicker-12-hours-face\n [color]=\"color()\"\n [selectedHour]=\"selectedHour()\"\n [period]=\"selectedPeriod()\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n (hourChange)=\"onHourChange($event)\"\n (hourSelected)=\"onHourSelected($event)\"\n />\n }\n </div>\n }\n @case (timeUnit.MINUTE) {\n <ngx-mat-timepicker-minutes-face\n [color]=\"color()\"\n [selectedMinute]=\"selectedMinute()\"\n [selectedHour]=\"selectedHour()?.time\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n [format]=\"data.format\"\n [period]=\"selectedPeriod()\"\n [minutesGap]=\"data.minutesGap\"\n (minuteChange)=\"onMinuteChange($event)\"\n />\n }\n }\n </div>\n </div>\n </ngx-mat-timepicker-content>\n</div>\n<div mat-dialog-actions align=\"end\">\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div (click)=\"close()\">\n <ng-container\n *ngTemplateOutlet=\"\n data.cancelBtnTmpl ? data.cancelBtnTmpl : cancelBtnDefault\n \"\n />\n </div>\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div (click)=\"setTime()\">\n <ng-container\n *ngTemplateOutlet=\"\n data.confirmBtnTmpl ? data.confirmBtnTmpl : confirmBtnDefault\n \"\n />\n </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MatButton } from '@angular/material/button';\n\nimport { NGX_MAT_TIMEPICKER_CONFIG } from '../../tokens/ngx-mat-timepicker-config.token';\nimport { NgxMatTimepickerLocaleService } from '../../services/ngx-mat-timepicker-locale.service';\nimport { NgxMatTimepickerService } from '../../services/ngx-mat-timepicker.service';\nimport { NgxMatTimepickerEventService } from '../../services/ngx-mat-timepicker-event.service';\nimport { NgxMatTimepickerConfig } from '../../models/ngx-mat-timepicker-config.interface';\nimport { NgxMatTimepickerBaseDirective } from '../../directives/ngx-mat-timepicker-base.directive';\nimport { NgxMatTimepickerMinutesFaceComponent } from '../ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component';\nimport { NgxMatTimepicker12HoursFaceComponent } from '../ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component';\nimport { NgxMatTimepicker24HoursFaceComponent } from '../ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component';\nimport { NgxMatTimepickerDialComponent } from '../ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component';\nimport { NgxMatTimepickerContentComponent } from '../ngx-mat-timepicker-content/ngx-mat-timepicker-content.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-standalone',\n templateUrl: 'ngx-mat-timepicker-standalone.component.html',\n styleUrls: ['ngx-mat-timepicker-standalone.component.scss'],\n host: {\n class: 'mat-app-background',\n },\n imports: [\n NgTemplateOutlet,\n A11yModule,\n MatButton,\n NgxMatTimepickerDialComponent,\n NgxMatTimepickerContentComponent,\n NgxMatTimepicker24HoursFaceComponent,\n NgxMatTimepicker12HoursFaceComponent,\n NgxMatTimepickerMinutesFaceComponent,\n ],\n})\nexport class NgxMatTimepickerStandaloneComponent extends NgxMatTimepickerBaseDirective {\n constructor(\n @Inject(NGX_MAT_TIMEPICKER_CONFIG)\n public override data: NgxMatTimepickerConfig,\n timepickerSrv: NgxMatTimepickerService,\n eventSrv: NgxMatTimepickerEventService,\n timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n ) {\n super(timepickerSrv, eventSrv, timepickerLocaleSrv, data);\n }\n\n override close(): void {\n this.data.timepickerBaseRef.close();\n }\n}\n","<ng-template #cancelBtnDefault>\n <button mat-button [color]=\"color()\">CANCEL</button>\n</ng-template>\n\n<ng-template #confirmBtnDefault>\n <button mat-button [color]=\"color()\">OK</button>\n</ng-template>\n\n<div cdkTrapFocus>\n <ngx-mat-timepicker-content\n [appendToInput]=\"data.appendToInput\"\n [inputElement]=\"data.inputElement\"\n >\n <div class=\"timepicker\" [class]=\"data.timepickerClass\">\n <div\n [class.is-editable]=\"data.enableKeyboardInput\"\n class=\"timepicker-header\"\n >\n <ngx-mat-timepicker-dial\n [color]=\"color()\"\n [format]=\"data.format\"\n [hour]=\"selectedHour()?.time\"\n [minute]=\"selectedMinute()?.time\"\n [period]=\"selectedPeriod()\"\n [activeTimeUnit]=\"activeTimeUnit\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n [isEditable]=\"data.enableKeyboardInput\"\n [editableHintTmpl]=\"data.editableHintTmpl\"\n [minutesGap]=\"data.minutesGap\"\n [hoursOnly]=\"data.hoursOnly\"\n (periodChanged)=\"changePeriod($event)\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (hourChanged)=\"onHourChange($event)\"\n (minuteChanged)=\"onMinuteChange($event)\"\n />\n </div>\n <div class=\"timepicker__main-content\">\n <div class=\"timepicker__body\">\n @switch (activeTimeUnit) {\n @case (timeUnit.HOUR) {\n <div>\n @if (data.format === 24) {\n <ngx-mat-timepicker-24-hours-face\n [color]=\"color()\"\n (hourChange)=\"onHourChange($event)\"\n [selectedHour]=\"selectedHour()\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n [format]=\"data.format\"\n (hourSelected)=\"onHourSelected($event)\"\n />\n } @else {\n <ngx-mat-timepicker-12-hours-face\n [color]=\"color()\"\n (hourChange)=\"onHourChange($event)\"\n [selectedHour]=\"selectedHour()\"\n [period]=\"selectedPeriod()\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n (hourSelected)=\"onHourSelected($event)\"\n />\n }\n </div>\n }\n @case (timeUnit.MINUTE) {\n <ngx-mat-timepicker-minutes-face\n [color]=\"color()\"\n [selectedMinute]=\"selectedMinute()\"\n [selectedHour]=\"selectedHour()?.time\"\n [minTime]=\"data.minTime\"\n [maxTime]=\"data.maxTime\"\n [format]=\"data.format\"\n [period]=\"selectedPeriod()\"\n [minutesGap]=\"data.minutesGap\"\n (minuteChange)=\"onMinuteChange($event)\"\n />\n }\n }\n </div>\n </div>\n </div>\n </ngx-mat-timepicker-content>\n\n <div class=\"ngx-mat-timepicker-standalone-actions\">\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div (click)=\"close()\">\n <ng-container\n *ngTemplateOutlet=\"\n data.cancelBtnTmpl ? data.cancelBtnTmpl : cancelBtnDefault\n \"\n />\n </div>\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div (click)=\"setTime()\">\n <ng-container\n *ngTemplateOutlet=\"\n data.confirmBtnTmpl ? data.confirmBtnTmpl : confirmBtnDefault\n \"\n />\n </div>\n </div>\n</div>\n","import {\n Component,\n HostBinding,\n Input,\n TemplateRef,\n booleanAttribute,\n inject,\n input,\n output,\n} from '@angular/core';\nimport {\n CdkOverlayOrigin,\n ConnectedPosition,\n OverlayRef,\n CdkConnectedOverlay,\n} from '@angular/cdk/overlay';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ThemePalette } from '@angular/material/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerRef } from '../../models/ngx-mat-timepicker-ref.interface';\nimport { NgxMatTimepickerConfig } from '../../models/ngx-mat-timepicker-config.interface';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NGX_MAT_TIMEPICKER_CONFIG } from '../../tokens/ngx-mat-timepicker-config.token';\nimport { NgxMatTimepickerAdapter } from '../../services/ngx-mat-timepicker-adapter';\nimport { NgxMatTimepickerDirective } from '../../directives/ngx-mat-timepicker.directive';\nimport { NgxMatTimepickerDialogComponent } from '../ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component';\nimport { NgxMatTimepickerStandaloneComponent } from '../ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component';\n\nlet config: NgxMatTimepickerConfig;\n\n@Component({\n selector: 'ngx-mat-timepicker',\n template: `\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"showPicker\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (backdropClick)=\"close()\"\n >\n <ngx-mat-timepicker-standalone />\n </ng-template>\n `,\n providers: [\n {\n provide: NGX_MAT_TIMEPICKER_CONFIG,\n useFactory() {\n return config;\n },\n },\n ],\n imports: [CdkConnectedOverlay, NgxMatTimepickerStandaloneComponent]\n})\nexport class NgxMatTimepickerComponent implements NgxMatTimepickerRef {\n private readonly _dialog = inject(MatDialog);\n\n static nextId = 0;\n\n @Input({ transform: booleanAttribute })\n appendToInput = false;\n\n color = input<ThemePalette>('primary');\n\n get disabled(): boolean {\n return this._timepickerInput?.disabled;\n }\n\n @Input({ transform: booleanAttribute })\n enableKeyboardInput: boolean;\n\n @Input()\n set format(value: NgxMatTimepickerFormatType) {\n this._format = NgxMatTimepickerAdapter.isTwentyFour(value) ? 24 : 12;\n }\n get format(): NgxMatTimepickerFormatType {\n return this._timepickerInput?.format ?? this._format;\n }\n\n get inputElement(): HTMLInputElement {\n return this._timepickerInput?.element;\n }\n\n get maxTime(): DateTime {\n return this._timepickerInput\n ? (this._timepickerInput.max as DateTime)\n : this.max;\n }\n\n get minTime(): DateTime {\n return this._timepickerInput\n ? (this._timepickerInput.min as DateTime)\n : this.min;\n }\n\n @Input()\n set minutesGap(gap: number) {\n if (gap == null) {\n return;\n }\n gap = Math.floor(gap);\n this._minutesGap = gap <= 59 ? gap : 1;\n }\n get minutesGap(): number {\n return this._minutesGap;\n }\n\n get overlayOrigin(): CdkOverlayOrigin {\n return this._timepickerInput\n ? this._timepickerInput.cdkOverlayOrigin\n : undefined;\n }\n\n get time(): string {\n return this._timepickerInput?.value;\n }\n\n @Input() cancelBtnTmpl: TemplateRef<Node>;\n @Input() confirmBtnTmpl: TemplateRef<Node>;\n @Input() editableHintTmpl: TemplateRef<Node>;\n\n @Input() defaultTime: string;\n @Input({ transform: booleanAttribute })\n disableAnimation: boolean;\n @Input({ transform: booleanAttribute })\n preventOverlayClick: boolean;\n @Input() hoursOnly = false;\n @Input() isEsc = true;\n\n @Input() max: DateTime;\n @Input() min: DateTime;\n @Input() timepickerClass: string;\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly timeSet = output<string>();\n readonly timeChanged = output<string>();\n readonly hourSelected = output<number>();\n\n @HostBinding('id') id =\n `ngx_mat_timepicker_${++NgxMatTimepickerComponent.nextId}`;\n\n overlayPositions: ConnectedPosition[] = [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 0,\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 0,\n },\n ];\n showPicker = false;\n timeUpdated$ = new BehaviorSubject<string>(undefined); // used in the dialog, check if a better approach can be used\n\n private _dialogRef: MatDialogRef<NgxMatTimepickerDialogComponent, void>;\n private _format: NgxMatTimepickerFormatType = 12;\n private _minutesGap: number;\n private _overlayRef: OverlayRef;\n private _timepickerInput: NgxMatTimepickerDirective;\n\n close(): void {\n if (this.appendToInput) {\n this._overlayRef?.dispose();\n } else {\n this._dialogRef?.close();\n }\n this.inputElement.focus(); // Fix ExpressionHasChangedAfterCheck error on overlay destroy\n this.showPicker = false;\n this.closed.emit();\n }\n\n open(): void {\n // Set data to be injected\n config = {\n timepickerBaseRef: this,\n time: this.time,\n defaultTime: this.defaultTime,\n maxTime: this.maxTime,\n minTime: this.minTime,\n format: this.format,\n minutesGap: this.minutesGap,\n disableAnimation: this.disableAnimation,\n cancelBtnTmpl: this.cancelBtnTmpl,\n confirmBtnTmpl: this.confirmBtnTmpl,\n editableHintTmpl: this.editableHintTmpl,\n disabled: this.disabled,\n enableKeyboardInput: this.enableKeyboardInput,\n preventOverlayClick: this.preventOverlayClick,\n appendToInput: this.appendToInput,\n hoursOnly: this.hoursOnly,\n timepickerClass: this.timepickerClass,\n inputElement: this.inputElement,\n color: this.color(),\n };\n\n if (this.appendToInput) {\n this.showPicker = true;\n } else {\n this._dialogRef = this._dialog.open(NgxMatTimepickerDialogComponent, {\n panelClass: 'ngx-mat-timepicker-dialog',\n data: {\n ...config,\n },\n });\n this._dialogRef.afterClosed().subscribe(() => {\n this.closed.emit();\n });\n }\n\n this.opened.emit();\n }\n\n /***\n * Register an input with this timepicker.\n * input - The timepicker input to register with this timepicker\n */\n registerInput(input: NgxMatTimepickerDirective): void {\n if (this._timepickerInput) {\n console.warn('Input for this timepicker was already set', input.element);\n throw Error('A Timepicker can only be associated with a single input.');\n }\n this._timepickerInput = input;\n }\n\n unregisterInput(): void {\n this._timepickerInput = undefined;\n }\n\n updateTime(time: string): void {\n this.timeUpdated$.next(time);\n }\n}\n","import { Directive } from '@angular/core';\n\n/* To override a default toggle icon */\n@Directive({\n selector: '[ngxMatTimepickerToggleIcon]',\n standalone: true,\n})\nexport class NgxMatTimepickerToggleIconDirective {}\n","import { Component, ContentChild, Input } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\n\nimport { NgxMatTimepickerToggleIconDirective } from '../../directives/ngx-mat-timepicker-toggle-icon.directive';\nimport { NgxMatTimepickerComponent } from '../ngx-mat-timepicker/ngx-mat-timepicker.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-toggle',\n templateUrl: 'ngx-mat-timepicker-toggle.component.html',\n styleUrls: ['ngx-mat-timepicker-toggle.component.scss'],\n imports: [MatIconButton],\n})\nexport class NgxMatTimepickerToggleComponent {\n @Input()\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled === undefined\n ? this.timepicker?.disabled\n : this._disabled;\n }\n\n @ContentChild(NgxMatTimepickerToggleIconDirective, { static: true })\n customIcon: NgxMatTimepickerToggleIconDirective;\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('for') timepicker: NgxMatTimepickerComponent;\n\n private _disabled: boolean;\n\n open(event: MouseEvent): void {\n if (this.timepicker) {\n this.timepicker.open();\n event.stopPropagation();\n }\n }\n}\n","<button\n type=\"button\"\n class=\"ngx-mat-timepicker-toggle mat-elevation-z0\"\n mat-icon-button\n [disabled]=\"disabled\"\n (click)=\"open($event)\"\n>\n @if (!customIcon) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"ngx-mat-timepicker-toggle-default-icon\"\n >\n <path\n d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 2v6.414l4.293 4.293 1.414-1.414L13 11.586V6h-2z\"\n />\n </svg>\n }\n\n <ng-content select=\"[ngxMatTimepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n booleanAttribute,\n input,\n output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n FloatLabelType,\n MatFormField,\n MatLabel,\n MatSuffix,\n} from '@angular/material/form-field';\n\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerParserPipe } from '../../pipes/ngx-mat-timepicker-parser.pipe';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { isDigit } from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerTimeLocalizerPipe } from '../../pipes/ngx-mat-timepicker-time-localizer.pipe';\n\nfunction concatTime(currentTime: string, nextTime: string): number | undefined {\n const isNumber = /\\d/.test(nextTime);\n\n if (isNumber) {\n const time = currentTime + nextTime;\n\n return +time;\n }\n\n return undefined;\n}\n\n@Component({\n selector: 'ngx-mat-timepicker-time-control',\n templateUrl: './ngx-mat-timepicker-control.component.html',\n styleUrls: ['./ngx-mat-timepicker-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NgxMatTimepickerParserPipe],\n imports: [\n FormsModule,\n MatFormField,\n MatLabel,\n MatSuffix,\n MatInput,\n NgxMatTimepickerParserPipe,\n NgxMatTimepickerTimeLocalizerPipe,\n ]\n})\nexport class NgxMatTimepickerControlComponent implements OnChanges {\n static nextId = 0;\n\n readonly color = input<ThemePalette>('primary');\n readonly floatLabel = input<FloatLabelType>('auto');\n\n @Input({ transform: booleanAttribute })\n disabled: boolean;\n\n id: number = NgxMatTimepickerControlComponent.nextId++;\n isFocused: boolean;\n\n @Input() max: number;\n @Input() min: number;\n @Input() placeholder: string;\n @Input({ transform: booleanAttribute }) preventTyping: boolean;\n\n @Input() time: number;\n\n @Input() timeList: NgxMatTimepickerClockFace[];\n @Input() timeUnit: NgxMatTimepickerUnits;\n\n readonly timeChanged = output<number>();\n\n private _previousTime: number;\n\n constructor(private _timeParser: NgxMatTimepickerParserPipe) { }\n\n changeTime(event: InputEvent): void {\n event.stopPropagation();\n\n const char = event.data;\n const time = concatTime(String(this.time), char);\n\n this._changeTimeIfValid(time);\n }\n\n decrease(): void {\n if (!this.disabled) {\n let previousTime = +this.time - 1;\n\n if (previousTime < this.min) {\n previousTime = this.max;\n }\n\n if (this._isSelectedTimeDisabled(previousTime)) {\n previousTime = this._getAvailableTime(\n previousTime,\n this._getPrevAvailableTime.bind(this),\n );\n }\n\n if (previousTime !== this.time) {\n this.timeChanged.emit(previousTime);\n }\n }\n }\n\n increase(): void {\n if (!this.disabled) {\n let nextTime = +this.time + 1;\n\n if (nextTime > this.max) {\n nextTime = this.min;\n }\n\n if (this._isSelectedTimeDisabled(nextTime)) {\n nextTime = this._getAvailableTime(\n nextTime,\n this._getNextAvailableTime.bind(this),\n );\n }\n\n if (nextTime !== this.time) {\n this.timeChanged.emit(nextTime);\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['timeList'] && this.time != null) {\n if (this._isSelectedTimeDisabled(this.time)) {\n this._setAvailableTime();\n }\n }\n }\n\n onBlur(): void {\n this.isFocused = false;\n\n if (this._previousTime !== this.time) {\n this._changeTimeIfValid(+this.time);\n }\n }\n\n onFocus(): void {\n this.isFocused = true;\n this._previousTime = this.time;\n }\n\n onKeydown(event: KeyboardEvent): void {\n event.stopPropagation();\n\n if (!isDigit(event)) {\n event.preventDefault();\n }\n\n switch (event.key) {\n case 'ArrowUp':\n this.increase();\n break;\n case 'ArrowDown':\n this.decrease();\n break;\n }\n\n if (this.preventTyping && event.key !== 'Tab') {\n event.preventDefault();\n }\n }\n\n onModelChange(value: string): void {\n this.time = +this._timeParser.transform(value, this.timeUnit);\n }\n\n private _changeTimeIfValid(value: number | undefined): void {\n if (!isNaN(value)) {\n this.time = value;\n\n if (this.time > this.max) {\n const timeString = String(value);\n this.time = +timeString[timeString.length - 1];\n }\n\n if (this.time < this.min) {\n this.time = this.min;\n }\n\n this.timeChanged.emit(this.time);\n }\n }\n\n private _getAvailableTime(\n currentTime: number,\n fn: (index: number) => number | undefined,\n ): number | undefined {\n const currentTimeIndex = this.timeList.findIndex(\n (time) => time.time === currentTime,\n );\n const availableTime = fn(currentTimeIndex);\n\n return availableTime != null ? availableTime : this.time;\n }\n\n private _getNextAvailableTime(index: number): number | undefined {\n const timeCollection = this.timeList;\n const maxValue = timeCollection.length;\n for (let i = index + 1; i < maxValue; i++) {\n const time = timeCollection[i];\n if (!time.disabled) {\n return time.time;\n }\n }\n\n return undefined;\n }\n\n private _getPrevAvailableTime(index: number): number | undefined {\n for (let i = index; i >= 0; i--) {\n const time = this.timeList[i];\n if (!time.disabled) {\n return time.time;\n }\n }\n\n return undefined;\n }\n\n private _isSelectedTimeDisabled(time: number): boolean {\n return this.timeList.find(\n (faceTime: NgxMatTimepickerClockFace) => faceTime.time === time,\n ).disabled;\n }\n\n private _setAvailableTime(): void {\n this.time = this.timeList.find((t) => !t.disabled).time;\n this.timeChanged.emit(this.time);\n }\n}\n","<mat-form-field\n class=\"ngx-mat-timepicker-control\"\n [color]=\"color()\"\n [floatLabel]=\"floatLabel()\"\n [class.active]=\"isFocused\"\n>\n <input\n id=\"ngx_mat_timepicker_field_{{ id }}\"\n name=\"ngx_mat_timepicker_field_{{ id }}\"\n matInput\n maxlength=\"2\"\n [ngModel]=\"\n time | ngxMatTimepickerParser: timeUnit | timeLocalizer: timeUnit : true\n \"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onModelChange($event)\"\n (beforeinput)=\"changeTime($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <div class=\"arrows-wrap\" matSuffix>\n <button class=\"arrow\" role=\"button\" (click)=\"increase()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z\" />\n </svg>\n </button>\n <button class=\"arrow\" role=\"button\" (click)=\"decrease()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </svg>\n </button>\n </div>\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n booleanAttribute,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormsModule,\n} from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\nimport { ThemePalette, MatOption } from '@angular/material/core';\nimport { FloatLabelType, MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil, tap } from 'rxjs/operators';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerLocaleService } from '../../services/ngx-mat-timepicker-locale.service';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerService } from '../../services/ngx-mat-timepicker.service';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerPeriods } from '../../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerAdapter } from '../../services/ngx-mat-timepicker-adapter';\nimport { NgxMatTimepickerUtils } from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerComponent } from '../ngx-mat-timepicker/ngx-mat-timepicker.component';\nimport { NgxMatTimepickerToggleIconDirective } from '../../directives/ngx-mat-timepicker-toggle-icon.directive';\nimport { NgxMatTimepickerToggleComponent } from '../ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component';\nimport { NgxMatTimepickerControlComponent } from '../ngx-mat-timepicker-control/ngx-mat-timepicker-control.component';\n\n@Component({\n selector: 'ngx-mat-timepicker-field',\n templateUrl: './ngx-mat-timepicker-field.component.html',\n styleUrls: ['./ngx-mat-timepicker-field.component.scss'],\n providers: [\n NgxMatTimepickerService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NgxMatTimepickerFieldComponent,\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n FormsModule,\n MatFormField,\n MatSelect,\n MatIcon,\n MatOption,\n NgxMatTimepickerControlComponent,\n NgxMatTimepickerToggleComponent,\n NgxMatTimepickerToggleIconDirective,\n NgxMatTimepickerComponent,\n ],\n})\nexport class NgxMatTimepickerFieldComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n readonly color = input<ThemePalette>('primary');\n\n get defaultTime(): string {\n return this._defaultTime;\n }\n\n @Input()\n set defaultTime(val: string) {\n this._defaultTime = val;\n this._isDefaultTime = !!val;\n }\n\n readonly floatLabel = input<FloatLabelType>('auto');\n\n get format(): NgxMatTimepickerFormatType {\n return this._format;\n }\n\n @Input()\n set format(value: NgxMatTimepickerFormatType) {\n if (NgxMatTimepickerAdapter.isTwentyFour(value)) {\n this._format = 24;\n this.minHour = 0;\n this.maxHour = 23;\n } else {\n this._format = 12;\n this.minHour = 1;\n this.maxHour = 12;\n }\n this.hoursList = NgxMatTimepickerUtils.getHours(this._format);\n const isDynamicallyChanged =\n value && this._previousFormat && this._previousFormat !== this._format;\n\n if (isDynamicallyChanged) {\n this._updateTime(this.timepickerTime);\n }\n this._previousFormat = this._format;\n }\n\n get max(): DateTime {\n return this._max;\n }\n\n @Input()\n set max(value: string | DateTime) {\n if (typeof value === 'string') {\n this._max = NgxMatTimepickerAdapter.parseTime(value, {\n locale: this._locale,\n format: this.format,\n });\n\n return;\n }\n this._max = value;\n }\n\n get min(): DateTime {\n return this._min;\n }\n\n @Input()\n set min(value: string | DateTime) {\n if (typeof value === 'string') {\n this._min = NgxMatTimepickerAdapter.parseTime(value, {\n locale: this._locale,\n format: this.format,\n });\n\n return;\n }\n this._min = value;\n }\n\n private get _locale(): string {\n return this._timepickerLocaleSrv.locale;\n }\n\n @Input() cancelBtnTmpl: TemplateRef<Node>;\n\n @Input() confirmBtnTmpl: TemplateRef<Node>;\n\n @Input({ transform: booleanAttribute }) controlOnly: boolean;\n\n @Input({ transform: booleanAttribute }) disabled: boolean;\n\n readonly hour = signal<NgxMatTimepickerClockFace>(undefined);\n readonly hour$ = toObservable(this.hour);\n\n hoursList: NgxMatTimepickerClockFace[];\n isChangePeriodDisabled: boolean;\n isTimeRangeSet: boolean;\n maxHour = 12;\n minHour = 1;\n\n readonly minute = signal<NgxMatTimepickerClockFace>(undefined);\n readonly minute$ = toObservable(this.minute);\n\n minutesList: NgxMatTimepickerClockFace[];\n period: NgxMatTimepickerPeriods = NgxMatTimepickerPeriods.AM;\n periods: NgxMatTimepickerPeriods[] = [\n NgxMatTimepickerPeriods.AM,\n NgxMatTimepickerPeriods.PM,\n ];\n\n readonly timeChanged = output<string>();\n timepickerTime: string;\n\n timeUnit = NgxMatTimepickerUnits;\n @Input() toggleIcon: TemplateRef<HTMLObjectElement>;\n\n private _defaultTime: string;\n private _format: NgxMatTimepickerFormatType = 12;\n private _isDefaultTime: boolean;\n private _isFirstTimeChange = true;\n private _max: DateTime;\n private _min: DateTime;\n private _previousFormat: number;\n private _selectedHour: number;\n private _subsCtrl$: Subject<void> = new Subject<void>();\n\n constructor(\n private _timepickerService: NgxMatTimepickerService,\n private _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n ) {}\n\n changeHour(hour: number): void {\n this._timepickerService.setHour(\n this.hoursList.find((h) => h.time === hour),\n );\n this._changeTime();\n }\n\n changeMinute(minute: number): void {\n this._timepickerService.setMinute(\n this.minutesList.find((m) => m.time === minute),\n );\n this._changeTime();\n }\n\n changePeriod(value: NgxMatTimepickerPeriods): void {\n this._timepickerService.setPeriod(value);\n this._changeTime();\n }\n\n ngOnDestroy(): void {\n this._subsCtrl$.next();\n this._subsCtrl$.complete();\n }\n\n ngOnInit() {\n this._initTime(this.defaultTime);\n\n this.hoursList = NgxMatTimepickerUtils.getHours(this._format);\n this.minutesList = NgxMatTimepickerUtils.getMinutes();\n this.isTimeRangeSet = !!(this.min || this.max);\n\n this._timepickerService.hour$\n .pipe(\n tap(\n (clockTime: NgxMatTimepickerClockFace) =>\n (this._selectedHour = clockTime?.time),\n ),\n map(this._changeDefaultTimeValue.bind(this)),\n tap(() => this.isTimeRangeSet && this._updateAvailableMinutes()),\n )\n .subscribe({\n next: (v: NgxMatTimepickerClockFace) => this.hour.set(v),\n });\n this._timepickerService.minute$\n .pipe(\n map(this._changeDefaultTimeValue.bind(this)),\n tap(() => (this._isFirstTimeChange = false)),\n )\n .subscribe({\n next: (v: NgxMatTimepickerClockFace) => this.minute.set(v),\n });\n\n if (this.format === 12) {\n this._timepickerService.period$\n .pipe(\n distinctUntilChanged<NgxMatTimepickerPeriods>(),\n tap((period: NgxMatTimepickerPeriods) => (this.period = period)),\n tap(\n (period) =>\n (this.isChangePeriodDisabled = this._isPeriodDisabled(period)),\n ),\n takeUntil(this._subsCtrl$),\n )\n .subscribe(() => this.isTimeRangeSet && this._updateAvailableTime());\n }\n }\n\n onTimeSet(time: string): void {\n this._updateTime(time);\n this._emitLocalTimeChange(time);\n }\n\n registerOnChange(fn: (time: string) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n writeValue(val: string): void {\n if (val) {\n this._initTime(val);\n } else {\n this._resetTime();\n }\n }\n\n private _changeDefaultTimeValue(\n clockFaceTime: NgxMatTimepickerClockFace,\n ): NgxMatTimepickerClockFace {\n if (!this._isDefaultTime && this._isFirstTimeChange) {\n return { ...clockFaceTime, time: null };\n }\n\n return clockFaceTime;\n }\n\n private _changeTime(): void {\n if (!isNaN(this.hour()?.time) && !isNaN(this.minute()?.time)) {\n const time = this._timepickerService.getFullTime(this.format);\n this.timepickerTime = time;\n this._emitLocalTimeChange(time);\n }\n }\n\n private _emitLocalTimeChange(time: string): void {\n const localTime = NgxMatTimepickerAdapter.toLocaleTimeString(time, {\n format: this.format,\n locale: this._locale,\n });\n\n this._onChange(localTime);\n this._onTouched(localTime);\n this.timeChanged.emit(localTime);\n }\n\n private _initTime(time: string): void {\n const isDefaultTimeAvailable = NgxMatTimepickerAdapter.isTimeAvailable(\n time,\n this.min as DateTime,\n this.max as DateTime,\n 'minute',\n null,\n this.format,\n );\n if (!isDefaultTimeAvailable) {\n if (this.min) {\n this._updateTime(\n NgxMatTimepickerAdapter.fromDateTimeToString(\n this.min as DateTime,\n this.format,\n ),\n );\n\n return;\n }\n if (this.max) {\n this._updateTime(\n NgxMatTimepickerAdapter.fromDateTimeToString(\n this.max as DateTime,\n this.format,\n ),\n );\n\n return;\n }\n }\n this._updateTime(time);\n }\n\n private _isPeriodDisabled(period: NgxMatTimepickerPeriods): boolean {\n return NgxMatTimepickerUtils.disableHours(\n NgxMatTimepickerUtils.getHours(12),\n {\n min: this.min as DateTime,\n max: this.max as DateTime,\n format: 12,\n period:\n period === NgxMatTimepickerPeriods.AM\n ? NgxMatTimepickerPeriods.PM\n : NgxMatTimepickerPeriods.AM,\n },\n ).every((time) => time.disabled);\n }\n\n private _onChange: (value: string) => void = () => {\n // ignore\n };\n private _onTouched: (value: string) => void = () => {\n // ignore\n };\n\n private _resetTime(): void {\n this._timepickerService.setHour({ angle: 0, time: null });\n this._timepickerService.setMinute({ angle: 0, time: null });\n }\n\n private _updateAvailableHours(): void {\n this.hoursList = NgxMatTimepickerUtils.disableHours(this.hoursList, {\n min: this.min as DateTime,\n max: this.max as DateTime,\n format: this.format,\n period: this.period,\n });\n }\n\n private _updateAvailableMinutes(): void {\n this.minutesList = NgxMatTimepickerUtils.disableMinutes(\n this.minutesList,\n this._selectedHour,\n {\n min: this.min as DateTime,\n max: this.max as DateTime,\n format: this.format,\n period: this.period,\n },\n );\n }\n\n private _updateAvailableTime(): void {\n this._updateAvailableHours();\n if (this._selectedHour) {\n this._updateAvailableMinutes();\n }\n }\n\n private _updateTime(time: string): void {\n if (time) {\n const formattedTime = NgxMatTimepickerAdapter.formatTime(time, {\n locale: this._locale,\n format: this.format,\n });\n this._timepickerService.setDefaultTimeIfAvailable(\n formattedTime,\n this.min as DateTime,\n this.max as DateTime,\n this.format,\n );\n this.timepickerTime = formattedTime;\n }\n }\n}\n","<div class=\"field-group\" [class.disabled]=\"disabled\">\n <ngx-mat-timepicker-time-control\n class=\"first\"\n [color]=\"color()\"\n [floatLabel]=\"floatLabel()\"\n [placeholder]=\"'HH'\"\n [time]=\"hour()?.time\"\n [min]=\"minHour\"\n [max]=\"maxHour\"\n [timeUnit]=\"timeUnit.HOUR\"\n [disabled]=\"disabled\"\n [timeList]=\"hoursList\"\n [preventTyping]=\"isTimeRangeSet\"\n (timeChanged)=\"changeHour($event)\"\n />\n <div class=\"wrapped-field\">\n <span class=\"separator-colon second\">:</span>\n </div>\n <ngx-mat-timepicker-time-control\n class=\"third\"\n [color]=\"color()\"\n [floatLabel]=\"floatLabel()\"\n [placeholder]=\"'MM'\"\n [time]=\"minute()?.time\"\n [min]=\"0\"\n [max]=\"59\"\n [timeUnit]=\"timeUnit.MINUTE\"\n [disabled]=\"disabled\"\n [timeList]=\"minutesList\"\n [preventTyping]=\"isTimeRangeSet\"\n (timeChanged)=\"changeMinute($event)\"\n />\n @if (format !== 24) {\n <mat-form-field class=\"period-select forth\" [color]=\"color()\">\n <mat-select\n [ngModel]=\"period\"\n [disabled]=\"disabled || isChangePeriodDisabled\"\n (selectionChange)=\"changePeriod($event.value)\"\n >\n @for (option of periods; track option) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n @if (!controlOnly) {\n <div class=\"wrapped-field\">\n <ngx-mat-timepicker-toggle\n class=\"ngx-mat-timepicker__toggle\"\n [for]=\"timepicker\"\n [disabled]=\"disabled\"\n >\n <span ngxMatTimepickerToggleIcon>\n <ng-container *ngTemplateOutlet=\"toggleIcon || defaultIcon\" />\n </span>\n </ngx-mat-timepicker-toggle>\n </div>\n }\n</div>\n\n<ngx-mat-timepicker\n #timepicker\n [color]=\"color()\"\n [min]=\"min\"\n [max]=\"max\"\n [defaultTime]=\"timepickerTime\"\n [format]=\"format\"\n [cancelBtnTmpl]=\"cancelBtnTmpl\"\n [confirmBtnTmpl]=\"confirmBtnTmpl\"\n (timeSet)=\"onTimeSet($event)\"\n/>\n\n<ng-template #defaultIcon>\n <mat-icon>watch_later</mat-icon>\n</ng-template>\n","import {\n Directive,\n ElementRef,\n HostListener,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n Optional,\n booleanAttribute,\n} from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Subject, takeUntil } from 'rxjs';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerComponent } from '../components/ngx-mat-timepicker/ngx-mat-timepicker.component';\nimport { NgxMatTimepickerFormatType } from '../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\nimport { NgxMatTimepickerLocaleService } from '../services/ngx-mat-timepicker-locale.service';\n\n@Directive({\n selector: '[ngxMatTimepicker]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NgxMatTimepickerDirective,\n multi: true,\n },\n ],\n host: {\n '[disabled]': 'disabled',\n '(blur)': 'onTouched()',\n },\n standalone: true,\n})\nexport class NgxMatTimepickerDirective\n implements ControlValueAccessor, OnDestroy, OnChanges\n{\n get element(): HTMLInputElement {\n return this._elementRef && this._elementRef.nativeElement;\n }\n\n get format(): NgxMatTimepickerFormatType {\n return this._format;\n }\n\n @Input()\n set format(value: number) {\n this._format = NgxMatTimepickerAdapter.isTwentyFour(\n +value as NgxMatTimepickerFormatType,\n )\n ? 24\n : 12;\n const isDynamicallyChanged =\n value && this._previousFormat && this._previousFormat !== this._format;\n\n if (isDynamicallyChanged) {\n this.value = this._value;\n this._timepicker.updateTime(this._value);\n }\n this._previousFormat = this._format;\n }\n\n get max(): string | DateTime {\n return this._max;\n }\n\n @Input()\n set max(value: string | DateTime) {\n if (typeof value === 'string') {\n this._max = NgxMatTimepickerAdapter.parseTime(value, {\n locale: this._locale,\n format: this.format,\n });\n\n return;\n }\n this._max = value;\n }\n\n get min(): string | DateTime {\n return this._min;\n }\n\n @Input()\n set min(value: string | DateTime) {\n if (typeof value === 'string') {\n this._min = NgxMatTimepickerAdapter.parseTime(value, {\n locale: this._locale,\n format: this.format,\n });\n\n return;\n }\n this._min = value;\n }\n\n @Input('ngxMatTimepicker')\n set timepicker(picker: NgxMatTimepickerComponent) {\n this._registerTimepicker(picker);\n }\n\n get value(): string {\n if (!this._value) {\n return '';\n }\n\n return NgxMatTimepickerAdapter.toLocaleTimeString(this._value, {\n format: this.format,\n locale: this._locale,\n });\n }\n\n @Input()\n set value(value: string) {\n if (!value) {\n this._value = '';\n this._updateInputValue();\n\n return;\n }\n const time = NgxMatTimepickerAdapter.formatTime(value, {\n locale: this._locale,\n format: this.format,\n });\n const isAvailable = NgxMatTimepickerAdapter.isTimeAvailable(\n time,\n this._min as DateTime,\n this._max as DateTime,\n 'minute',\n this._timepicker.minutesGap,\n this._format,\n );\n\n if (isAvailable) {\n this._value = time;\n this._updateInputValue();\n\n return;\n }\n console.warn(\"Selected time doesn't match min or max value\");\n }\n\n private set _defaultTime(time: string) {\n this._timepicker.defaultTime = NgxMatTimepickerAdapter.formatTime(time, {\n locale: this._locale,\n format: this.format,\n });\n }\n\n private get _locale(): string {\n return this._timepickerLocaleSrv.locale;\n }\n\n @HostBinding('attr.cdkOverlayOrigin') cdkOverlayOrigin: CdkOverlayOrigin =\n new CdkOverlayOrigin(\n this._matFormField\n ? this._matFormField.getConnectedOverlayOrigin()\n : this._elementRef,\n );\n\n @Input({ transform: booleanAttribute })\n disableClick: boolean;\n @Input({ transform: booleanAttribute })\n disabled: boolean;\n\n private _format: NgxMatTimepickerFormatType = 12;\n private _max: string | DateTime;\n private _min: string | DateTime;\n private _previousFormat: number;\n private _subsCtrl$: Subject<void> = new Subject<void>();\n private _timepicker: NgxMatTimepickerComponent;\n private _value = '';\n\n constructor(\n private _elementRef: ElementRef,\n private _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n @Optional() @Inject(MatFormField) private _matFormField: MatFormField,\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const vChanges = changes['value'];\n if (vChanges && vChanges.currentValue) {\n this._defaultTime = vChanges.currentValue;\n }\n }\n\n ngOnDestroy() {\n this._unregisterTimepicker();\n this._subsCtrl$.next();\n this._subsCtrl$.complete();\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (!this.disableClick) {\n this._timepicker.open();\n event.stopPropagation();\n }\n }\n\n onTouched = () => {\n // ignore\n };\n\n registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n @HostListener('change', ['$event'])\n updateValue(e: Event) {\n this.value = (e.target as HTMLInputElement).value;\n this._onChange(this.value);\n }\n\n writeValue(value: string): void {\n this.value = value;\n if (value) {\n this._defaultTime = value;\n }\n }\n\n private _onChange: (value: string) => void = () => {\n // ignore\n };\n\n private _registerTimepicker(picker: NgxMatTimepickerComponent): void {\n if (picker) {\n this._timepicker = picker;\n this._timepicker.registerInput(this);\n outputToObservable(this._timepicker.timeSet)\n .pipe(takeUntil(this._subsCtrl$))\n .subscribe((time: string) => {\n this.value = time;\n this._onChange(this.value);\n this.onTouched();\n this._defaultTime = this._value;\n });\n } else {\n throw new Error(\n 'NgxMatTimepickerComponent is not defined.' +\n ' Please make sure you passed the timepicker to ngxMatTimepicker directive',\n );\n }\n }\n\n private _unregisterTimepicker(): void {\n if (this._timepicker) {\n this._timepicker.unregisterInput();\n }\n }\n\n private _updateInputValue(): void {\n this._elementRef.nativeElement.value = this.value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerUnits } from '../models/ngx-mat-timepicker-units.enum';\n\n@Pipe({\n name: 'timeFormatter',\n standalone: true,\n})\nexport class NgxMatTimepickerTimeFormatterPipe implements PipeTransform {\n transform(\n time: number | string,\n timeUnit: NgxMatTimepickerUnits,\n ): string | number {\n if (time == null || time === '') {\n return time;\n }\n switch (timeUnit) {\n case NgxMatTimepickerUnits.HOUR:\n return DateTime.fromObject({ hour: +time }).toFormat('HH');\n case NgxMatTimepickerUnits.MINUTE:\n return DateTime.fromObject({ minute: +time }).toFormat('mm');\n default:\n throw new Error('no such time unit');\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MAT_FAB_DEFAULT_OPTIONS } from '@angular/material/button';\n\n// NGX-MAT-TIMEPICKER\n// DIRECTIVES\nimport { NgxMatTimepickerDirective } from './directives/ngx-mat-timepicker.directive';\nimport { NgxMatTimepickerToggleIconDirective } from './directives/ngx-mat-timepicker-toggle-icon.directive';\nimport { NgxMatTimepickerBaseDirective } from './directives/ngx-mat-timepicker-base.directive';\nimport { NgxMatTimepickerHoursFaceDirective } from './components/ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive';\n// COMPONENTS\nimport { NgxMatTimepickerContentComponent } from './components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component';\nimport { NgxMatTimepickerDialogComponent } from './components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component';\nimport { NgxMatTimepickerStandaloneComponent } from './components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component';\nimport { NgxMatTimepickerComponent } from './components/ngx-mat-timepicker/ngx-mat-timepicker.component';\nimport { NgxMatTimepickerToggleComponent } from './components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component';\nimport { NgxMatTimepicker24HoursFaceComponent } from './components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component';\nimport { NgxMatTimepicker12HoursFaceComponent } from './components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component';\nimport { NgxMatTimepickerMinutesFaceComponent } from './components/ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component';\nimport { NgxMatTimepickerFaceComponent } from './components/ngx-mat-timepicker-face/ngx-mat-timepicker-face.component';\nimport { NgxMatTimepickerDialComponent } from './components/ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component';\nimport { NgxMatTimepickerDialControlComponent } from './components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component';\nimport { NgxMatTimepickerPeriodComponent } from './components/ngx-mat-timepicker-period/ngx-mat-timepicker-period.component';\nimport { NgxMatTimepickerTimeFormatterPipe } from './pipes/ngx-mat-timepicker-time-formatter.pipe';\nimport { NgxMatTimepickerMinutesFormatterPipe } from './pipes/ngx-mat-timepicker-minutes-formatter.pipe';\nimport { NgxMatTimepickerAutofocusDirective } from './directives/ngx-mat-timepicker-autofocus.directive';\nimport { NgxMatTimepickerFieldComponent } from './components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component';\nimport { NgxMatTimepickerControlComponent } from './components/ngx-mat-timepicker-control/ngx-mat-timepicker-control.component';\n// PIPES + SERVICES + TOKENS\nimport { NgxMatTimepickerLocaleService } from './services/ngx-mat-timepicker-locale.service';\nimport { NgxMatTimepickerTimeLocalizerPipe } from './pipes/ngx-mat-timepicker-time-localizer.pipe';\nimport { NGX_MAT_TIMEPICKER_CONFIG } from './tokens/ngx-mat-timepicker-config.token';\nimport { NGX_MAT_TIMEPICKER_LOCALE } from './tokens/ngx-mat-timepicker-time-locale.token';\nimport { NgxMatTimepickerParserPipe } from './pipes/ngx-mat-timepicker-parser.pipe';\nimport { NgxMatTimepickerActiveHourPipe } from './pipes/ngx-mat-timepicker-active-hour.pipe';\nimport { NgxMatTimepickerActiveMinutePipe } from './pipes/ngx-mat-timepicker-active-minute.pipe';\n\n@NgModule({\n imports: [\n // Not really used, but needed to use it as abstract class\n NgxMatTimepickerBaseDirective,\n NgxMatTimepickerHoursFaceDirective,\n //\n NgxMatTimepickerActiveHourPipe,\n NgxMatTimepickerActiveMinutePipe,\n NgxMatTimepickerComponent,\n NgxMatTimepickerDialComponent,\n NgxMatTimepickerDialControlComponent,\n NgxMatTimepickerDialogComponent,\n NgxMatTimepickerDirective,\n NgxMatTimepickerFaceComponent,\n NgxMatTimepickerMinutesFaceComponent,\n NgxMatTimepickerPeriodComponent,\n NgxMatTimepickerStandaloneComponent,\n NgxMatTimepickerToggleComponent,\n NgxMatTimepicker12HoursFaceComponent,\n NgxMatTimepicker24HoursFaceComponent,\n NgxMatTimepickerToggleIconDirective,\n NgxMatTimepickerAutofocusDirective,\n NgxMatTimepickerMinutesFormatterPipe,\n NgxMatTimepickerFieldComponent,\n NgxMatTimepickerControlComponent,\n NgxMatTimepickerParserPipe,\n NgxMatTimepickerContentComponent,\n NgxMatTimepickerTimeFormatterPipe,\n NgxMatTimepickerTimeLocalizerPipe,\n ],\n exports: [\n NgxMatTimepickerComponent,\n NgxMatTimepickerToggleComponent,\n NgxMatTimepickerFieldComponent,\n NgxMatTimepickerDirective,\n NgxMatTimepickerToggleIconDirective,\n ],\n providers: [\n NgxMatTimepickerLocaleService,\n {\n provide: MAT_FAB_DEFAULT_OPTIONS,\n useValue: { color: 'void' },\n },\n ],\n})\nexport class NgxMatTimepickerModule {\n static setLocale(\n locale: string,\n ): ModuleWithProviders<NgxMatTimepickerModule> {\n return {\n ngModule: NgxMatTimepickerModule,\n providers: [\n { provide: NGX_MAT_TIMEPICKER_LOCALE, useValue: locale },\n { provide: NGX_MAT_TIMEPICKER_CONFIG, useValue: undefined },\n NgxMatTimepickerLocaleService,\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NgxMatTimepickerService","i3.NgxMatTimepickerEventService","i4.NgxMatTimepickerLocaleService","i1.NgxMatTimepickerService","i2.NgxMatTimepickerEventService","i3.NgxMatTimepickerLocaleService","i1.NgxMatTimepickerParserPipe","i2.NgxMatTimepickerLocaleService","i3","takeUntil"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,yBAAyB,GACpC,IAAI,cAAc,CAAyB,2BAA2B,CAAC;AAEnE,SAAU,8BAA8B,CAC5C,MAA8B,EAAA;IAE9B,OAAO,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACnE;;ACXA,IAAY,sBAKX;AALD,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB,IAAA,sBAAA,CAAA,cAAA,CAAA,GAAA,OAAsB;AACtB,IAAA,sBAAA,CAAA,aAAA,CAAA,GAAA,OAAqB;AACrB,IAAA,sBAAA,CAAA,mBAAA,CAAA,GAAA,KAAyB;AAC7B,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,GAKjC,EAAA,CAAA,CAAA;;ACLD,IAAY,uBAGX;AAHD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,uBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACb,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,GAGlC,EAAA,CAAA,CAAA;;ACIK,SAAU,eAAe,CAC7B,IAAqC,EAAA;IAErC,QAAQ,IAAI;AACV,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,SAAS;YACZ,uBAAuB,CAAC,IAAI,CAAC;AAC7B,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,QAAA;AACE,YAAA,OAAO,IAAI;;AAEjB;AAEM,SAAU,OAAO,CAAC,IAAqC,EAAA;IAC3D,QAAQ,IAAI;AACV,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,MAAM;AACf,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,QAAQ;AACjB,QAAA;AACE,YAAA,OAAO,IAAI;;AAEjB;AAEA,SAAS,uBAAuB,CAAC,IAAqC,EAAA;AACpE,IAAA,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,sBAAA,EAAyB,OAAO,CAAC,IAAI,CAAC,CAAY,UAAA,CAAA,CAAC;AAC1E;;ACrBA;MACa,uBAAuB,CAAA;aAC3B,IAAa,CAAA,aAAA,GAA+B,EAAE,CAAC;aAC/C,IAAa,CAAA,aAAA,GAAG,OAAO,CAAC;aACxB,IAAsB,CAAA,sBAAA,GAAoB,MAAM,CAAC;AAExD;;AAEG;AACH,IAAA,OAAO,UAAU,CACf,WAAmB,EACnB,MAAkC,EAClC,MAA+B,EAAA;AAE/B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,WAAW;;AAEpB,QAAA,MAAM,IAAI,GACR,MAAM,KAAK,uBAAuB,CAAC,EAAE,GAAG,WAAW,GAAG,WAAW,GAAG,EAAE;QAExE,IAAI,MAAM,KAAK,uBAAuB,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE;AACvD,YAAA,OAAO,CAAC;;aACH,IAAI,MAAM,KAAK,uBAAuB,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE;AAC9D,YAAA,OAAO,EAAE;;AAGX,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,UAAU,CAAC,IAAY,EAAE,IAA6B,EAAA;QAC3D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,cAAc;;AAEvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,cAAc;;QAEvB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,CACjC,IAAI,CAAC,MAAoC,CAC1C;QACD,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO;AACJ,iBAAA,cAAc,CAAC;gBACd,GAAG,QAAQ,CAAC,WAAW;AACvB,gBAAA,MAAM,EAAE,QAAQ;aACjB;AACA,iBAAA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;AAG3B,QAAA,OAAO;AACJ,aAAA,SAAS,CAAC;AACT,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,eAAe,EAAE,IAAI;SACtB;AACA,aAAA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;AAG3B,IAAA,OAAO,oBAAoB,CACzB,IAAc,EACd,MAAkC,EAAA;AAElC,QAAA,OAAO;AACJ,aAAA,WAAW,CAAC;YACX,eAAe,EAAE,IAAI,CAAC,sBAAsB;YAC5C,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B;AACA,aAAA,QAAQ,CACP,IAAI,CAAC,YAAY,CAAC,MAAM;cACpB,sBAAsB,CAAC;AACzB,cAAE,sBAAsB,CAAC,MAAM,CAClC;;IAGL,OAAO,SAAS,CACd,IAAc,EACd,MAAgB,EAChB,KAAe,EACf,IAAA,GAAwC,QAAQ,EAAA;AAEhD,QAAA,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS;QAEpD,QACE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;;IAI/C,OAAO,aAAa,CAClB,IAAc,EACd,WAAqB,EACrB,OAAwC,QAAQ,EAAA;AAEhD,QAAA,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;;QAGtC,QACE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;;IAI7E,OAAO,cAAc,CACnB,IAAc,EACd,WAAqB,EACrB,OAAwC,QAAQ,EAAA;AAEhD,QAAA,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;;QAGtC,QACE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE;;AAI9E,IAAA,OAAO,eAAe,CACpB,IAAY,EACZ,GAAc,EACd,GAAc,EACd,WAA6C,EAC7C,UAA0B,EAC1B,MAAe,EAAA;QAEf,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,SAAS;;AAGlB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;AACtD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM;AAEpC,QAAA,IAAI,UAAU,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC,EAAE;YACnE,MAAM,IAAI,KAAK,CACb,CAAA,eAAA,EAAkB,OAAO,CAAoC,iCAAA,EAAA,UAAU,CAAE,CAAA,CAC1E;;AAGH,QAAA,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;AAC1C,QAAA,MAAM,OAAO,GACX,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,EAAE,WAAW,CAAC;AACpE,QAAA,MAAM,QAAQ,GACZ,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,WAAW,CAAC;AACrE,QAAA,MAAM,OAAO,GACX,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC;AACpE,QAAA,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;AAEhC,QAAA,OAAO,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,WAAW;;IAGtD,OAAO,YAAY,CAAC,MAAkC,EAAA;QACpD,OAAO,MAAM,KAAK,EAAE;;AAGtB,IAAA,OAAO,SAAS,CAAC,IAAY,EAAE,IAA6B,EAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3D,QAAA,IAAI,QAAQ,GAAG,sBAAsB,CAAC,iBAAiB;;;;;AAKvD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrB;;;;AAIG;YACH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACjC,YAAA,QAAQ,GAAG,sBAAsB,CAAC,YAAY;;AAGhD,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE;YAC9D,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,MAAM,EAAE,UAAU,CAAC,MAAM;AAC1B,SAAA,CAAC;;AAGJ,IAAA,OAAO,kBAAkB,CACvB,IAAY,EACZ,OAAgC,EAAE,EAAA;AAElC,QAAA,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI;QACzE,IAAI,SAAS,GAAkB,KAAK;AACpC,QAAA,IAAI,QAAQ,GAAG,sBAAsB,CAAC,YAAY;AAClD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAoC,CAAC,EAAE;YAC3D,SAAS,GAAG,KAAK;AACjB,YAAA,QAAQ,GAAG,sBAAsB,CAAC,iBAAiB;;AAGrD,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ;AACtC,aAAA,WAAW,CAAC;YACX,MAAM;YACN,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC;AACA,aAAA,cAAc,CAAC;YACd,GAAG,QAAQ,CAAC,WAAW;YACvB,SAAS;AACV,SAAA,CAAC;;AAGN;;;;;AAKG;AACK,IAAA,OAAO,uBAAuB,CACpC,IAAY,EACZ,IAA6B,EAAA;QAE7B,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG;AAC7C,aAAA,WAAW,CAAC;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC;AACA,aAAA,qBAAqB,EAAE;QAE1B,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAC7B,cAAE;AACE,gBAAA,eAAe,EAAE,eAAkC;gBACnD,MAAM;AACP;AACH,cAAE;gBACE,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,MAAM,EAAE,IAAI,CAAC,aAAa;aAC3B;;;;ACjPT,IAAY,qBAGX;AAHD,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACR,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAGhC,EAAA,CAAA,CAAA;;ACMD,MAAM,YAAY,GAA8B;AAC9C,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,KAAK,EAAE,GAAG;CACX;AACD,MAAM,cAAc,GAA8B;AAChD,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE,GAAG;CACX;MAKY,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAsBW,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAA4B,YAAY,CAAC;AACpE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CACpC,cAAc,CACf;QACQ,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CACpC,uBAAuB,CAAC,EAAE,CAC3B;AAEQ,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAiEzC;AA7FC,IAAA,OAAO,CAAC,IAA+B,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGvB,IAAA,SAAS,CAAC,MAAiC,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;;AAG3B,IAAA,SAAS,CAAC,MAA+B,EAAA;AACvC,QAAA,MAAM,aAAa,GACjB,MAAM,KAAK,uBAAuB,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,uBAAuB,CAAC,EAAE;QAEvC,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAgB7B,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;AACzC,QAAA,MAAM,IAAI,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI;AACpE,QAAA,MAAM,MAAM,GACV,cAAc,IAAI,IAAI,GAAG,cAAc,GAAG,cAAc,CAAC,IAAI;AAC/D,QAAA,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;AACjD,QAAA,MAAM,IAAI,GAAG,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,MAAM,CAAI,CAAA,EAAA,MAAM,CAAE,CAAA,CAAC,IAAI,EAAE;QAEjD,OAAO,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;;IAG7D,yBAAyB,CACvB,IAAY,EACZ,GAAa,EACb,GAAa,EACb,MAAc,EACd,UAAmB,EAAA;QAEnB,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,UAAU,EAAE;;;AAGnB,QAAA,IAAI;AACF,YAAA,IACE,uBAAuB,CAAC,eAAe,CACrC,IAAI,EACJ,GAAG,EACH,GAAG,EACH,QAAQ,EACR,UAAU,CACX,EACD;AACA,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;;;QAEpC,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;;IAIZ,UAAU,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC;;IAGpC,eAAe,CAAC,IAAY,EAAE,MAAc,EAAA;AAClD,QAAA,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;AAEtE,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI;YAE5B,IAAI,CAAC,OAAO,CAAC;AACX,gBAAA,GAAG,YAAY;AACf,gBAAA,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAiC,CAAC;AAClE,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,SAAS,CAAC,MAAiC,CAAC;;aAC5C;YACL,IAAI,CAAC,UAAU,EAAE;;;8GA3FV,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;AAiGD;;AAEG;AACH,SAAS,kBAAkB,CACzB,IAAY,EACZ,MAA+B,EAAA;IAE/B,QAAQ,MAAM;QACZ,KAAK,uBAAuB,CAAC,EAAE;YAC7B,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;QAC/B,KAAK,uBAAuB,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;AACrC,QAAA;AACE,YAAA,OAAO,IAAI;;AAEjB;;MC7Ha,4BAA4B,CAAA;AAHzC,IAAA,WAAA,GAAA;AAgBU,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAc;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAiB;AActD;AA3BC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC;AACT,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;AAGzD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC;AACT,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;AAMzD,IAAA,aAAa,CAAC,KAAiC,EAAA;AAC7C,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAmB,CAAC;gBAC9C;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAsB,CAAC;gBAChD;AACF,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;;;8GAzBhC,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA,CAAA;;2FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACFM,MAAM,yBAAyB,GAAG,IAAI,cAAc,CACzD,YAAY,EACZ;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,uBAAuB,CAAC,aAAa;AACrD,CAAA,CACF;;ACNM,MAAM,kCAAkC,GAC7C,IAAI,cAAc,CAAkB,4BAA4B,EAAE;AAChE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,uBAAuB,CAAC,sBAAsB;AAC9D,CAAA,CAAC;;MCCS,6BAA6B,CAAA;AAH1C,IAAA,WAAA,GAAA;AAYU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,kCAAkC,CAAC;AAkBtE;AA3BC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;;AAM9B,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;;AAGzB,IAAA,6BAA6B,CAAC,QAAgB,EAAA;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC;;AAGvE,IAAA,qBAAqB,CAAC,QAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;;AAG1B,IAAA,8BAA8B,CAAC,MAAc,EAAA;QACnD,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,qBAAqB;AAC5D,aAAA,eAAe;;8GA1BT,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF5B,MAAM,EAAA,CAAA,CAAA;;2FAEP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCoBY,6BAA6B,CAAA;AAGxC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IACI,WAAW,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAG5B,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;;AAwBzC,IAAA,WAAA,CACY,cAAuC,EACvC,SAAuC,EACvC,oBAAmD,EACnB,IAA4B,EAAA;QAH5D,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACY,IAAI,CAAA,IAAA,GAAJ,IAAI;AAzC7B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;AAgBhD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI;QACvC,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CACrD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C;AAEQ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;QAC3C,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CACzD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C;AAEQ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;QAC3C,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CACzD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C;AAED,QAAA,IAAA,CAAA,cAAc,GAA0B,qBAAqB,CAAC,IAAI;QAClE,IAAQ,CAAA,QAAA,GAAiC,qBAAqB;AAGpD,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAQ;QAQvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;;AAGrC,IAAA,YAAY,CAAC,MAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE;;AAGtB,IAAA,cAAc,CAAC,IAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;IAG5B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;IAGrC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;IAG5B,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACzB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAAS,KAAI;gBAClB,IAAI,CAAC,EAAE;AACL,oBAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;aAE1B;AACF,SAAA,CAAC;;AAGN,IAAA,YAAY,CAAC,IAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,aAAa,EAAE;;AAGtB,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC;;QAEnD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAIrD,IAAA,SAAS,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,eAAe,EAAE;;AAGrB,IAAA,cAAc,CAAC,MAAiC,EAAA;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE;;IAGtB,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CACtC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAClD;QACD,IAAI,CAAC,KAAK,EAAE;;IAGJ,WAAW,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAEjC,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxD,YAAA,MAAM,IAAI,GAAG,uBAAuB,CAAC,oBAAoB,CACvD,OAAO,EACP,IAAI,CAAC,IAAI,CAAC,MAAM,CACjB;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;;IAIpB,aAAa,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,uBAAuB,CAAC,kBAAkB,CACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EACjD;YACE,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACzB,SAAA,CACF;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1C,IAAA,eAAe,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAC3C,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,CACrB;;AA9IQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,yIA0C9B,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGA1CxB,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;0BA2CI,MAAM;2BAAC,yBAAyB;yCAlC/B,WAAW,EAAA,CAAA;sBADd;gBAsFD,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACjHrC,MAAM,QAAQ,GAAG;AACf,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;CACF;AAED,MAAM,QAAQ,GAAG;AACf,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;CACF;AAEe,SAAA,YAAY,CAC1B,KAAkC,EAClC,MAAsC,EAAA;IAEtC,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE;AAC5B,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;YACzB,MAAM,IAAI,GAAG,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;kBAC3D,KAAK,CAAC;AACR,kBAAE,uBAAuB,CAAC,UAAU,CAChC,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,CACd;AACL,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CACxD,sBAAsB,CAAC,MAAM,CAC9B;YAED,OAAO;AACL,gBAAA,GAAG,KAAK;AACR,gBAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAChD,WAAW,EACX,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,GAAG,EACV,MAAM,CACP;aACF;AACH,SAAC,CAAC;;AAGJ,IAAA,OAAO,KAAK;AACd;SAEgB,cAAc,CAC5B,OAAoC,EACpC,YAAoB,EACpB,MAAsC,EAAA;IAEtC,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,uBAAuB,CAAC,UAAU,CAC7C,YAAY,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,CACd;AACD,QAAA,IAAI,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;YACpC,IAAI;AACJ,YAAA,MAAM,EAAE,CAAC;AACV,SAAA,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC3B,YAAA,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAErD,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,QAAQ,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAChD,WAAW,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,EACnD,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,GAAG,EACV,QAAQ,CACT;aACF;AACH,SAAC,CAAC;;AAGJ,IAAA,OAAO,OAAO;AAChB;AAEM,SAAU,QAAQ,CAAC,MAAc,EAAA;AACrC,IAAA,IAAI,MAAM,KAAK,EAAE,EAAE;AACjB,QAAA,OAAO,QAAQ;;AAEjB,IAAA,OAAO,QAAQ;AACjB;AAEgB,SAAA,UAAU,CAAC,GAAG,GAAG,CAAC,EAAA;IAChC,MAAM,YAAY,GAAG,EAAE;AACvB,IAAA,MAAM,SAAS,GAAG,GAAG,GAAG,YAAY;IACpC,MAAM,OAAO,GAAG,EAAE;AAElB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG;AACjC,aAAA,CAAC;;;AAIN,IAAA,OAAO,OAAO;AAChB;AAEM,SAAU,OAAO,CAAC,CAAgB,EAAA;;IAEtC,IACE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;;AAE/C,SAAC,CAAC,CAAC,OAAO,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;;AAEhE,SAAC,CAAC,CAAC,OAAO,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;;AAEhE,SAAC,CAAC,CAAC,OAAO,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;;AAEhE,SAAC,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EACpC;AACA,QAAA,OAAO,IAAI;;;AAIb,IAAA,OAAO,EACL,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AACjC,SAAC,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CACpC;AACH;AAEO,MAAM,qBAAqB,GAAG;IACnC,YAAY;IACZ,cAAc;IACd,QAAQ;IACR,UAAU;IACV,OAAO;CACR;;ACrRD,IAAY,uBAGX;AAHD,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,GAGlC,EAAA,CAAA,CAAA;;MCQY,iCAAiC,CAAA;AAJ9C,IAAA,WAAA,GAAA;AAKmB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAkD9E;AAhDC,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;;AAGzC,IAAA,IAAY,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe;;AAGlD,IAAA,SAAS,CACP,IAAqB,EACrB,QAA+B,EAC/B,iBAAiB,GAAG,KAAK,EAAA;QAEzB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AAC/B,YAAA,OAAO,EAAE;;QAGX,QAAQ,QAAQ;AACd,YAAA,KAAK,qBAAqB,CAAC,IAAI,EAAE;AAC/B,gBAAA,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,iBAAiB,GAAG,IAAI,GAAG,GAAG;AAE3D,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;;YAErE,KAAK,qBAAqB,CAAC,MAAM;AAC/B,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AACrE,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAA,CAAE,CAAC;;;AAI5D,IAAA,WAAW,CACjB,WAAoC,EACpC,IAAqB,EACrB,MAAc,EAAA;AAEd,QAAA,IAAI;AACF,YAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE;AAChD,iBAAA,WAAW,CAAC;gBACX,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,eAAe,EAAE,IAAI,CAAC,gBAAgB;aACvC;iBACA,QAAQ,CAAC,MAAM,CAAC;;AACnB,QAAA,MAAM;YACN,MAAM,IAAI,KAAK,CACb,CAAiC,8BAAA,EAAA,IAAI,CAAgB,aAAA,EAAA,IAAI,CAAC,OAAO,CAAE,CAAA,CACpE;;;8GAhDM,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCJY,oCAAoC,CAAA;AAE7C,IAAA,SAAS,CAAC,MAAc,EAAE,GAAG,GAAG,CAAC,EAAA;QAC7B,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,OAAO,MAAM;;AAGjB,QAAA,OAAO,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,MAAM,GAAG,EAAE;;8GAPlC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAJhD,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,gCAAgC,CAAA;AAEzC,IAAA,SAAS,CAAC,MAAc,EAAE,aAAqB,EAAE,GAAW,EAAE,mBAA4B,EAAA;AACtF,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,mBAAmB,EAAE;AACvC,YAAA,OAAO,KAAK;;QAEhB,MAAM,UAAU,GAAG,CAAC;AAEpB,QAAA,QAAQ,CAAC,aAAa,KAAK,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;;8GARrE,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,8BAA8B,CAAA;AAEvC,IAAA,SAAS,CAAC,IAAY,EAAE,WAAmB,EAAE,mBAA4B,EAAA;AACrE,QAAA,IAAI,IAAI,IAAI,IAAI,IAAI,mBAAmB,EAAE;AACrC,YAAA,OAAO,KAAK;;QAGhB,OAAO,IAAI,KAAK,WAAW;;8GAPtB,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACqBD,SAAS,UAAU,CAAC,KAAa,EAAE,IAAY,EAAA;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AACxC;AAEA,SAAS,iBAAiB,CACxB,EAAU,EACV,EAAU,EACV,CAAS,EACT,CAAS,EACT,YAAoB,EAAA;IAEpB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;;QAErB,OAAO,GAAG,GAAG,YAAY;;SACpB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;;QAE3B,OAAO,GAAG,GAAG,YAAY;;SACpB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;;QAE3B,OAAO,GAAG,GAAG,YAAY;;SACpB;;AAEL,QAAA,OAAO,YAAY;;AAEvB;AAEA,MAAM,iBAAiB,GAAG;AACxB,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,GAAG,EAAE,kBAAkB;AACxB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,GAAG,EAAE,mBAAmB;AACzB,KAAA;CACF;MAiBY,6BAA6B,CAAA;AAf1C,IAAA,WAAA,GAAA;AAkBW,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAa,WAAW,CAAC;AACvD,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAa,WAAW,CAAC;QAEvD,IAAK,CAAA,KAAA,GAAiB,SAAS;QAW/B,IAAU,CAAA,UAAA,GAAG,MAAM,EAA6B;QAEhD,IAAY,CAAA,YAAA,GAAG,MAAM,EAAU;QAExC,IAAkB,CAAA,kBAAA,GAAG,EAAE;QAEvB,IAAQ,CAAA,QAAA,GAAG,qBAAqB;AAqLjC;IA/KC,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,eAAe,EAAE;;AAGxB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;AAC3C,QAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;AAEnD,QAAA,IACE,eAAe;AACf,YAAA,eAAe,CAAC,YAAY;YAC5B,mBAAmB;YACnB,mBAAmB,CAAC,YAAY,EAChC;;YAEA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAC/C;;AAEH,QAAA,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,YAAY,EAAE;YAC3D,IAAI,CAAC,qBAAqB,EAAE;;AAE9B,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,YAAY,EAAE;;YAEnD,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;IAIjD,WAAW,GAAA;QACT,IAAI,CAAC,kBAAkB,EAAE;;AAI3B,IAAA,WAAW,CAAC,CAAa,EAAA;QACvB,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;AAIxB,IAAA,SAAS,CAAC,CAAa,EAAA;QACrB,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAOzB,IAAA,UAAU,CAAC,CAAa,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACrE;;QAEF,MAAM,cAAc,GAClB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;;QAGxD,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC;QAC9D,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;;AAG9D,QAAA,MAAM,UAAU,GACd,CAAC,IAAI,CAAC,IAAI,CACR,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAC9D;AACC,YAAA,GAAG;YACL,IAAI,CAAC,EAAE;;AAET,QAAA,MAAM,WAAW,GAAG,iBAAiB,CACnC,OAAO,EACP,OAAO,EACP,CAAC,CAAC,OAAO,EACT,CAAC,CAAC,OAAO,EACT,UAAU,CACX;;AAED,QAAA,MAAM,kBAAkB,GACtB,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;;QAEhE,MAAM,SAAS,GACb,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAC;cAChC,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;cACzB,EAAE;QACR,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC;AACvD,QAAA,MAAM,KAAK,GAAG,CAAC,YAAY,IAAI,GAAG,KAAK,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC;AAEpE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AAErE,QAAA,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;;AAGlC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;;;IAKvC,eAAe,GAAA;QACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjD,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAC7C,YAAY,EACZ,IAAI,CAAC,kBAAkB,CACxB;AACD,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAC7C,UAAU,EACV,IAAI,CAAC,gBAAgB,CACtB;;IAGK,kBAAkB,GAAA;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;AACzC,YAAA,iBAAiB,CAAC,KAAK,CAAC,MAAM;AAChC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG;;IAGhE,kBAAkB,GAAA;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;AACzC,YAAA,iBAAiB,CAAC,KAAK,CAAC,MAAM;AAChC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG;;AAGhE,IAAA,iBAAiB,CACvB,EAAU,EACV,EAAU,EACV,CAAS,EACT,CAAS,EAAA;;QAGT,QACE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,kBAAkB;;IAInB,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAChD,YAAY,EACZ,IAAI,CAAC,kBAAkB,CACxB;AACD,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAChD,UAAU,EACV,IAAI,CAAC,gBAAgB,CACtB;;IAGK,oBAAoB,GAAA;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;QAEvE,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACpE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAElE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;;;IAI/B,qBAAqB,GAAA;QAC3B,IAAI,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;gBAC/B,IAAI,CAAC,kBAAkB,EAAE;;iBACpB;gBACL,IAAI,CAAC,kBAAkB,EAAE;;;AAI7B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,IAAI,CAAC,YAAY,CAAC,KAAK,MAAM;;;8GAzMjF,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EC9E1C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,sCAAA,EAAA,UAAA,EAAA,sCAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,w8FA+FA,ED1BI,MAAA,EAAA,CAAA,4gEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,+IAChB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,8BAA8B,EAC9B,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gCAAgC,EAChC,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,oCAAoC,oDACpC,iCAAiC,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGxB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAfzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAGlB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,gBAAgB;wBAChB,SAAS;wBACT,gBAAgB;wBAChB,8BAA8B;wBAC9B,gCAAgC;wBAChC,oCAAoC;wBACpC,iCAAiC;AAClC,qBAAA,EAAA,QAAA,EAAA,w8FAAA,EAAA,MAAA,EAAA,CAAA,4gEAAA,CAAA,EAAA;8BAQQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBAgDD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAOrC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAUnC,UAAU,EAAA,CAAA;sBAJT,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAChC,YAAY;uBAAC,WAAW,EAAE,CAAC,0BAA0B,CAAC;;sBACtD,YAAY;uBAAC,UAAU,EAAE,CAAC,0BAA0B,CAAC;;sBACrD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MExI1B,oCAAoC,CAAA;AALjD,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;QAEtC,IAAM,CAAA,MAAA,GAAG,KAAK,EAA8B;QAC5C,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAC3B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAE3B,IAAY,CAAA,YAAA,GAAG,MAAM,EAA6B;QAClD,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU;AAE5B,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACnC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE;AAClD,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,aAAA,CAAC;AACJ,SAAC,CAAC;QACO,IAAM,CAAA,MAAA,GAAG,KAAK,EAA2B;QACzC,IAAY,CAAA,YAAA,GAAG,KAAK,EAAU;QAE9B,IAAc,CAAA,cAAA,GAAG,KAAK,EAA6B;QAC5D,IAAQ,CAAA,QAAA,GAAG,qBAAqB;AACjC;8GAxBY,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBjD,2OAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDSY,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE5B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBALhD,SAAS;+BACE,iCAAiC,EAAA,OAAA,EAElC,CAAC,6BAA6B,CAAC,EAAA,QAAA,EAAA,2OAAA,EAAA;;;MEJ7B,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;AAEtC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAA6B,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChC,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;AAChC,SAAC,CAAC;QAEO,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAC3B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAC3B,IAAY,CAAA,YAAA,GAAG,KAAK,EAA6B;QAEjD,IAAU,CAAA,UAAA,GAAG,MAAM,EAA6B;QAChD,IAAY,CAAA,YAAA,GAAG,MAAM,EAAU;QAExC,IAAQ,CAAA,QAAA,GAAG,qBAAqB;AASjC;AAPC,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGpB,gBAAgB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE;;8GAzBnB,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACEK,MAAO,oCAAqC,SAAQ,kCAAkC,CAAA;AAE1F,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAFA,IAAM,CAAA,MAAA,GAAG,KAAK,EAA2B;AAGhD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;IAGF,gBAAgB,GAAA;AACjC,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACzC,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,SAAA,CAAC;;8GAbO,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdjD,wQASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGY,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE5B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,mBAE3B,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,6BAA6B,CAAC,EAAA,QAAA,EAAA,wQAAA,EAAA;;;AECpC,MAAO,oCAAqC,SAAQ,kCAAkC,CAAA;AAC1F,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;IAGF,gBAAgB,GAAA;AACjC,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACzC,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,SAAA,CAAC;;8GAXO,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjD,wQASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE5B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,mBAE3B,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,6BAA6B,CAAC,EAAA,QAAA,EAAA,wQAAA,EAAA;;;ME2C7B,+BAA+B,CAAA;AAvB5C,IAAA,WAAA,GAAA;AAwBqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAEpC,IAAc,CAAA,cAAA,GAAG,KAAK,EAAyB;QAC/C,IAAM,CAAA,MAAA,GAAG,KAAK,EAA8B;QAE5C,IAAK,CAAA,KAAA,GAAG,KAAK,EAA+B;QAC5C,IAAO,CAAA,OAAA,GAAG,KAAK,EAA+B;QAE9C,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAC3B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAE3B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAY;QAC7B,IAAY,CAAA,YAAA,GAAG,KAAK,EAAmB;QACvC,IAAc,CAAA,cAAA,GAAG,KAAK,EAA2B;QAEjD,IAAa,CAAA,aAAA,GAAG,MAAM,EAA2B;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,CAAC;AACvE,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACvC,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,CAAC;AACvE,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACvC,SAAC,CAAC;AAEO,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AACpC,YAAA,IAAI,MAAM,KAAK,uBAAuB,CAAC,EAAE,EAAE;AACzC,gBAAA,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;;AAE7B,YAAA,IAAI,MAAM,KAAK,uBAAuB,CAAC,EAAE,EAAE;AACzC,gBAAA,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;;AAE7B,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,uBAAuB;QAEpC,IAAqB,CAAA,qBAAA,GACnB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAsC9C;AApCC,IAAA,YAAY,CAAC,MAA+B,EAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACrD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAI3B,IAAA,wBAAwB,CAC9B,MAA+B,EAAA;AAE/B,QAAA,QAAQ,IAAI,CAAC,cAAc,EAAE;YAC3B,KAAK,qBAAqB,CAAC,IAAI;AAC7B,gBAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AAChC,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;oBACrB,MAAM;AACP,iBAAA,CAAC;YAEJ,KAAK,qBAAqB,CAAC,MAAM;AAC/B,gBAAA,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AAC1D,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;oBACrB,MAAM;AACP,iBAAA,CAAC;AACJ,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;;;AAI9C,IAAA,wBAAwB,CAAC,MAA+B,EAAA;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAElD,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;;8GA7E5B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtD5C,6lCAmCA,EAAA,MAAA,EAAA,CAAA,qZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDaI,gBAAgB,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,EACnB,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EAhBL,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,YAAY,EAAE;gBACpB,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAChD,oBAAA,QAAQ,CAAC;wBACP,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;wBACpC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;qBACtC,CAAC;iBACH,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FAQU,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAvB3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAGzB,UAAA,EAAA;wBACV,OAAO,CAAC,YAAY,EAAE;4BACpB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;gCAChC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAChD,gCAAA,QAAQ,CAAC;oCACP,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;oCACpC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iCACtC,CAAC;6BACH,CAAC;yBACH,CAAC;qBACH,EACQ,OAAA,EAAA;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,oBAAoB;wBACpB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,6lCAAA,EAAA,MAAA,EAAA,CAAA,qZAAA,CAAA,EAAA;;;MEvCU,0BAA0B,CAAA;AALvC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAiD9E;AA/CC,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;;AAGzC,IAAA,IAAY,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe;;AAGlD,IAAA,SAAS,CACP,IAAqB,EACrB,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAA;QAErC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AAC/B,YAAA,OAAO,EAAE;;AAGX,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,CAAA,EAAG,IAAI,CAAA,CAAE;;AAGlB,QAAA,IAAI,QAAQ,KAAK,qBAAqB,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC,UAAU,CACpB,IAAI,EACJ,IAAI,EACJ,uBAAuB,CAAC,MAAM,CAC/B,CAAC,QAAQ,EAAE;;AAGd,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;;AAGrE,IAAA,UAAU,CAChB,IAAqB,EACrB,MAAc,EACd,WAAoC,EAAA;AAEpC,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE;YAC3D,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,eAAe,EAAE,IAAI,CAAC,gBAAgB;SACvC,CAAC,CAAC,WAAW,CAAC;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACtB,YAAA,OAAO,UAAU;;AAGnB,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAA,CAAE,CAAC;;8GAhDrC,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;kBACA;;;MCEY,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAIzD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,aAA4B;AAetE;IAbC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEtB,YAAA,UAAU,CAAC,MACT,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAC3D;;;IAIL,WAAW,GAAA;;AAET,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;8GArB5D,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,2BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;8BAOqC,aAAa,EAAA,CAAA;sBAAhD,KAAK;uBAAC,2BAA2B;;;ACCpC,SAAS,eAAe,GAAA;AACtB,IAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY;AACzC;MAea,oCAAoC,CAAA;AAbjD,IAAA,WAAA,GAAA;QAwBW,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACxD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACxD,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE1D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA8B,EAAE,CAAC;QAQjD,IAAW,CAAA,WAAA,GAAG,MAAM,EAA6B;QACjD,IAAe,CAAA,eAAA,GAAG,MAAM,EAAyB;QACjD,IAAO,CAAA,OAAA,GAAG,MAAM,EAAQ;QACxB,IAAS,CAAA,SAAA,GAAG,MAAM,EAAQ;AAElB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAiFtE;AA5GC,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3D,QAAA,OAAO,SAAS;;AAwBlB,IAAA,YAAY,CAAC,KAAc,EAAA;QACzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;aACd;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;;AAIzB,IAAA,oBAAoB,CAAC,CAAgB,EAAA;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;AAE3C,QAAA,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC5D,CAAC,CAAC,cAAc,EAAE;;;IAItB,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,CAAC;aACT,aAAa,CAAC,OAAO;AACrB,aAAA,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;;IAGvD,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,CAAC;cACR,aAAa,CAAC,OAAO;AACvB,cAAE,mBAAmB,CAAC,QAAQ,EAAE,eAAe,CAAC;;AAGpD,IAAA,SAAS,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACf,CAAC,CAAC,cAAc,EAAE;;aACb;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC;;;AAItC,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAGlE,yBAAyB,CACvB,KAAiB,EACjB,IAA2B,EAAA;QAE3B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAE/B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;IAGzB,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;;;AAIvC,IAAA,QAAQ,CAAC,MAAc,EAAA;AAC7B,QAAA,OAAO,CAAG,EAAA,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAE,CAAA,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;AAG1C,IAAA,kBAAkB,CAAC,OAAe,EAAA;AACxC,QAAA,IAAI,IAAY;;AAGhB,QAAA,IAAI,OAAO,KAAK,EAAE,EAAE;AAClB,YAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;;;AAGzC,aAAA,IAAI,OAAO,KAAK,EAAE,EAAE;AACvB,YAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;;QAGrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,CAAC,UAAU,EAAE;;;8GA5GV,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EARpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA,CAAC,0BAA0B,CAAC,EC9BzC,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q+BA8BA,EDEI,MAAA,EAAA,CAAA,mpBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAA,kCAAkC,EAClC,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,0BAA0B,0DAC1B,iCAAiC,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGxB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAbhD,SAAS;+BACE,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,aACpC,CAAC,0BAA0B,CAAC,EAC9B,OAAA,EAAA;wBACP,WAAW;wBACX,kCAAkC;wBAClC,0BAA0B;wBAC1B,iCAAiC;AAClC,qBAAA,EAAA,QAAA,EAAA,q+BAAA,EAAA,MAAA,EAAA,CAAA,mpBAAA,CAAA,EAAA;8BAsBQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;;AA2FH,SAAS,sBAAsB,CAC7B,WAAmB,EACnB,QAAgB,EAChB,QAAqC,EAAA;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAEpC,IAAI,QAAQ,EAAE;AACZ,QAAA,MAAM,IAAI,GAAG,WAAW,GAAG,QAAQ;AAEnC,QAAA,OAAO,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAG1C,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,iBAAiB,CACxB,IAAY,EACZ,QAAqC,EAAA;AAErC,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;IAEnE,OAAO,CAAC,YAAY,KAAK,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC;AACjE;;MEvIa,6BAA6B,CAAA;AAX1C,IAAA,WAAA,GAAA;AAYU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC,MAAM;AAE7D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,IAAQ,CAAA,QAAA,GAAG,qBAAqB;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;QAEtC,IAAgB,CAAA,gBAAA,GAAG,KAAK,EAAqB;QAC7C,IAAM,CAAA,MAAA,GAAG,KAAK,EAA8B;QAC5C,IAAI,CAAA,IAAA,GAAG,KAAK,EAAmB;QAC/B,IAAM,CAAA,MAAA,GAAG,KAAK,EAAmB;QACjC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU;QAC5B,IAAM,CAAA,MAAA,GAAG,KAAK,EAA2B;QACzC,IAAc,CAAA,cAAA,GAAG,KAAK,EAAyB;QAE/C,IAAS,CAAA,SAAA,GAAG,KAAK,EAAW;QAC5B,IAAU,CAAA,UAAA,GAAG,KAAK,EAAW;QAE7B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;QAC3B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAY;AAE3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,OAAO,YAAY,CAAC,KAAK,EAAE;AACzB,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,aAAA,CAAC;AACJ,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,OAAO,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAC3C,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,aAAA,CAAC;AACJ,SAAC,CAAC;QAEO,IAAW,CAAA,WAAA,GAAG,MAAM,EAA6B;QACjD,IAAa,CAAA,aAAA,GAAG,MAAM,EAA6B;QACnD,IAAa,CAAA,aAAA,GAAG,MAAM,EAA2B;QACjD,IAAe,CAAA,eAAA,GAAG,MAAM,EAAyB;AAyB3D;AAvBC,IAAA,UAAU,CAAC,IAA+B,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG7B,IAAA,YAAY,CAAC,MAAiC,EAAA;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,IAAA,YAAY,CAAC,MAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,IAAA,cAAc,CAAC,IAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;IAG/B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;;8GAxEnB,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,owDCvC1C,szDA2DA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzBI,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oCAAoC,+OACpC,+BAA+B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGtB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAGlB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,gBAAgB;wBAChB,oCAAoC;wBACpC,+BAA+B;AAChC,qBAAA,EAAA,QAAA,EAAA,szDAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA;;;ME7BU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EACvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,gBAAgB,CCTtC,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gQAUA,4CDJY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEf,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;+BACE,4BAA4B,EAAA,OAAA,EAE7B,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,gQAAA,EAAA;8BAGa,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAC7B,YAAY,EAAA,CAAA;sBAApB;;;AE8BG,MAAO,+BAAgC,SAAQ,6BAA6B,CAAA;IAChF,WAC2C,CAAA,IAA4B,EAC3D,UAAyD,EACnE,aAAsC,EACtC,QAAsC,EACtC,mBAAkD,EAAA;QAElD,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC;QANhB,IAAI,CAAA,IAAA,GAAJ,IAAI;QACnC,IAAU,CAAA,UAAA,GAAV,UAAU;;IAQb,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;AAZd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBAEhC,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAFd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,4GCxC5C,+nHAoGA,EAAA,MAAA,EAAA,CAAA,ihBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBDzEI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBAEhB,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;AAEhB,gBAAA,gCAAgC,kHAChC,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,oCAAoC,EACpC,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oCAAoC,iGACpC,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAnB3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAG5B,OAAA,EAAA;;wBAEP,gBAAgB;;wBAEhB,SAAS;wBACT,gBAAgB;wBAChB,gBAAgB;;wBAEhB,gCAAgC;wBAChC,6BAA6B;wBAC7B,oCAAoC;wBACpC,oCAAoC;wBACpC,oCAAoC;AACrC,qBAAA,EAAA,QAAA,EAAA,+nHAAA,EAAA,MAAA,EAAA,CAAA,ihBAAA,CAAA,EAAA;;0BAIE,MAAM;2BAAC,eAAe;;;AEPrB,MAAO,mCAAoC,SAAQ,6BAA6B,CAAA;AACpF,IAAA,WAAA,CAEkB,IAA4B,EAC5C,aAAsC,EACtC,QAAsC,EACtC,mBAAkD,EAAA;QAElD,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC;QALzC,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAQb,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;AAZ1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,kBAEpC,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAFxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,gKCnChD,i0HAuGA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9EI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,EACT,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,6BAA6B,iTAC7B,gCAAgC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,oCAAoC,EACpC,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oCAAoC,iGACpC,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3B,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAlB/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAGnC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,oBAAoB;qBAC5B,EACQ,OAAA,EAAA;wBACP,gBAAgB;wBAChB,UAAU;wBACV,SAAS;wBACT,6BAA6B;wBAC7B,gCAAgC;wBAChC,oCAAoC;wBACpC,oCAAoC;wBACpC,oCAAoC;AACrC,qBAAA,EAAA,QAAA,EAAA,i0HAAA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA;;0BAIE,MAAM;2BAAC,yBAAyB;;;AEPrC,IAAI,MAA8B;MA2BrB,yBAAyB,CAAA;AAzBtC,IAAA,WAAA,GAAA;AA0BmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QAK5C,IAAa,CAAA,aAAA,GAAG,KAAK;AAErB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;QAgE7B,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAK,CAAA,KAAA,GAAG,IAAI;QAMZ,IAAM,CAAA,MAAA,GAAG,MAAM,EAAQ;QACvB,IAAM,CAAA,MAAA,GAAG,MAAM,EAAQ;QACvB,IAAO,CAAA,OAAA,GAAG,MAAM,EAAU;QAC1B,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU;QAC9B,IAAY,CAAA,YAAA,GAAG,MAAM,EAAU;AAErB,QAAA,IAAA,CAAA,EAAE,GACnB,CAAsB,mBAAA,EAAA,EAAE,yBAAyB,CAAC,MAAM,EAAE;AAE5D,QAAA,IAAA,CAAA,gBAAgB,GAAwB;AACtC,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;SACF;QACD,IAAU,CAAA,UAAA,GAAG,KAAK;QAClB,IAAY,CAAA,YAAA,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC,CAAC;QAG9C,IAAO,CAAA,OAAA,GAA+B,EAAE;AA4EjD;aArLQ,IAAM,CAAA,MAAA,GAAG,CAAH,CAAK;AAOlB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,QAAQ;;IAMxC,IACI,MAAM,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;;AAEtE,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO;;AAGtD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,OAAO;;AAGvC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC;AACV,cAAG,IAAI,CAAC,gBAAgB,CAAC;AACzB,cAAE,IAAI,CAAC,GAAG;;AAGd,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC;AACV,cAAG,IAAI,CAAC,gBAAgB,CAAC;AACzB,cAAE,IAAI,CAAC,GAAG;;IAGd,IACI,UAAU,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,GAAG,IAAI,IAAI,EAAE;YACf;;AAEF,QAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;;AAExC,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;AAGzB,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC;AACV,cAAE,IAAI,CAAC,gBAAgB,CAAC;cACtB,SAAS;;AAGf,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,KAAK;;IAqDrC,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;;aACtB;AACL,YAAA,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;;AAE1B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;IAGpB,IAAI,GAAA;;AAEF,QAAA,MAAM,GAAG;AACP,YAAA,iBAAiB,EAAE,IAAI;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SACpB;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;aACjB;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE;AACnE,gBAAA,UAAU,EAAE,2BAA2B;AACvC,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,MAAM;AACV,iBAAA;AACF,aAAA,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AAC3C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,aAAC,CAAC;;AAGJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAGpB;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAgC,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,OAAO,CAAC;AACxE,YAAA,MAAM,KAAK,CAAC,0DAA0D,CAAC;;AAEzE,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;IAG/B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;;AAGnC,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAtLnB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAKhB,gBAAgB,EAShB,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,gBAAgB,o+BAsDhB,gBAAgB,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAEhB,gBAAgB,EAhFzB,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,yBAAyB;gBAClC,UAAU,GAAA;AACR,oBAAA,OAAO,MAAM;iBACd;AACF,aAAA;SACF,EApBS,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;GAYT,EASS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,4+BAAE,mCAAmC,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAzBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,yBAAyB;4BAClC,UAAU,GAAA;AACR,gCAAA,OAAO,MAAM;6BACd;AACF,yBAAA;AACF,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,mCAAmC;AACnE,iBAAA;8BAOC,aAAa,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAUtC,mBAAmB,EAAA,CAAA;sBADlB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAIlC,MAAM,EAAA,CAAA;sBADT;gBAyBG,UAAU,EAAA,CAAA;sBADb;gBAsBQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAED,gBAAgB,EAAA,CAAA;sBADf,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAGtC,mBAAmB,EAAA,CAAA;sBADlB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAE7B,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAQkB,EAAE,EAAA,CAAA;sBAApB,WAAW;uBAAC,IAAI;;;AC5InB;MAKa,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCMY,+BAA+B,CAAA;IAC1C,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAExB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK;AACxB,cAAE,IAAI,CAAC,UAAU,EAAE;AACnB,cAAE,IAAI,CAAC,SAAS;;AAWpB,IAAA,IAAI,CAAC,KAAiB,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;;;8GAtBhB,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAW5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,CAAA,KAAA,EAAA,YAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mCAAmC,ECvBnD,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,krBAuBA,iFDbY,aAAa,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEZ,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;+BACE,2BAA2B,EAAA,OAAA,EAG5B,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,krBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,CAAA,EAAA;8BAIpB,QAAQ,EAAA,CAAA;sBADX;gBAWD,UAAU,EAAA,CAAA;sBADT,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIrD,UAAU,EAAA,CAAA;sBAAvB,KAAK;uBAAC,KAAK;;;AEDd,SAAS,UAAU,CAAC,WAAmB,EAAE,QAAgB,EAAA;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAEpC,IAAI,QAAQ,EAAE;AACZ,QAAA,MAAM,IAAI,GAAG,WAAW,GAAG,QAAQ;QAEnC,OAAO,CAAC,IAAI;;AAGd,IAAA,OAAO,SAAS;AAClB;MAkBa,gCAAgC,CAAA;aACpC,IAAM,CAAA,MAAA,GAAG,CAAH,CAAK;AAyBlB,IAAA,WAAA,CAAoB,WAAuC,EAAA;QAAvC,IAAW,CAAA,WAAA,GAAX,WAAW;AAvBtB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAiB,MAAM,CAAC;AAKnD,QAAA,IAAA,CAAA,EAAE,GAAW,gCAAgC,CAAC,MAAM,EAAE;QAa7C,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU;;AAMvC,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAEhD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;;IAG/B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AAEjC,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;AAC3B,gBAAA,YAAY,GAAG,IAAI,CAAC,GAAG;;AAGzB,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE;AAC9C,gBAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CACnC,YAAY,EACZ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC;;AAGH,YAAA,IAAI,YAAY,KAAK,IAAI,CAAC,IAAI,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;;;;IAKzC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AAE7B,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;AACvB,gBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG;;AAGrB,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;AAC1C,gBAAA,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAC/B,QAAQ,EACR,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC;;AAGH,YAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;AAKrC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC5C,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,iBAAiB,EAAE;;;;IAK9B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAEtB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,EAAE;YACpC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAIvC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI;;AAGhC,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;;AAGxB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,QAAQ,EAAE;gBACf;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,QAAQ,EAAE;gBACf;;QAGJ,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC7C,KAAK,CAAC,cAAc,EAAE;;;AAI1B,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGvD,IAAA,kBAAkB,CAAC,KAAyB,EAAA;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;YAEjB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,gBAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAChC,gBAAA,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;;YAGhD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;;YAGtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAI5B,iBAAiB,CACvB,WAAmB,EACnB,EAAyC,EAAA;AAEzC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC9C,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,WAAW,CACpC;AACD,QAAA,MAAM,aAAa,GAAG,EAAE,CAAC,gBAAgB,CAAC;AAE1C,QAAA,OAAO,aAAa,IAAI,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI;;AAGlD,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACzC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;AACpC,QAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM;AACtC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,IAAI,CAAC,IAAI;;;AAIpB,QAAA,OAAO,SAAS;;AAGV,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACzC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,IAAI,CAAC,IAAI;;;AAIpB,QAAA,OAAO,SAAS;;AAGV,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,CAAC,QAAmC,KAAK,QAAQ,CAAC,IAAI,KAAK,IAAI,CAChE,CAAC,QAAQ;;IAGJ,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;8GA1LvB,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAMvB,gBAAgB,EAShB,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,gBAAgB,obA1BzB,CAAC,0BAA0B,CAAC,EC3CzC,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,46CA+CA,kdDFI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,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,YAAY,EAEZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,qHACT,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACR,0BAA0B,EAAA,IAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAC1B,iCAAiC,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGxB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAhB5C,SAAS;+BACE,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,aACpC,CAAC,0BAA0B,CAAC,EAC9B,OAAA,EAAA;wBACP,WAAW;wBACX,YAAY;wBACZ,QAAQ;wBACR,SAAS;wBACT,QAAQ;wBACR,0BAA0B;wBAC1B,iCAAiC;AAClC,qBAAA,EAAA,QAAA,EAAA,46CAAA,EAAA,MAAA,EAAA,CAAA,2ZAAA,CAAA,EAAA;4FASD,QAAQ,EAAA,CAAA;sBADP,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAM7B,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACuC,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAE7B,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;MERU,8BAA8B,CAAA;AAKzC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IACI,WAAW,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG;;AAK7B,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAGrB,IACI,MAAM,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;QAEnB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7D,QAAA,MAAM,oBAAoB,GACxB,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,OAAO;QAExE,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;;AAEvC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;;AAGrC,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;IAGlB,IACI,GAAG,CAAC,KAAwB,EAAA;AAC9B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE;gBACnD,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;YAEF;;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;AAGnB,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;IAGlB,IACI,GAAG,CAAC,KAAwB,EAAA;AAC9B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE;gBACnD,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;YAEF;;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;AAGnB,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;;IA8CzC,WACU,CAAA,kBAA2C,EAC3C,oBAAmD,EAAA;QADnD,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;AA1HrB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;AAYtC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAiB,MAAM,CAAC;AAyE1C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAA4B,SAAS,CAAC;AACnD,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAKxC,IAAO,CAAA,OAAA,GAAG,EAAE;QACZ,IAAO,CAAA,OAAA,GAAG,CAAC;AAEF,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAA4B,SAAS,CAAC;AACrD,QAAA,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAG5C,QAAA,IAAA,CAAA,MAAM,GAA4B,uBAAuB,CAAC,EAAE;AAC5D,QAAA,IAAA,CAAA,OAAO,GAA8B;AACnC,YAAA,uBAAuB,CAAC,EAAE;AAC1B,YAAA,uBAAuB,CAAC,EAAE;SAC3B;QAEQ,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU;QAGvC,IAAQ,CAAA,QAAA,GAAG,qBAAqB;QAIxB,IAAO,CAAA,OAAA,GAA+B,EAAE;QAExC,IAAkB,CAAA,kBAAA,GAAG,IAAI;AAKzB,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAQ;QAiL/C,IAAS,CAAA,SAAA,GAA4B,MAAK;;AAElD,SAAC;QACO,IAAU,CAAA,UAAA,GAA4B,MAAK;;AAEnD,SAAC;;AA/KD,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAC5C;QACD,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,YAAY,CAAC,MAAc,EAAA;QACzB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAChD;QACD,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,YAAY,CAAC,KAA8B,EAAA;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,WAAW,EAAE;;IAGpB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;IAG5B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;QAEhC,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,UAAU,EAAE;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAE9C,IAAI,CAAC,kBAAkB,CAAC;aACrB,IAAI,CACH,GAAG,CACD,CAAC,SAAoC,MAClC,IAAI,CAAC,aAAa,GAAG,SAAS,EAAE,IAAI,CAAC,CACzC,EACD,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC5C,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAEjE,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAA4B,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,SAAA,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC;aACrB,IAAI,CACH,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC5C,GAAG,CAAC,OAAO,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC;AAE7C,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAA4B,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,SAAA,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;YACtB,IAAI,CAAC,kBAAkB,CAAC;iBACrB,IAAI,CACH,oBAAoB,EAA2B,EAC/C,GAAG,CAAC,CAAC,MAA+B,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,EAChE,GAAG,CACD,CAAC,MAAM,MACJ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CACjE,EACD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAE3B,iBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;AAI1E,IAAA,SAAS,CAAC,IAAY,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;;AAGjC,IAAA,gBAAgB,CAAC,EAA0B,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGtB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;aACd;YACL,IAAI,CAAC,UAAU,EAAE;;;AAIb,IAAA,uBAAuB,CAC7B,aAAwC,EAAA;QAExC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACnD,OAAO,EAAE,GAAG,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;;AAGzC,QAAA,OAAO,aAAa;;IAGd,WAAW,GAAA;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;AAC5D,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;;;AAI3B,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,OAAO;AACrB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG1B,IAAA,SAAS,CAAC,IAAY,EAAA;QAC5B,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,eAAe,CACpE,IAAI,EACJ,IAAI,CAAC,GAAe,EACpB,IAAI,CAAC,GAAe,EACpB,QAAQ,EACR,IAAI,EACJ,IAAI,CAAC,MAAM,CACZ;QACD,IAAI,CAAC,sBAAsB,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,WAAW,CACd,uBAAuB,CAAC,oBAAoB,CAC1C,IAAI,CAAC,GAAe,EACpB,IAAI,CAAC,MAAM,CACZ,CACF;gBAED;;AAEF,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,WAAW,CACd,uBAAuB,CAAC,oBAAoB,CAC1C,IAAI,CAAC,GAAe,EACpB,IAAI,CAAC,MAAM,CACZ,CACF;gBAED;;;AAGJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAGhB,IAAA,iBAAiB,CAAC,MAA+B,EAAA;QACvD,OAAO,qBAAqB,CAAC,YAAY,CACvC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAClC;YACE,GAAG,EAAE,IAAI,CAAC,GAAe;YACzB,GAAG,EAAE,IAAI,CAAC,GAAe;AACzB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EACJ,MAAM,KAAK,uBAAuB,CAAC;kBAC/B,uBAAuB,CAAC;kBACxB,uBAAuB,CAAC,EAAE;AACjC,SAAA,CACF,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;;IAU1B,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAGrD,qBAAqB,GAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE;YAClE,GAAG,EAAE,IAAI,CAAC,GAAe;YACzB,GAAG,EAAE,IAAI,CAAC,GAAe;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC;;IAGI,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,cAAc,CACrD,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB;YACE,GAAG,EAAE,IAAI,CAAC,GAAe;YACzB,GAAG,EAAE,IAAI,CAAC,GAAe;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CACF;;IAGK,oBAAoB,GAAA;QAC1B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,uBAAuB,EAAE;;;AAI1B,IAAA,WAAW,CAAC,IAAY,EAAA;QAC9B,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,aAAa,GAAG,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC7D,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAC/C,aAAa,EACb,IAAI,CAAC,GAAe,EACpB,IAAI,CAAC,GAAe,EACpB,IAAI,CAAC,MAAM,CACZ;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa;;;8GA/V5B,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAoFrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,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,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,gBAAgB,EAEhB,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,gBAAgB,EA5GzB,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;YACT,uBAAuB;AACvB,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,ECnDH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qnEA2EA,2lBDrBI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAA,YAAY,4LACZ,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,qJACT,gCAAgC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,+BAA+B,EAC/B,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mCAAmC,yEACnC,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGhB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA1B1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAGzB,SAAA,EAAA;wBACT,uBAAuB;AACvB,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAgC,8BAAA;AAC3C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,gBAAgB;wBAChB,WAAW;wBACX,YAAY;wBACZ,SAAS;wBACT,OAAO;wBACP,SAAS;wBACT,gCAAgC;wBAChC,+BAA+B;wBAC/B,mCAAmC;wBACnC,yBAAyB;AAC1B,qBAAA,EAAA,QAAA,EAAA,qnEAAA,EAAA,MAAA,EAAA,CAAA,miBAAA,CAAA,EAAA;kIAYG,WAAW,EAAA,CAAA;sBADd;gBAaG,MAAM,EAAA,CAAA;sBADT;gBA0BG,GAAG,EAAA,CAAA;sBADN;gBAkBG,GAAG,EAAA,CAAA;sBADN;gBAiBQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,cAAc,EAAA,CAAA;sBAAtB;gBAEuC,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAEE,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAyB7B,UAAU,EAAA,CAAA;sBAAlB;;;MEzIU,yBAAyB,CAAA;AAGpC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa;;AAG3D,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAGrB,IACI,MAAM,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC,YAAY,CACjD,CAAC,KAAmC;AAEpC,cAAE;cACA,EAAE;AACN,QAAA,MAAM,oBAAoB,GACxB,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,OAAO;QAExE,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;YACxB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;AAE1C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;;AAGrC,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;IAGlB,IACI,GAAG,CAAC,KAAwB,EAAA;AAC9B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE;gBACnD,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;YAEF;;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;AAGnB,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;IAGlB,IACI,GAAG,CAAC,KAAwB,EAAA;AAC9B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE;gBACnD,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;YAEF;;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;IAGnB,IACI,UAAU,CAAC,MAAiC,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;;AAGlC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,EAAE;;AAGX,QAAA,OAAO,uBAAuB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE;YAC7D,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,OAAO;AACrB,SAAA,CAAC;;IAGJ,IACI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;YAChB,IAAI,CAAC,iBAAiB,EAAE;YAExB;;AAEF,QAAA,MAAM,IAAI,GAAG,uBAAuB,CAAC,UAAU,CAAC,KAAK,EAAE;YACrD,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC;AACF,QAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,eAAe,CACzD,IAAI,EACJ,IAAI,CAAC,IAAgB,EACrB,IAAI,CAAC,IAAgB,EACrB,QAAQ,EACR,IAAI,CAAC,WAAW,CAAC,UAAU,EAC3B,IAAI,CAAC,OAAO,CACb;QAED,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAClB,IAAI,CAAC,iBAAiB,EAAE;YAExB;;AAEF,QAAA,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC;;IAG9D,IAAY,YAAY,CAAC,IAAY,EAAA;QACnC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE;YACtE,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC;;AAGJ,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;;AAuBzC,IAAA,WAAA,CACU,WAAuB,EACvB,oBAAmD,EACjB,aAA2B,EAAA;QAF7D,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACc,IAAa,CAAA,aAAA,GAAb,aAAa;AAvBnB,QAAA,IAAA,CAAA,gBAAgB,GACpD,IAAI,gBAAgB,CAClB,IAAI,CAAC;AACH,cAAE,IAAI,CAAC,aAAa,CAAC,yBAAyB;AAC9C,cAAE,IAAI,CAAC,WAAW,CACrB;QAOK,IAAO,CAAA,OAAA,GAA+B,EAAE;AAIxC,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAQ;QAE/C,IAAM,CAAA,MAAA,GAAG,EAAE;QA6BnB,IAAS,CAAA,SAAA,GAAG,MAAK;;AAEjB,SAAC;QA2BO,IAAS,CAAA,SAAA,GAA4B,MAAK;;AAElD,SAAC;;AApDD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;;;IAI7C,WAAW,GAAA;QACT,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;AAI5B,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACvB,KAAK,CAAC,eAAe,EAAE;;;AAQ3B,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAI5B,IAAA,WAAW,CAAC,CAAQ,EAAA;QAClB,IAAI,CAAC,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AACjD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG5B,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;;AAQrB,IAAA,mBAAmB,CAAC,MAAiC,EAAA;QAC3D,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;AACpC,YAAA,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;AACxC,iBAAA,IAAI,CAACC,WAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/B,iBAAA,SAAS,CAAC,CAAC,IAAY,KAAI;AAC1B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;AACjC,aAAC,CAAC;;aACC;YACL,MAAM,IAAI,KAAK,CACb,2CAA2C;AACzC,gBAAA,2EAA2E,CAC9E;;;IAIG,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;;;IAI9B,iBAAiB,GAAA;QACvB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;AAlOxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,sFA8Id,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9IvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EA8HhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,gBAAgB,CAEhB,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,gBAAgB,CA7IzB,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAOU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAA2B,yBAAA;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,QAAQ,EAAE,aAAa;AACxB,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;0BA+II;;0BAAY,MAAM;2BAAC,YAAY;yCAlI9B,MAAM,EAAA,CAAA;sBADT;gBAsBG,GAAG,EAAA,CAAA;sBADN;gBAkBG,GAAG,EAAA,CAAA;sBADN;gBAcG,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,kBAAkB;gBAiBrB,KAAK,EAAA,CAAA;sBADR;gBAyCqC,gBAAgB,EAAA,CAAA;sBAArD,WAAW;uBAAC,uBAAuB;gBAQpC,YAAY,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAGtC,QAAQ,EAAA,CAAA;sBADP,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBA+BtC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAyBjC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;MCrNvB,iCAAiC,CAAA;IAC5C,SAAS,CACP,IAAqB,EACrB,QAA+B,EAAA;QAE/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AAC/B,YAAA,OAAO,IAAI;;QAEb,QAAQ,QAAQ;YACd,KAAK,qBAAqB,CAAC,IAAI;AAC7B,gBAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5D,KAAK,qBAAqB,CAAC,MAAM;AAC/B,gBAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9D,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;;;8GAd/B,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCyEY,sBAAsB,CAAA;IACjC,OAAO,SAAS,CACd,MAAc,EAAA;QAEd,OAAO;AACL,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE;AACxD,gBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE;gBAC3D,6BAA6B;AAC9B,aAAA;SACF;;8GAXQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,OAAA,EAAA;;YA1C/B,6BAA6B;YAC7B,kCAAkC;;YAElC,8BAA8B;YAC9B,gCAAgC;YAChC,yBAAyB;YACzB,6BAA6B;YAC7B,oCAAoC;YACpC,+BAA+B;YAC/B,yBAAyB;YACzB,6BAA6B;YAC7B,oCAAoC;YACpC,+BAA+B;YAC/B,mCAAmC;YACnC,+BAA+B;YAC/B,oCAAoC;YACpC,oCAAoC;YACpC,mCAAmC;YACnC,kCAAkC;YAClC,oCAAoC;YACpC,8BAA8B;YAC9B,gCAAgC;YAChC,0BAA0B;YAC1B,gCAAgC;YAChC,iCAAiC;AACjC,YAAA,iCAAiC,aAGjC,yBAAyB;YACzB,+BAA+B;YAC/B,8BAA8B;YAC9B,yBAAyB;YACzB,mCAAmC,CAAA,EAAA,CAAA,CAAA;AAU1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EARtB,SAAA,EAAA;YACT,6BAA6B;AAC7B,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5B,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAnCC,yBAAyB;YACzB,6BAA6B;YAC7B,oCAAoC;YACpC,+BAA+B;YAE/B,6BAA6B;YAC7B,oCAAoC;YACpC,+BAA+B;YAC/B,mCAAmC;YACnC,+BAA+B;YAC/B,oCAAoC;YACpC,oCAAoC;YAIpC,8BAA8B;YAC9B,gCAAgC,CAAA,EAAA,CAAA,CAAA;;2FAqBvB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA7ClC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;;wBAEP,6BAA6B;wBAC7B,kCAAkC;;wBAElC,8BAA8B;wBAC9B,gCAAgC;wBAChC,yBAAyB;wBACzB,6BAA6B;wBAC7B,oCAAoC;wBACpC,+BAA+B;wBAC/B,yBAAyB;wBACzB,6BAA6B;wBAC7B,oCAAoC;wBACpC,+BAA+B;wBAC/B,mCAAmC;wBACnC,+BAA+B;wBAC/B,oCAAoC;wBACpC,oCAAoC;wBACpC,mCAAmC;wBACnC,kCAAkC;wBAClC,oCAAoC;wBACpC,8BAA8B;wBAC9B,gCAAgC;wBAChC,0BAA0B;wBAC1B,gCAAgC;wBAChC,iCAAiC;wBACjC,iCAAiC;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,+BAA+B;wBAC/B,8BAA8B;wBAC9B,yBAAyB;wBACzB,mCAAmC;AACpC,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,6BAA6B;AAC7B,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5B,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AChFD;;AAEG;;;;"}