{"version":3,"file":"bimeister-pupakit.common.mjs","sources":["../../src/directives/autofocus.directive.ts","../../src/directives/let.directive.ts","../../src/directives/directives.module.ts","../../src/pipes/condition-async.pipe.ts","../../src/pipes/format-count.pipe.ts","../../src/pipes/is-null-or-undefined.pipe.ts","../../src/declarations/functions/get-formatted-time-digit.function.ts","../../src/pipes/time-format.pipe.ts","../../src/pipes/to-string.pipe.ts","../../src/pipes/pipes.module.ts","../../src/common.module.ts","../../src/declarations/classes/color.class.ts","../../src/declarations/classes/color-group.class.ts","../../src/declarations/classes/abstract/bus-event-base.abstract.ts","../../src/declarations/events/queue.events.ts","../../src/declarations/classes/events-queue.class.ts","../../src/declarations/classes/dto/paged-virtual-scroll-arguments.dto.ts","../../src/declarations/classes/list-ranges-intersection-producer.class.ts","../../src/declarations/classes/semantic-color.class.ts","../../src/declarations/classes/abstract/unit-style-changes-processor.abstract.ts","../../src/declarations/classes/unit-height-style-changes-processor.class.ts","../../src/declarations/classes/unit-width-style-changes-processor.class.ts","../../src/declarations/constants/dark-theme-class.const.ts","../../src/declarations/constants/default-locale.const.ts","../../src/declarations/constants/light-theme-class.const.ts","../../src/declarations/constants/overlay-viewport-margin-px.const.ts","../../src/declarations/constants/scrollbar-width-px.const.ts","../../src/declarations/enums/theme.enum.ts","../../src/declarations/functions/create-provider-if-missing.function.ts","../../src/declarations/functions/from-hammer-event.function.ts","../../src/declarations/functions/get-animation-frame-loop.function.ts","../../src/declarations/functions/is-tablet-device.function.ts","../../src/declarations/rxjs-operators/subscribe-inside-angular.operator.ts","../../src/declarations/rxjs-operators/subscribe-outside-angular.operator.ts","../../src/services/client-ui-state-handler.service.ts","../../src/services/colors-alpha-values.service.ts","../../src/services/colors.service.ts","../../src/services/semantic-colors.service.ts","../../src/services/theme.service.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n  selector: '[pupaAutofocus]',\n})\nexport class PupaAutofocusDirective implements AfterViewInit {\n  constructor(private readonly elementRef: ElementRef) {}\n\n  public ngAfterViewInit(): void {\n    this.processFocus();\n  }\n\n  private processFocus(): void {\n    Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n  }\n}\n","import { Directive, Input, OnChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\ntype LetContext<T = unknown> = T & { pupaLet: T };\n\n@Directive({\n  selector: '[pupaLet]',\n})\nexport class LetDirective<T = unknown> implements OnChanges {\n  @Input()\n  public pupaLet: T;\n\n  private context: LetContext<unknown> = { pupaLet: null };\n\n  constructor(\n    private readonly viewContainerRef: ViewContainerRef,\n    private readonly templateRef: TemplateRef<LetContext<T>>\n  ) {\n    this.viewContainerRef.createEmbeddedView<unknown>(this.templateRef, this.context);\n  }\n\n  public ngOnChanges(): void {\n    Object.assign(this.context, this.pupaLet);\n    this.context.pupaLet = this.pupaLet;\n  }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { PupaAutofocusDirective } from './autofocus.directive';\nimport { LetDirective } from './let.directive';\n\nconst SHARED_DIRECTIVES: Type<unknown>[] = [PupaAutofocusDirective, LetDirective];\n\n@NgModule({\n  declarations: [...SHARED_DIRECTIVES],\n  exports: [...SHARED_DIRECTIVES],\n})\nexport class PupaDirectivesModule {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Injector, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { isNil, Nullable } from '@bimeister/utilities';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Pipe({\n  name: 'conditionAsync',\n  pure: false,\n})\nexport class ConditionAsyncPipe<T = unknown> implements PipeTransform, OnDestroy {\n  private readonly asyncPipe: AsyncPipe = new AsyncPipe(this.injector.get(ChangeDetectorRef));\n\n  constructor(private readonly injector: Injector) {\n    this.asyncPipe = new AsyncPipe(injector.get(ChangeDetectorRef));\n  }\n\n  public ngOnDestroy(): void {\n    this.asyncPipe.ngOnDestroy();\n  }\n\n  public transform(booleanValue$: Observable<boolean>, trueArgument: T, falseArgument: T): Nullable<T> {\n    if (isNil(booleanValue$)) {\n      return null;\n    }\n    const result$: Observable<T> = booleanValue$.pipe(\n      map((booleanValue: unknown) => (Boolean(booleanValue) ? trueArgument : falseArgument))\n    );\n    return this.asyncPipe.transform<T>(result$);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getAbbreviatedCount, isNil } from '@bimeister/utilities';\n\n@Pipe({\n  name: 'formatCount',\n  pure: true,\n})\nexport class FormatCountPipe implements PipeTransform {\n  public transform(count: number): string {\n    if (isNil(count)) {\n      return '';\n    }\n    return getAbbreviatedCount(count);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\n\n@Pipe({\n  name: 'isNullOrUndefined',\n})\nexport class IsNullOrUndefinedPipe implements PipeTransform {\n  public transform(entity: unknown): boolean {\n    return isNil(entity);\n  }\n}\n","import { isNil } from '@bimeister/utilities';\n\nexport function getFormattedTimeDigit(entity: unknown): string {\n  if (isNil(entity)) {\n    return '00';\n  }\n\n  const incomingNumber: number = parseInt(entity?.toString(), 10);\n\n  if (isNaN(incomingNumber)) {\n    return incomingNumber.toString();\n  }\n\n  return incomingNumber.toString().padStart(2, '0');\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getFormattedTimeDigit } from '../declarations/functions/get-formatted-time-digit.function';\n\n@Pipe({\n  name: 'timeDigitFormat',\n})\nexport class TimeDigitFormatPipe implements PipeTransform {\n  public transform(entity: unknown): string {\n    return getFormattedTimeDigit(entity);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'ToString',\n})\nexport class ToString implements PipeTransform {\n  public transform(entity: unknown): string {\n    return String(entity);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ConditionAsyncPipe } from './condition-async.pipe';\nimport { FormatCountPipe } from './format-count.pipe';\n\nimport { IsNullOrUndefinedPipe } from './is-null-or-undefined.pipe';\nimport { TimeDigitFormatPipe } from './time-format.pipe';\nimport { ToString } from './to-string.pipe';\n\nconst SHARED_PIPES: any[] = [IsNullOrUndefinedPipe, ToString, TimeDigitFormatPipe, FormatCountPipe, ConditionAsyncPipe];\n\n@NgModule({\n  declarations: [...SHARED_PIPES],\n  exports: [...SHARED_PIPES],\n})\nexport class PupaPipesModule {}\n","import { NgModule } from '@angular/core';\nimport { PupaDirectivesModule } from './directives/directives.module';\nimport { PupaPipesModule } from './pipes/pipes.module';\n\n@NgModule({\n  declarations: [],\n  imports: [PupaPipesModule, PupaDirectivesModule],\n  exports: [PupaPipesModule, PupaDirectivesModule],\n})\nexport class PupaCommonModule {}\n","import { ColorsConfig } from '../interfaces/colors-config.interface';\n\nconst LIGHT_OFFSET: number = 1.61;\n\nexport class Color {\n  public readonly name: string = this.colorData.name;\n  public readonly hex: string = this.colorData.hex.toLowerCase();\n  public readonly rgb: [number, number, number] = this.getRgb();\n  public readonly formattedRgb: string = this.getFormattedRgb();\n  public readonly key: string = this.getFormattedKey();\n  public readonly isLight: boolean = this.getIsLight();\n\n  constructor(private readonly colorData: ColorsConfig.Color) {}\n\n  public getAsCssValue(alpha: number = 1): string {\n    return `rgba(var(--color_${this.key}), ${alpha})`;\n  }\n\n  private getRgb(): [number, number, number] {\n    return [\n      parseInt(this.hex.substring(0, 2), 16),\n      parseInt(this.hex.substring(2, 2), 16),\n      parseInt(this.hex.substring(4, 2), 16),\n    ];\n  }\n\n  private getFormattedRgb(): string {\n    return `${this.rgb[0]}, ${this.rgb[1]}, ${this.rgb[2]}`;\n  }\n\n  private getFormattedKey(): string {\n    return this.name.replaceAll('/', '-').toLowerCase();\n  }\n\n  private getIsLight(): boolean {\n    return this.rgb[0] + this.rgb[1] + this.rgb[2] > 255 * LIGHT_OFFSET;\n  }\n}\n","import { ColorsConfig } from '../interfaces/colors-config.interface';\nimport { Color } from './color.class';\n\nexport class ColorGroup {\n  public readonly name: string = this.groupData.name;\n  public readonly colors: Color[] = this.groupData.colors.map((colorData: ColorsConfig.Color) => new Color(colorData));\n\n  constructor(private readonly groupData: ColorsConfig.Group) {}\n}\n","export abstract class BusEventBase<T = any> {\n  public abstract readonly type: string;\n  public abstract readonly scope: string;\n  public abstract readonly id: string;\n  public abstract readonly fromId: string;\n\n  public readonly payload?: T;\n}\n","import { getUuid, Nullable } from '@bimeister/utilities';\nimport { BusEventBase } from '../classes/abstract/bus-event-base.abstract';\n\nclass QueueEventBase<T> extends BusEventBase<T> {\n  public readonly scope: Nullable<string> = null;\n  public readonly id: string = getUuid();\n  public readonly type: Nullable<string> = null;\n  public readonly fromId: Nullable<string> = null;\n\n  constructor(public readonly payload: T) {\n    super();\n  }\n}\n\nexport namespace QueueEvents {\n  export class AddToQueue extends QueueEventBase<BusEventBase> {}\n  export class RemoveFromQueue extends QueueEventBase<string> {}\n  export class StartQueue extends QueueEventBase<void> {}\n}\n","import { Type } from '@angular/core';\nimport { EventBus } from '@bimeister/event-bus/rxjs';\nimport { isEmpty } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, withLatestFrom } from 'rxjs/operators';\nimport { QueueEvents } from '../events/queue.events';\nimport { BusEventBase } from './abstract/bus-event-base.abstract';\n\nexport class EventsQueue {\n  private readonly queue: BusEventBase[] = [];\n  private readonly started$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(private readonly eventBus: EventBus) {\n    this.subscription.add(this.getSubscriptionForStartEvents());\n    this.subscription.add(this.getSubscriptionForAddEvents());\n    this.subscription.add(this.getSubscriptionForRemoveEvents());\n  }\n\n  public removeEventFromQueue(eventId: string): void {\n    const eventIndex: number = this.queue.findIndex((event: BusEventBase) => event.id === eventId);\n    if (eventIndex === -1) {\n      return;\n    }\n    this.queue.splice(eventIndex, 1);\n  }\n\n  public clearQueue(): void {\n    this.queue.splice(0, this.queue.length);\n  }\n\n  public getEvents<T extends BusEventBase>(eventType: Type<T>): Observable<T> {\n    return this.eventBus.listen().pipe(filter((event: BusEventBase): event is T => event instanceof eventType));\n  }\n\n  private getSubscriptionForStartEvents(): Subscription {\n    return this.getEvents(QueueEvents.StartQueue).subscribe(() => {\n      this.started$.next(true);\n      this.dispatchFromQueue();\n    });\n  }\n\n  private getSubscriptionForAddEvents(): Subscription {\n    return this.getEvents(QueueEvents.AddToQueue)\n      .pipe(withLatestFrom(this.started$))\n      .subscribe(([addEvent, started]: [QueueEvents.AddToQueue, boolean]) => {\n        const isEmptyQueue: boolean = isEmpty(this.queue);\n        this.queue.push(addEvent.payload);\n        if (isEmptyQueue && started) {\n          this.eventBus.dispatch(addEvent.payload);\n        }\n      });\n  }\n\n  private getSubscriptionForRemoveEvents(): Subscription {\n    return this.getEvents(QueueEvents.RemoveFromQueue)\n      .pipe(filter((removeEvent: QueueEvents.RemoveFromQueue) => this.isFirstEventInQueue(removeEvent.payload)))\n      .subscribe(() => {\n        this.queue.shift();\n        this.dispatchFromQueue();\n      });\n  }\n\n  private isFirstEventInQueue(eventId: string): boolean {\n    if (isEmpty(this.queue)) {\n      return false;\n    }\n    return this.queue[0].id === eventId;\n  }\n\n  private dispatchFromQueue(): void {\n    if (isEmpty(this.queue)) {\n      return;\n    }\n    this.eventBus.dispatch(this.queue[0]);\n  }\n}\n","import { isNil } from '@bimeister/utilities';\nimport { PagedVirtualScrollArguments } from '../../interfaces/paged-virtual-scroll-arguments.interface';\n\nexport class PagedVirtualScrollArgumentsDto implements PagedVirtualScrollArguments {\n  public getFrom: number = null;\n  public getTo: number = null;\n\n  public removeFrom: number = null;\n  public removeTo: number = null;\n\n  public currentFrom: number = null;\n  public currentTo: number = null;\n\n  public previousFrom: number = null;\n  public previousTo: number = null;\n\n  constructor(config: Partial<PagedVirtualScrollArguments>) {\n    if (isNil(config)) {\n      return;\n    }\n    Object.assign(this, config);\n  }\n}\n","import { ListRange } from '@angular/cdk/collections';\nimport { Nullable } from '@bimeister/utilities';\nimport { isNil } from '@bimeister/utilities/common';\nimport { PagedVirtualScrollArguments } from '../interfaces/paged-virtual-scroll-arguments.interface';\nimport { PagedVirtualScrollArgumentsDto } from './dto/paged-virtual-scroll-arguments.dto';\n\nexport class ListRangesIntersectionProducer {\n  public static roundToBoundingDozensByCount(\n    range: Nullable<ListRange>,\n    countItemsInViewport: number,\n    totalCount: number\n  ): ListRange | undefined {\n    const countItemsInViewportIsIncorrect: boolean = isNil(countItemsInViewport) || Number.isNaN(countItemsInViewport);\n    if (isNil(range) || countItemsInViewportIsIncorrect) {\n      return undefined;\n    }\n\n    const { start, end }: ListRange = range;\n\n    if (Number.isNaN(start) || isNil(start) || Number.isNaN(end) || isNil(end)) {\n      return undefined;\n    }\n\n    const numberRankIndex: number = String(countItemsInViewport).length - 1;\n    const roundValue: number = Math.max(numberRankIndex * 10, 10);\n\n    const possibleStart: number = start - countItemsInViewport;\n    const roundedStart: number = Math.max(Math.round(possibleStart / roundValue) * roundValue, 0);\n\n    const possibleEnd: number = end + countItemsInViewport;\n    const serializedTotalCount: number = totalCount ?? start + countItemsInViewport;\n\n    const roundedEnd: number = Math.min(Math.round(possibleEnd / roundValue) * roundValue, serializedTotalCount);\n    const convertedEnd: number = roundedEnd === 0 ? roundValue : roundedEnd;\n\n    return { start: roundedStart, end: convertedEnd };\n  }\n\n  public static getPagedVirtualScrollArguments(\n    previousRange: ListRange,\n    currentRange: ListRange\n  ): PagedVirtualScrollArguments {\n    const possiblePagedVirtualScrollArguments: PagedVirtualScrollArguments =\n      ListRangesIntersectionProducer.calculateIntersection(previousRange, currentRange);\n\n    const { getFrom, getTo, removeFrom, removeTo }: PagedVirtualScrollArguments = possiblePagedVirtualScrollArguments;\n\n    const isGettingArgumentsEqual: boolean = !isNil(getFrom) && !isNil(getTo) && getFrom === getTo;\n    const isRemovingArgumentsEqual: boolean = !isNil(removeFrom) && !isNil(removeTo) && removeFrom === removeTo;\n\n    const serializedGetFrom: Nullable<number> = isNil(getTo) || isGettingArgumentsEqual ? null : getFrom;\n    const serializedGetTo: Nullable<number> = isNil(getFrom) || isGettingArgumentsEqual ? null : getTo;\n\n    const serializedRemoveFrom: Nullable<number> = isNil(removeTo) || isRemovingArgumentsEqual ? null : removeFrom;\n    const serializedRemoveTo: Nullable<number> = isNil(removeFrom) || isRemovingArgumentsEqual ? null : removeTo;\n\n    return new PagedVirtualScrollArgumentsDto({\n      ...possiblePagedVirtualScrollArguments,\n      getFrom: serializedGetFrom,\n      getTo: serializedGetTo,\n      removeFrom: serializedRemoveFrom,\n      removeTo: serializedRemoveTo,\n    });\n  }\n\n  private static calculateIntersection(previousRange: ListRange, currentRange: ListRange): PagedVirtualScrollArguments {\n    const serializedCurrentRangeStart: Nullable<number> = currentRange?.start ?? null;\n    const serializedCurrentRangeEnd: Nullable<number> = currentRange?.end ?? null;\n\n    const serializedPreviousRangeStart: Nullable<number> = previousRange?.start ?? null;\n    const serializedPreviousRangeEnd: Nullable<number> = previousRange?.end ?? null;\n\n    const hasIntersectionOfRanges: boolean = ListRangesIntersectionProducer.hasIntersectionOfRanges(\n      previousRange,\n      currentRange\n    );\n\n    if (isNil(hasIntersectionOfRanges)) {\n      return new PagedVirtualScrollArgumentsDto({\n        currentFrom: serializedCurrentRangeStart,\n        currentTo: serializedCurrentRangeEnd,\n\n        getFrom: serializedCurrentRangeStart,\n        getTo: serializedCurrentRangeEnd,\n      });\n    }\n\n    if (!hasIntersectionOfRanges) {\n      /** if has no intersection need to remove previous range and get current range */\n      return new PagedVirtualScrollArgumentsDto({\n        currentFrom: serializedCurrentRangeStart,\n        currentTo: serializedCurrentRangeEnd,\n\n        previousFrom: serializedPreviousRangeStart,\n        previousTo: serializedPreviousRangeEnd,\n\n        getFrom: serializedCurrentRangeStart,\n        getTo: serializedCurrentRangeEnd,\n\n        removeFrom: serializedPreviousRangeStart,\n        removeTo: serializedPreviousRangeEnd,\n      });\n    }\n\n    const isNotNilValues: boolean =\n      !isNil(serializedCurrentRangeStart) &&\n      !isNil(serializedCurrentRangeEnd) &&\n      !isNil(serializedPreviousRangeStart) &&\n      !isNil(serializedPreviousRangeEnd);\n    const isPreviousRangeIncludeCurrent: boolean =\n      isNotNilValues &&\n      serializedCurrentRangeStart > serializedPreviousRangeStart &&\n      serializedCurrentRangeStart < serializedPreviousRangeEnd &&\n      serializedCurrentRangeEnd > serializedPreviousRangeStart &&\n      serializedCurrentRangeEnd < serializedPreviousRangeEnd;\n\n    if (isPreviousRangeIncludeCurrent) {\n      return new PagedVirtualScrollArgumentsDto({\n        currentFrom: serializedPreviousRangeStart,\n        currentTo: serializedPreviousRangeEnd,\n\n        previousFrom: serializedPreviousRangeStart,\n        previousTo: serializedPreviousRangeEnd,\n      });\n    }\n\n    const isCurrentRangeIncludePrevious: boolean =\n      isNotNilValues &&\n      serializedPreviousRangeStart > serializedCurrentRangeStart &&\n      serializedPreviousRangeStart < serializedCurrentRangeEnd &&\n      serializedPreviousRangeEnd > serializedCurrentRangeStart &&\n      serializedPreviousRangeEnd < serializedCurrentRangeEnd;\n\n    if (isCurrentRangeIncludePrevious) {\n      return new PagedVirtualScrollArgumentsDto({\n        currentFrom: serializedCurrentRangeStart,\n        currentTo: serializedCurrentRangeEnd,\n\n        previousFrom: serializedPreviousRangeStart,\n        previousTo: serializedPreviousRangeEnd,\n\n        getFrom: serializedCurrentRangeStart,\n        getTo: serializedCurrentRangeEnd,\n      });\n    }\n\n    const intersectionStart: number = Math.max(serializedCurrentRangeStart, serializedPreviousRangeStart);\n    const intersectionEnd: number = Math.min(serializedCurrentRangeEnd, serializedPreviousRangeEnd);\n\n    const isIntersectionOnStartOfCurrentRange: boolean =\n      intersectionStart === serializedCurrentRangeStart && intersectionEnd <= serializedCurrentRangeEnd;\n\n    if (isIntersectionOnStartOfCurrentRange) {\n      /** if has intersection on start of current interval */\n      return new PagedVirtualScrollArgumentsDto({\n        currentFrom: serializedCurrentRangeStart,\n        currentTo: serializedCurrentRangeEnd,\n\n        previousFrom: serializedPreviousRangeStart,\n        previousTo: serializedPreviousRangeEnd,\n\n        getFrom: intersectionEnd,\n        getTo: serializedCurrentRangeEnd,\n\n        removeFrom: serializedPreviousRangeStart,\n        removeTo: intersectionStart,\n      });\n    }\n\n    /** if has intersection on end of current interval */\n    return new PagedVirtualScrollArgumentsDto({\n      currentFrom: serializedCurrentRangeStart,\n      currentTo: serializedCurrentRangeEnd,\n\n      previousFrom: serializedPreviousRangeStart,\n      previousTo: serializedPreviousRangeEnd,\n\n      getFrom: serializedCurrentRangeStart,\n      getTo: intersectionStart,\n\n      removeFrom: intersectionEnd,\n      removeTo: serializedPreviousRangeEnd,\n    });\n  }\n\n  private static hasIntersectionOfRanges(firstInterval: ListRange, secondInterval: ListRange): boolean | undefined {\n    if (isNil(firstInterval) || isNil(secondInterval)) {\n      return undefined;\n    }\n\n    const { start: firstIntervalStart, end: firstIntervalEnd }: ListRange = firstInterval;\n    const { start: secondIntervalStart, end: secondIntervalEnd }: ListRange = secondInterval;\n\n    const isNilValuesEntering: boolean =\n      isNil(firstIntervalStart) || isNil(firstIntervalEnd) || isNil(secondIntervalStart) || isNil(secondIntervalEnd);\n    if (isNilValuesEntering) {\n      return undefined;\n    }\n\n    const hasIntersection: boolean = firstIntervalStart <= secondIntervalEnd && secondIntervalStart <= firstIntervalEnd;\n    return hasIntersection;\n  }\n}\n","import { SemanticColorsConfig } from '../interfaces/semantic-colors-config.interface';\n\nexport class SemanticColor {\n  public readonly name: string = `${this.groupName}-${this.configuration.name}`.toLowerCase();\n  public readonly lightColorName: string = this.configuration.lightColor.color.toLowerCase();\n  public readonly darkColorName: string = this.configuration.darkColor.color.toLowerCase();\n  public readonly lightAlphaValueName: string = this.configuration.lightColor.alpha.toLowerCase();\n  public readonly darkAlphaValueName: string = this.configuration.darkColor.alpha.toLowerCase();\n\n  public readonly lightColor: SemanticColorsConfig.ParsedConfigurationValue = {\n    name: this.name,\n    value: this.lightColorName,\n  };\n  public readonly darkColor: SemanticColorsConfig.ParsedConfigurationValue = {\n    name: this.name,\n    value: this.darkColorName,\n  };\n\n  public readonly lightAlphaColor: SemanticColorsConfig.ParsedConfigurationValue = {\n    name: this.name,\n    value: this.lightAlphaValueName,\n  };\n  public readonly darkAlphaColor: SemanticColorsConfig.ParsedConfigurationValue = {\n    name: this.name,\n    value: this.darkAlphaValueName,\n  };\n\n  constructor(private readonly configuration: SemanticColorsConfig.Configuration, private readonly groupName: string) {}\n\n  public getSemanticColorAsCssValue(): string {\n    return `rgba(var(--semantic-color_${this.name}), var(--semantic-color-alpha_${this.name}))`;\n  }\n}\n","import { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { isNil } from '@bimeister/utilities';\nimport { ReplaySubject } from 'rxjs';\nimport { ComponentChange } from '../../interfaces/component-change.interface';\nimport { ComponentChanges } from '../../interfaces/component-changes.interface';\n\nexport abstract class UnitStyleChangesProcessor<C> {\n  public readonly safeStyle$: ReplaySubject<SafeStyle> = new ReplaySubject<SafeStyle>(1);\n\n  constructor(protected readonly domSanitizer: DomSanitizer) {}\n\n  protected processStyleChanges(change: ComponentChange<C>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.updateSafeStyle(`${change?.currentValue}`);\n  }\n\n  protected processPercentChanges(change: ComponentChange<C>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.updateSafeStyle(`${change?.currentValue}%`);\n  }\n\n  protected processPxChanges(change: ComponentChange<C>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.updateSafeStyle(`${change?.currentValue}px`);\n  }\n\n  protected processVwChanges(change: ComponentChange<C>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.updateSafeStyle(`${change?.currentValue}vw`);\n  }\n\n  protected processVhChanges(change: ComponentChange<C>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.updateSafeStyle(`${change?.currentValue}vh`);\n  }\n\n  protected processRemChanges(change: ComponentChange<C>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.updateSafeStyle(`${change?.currentValue}rem`);\n  }\n\n  public abstract process(changes: ComponentChanges<C>): void;\n\n  private updateSafeStyle(unsafeStyle: string): void {\n    const safeStyle: SafeStyle = this.domSanitizer.bypassSecurityTrustStyle(unsafeStyle);\n    if (isNil(safeStyle)) {\n      return;\n    }\n    this.safeStyle$.next(safeStyle);\n  }\n}\n","import { DomSanitizer } from '@angular/platform-browser';\n\nimport { HeightUnitChanges } from '../interfaces/height-unit-changes.interface';\nimport { UnitStyleChangesProcessor } from './abstract/unit-style-changes-processor.abstract';\n\nexport class UnitHeightStyleChangesProcessor<C> extends UnitStyleChangesProcessor<C> {\n  constructor(protected readonly domSanitizer: DomSanitizer) {\n    super(domSanitizer);\n  }\n\n  public process(changes: HeightUnitChanges<C>): void {\n    this.processStyleChanges(changes?.height);\n    this.processPercentChanges(changes.heightPercents);\n    this.processPxChanges(changes.heightPx);\n    this.processVwChanges(changes.heightVw);\n    this.processVhChanges(changes.heightVh);\n    this.processRemChanges(changes.heightRem);\n  }\n}\n","import { DomSanitizer } from '@angular/platform-browser';\n\nimport { WidthUnitChanges } from '../interfaces/width-unit-changes.interface';\nimport { UnitStyleChangesProcessor } from './abstract/unit-style-changes-processor.abstract';\n\nexport class UnitWidthStyleChangesProcessor<C> extends UnitStyleChangesProcessor<C> {\n  constructor(protected readonly domSanitizer: DomSanitizer) {\n    super(domSanitizer);\n  }\n\n  public process(changes: WidthUnitChanges<C>): void {\n    this.processStyleChanges(changes?.width);\n    this.processPercentChanges(changes.widthPercents);\n    this.processPxChanges(changes.widthPx);\n    this.processVwChanges(changes.widthVw);\n    this.processVhChanges(changes.widthVh);\n    this.processRemChanges(changes.widthRem);\n  }\n}\n","export const DARK_THEME_CLASS: string = 'dark-theme';\n","export const DEFAULT_LOCALE: string = 'en';\n","export const LIGHT_THEME_CLASS: string = 'light-theme';\n","export const OVERLAY_VIEWPORT_MARGIN_PX: number = 4;\n","export const SCROLLBAR_WIDTH_PX: number = 12;\n","export enum Theme {\n  Light = 'Light',\n  Dark = 'Dark',\n}\n","import { FactoryProvider, Optional, SkipSelf } from '@angular/core';\nimport { Repeated } from '@bimeister/utilities';\n\n/**\n * @description Creates provider if it doesn't exist in parent injectors.\n *\n * @param target\n * is target searchable in injectors trees dependency\n *\n * @param dependencies\n * is dependencies of target.\n * Type automatically calculates count of array elements by count of target constructor arguments.\n * [unknown, unknown, ..., unknown]\n *\n * @example // Takes existing dependency:\n *\n * /@Component({\n *  template: `<app-target></app-target>`\n *  providers: [Dependency1],\n * })\n * class WithProviderComponent {}\n *\n * /@Component({\n *  providers: [createProviderIfMissing(Dependency1)]\n * })\n * class TargetComponent {\n *  constructor(private readonly dependency1: Dependency1) {} // takes dependency instance from WithProviderComponent\n * }\n *\n * @example // Creates new dependency:\n *\n * /@Component({\n *  template: `<app-target></app-target>`\n * })\n * class withoutProviderComponent {}\n *\n * /@Component({\n *  providers: [createProviderIfMissing(Dependency1)]\n * })\n * class TargetComponent {\n * constructor(private readonly dependency1: Dependency1) {} // creates new dependency instance\n */\nexport function createProviderIfMissing<T extends new (...args: unknown[]) => unknown>(\n  target: T,\n  dependencies: Repeated<unknown, ConstructorParameters<T>['length']>\n): FactoryProvider {\n  return {\n    provide: target,\n    useFactory: (existingDependency?: T, ...dependencyInstancies: unknown[]) =>\n      existingDependency ?? new target(...dependencyInstancies),\n    deps: [[target, new Optional(), new SkipSelf()], ...dependencies],\n  };\n}\n","import { Observable, Subscriber } from 'rxjs';\n\nexport function fromHammerEvent(hammerManager: HammerManager, events: string[]): Observable<HammerInput> {\n  return new Observable<HammerInput>((subscriber: Subscriber<HammerInput>) => {\n    hammerManager.on(events.join(' '), (event: HammerInput) => {\n      subscriber.next(event);\n    });\n\n    return { unsubscribe: () => hammerManager.destroy() };\n  });\n}\n","import { Observable, Subscriber } from 'rxjs';\n\nexport function getAnimationFrameLoop(): Observable<void> {\n  return new Observable<void>((subscriber: Subscriber<void>) => {\n    let breakLoop: boolean = false;\n\n    const loop: Function = () => {\n      if (breakLoop) {\n        return;\n      }\n      requestAnimationFrame(() => {\n        subscriber.next();\n        loop();\n      });\n    };\n\n    loop();\n    return { unsubscribe: () => (breakLoop = true) };\n  });\n}\n","export function isTabletDevice(): boolean {\n  return 'ontouchstart' in window;\n}\n","import { NgZone } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, Subscriber } from 'rxjs';\n\nexport function subscribeInsideAngular<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n  return (source$: Observable<T>) =>\n    new Observable<T>((subscriber: Subscriber<T>) =>\n      source$.subscribe({\n        next: (value: T) => ngZone.run(() => subscriber.next(value)),\n        error: (error: unknown) => ngZone.run(() => subscriber.error(error)),\n        complete: () => ngZone.run(() => subscriber.complete()),\n      })\n    );\n}\n","import { NgZone } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, Subscriber, Subscription } from 'rxjs';\nimport { Nullable } from '@bimeister/utilities';\n\nexport function subscribeOutsideAngular<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n  return (source$: Observable<T>) =>\n    new Observable<T>((subscriber: Subscriber<T>) => {\n      let subscription: Nullable<Subscription> = null;\n\n      ngZone.runOutsideAngular(() => {\n        subscription = source$.subscribe(subscriber);\n      });\n\n      return { unsubscribe: () => subscription?.unsubscribe() };\n    });\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { filterNotNil, isNil, Nullable, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, fromEvent, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, mapTo, startWith, switchMap, withLatestFrom } from 'rxjs/operators';\nimport config from '../assets/configs/adaptive-config.json';\nimport { UiState } from '../declarations/interfaces/ui-state.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ClientUiStateHandlerService implements OnDestroy {\n  private readonly iframeElement$: BehaviorSubject<Nullable<HTMLIFrameElement>> = new BehaviorSubject<\n    Nullable<HTMLIFrameElement>\n  >(null);\n\n  public readonly uiState$: BehaviorSubject<Nullable<UiState>> = new BehaviorSubject<Nullable<UiState>>(null);\n\n  public readonly windowSquare$: Observable<number> = this.uiState$.pipe(\n    filterNotNil(),\n    map(({ windowWidth, windowHeight }: UiState) => windowWidth * windowHeight),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpoint$: Observable<string> = this.uiState$.pipe(\n    filterNotNil(),\n    map((uiState: UiState) => uiState.breakpoint),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsXs$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => breakpoint === 'xs'),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsSm$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => breakpoint === 'sm'),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsMd$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => breakpoint === 'md'),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsLg$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => breakpoint === 'lg'),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsXl$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => breakpoint === 'xl'),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsXxl$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => breakpoint === 'xxl'),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsLessThanMd$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => ['xs', 'sm'].includes(breakpoint)),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsLessThanLg$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => ['xs', 'sm', 'md'].includes(breakpoint)),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsLessThanXl$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => ['xs', 'sm', 'md', 'lg'].includes(breakpoint)),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly breakpointIsLessThanXxl$: Observable<boolean> = this.breakpoint$.pipe(\n    map((breakpoint: string) => ['xs', 'sm', 'md', 'lg', 'xl'].includes(breakpoint)),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  private readonly subscription: Subscription = new Subscription();\n  constructor(@Inject(DOCUMENT) private readonly document: Document) {\n    this.subscription.add(this.handleIframeResizeEvents());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public setIframeElement(iframe: Nullable<HTMLIFrameElement>): void {\n    this.iframeElement$.next(iframe);\n  }\n\n  private handleIframeResizeEvents(): Subscription {\n    return this.iframeElement$\n      .pipe(\n        filterNotNil(),\n        switchMap((iframe: HTMLIFrameElement) =>\n          fromEvent(iframe.contentWindow, 'resize').pipe(startWith(new Event('resize')), mapTo(iframe))\n        ),\n        withLatestFrom(this.uiState$)\n      )\n      .subscribe(([iframe, uiState]: [HTMLIFrameElement, UiState]) => {\n        const { width: windowWidth, height: windowHeight }: ClientRect = iframe.getBoundingClientRect();\n\n        const breakpoint: string = this.calculateBreakpoint();\n        const countOfColumns: number = config.columns[breakpoint];\n\n        this.setHtmlClassesByBreakpoint(uiState?.breakpoint ?? null, breakpoint);\n\n        this.uiState$.next({ windowHeight, windowWidth, breakpoint, countOfColumns });\n\n        this.setCalculatedVhSize(windowHeight);\n      });\n  }\n\n  private calculateBreakpoint(): string {\n    const queriesAll: [string, string][] = Object.entries(config.queries);\n\n    const queriesCurrent: string[] = queriesAll\n      .filter((query: [string, string]) => window.matchMedia(query[1]).matches)\n      .flat(1);\n\n    const breakpoint: string = queriesCurrent[0];\n\n    return breakpoint;\n  }\n\n  private setHtmlClassesByBreakpoint(prevBreakpoint: string, breakpoint: string): void {\n    const html: HTMLElement = this.document.body.parentElement;\n\n    html.classList.add(breakpoint);\n    if (isNil(prevBreakpoint) || isNil(breakpoint) || prevBreakpoint === breakpoint) {\n      return;\n    }\n    html.classList.remove(prevBreakpoint);\n  }\n\n  private setCalculatedVhSize(windowHeight: number): void {\n    if (isNil(windowHeight)) {\n      return;\n    }\n\n    const vh: number = windowHeight * 0.01;\n    this.document.documentElement.style.setProperty('--vh', `${vh}px`);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport config from '../assets/configs/alpha-colors-config.json';\nimport { ColorsAlphaValuesConfig } from '../declarations/interfaces/colors-alpha-values-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ColorsAlphaValuesService {\n  public readonly config: ColorsAlphaValuesConfig.AlphaValue[] = config;\n}\n","import { Injectable } from '@angular/core';\nimport config from '../assets/configs/colors-config.json';\nimport { Color } from '../declarations/classes/color.class';\nimport { ColorsConfig } from '../declarations/interfaces/colors-config.interface';\nimport { ColorGroup } from '../declarations/classes/color-group.class';\nimport { isNil, Nullable } from '@bimeister/utilities';\n\n@Injectable({ providedIn: 'root' })\nexport class ColorsService {\n  private readonly config: ColorsConfig.Group[] = config;\n\n  public readonly colorGroups: ColorGroup[] = this.config.map(\n    (groupData: ColorsConfig.Group) => new ColorGroup(groupData)\n  );\n  public readonly colors: Color[] = this.colorGroups.map((colorGroup: ColorGroup) => colorGroup.colors).flat(1);\n\n  private readonly colorsMap: Map<string, Color> = new Map<string, Color>(\n    this.colors.map((color: Color) => [color.key, color])\n  );\n\n  public getColorByKey(key: string): Color {\n    const color: Nullable<Color> = this.colorsMap.get(key);\n\n    if (isNil(color)) {\n      throw new Error(`[PupaKit.ColorsService] Color with key '${key}' does not exist.`);\n    }\n\n    return color;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport config from '../assets/configs/semantic-colors-config.json';\nimport { SemanticColor } from '../declarations/classes/semantic-color.class';\nimport { SemanticColorsConfig } from '../declarations/interfaces/semantic-colors-config.interface';\nimport { SemanticConfigurationGroup } from '../declarations/interfaces/semantic-configuration-group.interface';\nimport { SemanticConfiguration } from '../declarations/interfaces/semantic-configuration.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class SemanticColorsService {\n  public readonly config: SemanticColorsConfig.Group[] = config;\n\n  public readonly groups: SemanticConfigurationGroup[] = this.config.map((group: SemanticColorsConfig.Group) => {\n    const groupName: string = group.name;\n\n    const configurationSemanticColors: SemanticConfiguration[] = group.configurations.map(\n      (configuration: SemanticColorsConfig.Configuration) => ({\n        name: configuration.name,\n        color: new SemanticColor(configuration, groupName),\n      })\n    );\n\n    return {\n      name: group.name,\n      configurations: configurationSemanticColors,\n    };\n  });\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { map, pairwise, startWith, take } from 'rxjs/operators';\nimport { DARK_THEME_CLASS } from '../declarations/constants/dark-theme-class.const';\nimport { LIGHT_THEME_CLASS } from '../declarations/constants/light-theme-class.const';\nimport { Theme } from '../declarations/enums/theme.enum';\n\nconst THEME_CLASSES_MAP: Map<Theme, string> = new Map([\n  [Theme.Light, LIGHT_THEME_CLASS],\n  [Theme.Dark, DARK_THEME_CLASS],\n]);\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n  private readonly themeState$: BehaviorSubject<Theme> = new BehaviorSubject<Theme>(Theme.Light);\n\n  public readonly theme$: Observable<Theme> = this.themeState$.asObservable();\n  public readonly reversedTheme$: Observable<Theme> = this.theme$.pipe(\n    map((theme: Theme) => (theme === Theme.Light ? Theme.Dark : Theme.Light))\n  );\n\n  public readonly themeClass$: Observable<string> = this.theme$.pipe(\n    map((theme: Theme) => THEME_CLASSES_MAP.get(theme))\n  );\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(@Inject(DOCUMENT) private readonly document: Document) {\n    this.subscription.add(this.produceThemeChanges());\n  }\n\n  public setTheme(theme: Theme): void {\n    this.themeState$.next(theme);\n  }\n\n  public toggleTheme(): void {\n    this.reversedTheme$.pipe(take(1)).subscribe((updatedTheme: Theme) => this.setTheme(updatedTheme));\n  }\n\n  private produceThemeChanges(): Subscription {\n    return this.theme$\n      .pipe(\n        startWith(Theme.Light),\n        pairwise(),\n        map(([prevTheme, currentTheme]: [Theme, Theme]) => [\n          THEME_CLASSES_MAP.get(prevTheme),\n          THEME_CLASSES_MAP.get(currentTheme),\n        ])\n      )\n      .subscribe(([prevTheme, theme]: [string | undefined, string | undefined]) =>\n        this.setHtmlClassesByTheme([prevTheme, theme])\n      );\n  }\n\n  private setHtmlClassesByTheme([prevTheme, theme]: [string | undefined, string | undefined]): void {\n    if (isNil(this.document)) {\n      return;\n    }\n\n    const html: HTMLElement = this.document.body.parentElement;\n\n    html.classList.add(theme);\n    if (isNil(prevTheme) || isNil(theme) || prevTheme === theme) {\n      return;\n    }\n    html.classList.remove(prevTheme);\n  }\n}\n"],"names":["isNil","config"],"mappings":";;;;;;;;;;;MAKa,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAA6B,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;IAEhD,eAAe,GAAA;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,YAAY,GAAA;AAClB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;KACrE;;oHATU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;iBAC5B,CAAA;;;MCGY,YAAY,CAAA;IAMvB,WACmB,CAAA,gBAAkC,EAClC,WAAuC,EAAA;AADvC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAA4B;QAJlD,IAAA,CAAA,OAAO,GAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAMvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAU,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACnF;IAEM,WAAW,GAAA;QAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;KACrC;;0GAhBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAZ,YAAY,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;iBACtB,CAAA;iIAGQ,OAAO,EAAA,CAAA;sBADb,KAAK;;;ACJR,MAAM,iBAAiB,GAAoB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;MAMrE,oBAAoB,CAAA;;kHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBANW,sBAAsB,EAAE,YAAY,CAApC,EAAA,OAAA,EAAA,CAAA,sBAAsB,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;mHAMnE,oBAAoB,EAAA,CAAA,CAAA;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,iBAAiB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,GAAG,iBAAiB,CAAC;iBAChC,CAAA;;;MCCY,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAA6B,QAAkB,EAAA;AAAlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAF9B,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAG1F,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACjE;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;KAC9B;AAEM,IAAA,SAAS,CAAC,aAAkC,EAAE,YAAe,EAAE,aAAgB,EAAA;AACpF,QAAA,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,MAAM,OAAO,GAAkB,aAAa,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,YAAqB,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC,CACvF,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAI,OAAO,CAAC,CAAC;KAC7C;;gHAnBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,IAAI,EAAE,KAAK;iBACZ,CAAA;;;MCFY,eAAe,CAAA;AACnB,IAAA,SAAS,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACnC;;6GANU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2GAAf,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,IAAI,EAAE,IAAI;iBACX,CAAA;;;MCAY,qBAAqB,CAAA;AACzB,IAAA,SAAS,CAAC,MAAe,EAAA;AAC9B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB;;mHAHU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;iHAArB,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,mBAAmB;iBAC1B,CAAA;;;ACHK,SAAU,qBAAqB,CAAC,MAAe,EAAA;AACnD,IAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACjB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,MAAM,cAAc,GAAW,QAAQ,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhE,IAAA,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;AACzB,QAAA,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;AAClC,KAAA;IAED,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD;;MCRa,mBAAmB,CAAA;AACvB,IAAA,SAAS,CAAC,MAAe,EAAA;AAC9B,QAAA,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;KACtC;;iHAHU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iBAAiB;iBACxB,CAAA;;;MCAY,QAAQ,CAAA;AACZ,IAAA,SAAS,CAAC,MAAe,EAAA;AAC9B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;KACvB;;sGAHU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;oGAAR,QAAQ,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;iBACjB,CAAA;;;ACID,MAAM,YAAY,GAAU,CAAC,qBAAqB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC;MAM3G,eAAe,CAAA;;6GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBANC,qBAAqB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,CAAzF,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;8GAMzG,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;iBAC3B,CAAA;;;MCJY,gBAAgB,CAAA;;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,eAAe,EAAE,oBAAoB,CACrC,EAAA,OAAA,EAAA,CAAA,eAAe,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEpC,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,eAAe,EAAE,oBAAoB,EACrC,eAAe,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;4FAEpC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;AAChD,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;iBACjD,CAAA;;;ACND,MAAM,YAAY,GAAW,IAAI,CAAC;MAErB,KAAK,CAAA;AAQhB,IAAA,WAAA,CAA6B,SAA6B,EAAA;AAA7B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;QAP1C,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACnC,IAAG,CAAA,GAAA,GAAW,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,GAAG,GAA6B,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,YAAY,GAAW,IAAI,CAAC,eAAe,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,GAAG,GAAW,IAAI,CAAC,eAAe,EAAE,CAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAY,IAAI,CAAC,UAAU,EAAE,CAAC;KAES;IAEvD,aAAa,CAAC,QAAgB,CAAC,EAAA;AACpC,QAAA,OAAO,oBAAoB,IAAI,CAAC,GAAG,CAAM,GAAA,EAAA,KAAK,GAAG,CAAC;KACnD;IAEO,MAAM,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtC,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtC,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACvC,CAAC;KACH;IAEO,eAAe,GAAA;QACrB,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;KACzD;IAEO,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KACrD;IAEO,UAAU,GAAA;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC;KACrE;AACF;;MClCY,UAAU,CAAA;AAIrB,IAAA,WAAA,CAA6B,SAA6B,EAAA;AAA7B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;QAH1C,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACnC,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAA6B,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;KAEvD;AAC/D;;MCRqB,YAAY,CAAA;AAOjC;;ACJD,MAAM,uBAA0B,YAAe,CAAA;AAM7C,IAAA,WAAA,CAA4B,OAAU,EAAA;AACpC,QAAA,KAAK,EAAE,CAAC;AADkB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAG;AALtB,QAAA,IAAK,CAAA,KAAA,GAAqB,IAAI,CAAC;AAC/B,QAAA,IAAE,CAAA,EAAA,GAAW,OAAO,EAAE,CAAC;AACvB,QAAA,IAAI,CAAA,IAAA,GAAqB,IAAI,CAAC;AAC9B,QAAA,IAAM,CAAA,MAAA,GAAqB,IAAI,CAAC;KAI/C;AACF,CAAA;AAEgB,IAAA,YAIhB;AAJD,CAAA,UAAiB,WAAW,EAAA;IAC1B,MAAa,mBAAmB,cAA4B,CAAA;AAAG,KAAA;AAAlD,IAAA,WAAA,CAAA,UAAU,aAAwC,CAAA;IAC/D,MAAa,wBAAwB,cAAsB,CAAA;AAAG,KAAA;AAAjD,IAAA,WAAA,CAAA,eAAe,kBAAkC,CAAA;IAC9D,MAAa,mBAAmB,cAAoB,CAAA;AAAG,KAAA;AAA1C,IAAA,WAAA,CAAA,UAAU,aAAgC,CAAA;AACzD,CAAC,EAJgB,WAAW,KAAX,WAAW,GAI3B,EAAA,CAAA,CAAA;;MCVY,WAAW,CAAA;AAKtB,IAAA,WAAA,CAA6B,QAAkB,EAAA;AAAlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAJ9B,QAAA,IAAK,CAAA,KAAA,GAAmB,EAAE,CAAC;QAC3B,IAAA,CAAA,QAAQ,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,YAAY,EAAE,CAAC;QAG/D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC;KAC9D;AAEM,IAAA,oBAAoB,CAAC,OAAe,EAAA;AACzC,QAAA,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAmB,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AAC/F,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;KAClC;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACzC;AAEM,IAAA,SAAS,CAAyB,SAAkB,EAAA;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAmB,KAAiB,KAAK,YAAY,SAAS,CAAC,CAAC,CAAC;KAC7G;IAEO,6BAA6B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;IAEO,2BAA2B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC;AAC1C,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAoC,KAAI;YACpE,MAAM,YAAY,GAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,YAAY,IAAI,OAAO,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,8BAA8B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC;AAC/C,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,WAAwC,KAAK,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;aACzG,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,mBAAmB,CAAC,OAAe,EAAA;AACzC,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;KACrC;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;AACF;;MCzEY,8BAA8B,CAAA;AAazC,IAAA,WAAA,CAAY,MAA4C,EAAA;AAZjD,QAAA,IAAO,CAAA,OAAA,GAAW,IAAI,CAAC;AACvB,QAAA,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;AAErB,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;AAExB,QAAA,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC;AAC3B,QAAA,IAAS,CAAA,SAAA,GAAW,IAAI,CAAC;AAEzB,QAAA,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAG/B,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC7B;AACF;;MChBY,8BAA8B,CAAA;AAClC,IAAA,OAAO,4BAA4B,CACxC,KAA0B,EAC1B,oBAA4B,EAC5B,UAAkB,EAAA;AAElB,QAAA,MAAM,+BAA+B,GAAYA,OAAK,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACnH,QAAA,IAAIA,OAAK,CAAC,KAAK,CAAC,IAAI,+BAA+B,EAAE;AACnD,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AAED,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAc,KAAK,CAAC;QAExC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAIA,OAAK,CAAC,GAAG,CAAC,EAAE;AAC1E,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,MAAM,eAAe,GAAW,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACxE,QAAA,MAAM,UAAU,GAAW,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAE9D,QAAA,MAAM,aAAa,GAAW,KAAK,GAAG,oBAAoB,CAAC;AAC3D,QAAA,MAAM,YAAY,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;AAE9F,QAAA,MAAM,WAAW,GAAW,GAAG,GAAG,oBAAoB,CAAC;QACvD,MAAM,oBAAoB,GAAW,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,KAAK,GAAG,oBAAoB,CAAC;AAEhF,QAAA,MAAM,UAAU,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAC7G,QAAA,MAAM,YAAY,GAAW,UAAU,KAAK,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC;QAExE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;KACnD;AAEM,IAAA,OAAO,8BAA8B,CAC1C,aAAwB,EACxB,YAAuB,EAAA;QAEvB,MAAM,mCAAmC,GACvC,8BAA8B,CAAC,qBAAqB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAEpF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAgC,mCAAmC,CAAC;AAElH,QAAA,MAAM,uBAAuB,GAAY,CAACA,OAAK,CAAC,OAAO,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC;AAC/F,QAAA,MAAM,wBAAwB,GAAY,CAACA,OAAK,CAAC,UAAU,CAAC,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,IAAI,UAAU,KAAK,QAAQ,CAAC;AAE5G,QAAA,MAAM,iBAAiB,GAAqBA,OAAK,CAAC,KAAK,CAAC,IAAI,uBAAuB,GAAG,IAAI,GAAG,OAAO,CAAC;AACrG,QAAA,MAAM,eAAe,GAAqBA,OAAK,CAAC,OAAO,CAAC,IAAI,uBAAuB,GAAG,IAAI,GAAG,KAAK,CAAC;AAEnG,QAAA,MAAM,oBAAoB,GAAqBA,OAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,GAAG,IAAI,GAAG,UAAU,CAAC;AAC/G,QAAA,MAAM,kBAAkB,GAAqBA,OAAK,CAAC,UAAU,CAAC,IAAI,wBAAwB,GAAG,IAAI,GAAG,QAAQ,CAAC;QAE7G,OAAO,IAAI,8BAA8B,CACpC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,mCAAmC,KACtC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,kBAAkB,EAAA,CAAA,CAC5B,CAAC;KACJ;AAEO,IAAA,OAAO,qBAAqB,CAAC,aAAwB,EAAE,YAAuB,EAAA;;AACpF,QAAA,MAAM,2BAA2B,GAAqB,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AAClF,QAAA,MAAM,yBAAyB,GAAqB,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AAE9E,QAAA,MAAM,4BAA4B,GAAqB,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AACpF,QAAA,MAAM,0BAA0B,GAAqB,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;QAEhF,MAAM,uBAAuB,GAAY,8BAA8B,CAAC,uBAAuB,CAC7F,aAAa,EACb,YAAY,CACb,CAAC;AAEF,QAAA,IAAIA,OAAK,CAAC,uBAAuB,CAAC,EAAE;YAClC,OAAO,IAAI,8BAA8B,CAAC;AACxC,gBAAA,WAAW,EAAE,2BAA2B;AACxC,gBAAA,SAAS,EAAE,yBAAyB;AAEpC,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,KAAK,EAAE,yBAAyB;AACjC,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,CAAC,uBAAuB,EAAE;YAE5B,OAAO,IAAI,8BAA8B,CAAC;AACxC,gBAAA,WAAW,EAAE,2BAA2B;AACxC,gBAAA,SAAS,EAAE,yBAAyB;AAEpC,gBAAA,YAAY,EAAE,4BAA4B;AAC1C,gBAAA,UAAU,EAAE,0BAA0B;AAEtC,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,KAAK,EAAE,yBAAyB;AAEhC,gBAAA,UAAU,EAAE,4BAA4B;AACxC,gBAAA,QAAQ,EAAE,0BAA0B;AACrC,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,cAAc,GAClB,CAACA,OAAK,CAAC,2BAA2B,CAAC;YACnC,CAACA,OAAK,CAAC,yBAAyB,CAAC;YACjC,CAACA,OAAK,CAAC,4BAA4B,CAAC;AACpC,YAAA,CAACA,OAAK,CAAC,0BAA0B,CAAC,CAAC;QACrC,MAAM,6BAA6B,GACjC,cAAc;AACd,YAAA,2BAA2B,GAAG,4BAA4B;AAC1D,YAAA,2BAA2B,GAAG,0BAA0B;AACxD,YAAA,yBAAyB,GAAG,4BAA4B;YACxD,yBAAyB,GAAG,0BAA0B,CAAC;AAEzD,QAAA,IAAI,6BAA6B,EAAE;YACjC,OAAO,IAAI,8BAA8B,CAAC;AACxC,gBAAA,WAAW,EAAE,4BAA4B;AACzC,gBAAA,SAAS,EAAE,0BAA0B;AAErC,gBAAA,YAAY,EAAE,4BAA4B;AAC1C,gBAAA,UAAU,EAAE,0BAA0B;AACvC,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,MAAM,6BAA6B,GACjC,cAAc;AACd,YAAA,4BAA4B,GAAG,2BAA2B;AAC1D,YAAA,4BAA4B,GAAG,yBAAyB;AACxD,YAAA,0BAA0B,GAAG,2BAA2B;YACxD,0BAA0B,GAAG,yBAAyB,CAAC;AAEzD,QAAA,IAAI,6BAA6B,EAAE;YACjC,OAAO,IAAI,8BAA8B,CAAC;AACxC,gBAAA,WAAW,EAAE,2BAA2B;AACxC,gBAAA,SAAS,EAAE,yBAAyB;AAEpC,gBAAA,YAAY,EAAE,4BAA4B;AAC1C,gBAAA,UAAU,EAAE,0BAA0B;AAEtC,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,KAAK,EAAE,yBAAyB;AACjC,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,MAAM,iBAAiB,GAAW,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,4BAA4B,CAAC,CAAC;QACtG,MAAM,eAAe,GAAW,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;QAEhG,MAAM,mCAAmC,GACvC,iBAAiB,KAAK,2BAA2B,IAAI,eAAe,IAAI,yBAAyB,CAAC;AAEpG,QAAA,IAAI,mCAAmC,EAAE;YAEvC,OAAO,IAAI,8BAA8B,CAAC;AACxC,gBAAA,WAAW,EAAE,2BAA2B;AACxC,gBAAA,SAAS,EAAE,yBAAyB;AAEpC,gBAAA,YAAY,EAAE,4BAA4B;AAC1C,gBAAA,UAAU,EAAE,0BAA0B;AAEtC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,KAAK,EAAE,yBAAyB;AAEhC,gBAAA,UAAU,EAAE,4BAA4B;AACxC,gBAAA,QAAQ,EAAE,iBAAiB;AAC5B,aAAA,CAAC,CAAC;AACJ,SAAA;QAGD,OAAO,IAAI,8BAA8B,CAAC;AACxC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,SAAS,EAAE,yBAAyB;AAEpC,YAAA,YAAY,EAAE,4BAA4B;AAC1C,YAAA,UAAU,EAAE,0BAA0B;AAEtC,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,KAAK,EAAE,iBAAiB;AAExB,YAAA,UAAU,EAAE,eAAe;AAC3B,YAAA,QAAQ,EAAE,0BAA0B;AACrC,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,OAAO,uBAAuB,CAAC,aAAwB,EAAE,cAAyB,EAAA;QACxF,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAIA,OAAK,CAAC,cAAc,CAAC,EAAE;AACjD,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAc,aAAa,CAAC;QACtF,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAc,cAAc,CAAC;QAEzF,MAAM,mBAAmB,GACvBA,OAAK,CAAC,kBAAkB,CAAC,IAAIA,OAAK,CAAC,gBAAgB,CAAC,IAAIA,OAAK,CAAC,mBAAmB,CAAC,IAAIA,OAAK,CAAC,iBAAiB,CAAC,CAAC;AACjH,QAAA,IAAI,mBAAmB,EAAE;AACvB,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,MAAM,eAAe,GAAY,kBAAkB,IAAI,iBAAiB,IAAI,mBAAmB,IAAI,gBAAgB,CAAC;AACpH,QAAA,OAAO,eAAe,CAAC;KACxB;AACF;;MCxMY,aAAa,CAAA;IAyBxB,WAA6B,CAAA,aAAiD,EAAmB,SAAiB,EAAA;AAArF,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAoC;AAAmB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;AAxBlG,QAAA,IAAA,CAAA,IAAI,GAAW,CAAG,EAAA,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC5E,QAAA,IAAc,CAAA,cAAA,GAAW,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC3E,QAAA,IAAa,CAAA,aAAA,GAAW,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACzE,QAAA,IAAmB,CAAA,mBAAA,GAAW,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAChF,QAAA,IAAkB,CAAA,kBAAA,GAAW,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAE9E,IAAA,CAAA,UAAU,GAAkD;YAC1E,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,cAAc;SAC3B,CAAC;QACc,IAAA,CAAA,SAAS,GAAkD;YACzE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,aAAa;SAC1B,CAAC;QAEc,IAAA,CAAA,eAAe,GAAkD;YAC/E,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,mBAAmB;SAChC,CAAC;QACc,IAAA,CAAA,cAAc,GAAkD;YAC9E,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,kBAAkB;SAC/B,CAAC;KAEoH;IAE/G,0BAA0B,GAAA;QAC/B,OAAO,CAAA,0BAAA,EAA6B,IAAI,CAAC,IAAI,iCAAiC,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC;KAC7F;AACF;;MC1BqB,yBAAyB,CAAA;AAG7C,IAAA,WAAA,CAA+B,YAA0B,EAAA;AAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAFzC,IAAA,CAAA,UAAU,GAA6B,IAAI,aAAa,CAAY,CAAC,CAAC,CAAC;KAE1B;AAEnD,IAAA,mBAAmB,CAAC,MAA0B,EAAA;QACtD,IAAI,KAAK,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,EAAE;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,CAAA,CAAE,CAAC,CAAC;KACjD;AAES,IAAA,qBAAqB,CAAC,MAA0B,EAAA;QACxD,IAAI,KAAK,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,EAAE;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC;KAClD;AAES,IAAA,gBAAgB,CAAC,MAA0B,EAAA;QACnD,IAAI,KAAK,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,EAAE;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;KACnD;AAES,IAAA,gBAAgB,CAAC,MAA0B,EAAA;QACnD,IAAI,KAAK,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,EAAE;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;KACnD;AAES,IAAA,gBAAgB,CAAC,MAA0B,EAAA;QACnD,IAAI,KAAK,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,EAAE;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;KACnD;AAES,IAAA,iBAAiB,CAAC,MAA0B,EAAA;QACpD,IAAI,KAAK,CAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,EAAE;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,CAAA,GAAA,CAAK,CAAC,CAAC;KACpD;AAIO,IAAA,eAAe,CAAC,WAAmB,EAAA;QACzC,MAAM,SAAS,GAAc,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;AACrF,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE;YACpB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACjC;AACF;;ACzDK,MAAO,+BAAmC,SAAQ,yBAA4B,CAAA;AAClF,IAAA,WAAA,CAA+B,YAA0B,EAAA;QACvD,KAAK,CAAC,YAAY,CAAC,CAAC;AADS,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KAExD;AAEM,IAAA,OAAO,CAAC,OAA6B,EAAA;QAC1C,IAAI,CAAC,mBAAmB,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC3C;AACF;;ACbK,MAAO,8BAAkC,SAAQ,yBAA4B,CAAA;AACjF,IAAA,WAAA,CAA+B,YAA0B,EAAA;QACvD,KAAK,CAAC,YAAY,CAAC,CAAC;AADS,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KAExD;AAEM,IAAA,OAAO,CAAC,OAA4B,EAAA;QACzC,IAAI,CAAC,mBAAmB,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,KAAK,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC1C;AACF;;AClBM,MAAM,gBAAgB,GAAW;;ACAjC,MAAM,cAAc,GAAW;;ACA/B,MAAM,iBAAiB,GAAW;;ACAlC,MAAM,0BAA0B,GAAW;;ACA3C,MAAM,kBAAkB,GAAW;;ACA9B,IAAA,MAGX;AAHD,CAAA,UAAY,KAAK,EAAA;AACf,IAAA,KAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,KAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EAHW,KAAK,KAAL,KAAK,GAGhB,EAAA,CAAA,CAAA;;ACuCe,SAAA,uBAAuB,CACrC,MAAS,EACT,YAAmE,EAAA;IAEnE,OAAO;AACL,QAAA,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,CAAC,kBAAsB,EAAE,GAAG,oBAA+B,KACrE,kBAAkB,aAAlB,kBAAkB,KAAA,KAAA,CAAA,GAAlB,kBAAkB,GAAI,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAAC;AAC3D,QAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC;KAClE,CAAC;AACJ;;AClDgB,SAAA,eAAe,CAAC,aAA4B,EAAE,MAAgB,EAAA;AAC5E,IAAA,OAAO,IAAI,UAAU,CAAc,CAAC,UAAmC,KAAI;AACzE,QAAA,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAkB,KAAI;AACxD,YAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;AACxD,KAAC,CAAC,CAAC;AACL;;SCRgB,qBAAqB,GAAA;AACnC,IAAA,OAAO,IAAI,UAAU,CAAO,CAAC,UAA4B,KAAI;QAC3D,IAAI,SAAS,GAAY,KAAK,CAAC;QAE/B,MAAM,IAAI,GAAa,MAAK;AAC1B,YAAA,IAAI,SAAS,EAAE;gBACb,OAAO;AACR,aAAA;YACD,qBAAqB,CAAC,MAAK;gBACzB,UAAU,CAAC,IAAI,EAAE,CAAC;AAClB,gBAAA,IAAI,EAAE,CAAC;AACT,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,OAAO,EAAE,WAAW,EAAE,OAAO,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;AACnD,KAAC,CAAC,CAAC;AACL;;SCnBgB,cAAc,GAAA;IAC5B,OAAO,cAAc,IAAI,MAAM,CAAC;AAClC;;ACCM,SAAU,sBAAsB,CAAI,MAAc,EAAA;AACtD,IAAA,OAAO,CAAC,OAAsB,KAC5B,IAAI,UAAU,CAAI,CAAC,UAAyB,KAC1C,OAAO,CAAC,SAAS,CAAC;AAChB,QAAA,IAAI,EAAE,CAAC,KAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpE,QAAA,QAAQ,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACH,CAAC;AACN;;ACRM,SAAU,uBAAuB,CAAI,MAAc,EAAA;IACvD,OAAO,CAAC,OAAsB,KAC5B,IAAI,UAAU,CAAI,CAAC,UAAyB,KAAI;QAC9C,IAAI,YAAY,GAA2B,IAAI,CAAC;AAEhD,QAAA,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC5B,YAAA,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,WAAW,EAAE,EAAE,CAAC;AAC5D,KAAC,CAAC,CAAC;AACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCJa,2BAA2B,CAAA;AAkFtC,IAAA,WAAA,CAA+C,QAAkB,EAAA;AAAlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAjFhD,IAAA,CAAA,cAAc,GAAiD,IAAI,eAAe,CAEjG,IAAI,CAAC,CAAC;QAEQ,IAAA,CAAA,QAAQ,GAAuC,IAAI,eAAe,CAAoB,IAAI,CAAC,CAAC;AAE5F,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,CAAC,QAAQ,CAAC,IAAI,CACpE,YAAY,EAAE,EACd,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAW,KAAK,WAAW,GAAG,YAAY,CAAC,EAC3E,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;AAEc,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAClE,YAAY,EAAE,EACd,GAAG,CAAC,CAAC,OAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,EAC7C,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;QAEc,IAAe,CAAA,eAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1E,GAAG,CAAC,CAAC,UAAkB,KAAK,UAAU,KAAK,IAAI,CAAC,EAChD,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;QAEc,IAAe,CAAA,eAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1E,GAAG,CAAC,CAAC,UAAkB,KAAK,UAAU,KAAK,IAAI,CAAC,EAChD,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;QAEc,IAAe,CAAA,eAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1E,GAAG,CAAC,CAAC,UAAkB,KAAK,UAAU,KAAK,IAAI,CAAC,EAChD,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;QAEc,IAAe,CAAA,eAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1E,GAAG,CAAC,CAAC,UAAkB,KAAK,UAAU,KAAK,IAAI,CAAC,EAChD,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;QAEc,IAAe,CAAA,eAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1E,GAAG,CAAC,CAAC,UAAkB,KAAK,UAAU,KAAK,IAAI,CAAC,EAChD,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;QAEc,IAAgB,CAAA,gBAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,UAAkB,KAAK,UAAU,KAAK,KAAK,CAAC,EACjD,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;AAEc,QAAA,IAAA,CAAA,uBAAuB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,UAAkB,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAC9D,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;AAEc,QAAA,IAAA,CAAA,uBAAuB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,UAAkB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACpE,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;AAEc,QAAA,IAAA,CAAA,uBAAuB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,UAAkB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAC1E,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;AAEc,QAAA,IAAA,CAAA,wBAAwB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CACnF,GAAG,CAAC,CAAC,UAAkB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAChF,oBAAoB,EAAE,EACtB,uBAAuB,EAAE,CAC1B,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,YAAY,EAAE,CAAC;QAE/D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;KACxD;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAEM,IAAA,gBAAgB,CAAC,MAAmC,EAAA;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC;IAEO,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,cAAc;aACvB,IAAI,CACH,YAAY,EAAE,EACd,SAAS,CAAC,CAAC,MAAyB,KAClC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAC9F,EACD,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9B;aACA,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAA+B,KAAI;;AAC7D,YAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAe,MAAM,CAAC,qBAAqB,EAAE,CAAC;AAEhG,YAAA,MAAM,UAAU,GAAW,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtD,MAAM,cAAc,GAAWC,QAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE1D,YAAA,IAAI,CAAC,0BAA0B,CAAC,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,EAAE,UAAU,CAAC,CAAC;AAEzE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;AAE9E,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;IAEO,mBAAmB,GAAA;QACzB,MAAM,UAAU,GAAuB,MAAM,CAAC,OAAO,CAACA,QAAM,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,cAAc,GAAa,UAAU;AACxC,aAAA,MAAM,CAAC,CAAC,KAAuB,KAAK,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACxE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEX,QAAA,MAAM,UAAU,GAAW,cAAc,CAAC,CAAC,CAAC,CAAC;AAE7C,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,0BAA0B,CAAC,cAAsB,EAAE,UAAkB,EAAA;QAC3E,MAAM,IAAI,GAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AAE3D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAA,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,cAAc,KAAK,UAAU,EAAE;YAC/E,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACvC;AAEO,IAAA,mBAAmB,CAAC,YAAoB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;YACvB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,EAAE,GAAW,YAAY,GAAG,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA,EAAG,EAAE,CAAA,EAAA,CAAI,CAAC,CAAC;KACpE;;AAlJU,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAkFlB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAlFjB,2BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;4FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;8BAmFc,MAAM;+BAAC,QAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCxFjB,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAM,CAAA,MAAA,GAAyCA,QAAM,CAAC;KACvE;;sHAFY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCIrB,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAM,CAAA,MAAA,GAAyBA,QAAM,CAAC;QAEvC,IAAA,CAAA,WAAW,GAAiB,IAAI,CAAC,MAAM,CAAC,GAAG,CACzD,CAAC,SAA6B,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,CAC7D,CAAC;QACc,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAsB,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7F,IAAS,CAAA,SAAA,GAAuB,IAAI,GAAG,CACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CACtD,CAAC;KAWH;AATQ,IAAA,aAAa,CAAC,GAAW,EAAA;QAC9B,MAAM,KAAK,GAAoB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvD,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,CAAA,iBAAA,CAAmB,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;;2GApBU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCCrB,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAM,CAAA,MAAA,GAAiC,MAAM,CAAC;AAE9C,QAAA,IAAM,CAAA,MAAA,GAAiC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAiC,KAAI;AAC3G,YAAA,MAAM,SAAS,GAAW,KAAK,CAAC,IAAI,CAAC;AAErC,YAAA,MAAM,2BAA2B,GAA4B,KAAK,CAAC,cAAc,CAAC,GAAG,CACnF,CAAC,aAAiD,MAAM;gBACtD,IAAI,EAAE,aAAa,CAAC,IAAI;AACxB,gBAAA,KAAK,EAAE,IAAI,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC;AACnD,aAAA,CAAC,CACH,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,gBAAA,cAAc,EAAE,2BAA2B;aAC5C,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;;mHAlBY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACElC,MAAM,iBAAiB,GAAuB,IAAI,GAAG,CAAC;AACpD,IAAA,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC;AAChC,IAAA,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;AAC/B,CAAA,CAAC,CAAC;MAGU,YAAY,CAAA;AAcvB,IAAA,WAAA,CAA+C,QAAkB,EAAA;AAAlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAbhD,IAAW,CAAA,WAAA,GAA2B,IAAI,eAAe,CAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;QAE/E,IAAA,CAAA,MAAM,GAAsB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AAC5D,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,CAClE,GAAG,CAAC,CAAC,KAAY,MAAM,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAC1E,CAAC;QAEc,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,CAChE,GAAG,CAAC,CAAC,KAAY,KAAK,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACpD,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,YAAY,EAAE,CAAC;QAG/D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACnD;AAEM,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAmB,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;KACnG;IAEO,mBAAmB,GAAA;QACzB,OAAO,IAAI,CAAC,MAAM;aACf,IAAI,CACH,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EACtB,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAiB,KAAK;AACjD,YAAA,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;AAChC,YAAA,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC;AACpC,SAAA,CAAC,CACH;aACA,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAA2C,KACtE,IAAI,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAC/C,CAAC;KACL;AAEO,IAAA,qBAAqB,CAAC,CAAC,SAAS,EAAE,KAAK,CAA2C,EAAA;AACxF,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACxB,OAAO;AACR,SAAA;QAED,MAAM,IAAI,GAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AAE3D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,KAAK,EAAE;YAC3D,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KAClC;;AArDU,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAcH,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAdjB,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA,CAAA;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;8BAenB,MAAM;+BAAC,QAAQ,CAAA;;;;;;"}