{"version":3,"file":"ngx-tw.mjs","sources":["../../../projects/ngx-tw/src/lib/utlis.ts","../../../projects/ngx-tw/src/lib/notification/notification-config.ts","../../../projects/ngx-tw/src/lib/notification/notification-ref.ts","../../../projects/ngx-tw/src/lib/notification/notification.animation.ts","../../../projects/ngx-tw/src/lib/notification/notification.component.ts","../../../projects/ngx-tw/src/lib/notification/notification.component.html","../../../projects/ngx-tw/src/lib/notification/notification.service.ts","../../../projects/ngx-tw/src/lib/alerts/alert.service.ts","../../../projects/ngx-tw/src/lib/icon/icon.component.ts","../../../projects/ngx-tw/src/lib/input-field/input-field.component.ts","../../../projects/ngx-tw/src/lib/input-field/input-field.component.html","../../../projects/ngx-tw/src/lib/spinner/spinner.component.ts","../../../projects/ngx-tw/src/lib/html-events.ts","../../../projects/ngx-tw/src/lib/TwElement.ts","../../../projects/ngx-tw/src/lib/autocomplete/autocomplete-manager.ts","../../../projects/ngx-tw/src/lib/autocomplete/autocomplete.component.ts","../../../projects/ngx-tw/src/lib/autocomplete/autocomplete.component.html","../../../projects/ngx-tw/src/lib/button-group/button-group-Item.component.ts","../../../projects/ngx-tw/src/lib/button-group/button-group.component.ts","../../../projects/ngx-tw/src/lib/button/button-icon.component.ts","../../../projects/ngx-tw/src/lib/button/button.component.ts","../../../projects/ngx-tw/src/lib/calendar/calendar.component.ts","../../../projects/ngx-tw/src/lib/calendar/calendar.component.html","../../../projects/ngx-tw/src/lib/chip/chip-item-maker.component.ts","../../../projects/ngx-tw/src/lib/chip/chip.component.ts","../../../projects/ngx-tw/src/lib/chip/chip-list.component.ts","../../../projects/ngx-tw/src/lib/chip/chip-list.component.html","../../../projects/ngx-tw/src/lib/input-field/masked-input.component.ts","../../../projects/ngx-tw/src/lib/input-field/masked-input.component.html","../../../projects/ngx-tw/src/lib/date-picker/date-range-picker.component.ts","../../../projects/ngx-tw/src/lib/date-picker/date-range-picker.component.html","../../../projects/ngx-tw/src/lib/dialog/dialog.ts","../../../projects/ngx-tw/src/lib/expander/expander-content.component.ts","../../../projects/ngx-tw/src/lib/expander/expander-header.component.ts","../../../projects/ngx-tw/src/lib/expander/expander-item.component.ts","../../../projects/ngx-tw/src/lib/expander/expander-group.component.ts","../../../projects/ngx-tw/src/lib/expander/index.ts","../../../projects/ngx-tw/src/lib/menu/menu-item.directive.ts","../../../projects/ngx-tw/src/lib/menu/menu-trigger.directive.ts","../../../projects/ngx-tw/src/lib/menu/menu.component.ts","../../../projects/ngx-tw/src/lib/menu/index.ts","../../../projects/ngx-tw/src/lib/notification/notification-provider.ts","../../../projects/ngx-tw/src/lib/select/option/option.component.ts","../../../projects/ngx-tw/src/lib/select/option/option.component.html","../../../projects/ngx-tw/src/lib/select/select.component.ts","../../../projects/ngx-tw/src/lib/select/select.component.html","../../../projects/ngx-tw/src/lib/skeleton/skeleton.component.ts","../../../projects/ngx-tw/src/lib/skeleton/skeleton.directive.ts","../../../projects/ngx-tw/src/lib/sticky-content-header/sticky-content-header.component.ts","../../../projects/ngx-tw/src/lib/switch/switch.component.ts","../../../projects/ngx-tw/src/lib/tab/tab-item-maker.component.ts","../../../projects/ngx-tw/src/lib/tab/tab.component.ts","../../../projects/ngx-tw/src/lib/tab/tab-group/tab-group.component.ts","../../../projects/ngx-tw/src/lib/tab/tab-group/tab-group.component.html","../../../projects/ngx-tw/src/lib/table/column-definitions.directive.ts","../../../projects/ngx-tw/src/lib/table/table.component.ts","../../../projects/ngx-tw/src/lib/table/table.component.html","../../../projects/ngx-tw/src/lib/table/index.ts","../../../projects/ngx-tw/src/lib/toolbar/toolbar.component.ts","../../../projects/ngx-tw/src/lib/toolbar/toolbar.component.html","../../../projects/ngx-tw/src/lib/ngx-tw.module.ts","../../../projects/ngx-tw/src/public-api.ts","../../../projects/ngx-tw/src/ngx-tw.ts"],"sourcesContent":["export const tw = (\n  template: TemplateStringsArray,\n  ...values: (string | undefined)[]\n) => {\n  return template.raw[0]\n    .split(/\\s+/)\n    .filter((c) => c.trim())\n    .join(' ');\n};\n","import { InjectionToken, TemplateRef } from '@angular/core';\nimport { tw } from '../utlis';\n\nexport class TwNotificationData {\n  type?: TwNotificationType;\n  title?: string;\n  text?: string;\n  template?: TemplateRef<any>;\n  templateContext?: any;\n  autoClose?: boolean;\n  autoCloseTimeout?: number;\n  position?: {\n    top: number;\n    right: number;\n  };\n  animation?: {\n    fadeOut: number;\n    fadeIn: number;\n  };\n  classes?: {\n    [key in TwNotificationClasses]: string;\n  } = defaultTwNotificationConfig.classes;\n}\n\nexport type TwNotificationType = 'warning' | 'info' | 'success' | 'danger';\nexport type TwNotificationClasses =\n  | 'container'\n  | 'card'\n  | 'success'\n  | 'info'\n  | 'warning'\n  | 'danger'\n  | 'svg'\n  | 'button';\n\nexport interface TwNotificationConfig {\n  type?: TwNotificationType;\n  position?: {\n    top: number;\n    right: number;\n  };\n  animation?: {\n    fadeOut: number;\n    fadeIn: number;\n  };\n  autoClose?: boolean;\n  autoCloseTimeout?: number;\n  classes: {\n    [key in TwNotificationClasses]: string;\n  };\n}\n\nexport const defaultTwNotificationConfig: TwNotificationConfig = {\n  type: 'success',\n  position: {\n    top: 20,\n    right: 20,\n  },\n  animation: {\n    fadeOut: 800,\n    fadeIn: 300,\n  },\n  autoClose: true,\n  autoCloseTimeout: 2500,\n  classes: {\n    container: tw`relative flex justify-around mb-5 w-[382px] max-w-full`,\n    card: tw`max-w-sm w-full bg-white shadow-lg rounded-lg pointer-events-auto ring-1 ring-black ring-opacity-5 overflow-hidden`,\n    success: tw`text-green-400`,\n    info: tw`text-primary-400`,\n    warning: tw`text-yellow-400`,\n    danger: tw`text-danger-400`,\n    svg: tw`w-6 h-6`,\n    button: tw`bg-white rounded-md inline-flex text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500`,\n  },\n};\n\nexport const TW_NOTIFICATION_CONFIG_TOKEN = new InjectionToken(\n  'tw-notification-config'\n);\n","import { OverlayRef } from '@angular/cdk/overlay';\n\nexport class TwNotificationRef {\n    constructor(private readonly overlay: OverlayRef) {}\n\n    close() {\n        this.overlay.dispose();\n    }\n\n    isVisible() {\n        return this.overlay && this.overlay.overlayElement;\n    }\n\n    getPosition() {\n        return this.overlay.overlayElement.getBoundingClientRect();\n    }\n}\n","import { AnimationTriggerMetadata, trigger, state, transition, style, animate } from '@angular/animations';\n\nexport const twNotificationAnimations: {\n    readonly fadeNotification: AnimationTriggerMetadata;\n} = {\n    fadeNotification: trigger('fadeAnimation', [\n        state('default', style({ opacity: 1 })),\n        transition('void => *', [style({ opacity: 0 }), animate('{{ fadeIn }}ms')]),\n        transition('default => closing', animate('{{ fadeOut }}ms', style({ opacity: 0 }))),\n    ]),\n};\n\nexport type TwNotificationAnimationState = 'default' | 'closing';\n","import { AnimationEvent } from '@angular/animations';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport {\n  TW_NOTIFICATION_CONFIG_TOKEN,\n  TwNotificationConfig,\n  TwNotificationData,\n} from './notification-config';\nimport { TwNotificationRef } from './notification-ref';\nimport {\n  twNotificationAnimations,\n  TwNotificationAnimationState,\n} from './notification.animation';\n\n@Component({\n  selector: 'tw-notification',\n  templateUrl: './notification.component.html',\n  imports: [NgTemplateOutlet, CommonModule],\n  animations: [twNotificationAnimations.fadeNotification],\n})\nexport class NotificationComponent implements OnInit, OnDestroy {\n  animationState: TwNotificationAnimationState = 'default';\n\n  private intervalId!: number | any;\n\n  constructor(\n    readonly data: TwNotificationData,\n    readonly ref: TwNotificationRef,\n    @Inject(TW_NOTIFICATION_CONFIG_TOKEN)\n    public notificationConfig: TwNotificationConfig\n  ) {\n    //\n    // Extend data with defalt notification config\n    this.data = { ...this.notificationConfig, ...this.data };\n  }\n\n  ngOnInit() {\n    //\n    // Set autoclose\n    if (this.data.autoClose === true)\n      this.intervalId = setTimeout(\n        () => (this.animationState = 'closing'),\n        this.data.autoCloseTimeout\n      );\n  }\n\n  ngOnDestroy() {\n    //\n    // Clear autoclose\n    if (this.data.autoClose === true) clearTimeout(this.intervalId);\n  }\n\n  close() {\n    this.ref.close();\n  }\n\n  onFadeFinished(event: AnimationEvent) {\n    const { toState } = event;\n    const isFadeOut = (toState as TwNotificationAnimationState) === 'closing';\n    const itFinished = this.animationState === 'closing';\n\n    if (isFadeOut && itFinished) {\n      this.close();\n    }\n  }\n}\n","<div\n  [class]=\"data.classes?.container\"\n  [@fadeAnimation]=\"{value: animationState, params:\n    { fadeIn: data.animation?.fadeIn, fadeOut: data.animation?.fadeOut }}\"\n  (@fadeAnimation.done)=\"onFadeFinished($event)\"\n>\n  <div [class]=\"data.classes?.card\">\n    <div class=\"p-4\">\n      @if(data.template){\n      <ng-container *ngTemplateOutlet=\"data.template; context: { $implicit: data.templateContext }\"></ng-container>\n      }@else {\n\n      <div class=\"flex items-start\">\n        <div class=\"flex-shrink-0\">\n          <div [hidden]=\"data.type !== 'success'\">\n            <svg\n              [class]=\"data.classes?.svg + ' ' + data.classes?.success\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"none\"\n              viewBox=\"0 0 24 24\"\n              stroke=\"currentColor\"\n              aria-hidden=\"true\"\n            >\n              <path\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                stroke-width=\"2\"\n                d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n              />\n            </svg>\n          </div>\n\n          <div [hidden]=\"data.type !== 'info'\">\n            <svg\n              [class]=\"data.classes?.svg + ' ' + data.classes?.info\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"none\"\n              viewBox=\"0 0 24 24\"\n              stroke=\"currentColor\"\n            >\n              <path\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                stroke-width=\"2\"\n                d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n              />\n            </svg>\n          </div>\n\n          <div [hidden]=\"data.type !== 'warning'\">\n            <svg\n              [class]=\"data.classes?.svg + ' ' + data.classes?.warning\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"none\"\n              viewBox=\"0 0 24 24\"\n              stroke=\"currentColor\"\n            >\n              <path\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                stroke-width=\"2\"\n                d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n              />\n            </svg>\n          </div>\n\n          <div [hidden]=\"data.type !== 'danger'\">\n            <svg\n              [class]=\"data.classes?.svg + ' ' + data.classes?.danger\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"none\"\n              viewBox=\"0 0 24 24\"\n              stroke=\"currentColor\"\n            >\n              <path\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n                stroke-width=\"2\"\n                d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n              />\n            </svg>\n          </div>\n        </div>\n        <div class=\"ml-3 w-0 flex-1 pt-0.5\">\n          <p class=\"text-sm font-medium text-gray-900\">\n            {{data.title}}\n          </p>\n          <p\n            class=\"mt-1 text-sm text-gray-500\"\n            [hidden]=\"!data.text\"\n          >\n            {{data.text}}\n          </p>\n        </div>\n        <div class=\"ml-4 flex-shrink-0 flex\">\n          <button\n            [class]=\"data.classes?.button\"\n            (click)=\"close()\"\n          >\n            <span class=\"sr-only\">Close</span>\n            <!-- Heroicon name: solid/x -->\n            <svg\n              class=\"h-5 w-5\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              viewBox=\"0 0 20 20\"\n              fill=\"currentColor\"\n              aria-hidden=\"true\"\n            >\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n                clip-rule=\"evenodd\"\n              />\n            </svg>\n          </button>\n        </div>\n      </div>\n\n      }\n    </div>\n  </div>\n</div>","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Inject, Injectable, Injector, Optional } from '@angular/core';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport {\n  defaultTwNotificationConfig,\n  TW_NOTIFICATION_CONFIG_TOKEN,\n  TwNotificationConfig,\n  TwNotificationData,\n} from './notification-config';\nimport { TwNotificationRef } from './notification-ref';\nimport { NotificationComponent } from './notification.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TwNotification {\n  private lastNotification!: TwNotificationRef;\n\n  constructor(\n    private overlay: Overlay,\n    private parentInjector: Injector,\n    @Optional()\n    @Inject(TW_NOTIFICATION_CONFIG_TOKEN)\n    private notificationConfig: TwNotificationConfig = defaultTwNotificationConfig\n  ) {\n    this.notificationConfig = notificationConfig || defaultTwNotificationConfig;\n  }\n\n  show(data: TwNotificationData) {\n    const positionStrategy = this.getPositionStrategy();\n    const overlayRef = this.overlay.create({ positionStrategy });\n\n    const notificationRef = new TwNotificationRef(overlayRef);\n    this.lastNotification = notificationRef;\n\n    const injector = this.getInjector(\n      data,\n      notificationRef,\n      this.parentInjector\n    );\n    const notificationPortal = new ComponentPortal(\n      NotificationComponent,\n      null,\n      injector\n    );\n\n    overlayRef.attach(notificationPortal);\n\n    return notificationRef;\n  }\n\n  getPositionStrategy() {\n    return this.overlay\n      .position()\n      .global()\n      .top(this.getPosition())\n      .right(this.notificationConfig.position?.right + 'px');\n  }\n\n  getPosition() {\n    const lastNotificationIsVisible =\n      this.lastNotification && this.lastNotification.isVisible();\n    const position = lastNotificationIsVisible\n      ? this.lastNotification.getPosition().bottom\n      : this.notificationConfig.position?.top;\n\n    return position + 'px';\n  }\n\n  getInjector(\n    data: TwNotificationData,\n    notificationRef: TwNotificationRef,\n    parentInjector: Injector\n  ) {\n    const tokens = new WeakMap();\n\n    tokens.set(TwNotificationData, data);\n    tokens.set(TwNotificationRef, notificationRef);\n\n    return Injector.create({\n      providers: [\n        provideAnimations(),\n        {\n          provide: TW_NOTIFICATION_CONFIG_TOKEN,\n          useValue: this.notificationConfig,\n        },\n        { provide: TwNotificationData, useValue: data },\n        { provide: TwNotificationRef, useValue: notificationRef },\n      ],\n      parent: parentInjector,\n    });\n  }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TwNotification } from '../notification/notification.service';\nimport { AlertType, IAlert } from './alert';\n\n@Injectable({\n  providedIn: 'root',\n})\n/** @deprecated This service is deprecated use TwNotification */\nexport class TwAlertService {\n  private _alert$ = new BehaviorSubject<IAlert | null>(null);\n  private _alertsContainerOverlay?: OverlayRef;\n\n  constructor(private readonly _twNotification: TwNotification) {}\n\n  /**\n   *\n   * @deprecated This method is deprecated use TwNotification.show() instead\n   */\n  info({\n    title,\n    description = void 0,\n    icon = null,\n    iconColor = null,\n    duration = 3000,\n    showActions = false,\n    primaryActionText = null,\n    secondaryActionText = null,\n  }: {\n    title: string;\n    description?: string;\n    icon?: string | null;\n    iconColor?: string | null;\n    duration?: number;\n    showActions?: boolean;\n    secondaryActionText?: string | null;\n    primaryActionText?: string | null;\n  }) {\n    this.notify({\n      title,\n      type: 'info',\n      description,\n      icon,\n      iconColor,\n      duration: duration,\n      primaryActionText,\n      secondaryActionText,\n      showActions,\n    });\n  }\n\n  /**\n   *\n   * @deprecated This method is deprecated use TwNotification.show() instead\n   */\n  warning({\n    title,\n    description = void 0,\n    icon = null,\n    iconColor = null,\n    duration = 3000,\n    showActions = false,\n    primaryActionText = null,\n    secondaryActionText = null,\n  }: {\n    title: string;\n    description?: string;\n    icon?: string | null;\n    iconColor?: string | null;\n    duration?: number;\n    showActions?: boolean;\n    secondaryActionText?: string | null;\n    primaryActionText?: string | null;\n  }) {\n    this.notify({\n      title,\n      type: 'warning',\n      description,\n      icon,\n      iconColor,\n      duration: duration,\n      primaryActionText,\n      secondaryActionText,\n      showActions,\n    });\n  }\n\n  /**\n   *\n   * @deprecated This method is deprecated use TwNotification.show() instead\n   */\n  error({\n    title,\n    description = void 0,\n    icon = null,\n    iconColor = null,\n    duration = 3000,\n    showActions = false,\n    primaryActionText = null,\n    secondaryActionText = null,\n  }: {\n    title: string;\n    description?: string;\n    icon?: string | null;\n    iconColor?: string | null;\n    duration?: number;\n    showActions?: boolean;\n    secondaryActionText?: string | null;\n    primaryActionText?: string | null;\n  }) {\n    this.notify({\n      title,\n      type: 'danger',\n      description,\n      icon,\n      iconColor,\n      duration: duration,\n      primaryActionText,\n      secondaryActionText,\n      showActions,\n    });\n  }\n  private notify({\n    title,\n    type,\n    description = void 0,\n    icon = null,\n    iconColor = null,\n    duration = 3000,\n    showActions = false,\n    primaryActionText = null,\n    secondaryActionText = null,\n  }: {\n    title: string;\n    type: AlertType;\n    description?: string;\n    icon?: string | null;\n    iconColor?: string | null;\n    duration?: number;\n    showActions?: boolean;\n    secondaryActionText?: string | null;\n    primaryActionText?: string | null;\n  }) {\n    this._twNotification.show({\n      title,\n      type,\n      text: description,\n      autoCloseTimeout: duration,\n    });\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'tw-icon',\n  template: `<ng-content></ng-content>`,\n  styles: [\n    `\n      :host {\n        display: block;\n        width: var(--c-icon-width) !important;\n        height: var(--c-icon-height) !important;\n        min-width: var(--c-icon-width) !important;\n        min-height: var(--c-icon-height) !important;\n      }\n      :host svg {\n        width: var(--c-icon-width) !important;\n        height: var(--c-icon-height) !important;\n        min-width: var(--c-icon-width) !important;\n        min-height: var(--c-icon-height) !important;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TwIcon implements AfterViewInit, OnDestroy {\n  private static ICON_REGISTRY = new Map<string, string>();\n  private _retrievalSubscription$?: Subscription;\n  private _svgIcon?: string;\n  private _size = 20;\n\n  @Input() set size(value: number) {\n    this._size = value;\n    this._setStyles();\n  }\n  get size() {\n    return this._size;\n  }\n\n  @Input() set svgIcon(value: string | undefined) {\n    this._svgIcon = value;\n    this._setIcon();\n  }\n  get svgIcon() {\n    return this._svgIcon!;\n  }\n\n  constructor(\n    private readonly _host: ElementRef<HTMLElement>,\n    private readonly _httpClient: HttpClient\n  ) {}\n\n  ngAfterViewInit(): void {\n    const nativeElement = this._host.nativeElement;\n\n    if (!nativeElement) return;\n\n    this._setStyles();\n\n    if (!this.svgIcon) this.svgIcon = nativeElement.innerHTML;\n\n    this._setIcon();\n  }\n\n  private _setStyles() {\n    const nativeElement = this._host.nativeElement;\n\n    if (!nativeElement) return;\n\n    nativeElement.style.setProperty('--c-icon-width', this.size + 'px');\n    nativeElement.style.setProperty('--c-icon-height', this.size + 'px');\n  }\n\n  private _setIcon() {\n    const iconName = this.svgIcon;\n\n    const nativeElement = this._host.nativeElement;\n\n    if (!nativeElement) return;\n\n    if (!iconName) throw new Error('tw-icon: invalid icon-name ' + iconName);\n\n    const [namespace, name] = iconName.split(':');\n\n    if (!namespace || !name)\n      throw new Error(\n        'tw-icon: Could not determine icon namespace and name from ' + iconName\n      );\n\n    if (!TwIcon.ICON_REGISTRY.has(iconName)) {\n      this._retriveIcon(nativeElement, iconName, namespace, name);\n    } else {\n      const icon = TwIcon.ICON_REGISTRY.get(iconName)!;\n      nativeElement.innerHTML = icon;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._retrievalSubscription$?.unsubscribe();\n  }\n\n  private _retriveIcon(\n    elt: Element,\n    iconName: string,\n    namespace: string,\n    name: string\n  ) {\n    this._retrievalSubscription$ = this._httpClient\n      .get<string>(`/assets/icons/${namespace}/${name}.svg`, {\n        responseType: 'text' as any,\n      })\n      .subscribe((v) => {\n        TwIcon.ICON_REGISTRY.set(iconName, v);\n        elt.innerHTML = v;\n        const svg = elt.firstElementChild as SVGElement;\n        svg.classList.value = '';\n        svg.style.cssText = `width: ${this.size}px!important; height: ${this.size}px!important;`;\n      });\n  }\n}\n","import { TextFieldModule } from '@angular/cdk/text-field';\nimport { NgClass } from '@angular/common';\nimport { Component, Input, Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { ColorTypes } from '../color-types';\nimport { TwIcon } from '../icon/icon.component';\nimport { InputField, InputTypes } from './input-field-interface';\n\n@Component({\n  imports: [TwIcon, NgClass, FormsModule, TextFieldModule],\n  selector: 'tw-input-field',\n  host: {\n    class: 'tw-input-wrapper',\n  },\n  templateUrl: './input-field.component.html',\n  providers: [],\n})\nexport class TwInputField implements ControlValueAccessor, InputField {\n  @Input() iconSuffix?: string;\n  @Input() iconSuffixClass?: string;\n  @Input() iconPrefix?: string;\n  @Input() iconPrefixClass?: string;\n  @Input() twClass?: string;\n  @Input() name: string = '';\n  @Input() label: string = '';\n\n  @Input() value?: string = '';\n  @Input() maxLength?: number;\n  @Input() minLength?: number;\n  @Input() required: string | boolean = false;\n  @Input() pattern: string | RegExp = '';\n  @Input() placeholder: string = '';\n  @Input() disabled = false;\n  @Input() inputType: InputTypes = 'text';\n  @Input() color?: ColorTypes;\n  @Input() showLabel: boolean = true;\n  @Input() multiline: boolean = false;\n\n  private _onChangeFns: any[] = [];\n  private _onTouchedFns: any[] = [];\n\n  get errors() {\n    return this._ngControl?.dirty && this._ngControl?.errors\n      ? Object.keys(this._ngControl.errors)\n          .filter((e) => e !== 'required')\n          .join('.\\n')\n      : null;\n  }\n\n  constructor(@Self() @Optional() private readonly _ngControl?: NgControl) {\n    if (this._ngControl) {\n      this._ngControl.valueAccessor = this;\n    }\n  }\n  writeValue(obj: any): void {\n    this.value = obj || '';\n  }\n  registerOnChange(fn: any): void {\n    if (fn) this._onChangeFns.push(fn);\n  }\n  registerOnTouched(fn: any): void {\n    if (fn) this._onTouchedFns.push(fn);\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  ngOnInit(): void {}\n\n  onChange(event: Event) {\n    const value = (event as any).target.value;\n    this._onChangeFns?.forEach((fn) => fn(value));\n    this._onTouchedFns?.forEach((fn) => fn(value));\n  }\n}\n","<div class=\"flex flex-col gap-2\">\n  @if (showLabel) {\n    <label\n      [for]=\"name\"\n      class=\"font-semibold\"\n    >{{label || placeholder}}</label>\n  }\n  <div class=\"relative flex items-center w-full\">\n    @if (iconPrefix) {\n      <span\n        class=\"absolute ml-2\"\n        >\n        <tw-icon\n          class=\"text-gray-400 {{ iconPrefixClass }}\"\n          [svgIcon]=\"iconPrefix\"\n          />\n      </span>\n    }\n\n    @if (multiline) {\n      <textarea\n        cdkTextareaAutosize\n        cdkAutosizeMinRows=\"3\"\n        cdkAutosizeMaxRows=\"7\"\n        [title]=\"placeholder\"\n        [placeholder]=\"placeholder\"\n        [(ngModel)]=\"value\"\n        [disabled]=\"disabled\"\n        [attr.maxLength]=\"maxLength\"\n        [attr.minLength]=\"minLength\"\n        [required]=\"required\"\n        [name]=\"name\"\n        [pattern]=\"pattern\"\n        (input)=\"onChange($event)\"\n        class=\"tw-input-field w-full {{ color }} {{twClass}}\"\n      [ngClass]=\"{\n      'icon-left': iconPrefix && !iconSuffix,\n      'icon-right': iconSuffix && !iconPrefix,\n      'icon-left-right': iconSuffix && iconPrefix\n    }\"\n      ></textarea>\n      }@else {\n      <input\n        [title]=\"placeholder\"\n        [type]=\"inputType\"\n        [placeholder]=\"placeholder\"\n        [value]=\"value\"\n        [disabled]=\"disabled\"\n        [attr.maxLength]=\"maxLength\"\n        [attr.minLength]=\"minLength\"\n        [required]=\"required\"\n        [name]=\"name\"\n        [pattern]=\"pattern\"\n        (input)=\"onChange($event)\"\n        class=\"tw-input-field w-full {{ color }} {{twClass}}\"\n      [ngClass]=\"{\n        'icon-left': iconPrefix && !iconSuffix,\n        'icon-right': iconSuffix && !iconPrefix,\n        'icon-left-right': iconSuffix && iconPrefix\n      }\"\n        />\n\n    }\n\n\n    @if (iconSuffix) {\n      <span\n        class=\"absolute mr-2 right-0\"\n        >\n        <tw-icon\n          class=\"text-gray-400 {{ iconSuffixClass }}\"\n          [svgIcon]=\"iconSuffix\"\n          />\n      </span>\n    }\n  </div>\n  @if (errors) {\n    <span class=\"bg-red-100 text-red-900 rounded-lg shadow-sm px-2 py-1 text-sm\">{{errors}}</span>\n  }\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'tw-spinner',\n  standalone: true,\n  template: `\n    <svg\n      class=\"animate-spin -ml-1 mr-3 h-5 w-5 {{ color }}\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n    >\n      <circle\n        class=\"opacity-25\"\n        cx=\"12\"\n        cy=\"12\"\n        r=\"10\"\n        stroke=\"currentColor\"\n        stroke-width=\"4\"\n      ></circle>\n      <path\n        class=\"opacity-75\"\n        fill=\"currentColor\"\n        d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class TwSpinner {\n  @Input() color?: string = '';\n}\n","export const HTML_EVENTS = [\n  'abort',\n  'afterprint',\n  'animationend',\n  'animationiteration',\n  'animationstart',\n  'beforeprint',\n  'beforeunload',\n  'blur',\n  'canplay',\n  'canplaythrough',\n  'change',\n  'click',\n  'contextmenu',\n  'copy',\n  'cut',\n  'dblclick',\n  'DOMContentLoaded',\n  'drag',\n  'dragend',\n  'dragenter',\n  'dragleave',\n  'dragover',\n  'dragstart',\n  'drop',\n  'durationchange',\n  'ended',\n  'error',\n  'focus',\n  'focusin',\n  'focusout',\n  'fullscreenchange',\n  'fullscreenerror',\n  'hashchange',\n  'input',\n  'invalid',\n  'keydown',\n  'keypress',\n  'keyup',\n  'load',\n  'loadeddata',\n  'loadedmetadata',\n  'loadstart',\n  'message',\n  'mousedown',\n  'mouseenter',\n  'mouseleave',\n  'mousemove',\n  'mouseover',\n  'mouseout',\n  'mouseup',\n  'offline',\n  'online',\n  'open',\n  'pagehide',\n  'pageshow',\n  'paste',\n  'pause',\n  'play',\n  'playing',\n  'popstate',\n  'progress',\n  'ratechange',\n  'resize',\n  'reset',\n  'scroll',\n  'search',\n  'seeked',\n  'seeking',\n  'select',\n  'show',\n  'stalled',\n  'storage',\n  'submit',\n  'suspend',\n  'timeupdate',\n  'toggle',\n  'touchcancel',\n  'touchend',\n  'touchmove',\n  'touchstart',\n  'transitionend',\n  'unload',\n  'volumechange',\n  'waiting',\n  'wheel',\n];\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { EventEmitter } from '@angular/core';\nimport { HTML_EVENTS } from './html-events';\n\nexport class TwElement {\n  bindEvents(element: HTMLElement, component: any) {\n    HTML_EVENTS.forEach((ev) => {\n      if (component[ev] && component[ev] instanceof EventEmitter) {\n        element.addEventListener(ev, (event) => component[ev].emit(event));\n      }\n    });\n  }\n}\n\nexport const OverlayPositions: ConnectedPosition[] = [\n  {\n    originX: 'start',\n    originY: 'bottom',\n    overlayX: 'start',\n    overlayY: 'top',\n    offsetY: 8,\n  },\n  {\n    originX: 'end',\n    originY: 'bottom',\n    overlayX: 'end',\n    overlayY: 'top',\n    offsetY: 8,\n  },\n  {\n    originX: 'start',\n    originY: 'top',\n    overlayX: 'start',\n    overlayY: 'bottom',\n    offsetY: -8,\n  },\n  {\n    originX: 'end',\n    originY: 'top',\n    overlayX: 'end',\n    overlayY: 'bottom',\n    offsetY: -8,\n  },\n];\n","import {\n  debounceTime,\n  filter,\n  isObservable,\n  map,\n  Observable,\n  of,\n  switchMap,\n  tap,\n} from 'rxjs';\n\nexport type SuggestionsType<T> =\n  | T[]\n  | Observable<T[]>\n  | ((searchTerm: string, item?: T) => Observable<T[]>)\n  | ((searchTerm: string, item?: T) => T[]);\n\nfunction isFunction(value: any): value is (...args: any[]) => any {\n  return typeof value === 'function';\n}\n\nexport class AutoCompleteManager<T> {\n  filteredSuggestions: T[] = [];\n  filterFn: (value: string, item: T) => boolean = (value: string, item: T) =>\n    this.getDisplayText(item).toLowerCase().includes(value.toLowerCase());\n\n  displayFactory: ((item: T) => { key: string; text: string }) | undefined =\n    void 0;\n\n  isOpen = false;\n\n  disabled = false;\n\n  suggestionsLoading = false;\n\n  private _suggestions: SuggestionsType<T> = [];\n\n  set suggestions(value: SuggestionsType<T>) {\n    this._suggestions = value;\n  }\n\n  get suggestions() {\n    return this._suggestions;\n  }\n\n  constructor(private valueChangeObservable: Observable<string | null>) {}\n\n  init(): void {\n    this.valueChangeObservable\n      .pipe(\n        debounceTime(300),\n        tap((v) => (v?.length === 0 ? this.closeDropdown() : void 0)),\n        filter((value) => !!value && value.length >= 1),\n        tap(() => ((this.suggestionsLoading = true), this.openDropdown())),\n        switchMap((value) => this.filterSuggestions(value!))\n      )\n      .subscribe((filtered) => {\n        this.suggestionsLoading = false;\n        this.filteredSuggestions = filtered;\n      });\n  }\n\n  filterSuggestions(value: string): Observable<T[]> {\n    const filterObs = (obs: Observable<T[]>) =>\n      obs.pipe(\n        map((suggestions) => suggestions.filter((s) => this.filterFn(value, s)))\n      );\n\n    const resolveObs = (fn: (searchTerm: string) => Observable<T[]> | T[]) => {\n      const result = fn(value);\n      return isObservable(result) ? result : of(result);\n    };\n\n    const suggestionsArray$ = isObservable(this._suggestions)\n      ? filterObs(this._suggestions)\n      : isFunction(this._suggestions)\n      ? resolveObs(this._suggestions)\n      : of(this._suggestions.filter((s) => this.filterFn(value, s)));\n\n    return suggestionsArray$;\n  }\n\n  getDisplayText(item: any): string {\n    if (this.displayFactory) {\n      return this.displayFactory(item).text;\n    }\n    return typeof item === 'string' ? item : JSON.stringify(item);\n  }\n\n  openDropdown() {\n    if (this.disabled === true) return;\n\n    this.isOpen = true;\n  }\n\n  closeDropdown() {\n    this.isOpen = false;\n  }\n\n  selectSuggestion(suggestion: any) {\n    if (!this.filteredSuggestions.find((item) => item === suggestion)) {\n      return false;\n    }\n    this.closeDropdown();\n    return true;\n  }\n}\n","import {\n  BlockScrollStrategy,\n  CdkConnectedOverlay,\n  ConnectedPosition,\n  Overlay,\n} from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validator,\n  Validators,\n} from '@angular/forms';\nimport { ColorTypes } from '../color-types';\nimport { InputField, InputTypes } from '../input-field/input-field-interface';\nimport { TwInputField } from '../input-field/input-field.component';\nimport { TwSpinner } from '../spinner/spinner.component';\nimport { OverlayPositions } from '../TwElement';\nimport { AutoCompleteManager, SuggestionsType } from './autocomplete-manager';\n\n@Component({\n  selector: 'tw-autocomplete',\n  imports: [\n    ReactiveFormsModule,\n    CommonModule,\n    CdkConnectedOverlay,\n    TwInputField,\n    TwSpinner,\n  ],\n  templateUrl: './autocomplete.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TwAutocomplete),\n      multi: true,\n    },\n  ],\n})\nexport class TwAutocomplete<T = any>\n  implements\n    OnInit,\n    AfterViewInit,\n    OnDestroy,\n    ControlValueAccessor,\n    Validator,\n    InputField\n{\n  @Input() iconSuffix?: string;\n  @Input() iconSuffixClass?: string;\n  @Input() iconPrefix?: string;\n  @Input() iconPrefixClass?: string;\n  @Input() twClass?: string;\n  @Input() name: string = '';\n  @Input() label: string = '';\n\n  @Input() set maxLength(value: number | undefined) {\n    this._maxLength = value;\n    if (this.searchControl) {\n      this.updateValidators();\n    }\n  }\n  get maxLength() {\n    return this._maxLength;\n  }\n  private _maxLength?: number;\n\n  @Input() set minLength(value: number | undefined) {\n    this._minLength = value;\n    if (this.searchControl) {\n      this.updateValidators();\n    }\n  }\n  get minLength() {\n    return this._minLength;\n  }\n  private _minLength?: number;\n  @Input() set required(value: string | boolean) {\n    this._required = value;\n    if (this.searchControl) {\n      this.updateValidators();\n    }\n  }\n  get required() {\n    return this._required;\n  }\n  private _required: string | boolean = false;\n\n  @Input() set pattern(value: string | RegExp) {\n    this._pattern = value;\n    if (this.searchControl) {\n      this.updateValidators();\n    }\n  }\n  get pattern() {\n    return this._pattern;\n  }\n  private _pattern: string | RegExp = '';\n  @Input() placeholder: string = '';\n  @Input() set disabled(value: boolean) {\n    if (value) this.searchControl.disable();\n    else this.searchControl.enable();\n  }\n  get disabled() {\n    return this.searchControl.disabled;\n  }\n  @Input() inputType: InputTypes = 'text';\n  @Input() color?: ColorTypes;\n  @Input() showLabel: boolean = true;\n  multiline = false;\n\n  _value?: T;\n  @Input() get value() {\n    return this._value;\n  }\n\n  set value(val: T | undefined) {\n    this._value = val;\n    this.searchControl.setValue(this.autoCompleteManager.getDisplayText(val), {\n      emitEvent: false,\n    });\n  }\n\n  private _minFieldSize: number = 0;\n  private resizeObserver?: ResizeObserver;\n\n  @Input() set suggestions(value: SuggestionsType<T>) {\n    this.autoCompleteManager.suggestions = value;\n  }\n  get suggestions() {\n    return this.autoCompleteManager.suggestions;\n  }\n\n  get suggestionsLoading() {\n    return this.autoCompleteManager.suggestionsLoading;\n  }\n\n  @Input() set displayFactory(\n    value: ((item: any) => { key: string; text: string }) | undefined\n  ) {\n    this.autoCompleteManager.displayFactory = value;\n  }\n\n  get displayFactory() {\n    return this.autoCompleteManager.displayFactory;\n  }\n\n  @Input() optionTemplate: TemplateRef<any> | null = null;\n\n  @Input() set filterFn(fn: (value: string, item: any) => boolean) {\n    this.autoCompleteManager.filterFn = fn;\n  }\n\n  get filterFn() {\n    return this.autoCompleteManager.filterFn;\n  }\n\n  get minFieldSize() {\n    return this._minFieldSize;\n  }\n\n  @Output() selectionChanged: EventEmitter<any> = new EventEmitter<any>();\n\n  searchControl = new FormControl<string>('');\n  get filteredSuggestions() {\n    return this.autoCompleteManager.filteredSuggestions;\n  }\n\n  blockScrollStrategy: BlockScrollStrategy;\n\n  positions: ConnectedPosition[] = OverlayPositions;\n\n  onChange: ((value: any) => void)[] = [];\n  onTouched: (() => void)[] = [];\n\n  autoCompleteManager = new AutoCompleteManager<T>(\n    this.searchControl.valueChanges\n  );\n\n  constructor(\n    public elementRef: ElementRef,\n    private overlay: Overlay,\n    private cdr: ChangeDetectorRef\n  ) {\n    this.blockScrollStrategy = this.overlay.scrollStrategies.block();\n  }\n\n  ngOnInit(): void {\n    this.updateValidators();\n  }\n\n  ngAfterViewInit(): void {\n    // Initialize the offset width\n    this._minFieldSize = this.elementRef.nativeElement.offsetWidth;\n\n    // Set up ResizeObserver to watch for size changes\n    if (typeof ResizeObserver !== 'undefined') {\n      this.resizeObserver = new ResizeObserver((entries) => {\n        for (const entry of entries) {\n          this._minFieldSize = entry.contentRect.width;\n          this.cdr.detectChanges();\n        }\n      });\n      this.resizeObserver.observe(this.elementRef.nativeElement);\n    }\n\n    this.autoCompleteManager.init();\n  }\n\n  ngOnDestroy(): void {\n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n    }\n  }\n\n  updateValidators(): void {\n    const validators = [];\n\n    if (this.required) {\n      validators.push(Validators.required);\n    }\n\n    if (this.minLength !== undefined) {\n      validators.push(Validators.minLength(this.minLength));\n    }\n\n    if (this.maxLength !== undefined) {\n      validators.push(Validators.maxLength(this.maxLength));\n    }\n\n    if (this.pattern) {\n      validators.push(Validators.pattern(this.pattern));\n    }\n\n    this.searchControl.setValidators(validators);\n    this.searchControl.updateValueAndValidity({\n      emitEvent: false,\n    });\n  }\n\n  validate(control: AbstractControl): ValidationErrors | null {\n    if (!this.searchControl) {\n      return null;\n    }\n\n    // If the component is disabled, it's valid\n    if (this.disabled) {\n      return null;\n    }\n\n    // Return the validation errors from the internal search control\n    return this.searchControl.errors;\n  }\n\n  selectSuggestion(suggestion: any) {\n    const value = this.autoCompleteManager.getDisplayText(suggestion);\n    this.searchControl.setValue(value, {\n      emitEvent: false,\n    });\n    this.propagateOnchange(suggestion);\n    this.autoCompleteManager.closeDropdown();\n  }\n\n  writeValue(value: any): void {\n    this._value = value;\n    this.searchControl.setValue(\n      this.autoCompleteManager.getDisplayText(value),\n      {\n        emitEvent: false,\n      }\n    );\n  }\n\n  propagateOnchange(value: any) {\n    this.onChange.forEach((fn) => fn(value));\n    this.selectionChanged.emit(value);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange.push(fn);\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched.push(fn);\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<div class=\"relative w-full max-w-sm\">\n  <tw-input-field\n    [formControl]=\"searchControl\"\n    (focus)=\"autoCompleteManager.isOpen = filteredSuggestions.length > 0\"\n    [iconSuffix]=\"iconSuffix\"\n    [iconSuffixClass]=\"iconSuffixClass\"\n    [iconPrefix]=\"iconPrefix\"\n    [iconPrefixClass]=\"iconPrefixClass\"\n    [twClass]=\"twClass\"\n    [name]=\"name\"\n    [label]=\"label\"\n    [maxLength]=\"maxLength\"\n    [minLength]=\"minLength\"\n    [required]=\"required\"\n    [pattern]=\"pattern\"\n    [placeholder]=\"placeholder\"\n    [inputType]=\"inputType\"\n    [color]=\"color\"\n    [showLabel]=\"showLabel\"\n    [multiline]=\"multiline\"\n  />\n  <!-- Dropdown Suggestions -->\n  <ng-template\n    cdkConnectedOverlay\n    [cdkConnectedOverlayHasBackdrop]=\"true\"\n    [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n    [cdkConnectedOverlayOrigin]=\"elementRef.nativeElement.firstElementChild\"\n    [cdkConnectedOverlayOpen]=\"autoCompleteManager.isOpen\"\n    [cdkConnectedOverlayPositions]=\"positions\"\n    cdkConnectedOverlayMinWidth=\"100px\"\n    [cdkConnectedOverlayScrollStrategy]=\"blockScrollStrategy\"\n    (backdropClick)=\"autoCompleteManager.closeDropdown()\"\n    (detach)=\"autoCompleteManager.closeDropdown()\"\n  >\n    <div class=\"w-full mt-1 bg-white border border-gray-200 rounded-lg shadow-lg max-h-60 overflow-y-auto\">\n      @if(!suggestionsLoading){\n      @if (filteredSuggestions.length > 0) {\n      <ul>\n        @for (suggestion of filteredSuggestions; track $index) {\n        <li\n          (click)=\"selectSuggestion(suggestion)\"\n          class=\"p-2 tw-option\"\n        >\n          @if (optionTemplate) {\n          <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: suggestion }\"></ng-container>\n\n          }@else {\n          <ng-container>{{ autoCompleteManager.getDisplayText(suggestion) }}</ng-container>\n          }\n        </li>\n        }\n      </ul>\n      }\n      @else{\n      <div class=\"p-2 text-gray-500\">\n        No suggestions found.\n      </div>\n      }\n      }@else {\n      <div class=\"flex justify-center p-4\">\n        <tw-spinner></tw-spinner>\n      </div>\n      }\n    </div>\n  </ng-template>\n</div>","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'tw-btn-group-item',\n  standalone: true,\n  template: `<ng-template>\n    <ng-content></ng-content>\n  </ng-template>`,\n})\nexport class TwButtonGroupItem {\n  @Input() value: any;\n  @Input() disabled: boolean = false;\n  @ViewChild(TemplateRef, { static: true }) content: TemplateRef<any> | null =\n    null;\n  constructor() {}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport { TwButtonGroupItem } from './button-group-Item.component';\n\n@Component({\n    imports: [NgTemplateOutlet],\n    selector: 'tw-btn-group',\n    template: ` <div class=\"tw-button-group {{ orientation }}\">\n      @for (item of children; track item; let i = $index) {\n        <button\n          class=\"tw-button-group-item\"\n          [disabled]=\"item.disabled\"\n          [class.selected-item]=\"selectedIndex === i\"\n          (click)=\"changeSelection(i, item.value)\"\n          >\n          <ng-container [ngTemplateOutlet]=\"item.content\"></ng-container>\n        </button>\n      }\n    </div>`\n})\nexport class TwButtonGroup implements AfterViewInit {\n  @ContentChildren(TwButtonGroupItem)\n  children?: QueryList<TwButtonGroupItem>;\n\n  @Output() selectedIndexChange = new EventEmitter<number>();\n\n  @Output() itemSelected = new EventEmitter<{\n    selectedIndex: number;\n    selectedValue: any;\n  }>();\n  @Input() selectedIndex: number = -1;\n\n  @Input() orientation: 'vertical' | 'horizontal' = 'horizontal';\n\n  constructor() {}\n\n  ngAfterViewInit(): void {\n  }\n\n  changeSelection(index: number, value: any): void {\n    this.itemSelected.emit({\n      selectedIndex: index,\n      selectedValue: value,\n    });\n    this.selectedIndexChange.emit(index);\n    this.selectedIndex = index;\n  }\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ColorTypes } from '../color-types';\nimport { TwIcon } from '../icon/icon.component';\nimport { ButtonType, TwButtonInterface } from './button-interface';\n\n@Component({\n    imports: [NgClass, TwIcon],\n    selector: 'tw-button-icon',\n    template: `\n    @if(href){\n    <a\n      class=\"tw-button-icon {{ twClass }} {{ type }} {{ color }}\"\n      [href]=\"href\"\n      [target]=\"target\"\n      [attr.title]=\"title\"\n      [ariaDisabled]=\"disabled\"\n    >\n      <tw-icon [svgIcon]=\"svgIcon\" [size]=\"svgIconSize\" />\n    </a>\n\n    }@else {\n    <button\n      class=\"tw-button-icon {{ twClass }} {{ type }} {{ color }}\"\n      [type]=\"isSubmit ? 'submit' : 'button'\"\n      [attr.title]=\"title\"\n      [disabled]=\"disabled\"\n      [ariaDisabled]=\"disabled\"\n    >\n      <tw-icon [svgIcon]=\"svgIcon\" [size]=\"svgIconSize\" />\n    </button>\n\n    }\n  `\n})\nexport class TwButtonIcon implements OnInit, TwButtonInterface {\n  @Input() type?: ButtonType = 'basic';\n  @Input() color?: ColorTypes;\n  @Input() isSubmit?: boolean;\n  @Input({ alias: 'class' }) twClass?: string;\n  @Input() disabled?: boolean;\n  @Input() title?: string = '';\n  @Input() svgIcon?: string;\n  @Input() svgIconSize = 20;\n  @Input() href?: string;\n  @Input() target?: string;\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","import { Component, Input } from '@angular/core';\nimport { ColorTypes } from '../color-types';\nimport {\n  ButtonType,\n  RoundedTypes,\n  TwButtonInterface,\n} from './button-interface';\n\n@Component({\n  selector: 'tw-button',\n  host: {\n    role: 'button',\n    '[attr.type]': 'isSubmit ? \"submit\" : \"button\"',\n    class: 'inline-block w-auto',\n  },\n  template: `\n    <button\n      class=\"tw-button w-full {{ twClass }} {{ type }} rounded-{{ rounded }} {{\n        color\n      }}\"\n      [type]=\"isSubmit ? 'submit' : 'button'\"\n      [disabled]=\"disabled\"\n    >\n      <ng-content></ng-content>\n    </button>\n  `,\n})\nexport class TwButton implements TwButtonInterface {\n  @Input() type?: ButtonType = 'basic';\n  @Input() isSubmit?: boolean;\n  @Input() rounded?: RoundedTypes = 'md';\n  @Input() disabled?: boolean;\n  @Input() color?: ColorTypes;\n  @Input() twClass?: string;\n  @Input() title?: string;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TwButtonIcon } from '../button/button-icon.component';\n\nexport interface CalendarDate {\n  date: Date;\n  isCurrentMonth: boolean;\n  isToday: boolean;\n  isSelected: boolean;\n  isInRange: boolean;\n  isRangeStart: boolean;\n  isRangeEnd: boolean;\n  isDisabled: boolean;\n}\n\n@Component({\n    selector: 'tw-calendar',\n    templateUrl: './calendar.component.html',\n    imports: [CommonModule, FormsModule, TwButtonIcon]\n})\nexport class TwCalendar implements OnInit, OnChanges {\n  @Input() selectedDate: Date | null = null;\n  @Input() rangeStart: Date | null = null;\n  @Input() rangeEnd: Date | null = null;\n  @Input() minDate: Date | null = null;\n  @Input() maxDate: Date | null = null;\n  @Input() isRange = false;\n  @Input() displayDate: Date = new Date();\n\n  @Output() dateSelected = new EventEmitter<Date>();\n  @Output() rangeSelected = new EventEmitter<{\n    start: Date;\n    end: Date | null;\n  }>();\n\n  currentDate = new Date();\n  calendarDates: CalendarDate[] = [];\n\n  viewMode: 'days' | 'months' | 'years' = 'days';\n  years: number[] = [];\n  yearRangeStart = 0;\n\n  weekdays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n  months = [\n    'Jan',\n    'Feb',\n    'Mar',\n    'Apr',\n    'May',\n    'Jun',\n    'Jul',\n    'Aug',\n    'Sep',\n    'Oct',\n    'Nov',\n    'Dec',\n  ];\n\n  get currentMonthName(): string {\n    return this.months[this.displayDate.getMonth()];\n  }\n\n  get currentYear(): number {\n    return this.displayDate.getFullYear();\n  }\n\n  ngOnInit(): void {\n    if (this.selectedDate && !this.displayDate) {\n      this.displayDate = new Date(this.selectedDate);\n    }\n    this.generateCalendarDates();\n    this.generateYearRange();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['displayDate'] && !changes['displayDate'].firstChange) {\n      this.generateCalendarDates();\n    }\n\n    if (\n      (changes['rangeStart'] || changes['rangeEnd']) &&\n      (!changes['rangeStart']?.firstChange || !changes['rangeEnd']?.firstChange)\n    ) {\n      this.generateCalendarDates();\n    }\n  }\n\n  generateCalendarDates(): void {\n    this.calendarDates = [];\n\n    const year = this.displayDate.getFullYear();\n    const month = this.displayDate.getMonth();\n\n    // First day of the month\n    const firstDay = new Date(year, month, 1);\n    // Last day of the month\n    const lastDay = new Date(year, month + 1, 0);\n\n    // Get day of week for first day (0 is Sunday in JS)\n    let firstDayOfWeek = firstDay.getDay();\n    // Convert to Monday-based (0 is Monday)\n    firstDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n\n    // Fill in days from previous month\n    const prevMonthLastDay = new Date(year, month, 0).getDate();\n    for (let i = firstDayOfWeek - 1; i >= 0; i--) {\n      const date = new Date(year, month - 1, prevMonthLastDay - i);\n      this.calendarDates.push(this.createCalendarDate(date, false));\n    }\n\n    // Fill in days of current month\n    for (let i = 1; i <= lastDay.getDate(); i++) {\n      const date = new Date(year, month, i);\n      this.calendarDates.push(this.createCalendarDate(date, true));\n    }\n\n    // Fill in days from next month\n    const remainingDays = 42 - this.calendarDates.length; // 6 rows * 7 days\n    for (let i = 1; i <= remainingDays; i++) {\n      const date = new Date(year, month + 1, i);\n      this.calendarDates.push(this.createCalendarDate(date, false));\n    }\n  }\n\n  createCalendarDate(date: Date, isCurrentMonth: boolean): CalendarDate {\n    const today = new Date();\n    const isToday =\n      date.getDate() === today.getDate() &&\n      date.getMonth() === today.getMonth() &&\n      date.getFullYear() === today.getFullYear();\n\n    let isInRange = false;\n    let isRangeStart = false;\n    let isRangeEnd = false;\n\n    // Handle range selection - even when end date is not selected yet\n    if (this.isRange && this.rangeStart) {\n      if (this.rangeEnd) {\n        // Complete range\n        isInRange = date >= this.rangeStart && date <= this.rangeEnd;\n        isRangeStart =\n          date.getTime() === this.getStartOfDay(this.rangeStart).getTime();\n        isRangeEnd =\n          date.getTime() === this.getStartOfDay(this.rangeEnd).getTime();\n      } else {\n        // Only start date selected - highlight it\n        isRangeStart =\n          date.getTime() === this.getStartOfDay(this.rangeStart).getTime();\n        isInRange = isRangeStart; // Make sure it's highlighted\n      }\n    }\n\n    const isSelected = this.selectedDate\n      ? date.getTime() === this.getStartOfDay(this.selectedDate).getTime()\n      : false;\n\n    const isDisabled = this.isDateDisabled(date);\n\n    return {\n      date,\n      isCurrentMonth,\n      isToday,\n      isSelected,\n      isInRange,\n      isRangeStart,\n      isRangeEnd,\n      isDisabled,\n    };\n  }\n\n  isDateDisabled(date: Date): boolean {\n    if (this.minDate && date < this.getStartOfDay(this.minDate)) {\n      return true;\n    }\n    if (this.maxDate && date > this.getEndOfDay(this.maxDate)) {\n      return true;\n    }\n    return false;\n  }\n\n  getStartOfDay(date: Date): Date {\n    const newDate = new Date(date);\n    newDate.setHours(0, 0, 0, 0);\n    return newDate;\n  }\n\n  getEndOfDay(date: Date): Date {\n    const newDate = new Date(date);\n    newDate.setHours(23, 59, 59, 999);\n    return newDate;\n  }\n\n  selectDate(date: CalendarDate): void {\n    if (date.isDisabled) {\n      return;\n    }\n\n    if (!this.isRange) {\n      this.selectedDate = new Date(date.date);\n      this.dateSelected.emit(this.selectedDate);\n      date.isSelected = true;\n      this.unSelectAllOtherDates(date);\n      return;\n    }\n\n    // Range selection logic\n    if (!this.rangeStart || (this.rangeStart && this.rangeEnd)) {\n      // Start new range\n      this.rangeStart = new Date(date.date);\n      this.rangeEnd = null;\n      // Emit the event for the start date\n      this.rangeSelected.emit({\n        start: this.rangeStart,\n        end: this.rangeEnd,\n      });\n    } else {\n      // Complete the range\n      if (date.date < this.rangeStart) {\n        this.rangeEnd = new Date(this.rangeStart);\n        this.rangeStart = new Date(date.date);\n      } else {\n        this.rangeEnd = new Date(date.date);\n      }\n\n      if (this.rangeStart && this.rangeEnd) {\n        this.rangeSelected.emit({\n          start: this.rangeStart,\n          end: this.rangeEnd,\n        });\n      }\n    }\n\n    // Always emit the selected date (for calendar month navigation)\n    this.dateSelected.emit(date.date);\n\n    this.generateCalendarDates();\n  }\n\n  unSelectAllOtherDates(date: CalendarDate) {\n    this.calendarDates.forEach((d) => {\n      if (d !== date) {\n        d.isSelected = false;\n        d.isInRange = false;\n        d.isRangeStart = false;\n        d.isRangeEnd = false;\n      }\n    });\n  }\n\n  changeMonth(delta: number): void {\n    this.displayDate.setMonth(this.displayDate.getMonth() + delta);\n    this.generateCalendarDates();\n    this.dateSelected.emit(new Date(this.displayDate));\n  }\n\n  changeYear(delta: number): void {\n    this.displayDate.setFullYear(this.displayDate.getFullYear() + delta);\n    this.generateCalendarDates();\n    this.generateYearRange();\n    this.dateSelected.emit(new Date(this.displayDate));\n  }\n\n  switchView(mode: 'days' | 'months' | 'years'): void {\n    this.viewMode = mode;\n    if (mode === 'years') {\n      this.generateYearRange();\n    }\n  }\n\n  generateYearRange(): void {\n    const currentYear = this.displayDate.getFullYear();\n    this.yearRangeStart = Math.floor(currentYear / 10) * 10;\n\n    this.years = [];\n    for (let i = 0; i < 12; i++) {\n      this.years.push(this.yearRangeStart + i);\n    }\n  }\n\n  isYearDisabled(year: number): boolean {\n    if (!this.minDate && !this.maxDate) {\n      return false;\n    }\n\n    // Check if the entire year is before minDate\n    if (this.minDate && year < this.minDate.getFullYear()) {\n      return true;\n    }\n\n    // Check if the entire year is after maxDate\n    if (this.maxDate && year > this.maxDate.getFullYear()) {\n      return true;\n    }\n\n    return false;\n  }\n\n  isMonthDisabled(monthIndex: number): boolean {\n    if (!this.minDate && !this.maxDate) {\n      return false;\n    }\n\n    const year = this.displayDate.getFullYear();\n\n    // Create date for first day of the month\n    const firstDayOfMonth = new Date(year, monthIndex, 1);\n    // Create date for last day of the month\n    const lastDayOfMonth = new Date(year, monthIndex + 1, 0);\n\n    // Check if the entire month is before minDate\n    if (this.minDate && lastDayOfMonth < this.getStartOfDay(this.minDate)) {\n      return true;\n    }\n\n    // Check if the entire month is after maxDate\n    if (this.maxDate && firstDayOfMonth > this.getEndOfDay(this.maxDate)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  selectMonth(monthIndex: number): void {\n    this.displayDate.setMonth(monthIndex);\n    this.viewMode = 'days';\n    this.generateCalendarDates();\n    this.dateSelected.emit(new Date(this.displayDate));\n  }\n\n  selectYear(year: number): void {\n    this.displayDate.setFullYear(year);\n    this.viewMode = 'months';\n    this.generateCalendarDates();\n    this.dateSelected.emit(new Date(this.displayDate));\n  }\n\n  changeYearRange(delta: number): void {\n    this.yearRangeStart += delta * 10;\n    this.generateYearRange();\n  }\n\n  // Check if previous month button should be disabled\n  isPrevMonthDisabled(): boolean {\n    if (!this.minDate) {\n      return false;\n    }\n\n    // Create a copy of current display date set to first day of month\n    const firstDayOfCurrentMonth = new Date(\n      this.displayDate.getFullYear(),\n      this.displayDate.getMonth(),\n      1\n    );\n\n    // Previous month would be last day of previous month\n    const lastDayOfPrevMonth = new Date(\n      this.displayDate.getFullYear(),\n      this.displayDate.getMonth(),\n      0\n    );\n\n    // If the last day of previous month is before minDate, disable button\n    return lastDayOfPrevMonth < this.getStartOfDay(this.minDate);\n  }\n\n  // Check if next month button should be disabled\n  isNextMonthDisabled(): boolean {\n    if (!this.maxDate) {\n      return false;\n    }\n\n    // First day of next month\n    const firstDayOfNextMonth = new Date(\n      this.displayDate.getFullYear(),\n      this.displayDate.getMonth() + 1,\n      1\n    );\n\n    // If the first day of next month is after maxDate, disable button\n    return firstDayOfNextMonth > this.getEndOfDay(this.maxDate);\n  }\n\n  // Check if previous year button should be disabled\n  isPrevYearDisabled(): boolean {\n    if (!this.minDate) {\n      return false;\n    }\n\n    // First day of current year\n    const firstDayOfCurrentYear = new Date(\n      this.displayDate.getFullYear(),\n      0,\n      1\n    );\n\n    // Last day of previous year\n    const lastDayOfPrevYear = new Date(\n      this.displayDate.getFullYear() - 1,\n      11,\n      31\n    );\n\n    // If the last day of previous year is before minDate, disable button\n    return lastDayOfPrevYear < this.getStartOfDay(this.minDate);\n  }\n\n  // Check if next year button should be disabled\n  isNextYearDisabled(): boolean {\n    if (!this.maxDate) {\n      return false;\n    }\n\n    // First day of next year\n    const firstDayOfNextYear = new Date(\n      this.displayDate.getFullYear() + 1,\n      0,\n      1\n    );\n\n    // If the first day of next year is after maxDate, disable button\n    return firstDayOfNextYear > this.getEndOfDay(this.maxDate);\n  }\n\n  // Check if previous year range button should be disabled\n  isPrevYearRangeDisabled(): boolean {\n    if (!this.minDate) {\n      return false;\n    }\n\n    // Last year of previous decade\n    const lastYearOfPrevDecade = this.yearRangeStart - 1;\n    const lastDayOfLastYearPrevDecade = new Date(lastYearOfPrevDecade, 11, 31);\n\n    return lastDayOfLastYearPrevDecade < this.getStartOfDay(this.minDate);\n  }\n\n  // Check if next year range button should be disabled\n  isNextYearRangeDisabled(): boolean {\n    if (!this.maxDate) {\n      return false;\n    }\n\n    // First year of next decade\n    const firstYearOfNextDecade = this.yearRangeStart + 12;\n    const firstDayOfFirstYearNextDecade = new Date(firstYearOfNextDecade, 0, 1);\n\n    return firstDayOfFirstYearNextDecade > this.getEndOfDay(this.maxDate);\n  }\n}\n","<div class=\"tw-calendar font-medium\">\n  <!-- Calendar Header -->\n  <div class=\"flex items-center justify-between mb-4\">\n    @if(viewMode === 'days') {\n    <tw-button-icon\n      svgIcon=\"hero:chevron-left\"\n      (click)=\"changeMonth(-1)\"\n      [disabled]=\"isPrevMonthDisabled()\"\n      [class.opacity-50]=\"isPrevMonthDisabled()\"\n    ></tw-button-icon>\n    <div class=\"flex gap-1\">\n      <button\n        type=\"button\"\n        class=\"px-2 py-1 hover:bg-blue-100 rounded\"\n        (click)=\"switchView('months')\"\n      >\n        {{ currentMonthName }}\n      </button>\n      <button\n        type=\"button\"\n        class=\"px-2 py-1 hover:bg-blue-100 rounded\"\n        (click)=\"switchView('years')\"\n      >\n        {{ currentYear }}\n      </button>\n    </div>\n    <tw-button-icon\n      svgIcon=\"hero:chevron-right\"\n      (click)=\"changeMonth(1)\"\n      [disabled]=\"isNextMonthDisabled()\"\n      [class.opacity-50]=\"isNextMonthDisabled()\"\n    ></tw-button-icon>\n    }\n    @if(viewMode === 'months') {\n    <tw-button-icon\n      svgIcon=\"hero:chevron-left\"\n      (click)=\"changeYear(-1)\"\n      [disabled]=\"isPrevYearDisabled()\"\n      [class.opacity-50]=\"isPrevYearDisabled()\"\n    >\n    </tw-button-icon>\n    <button\n      type=\"button\"\n      class=\"px-2 py-1 hover:bg-blue-100 rounded\"\n      (click)=\"switchView('years')\"\n    >\n      {{ currentYear }}\n    </button>\n    <tw-button-icon\n      svgIcon=\"hero:chevron-right\"\n      (click)=\"changeYear(1)\"\n      [disabled]=\"isNextYearDisabled()\"\n      [class.opacity-50]=\"isNextYearDisabled()\"\n    ></tw-button-icon>\n    }\n    @if(viewMode === 'years') {\n    <tw-button-icon\n      svgIcon=\"hero:chevron-left\"\n      (click)=\"changeYearRange(-1)\"\n      [disabled]=\"isPrevYearRangeDisabled()\"\n      [class.opacity-50]=\"isPrevYearRangeDisabled()\"\n    >\n    </tw-button-icon>\n    <span class=\"px-2 py-1\">{{ yearRangeStart }} - {{ yearRangeStart + 11 }}</span>\n    <tw-button-icon\n      svgIcon=\"hero:chevron-right\"\n      (click)=\"changeYearRange(1)\"\n      [disabled]=\"isNextYearRangeDisabled()\"\n      [class.opacity-50]=\"isNextYearRangeDisabled()\"\n    ></tw-button-icon>\n    }\n  </div>\n\n  <!-- Days View -->\n  @if(viewMode === 'days') {\n  <div class=\"grid grid-cols-7 gap-2 justify-items-center\">\n    <!-- Weekday Headers -->\n    @for(day of weekdays; track $index) {\n    <div class=\"text-center text-gray-500 text-xs p-1\">{{ day }}</div>\n    }\n\n    <!-- Calendar Days -->\n    @for(date of calendarDates; track $index) {\n    <button\n      type=\"button\"\n      class=\"w-8 h-8 flex items-center justify-center rounded-full text-sm transition-colors duration-150\"\n      [class.text-gray-400]=\"!date.isCurrentMonth\"\n      [class.bg-primary-500]=\"date.isSelected || date.isRangeStart || date.isRangeEnd\"\n      [class.text-white]=\"date.isSelected || date.isRangeStart || date.isRangeEnd\"\n      [class.bg-primary-100]=\"date.isInRange && !date.isRangeStart && !date.isRangeEnd\"\n      [class.hover:bg-primary-200]=\"!date.isSelected && !date.isRangeStart && !date.isRangeEnd\"\n      [class.font-bold]=\"date.isToday\"\n      [class.opacity-50]=\"date.isDisabled\"\n      [disabled]=\"date.isDisabled\"\n      (click)=\"selectDate(date)\"\n    >\n      {{ date.date.getDate() }}\n    </button>\n    }\n  </div>\n  }\n\n  <!-- Months View -->\n  @if(viewMode === 'months') {\n  <div class=\"grid grid-cols-4 gap-2\">\n    @for(month of months; track $index) {\n    <button\n      type=\"button\"\n      class=\"py-2 px-1 rounded hover:bg-blue-100\"\n      [class.bg-blue-500]=\"displayDate.getMonth() === $index\"\n      [class.text-white]=\"displayDate.getMonth() === $index\"\n      [class.opacity-50]=\"isMonthDisabled($index)\"\n      [disabled]=\"isMonthDisabled($index)\"\n      (click)=\"selectMonth($index)\"\n    >\n      {{ month }}\n    </button>\n    }\n  </div>\n  }\n\n  <!-- Years View -->\n  @if(viewMode === 'years') {\n  <div class=\"grid grid-cols-4 gap-2\">\n    @for(year of years; track $index) {\n    <button\n      type=\"button\"\n      class=\"py-2 px-1 rounded hover:bg-blue-100\"\n      [class.bg-blue-500]=\"displayDate.getFullYear() === year\"\n      [class.text-white]=\"displayDate.getFullYear() === year\"\n      [class.opacity-50]=\"isYearDisabled(year)\"\n      [disabled]=\"isYearDisabled(year)\"\n      (click)=\"selectYear(year)\"\n    >\n      {{ year }}\n    </button>\n    }\n  </div>\n  }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { TwChipInterface } from './chip-interface';\n\n@Component({\n  selector: 'tw-chip-item',\n  standalone: true,\n  template: ``,\n})\nexport class TwChipItem implements TwChipInterface {\n  @Input({ required: true }) label!: string;\n  @Input() image?: string | undefined;\n  @Input() isDeletable?: boolean | undefined;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TwIcon } from '../icon/icon.component';\nimport { TwChipInterface } from './chip-interface';\n\n@Component({\n  selector: 'tw-chip',\n  imports: [TwIcon],\n  template: `\n    <div class=\"tw-chip {{ twClass }}\" [title]=\"label\">\n      @if(image){\n      <img [src]=\"image\" alt=\"Image Description\" />\n      }\n      <div class=\"label\">\n        {{ label }}\n      </div>\n      @if(isDeletable){\n      <div class=\"icon\" role=\"button\">\n        <tw-icon\n          (click)=\"deleteItem.emit()\"\n          svgIcon=\"hero:x-mark\"\n          [size]=\"10\"\n        />\n      </div>\n      }\n    </div>\n  `,\n})\nexport class TwChip implements TwChipInterface {\n  @Input({ required: true }) label!: string;\n  @Input() image?: string | undefined;\n  @Input() isDeletable?: boolean | undefined;\n  @Input() twClass?: string;\n  @Output() deleteItem = new EventEmitter();\n}\n","import {\n  BlockScrollStrategy,\n  CdkConnectedOverlay,\n  Overlay,\n} from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, map } from 'rxjs';\nimport {\n  AutoCompleteManager,\n  SuggestionsType,\n} from '../autocomplete/autocomplete-manager';\nimport { ColorTypes } from '../color-types';\nimport { TwIcon } from '../icon/icon.component';\nimport { OverlayPositions } from '../TwElement';\nimport { TwChipInterface } from './chip-interface';\nimport { TwChipItem } from './chip-item-maker.component';\nimport { TwChip } from './chip.component';\n\n@Component({\n  selector: 'tw-chip-list',\n  imports: [TwChip, TwIcon, NgTemplateOutlet, CdkConnectedOverlay],\n  templateUrl: './chip-list.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TwChipList),\n      multi: true,\n    },\n  ],\n})\nexport class TwChipList implements AfterViewInit, ControlValueAccessor {\n  @ContentChildren(TwChipItem) children?: QueryList<TwChipItem>;\n\n  @Input() iconSuffix?: string;\n  @Input() iconSuffixClass?: string;\n  @Input() iconPrefix?: string;\n  @Input() iconPrefixClass?: string;\n  @Input() color?: ColorTypes;\n  @Input() keyCodeSeperator?: string = 'Enter';\n  @Input() isEditable: boolean = false;\n  @Input() allowUnknownItemInsertion: boolean = true;\n  @Input() placeholder = 'Type item';\n\n  @Input() newContentTransformer: (text: string) => TwChipInterface = (\n    txt\n  ) => ({\n    label: txt,\n    isDeletable: this.isEditable,\n  });\n  @Output() itemRemoved = new EventEmitter<{\n    chip: TwChipInterface;\n    index: number;\n  }>();\n\n  @ViewChild('newItemContent') newItemContent?: ElementRef<HTMLDivElement>;\n\n  @Input() autoCompleteDisplayFactory:\n    | ((item: any) => { key: string; text: string })\n    | undefined;\n\n  @Input() autoCompleteOptionTemplate: TemplateRef<any> | null = null;\n\n  @Input() autoCompleteFilterFn:\n    | ((value: string, item: any) => boolean)\n    | undefined;\n\n  @Input() set autoCompleteSuggestions(value: SuggestionsType<any>) {\n    this._autoCompleteSuggestions = value;\n\n    if (!this.autoCompleteManager) return;\n    this.autoCompleteManager.suggestions = value;\n  }\n\n  get autoCompleteSuggestions() {\n    return this._autoCompleteSuggestions!;\n  }\n\n  positions = OverlayPositions;\n\n  @Input() chipItems: TwChipItem[] = [];\n\n  _onChange: ((value: any) => void)[] = [];\n  _onTouched: (() => void)[] = [];\n\n  blockScrollStrategy: BlockScrollStrategy;\n\n  get filteredSuggestions() {\n    return this.autoCompleteManager?.filteredSuggestions;\n  }\n\n  autoCompleteManager?: AutoCompleteManager<any>;\n  private _autoCompleteSuggestions?: SuggestionsType<any>;\n\n  constructor(\n    public elementRef: ElementRef,\n    private _cd: ChangeDetectorRef,\n    overlay: Overlay\n  ) {\n    this.blockScrollStrategy = overlay.scrollStrategies.block();\n  }\n\n  ngAfterViewInit(): void {\n    if (this.autoCompleteSuggestions) {\n      this.autoCompleteManager = new AutoCompleteManager(\n        fromEvent(this.newItemContent!.nativeElement, 'keyup').pipe(\n          map((ev) => (ev.target as HTMLDivElement).innerHTML)\n        )\n      );\n\n      this.autoCompleteManager.suggestions = this.autoCompleteSuggestions;\n\n      if (this.autoCompleteDisplayFactory)\n        this.autoCompleteManager.displayFactory =\n          this.autoCompleteDisplayFactory;\n\n      if (this.autoCompleteFilterFn)\n        this.autoCompleteManager.filterFn = this.autoCompleteFilterFn;\n\n      this.autoCompleteManager.init();\n    }\n\n    if (this.children?.length) {\n      this.writeValue(this.children.toArray());\n    }\n\n    this._cd.detectChanges();\n    this.children?.changes.subscribe((newValue) => {\n      this.writeValue(newValue);\n    });\n  }\n\n  contentKeydown(event: KeyboardEvent) {\n    if (event.key === 'Enter') event.preventDefault();\n\n    if (\n      event.key === 'Backspace' &&\n      !this.newItemContent?.nativeElement.innerHTML\n    ) {\n      if (this.chipItems.length > 0 && this.isEditable) {\n        this.removeItem(this.chipItems.length - 1);\n      }\n      return;\n    }\n\n    if (event.key === 'Escape') {\n      this.newItemContent?.nativeElement.blur();\n      return;\n    }\n\n    if (\n      event.key !== this.keyCodeSeperator ||\n      !this.newItemContent ||\n      !this.allowUnknownItemInsertion\n    )\n      return;\n\n    const newContent = this.newItemContent.nativeElement.innerHTML;\n    this.newItemContent.nativeElement.innerHTML = '';\n    const chip = this.newContentTransformer(newContent);\n    this.chipItems.push({\n      label: chip.label,\n      isDeletable: chip.isDeletable,\n    });\n    this.onChange(this.chipItems);\n    this.newItemContent.nativeElement.focus();\n  }\n\n  removeItem(index: number) {\n    if (!this.isEditable) return;\n\n    const [chip] = this.chipItems.splice(index, 1);\n    this.itemRemoved.emit({ index, chip });\n    this.onChange(this.chipItems);\n  }\n\n  selectSuggestion(suggestion: any) {\n    if (!this.autoCompleteManager?.selectSuggestion(suggestion)) {\n      return;\n    }\n    const value = this.autoCompleteManager.getDisplayText(suggestion);\n    this.chipItems.push({\n      label: value,\n      isDeletable: true,\n    });\n\n    if (this.newItemContent) {\n      this.newItemContent.nativeElement.innerHTML = '';\n      this.newItemContent.nativeElement.focus();\n    }\n    this.onChange(this.chipItems);\n  }\n\n  writeValue(value: any): void {\n    if (value === undefined || value === null) {\n      this.chipItems = [];\n      return;\n    }\n\n    value = Array.isArray(value) ? value : [value];\n\n    this.chipItems = value.map((v: any) => ({\n      label: v.label,\n      image: v.image,\n      isDeletable: v.isDeletable,\n    }));\n\n    this._cd.detectChanges();\n  }\n\n  registerOnChange(fn: any): void {\n    this._onChange.push(fn);\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched.push(fn);\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.isEditable = !isDisabled;\n  }\n\n  onChange(value: any) {\n    this._onChange.forEach((fn) => fn(value));\n    this.onTouched();\n    this._cd.markForCheck();\n  }\n\n  onTouched() {\n    this._onTouched.forEach((fn) => fn());\n  }\n}\n","<div class=\"flex relative tw-chip-list items-center gap-2 {{ color }}\">\n  @if(iconPrefix){\n  <span class=\"absolute ml-2\">\n    <tw-icon\n      class=\"text-gray-400 {{ iconPrefixClass }}\"\n      [svgIcon]=\"iconPrefix\"\n    />\n  </span>\n  }\n  <div\n    [class.ml-10]=\"iconPrefix && chipItems.length > 0\"\n    [class.mr-6]=\"iconSuffix\"\n    [class.ml-7]=\"iconPrefix && chipItems.length ===0\"\n    class=\"flex flex-row gap-2 flex-wrap flex-grow\"\n  >\n    @for(chip of chipItems; track $index){\n    <tw-chip\n      twClass=\"max-w-48\"\n      [label]=\"chip.label\"\n      [image]=\"chip.image\"\n      (deleteItem)=\"removeItem($index)\"\n      [isDeletable]=\"isEditable && chip.isDeletable\"\n    />\n    }\n\n    <div class=\"relative flex-grow flex flex-row items-center overflow-hidden\">\n      <span\n        class=\"absolute text-gray-500 opacity-50 pointer-events-none whitespace-nowrap text-nowrap overflow-hidden text-ellipsis max-w-full\"\n        [class.hidden]=\"newItemContent?.nativeElement?.innerText\"\n      >{{ placeholder }}\n      </span>\n\n      @if(isEditable){\n      <div\n        (keydown)=\"contentKeydown($event)\"\n        #newItemContent\n        contentEditable\n        class=\"flex items-center border-0 flex-grow outline-0 wrap\"\n      ></div>\n      }\n    </div>\n  </div>\n\n  @if(iconSuffix){\n  <span class=\"absolute mr-2 right-0\">\n    <tw-icon\n      class=\"text-gray-400 {{ iconSuffix }}\"\n      [svgIcon]=\"iconSuffix\"\n    />\n  </span>\n  }\n</div>\n<!-- Dropdown Suggestions -->\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayHasBackdrop]=\"true\"\n  [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n  [cdkConnectedOverlayOrigin]=\"elementRef.nativeElement.firstElementChild\"\n  [cdkConnectedOverlayOpen]=\"autoCompleteManager?.isOpen || false\"\n  [cdkConnectedOverlayPositions]=\"positions\"\n  [cdkConnectedOverlayMinWidth]=\"elementRef.nativeElement.firstElementChild.offsetWidth\"\n  [cdkConnectedOverlayScrollStrategy]=\"blockScrollStrategy\"\n  (backdropClick)=\"autoCompleteManager?.closeDropdown()\"\n  (detach)=\"autoCompleteManager?.closeDropdown()\"\n>\n  <div class=\"w-full mt-1 bg-white border border-gray-200 rounded-lg shadow-lg max-h-60 overflow-y-auto\">\n    @if (filteredSuggestions && filteredSuggestions .length > 0) {\n    <ul>\n      @for (suggestion of filteredSuggestions; track $index) {\n      <li\n        (click)=\"selectSuggestion(suggestion)\"\n        class=\"p-2 tw-option\"\n      >\n        @if (autoCompleteOptionTemplate) {\n        <ng-container *ngTemplateOutlet=\"autoCompleteOptionTemplate; context: { $implicit: suggestion }\"></ng-container>\n\n        }@else {\n        <ng-template>{{ autoCompleteManager?.getDisplayText(suggestion) }}</ng-template>\n        }\n      </li>\n      }\n    </ul>\n    }\n    @else{\n    <div class=\"p-2 text-gray-500\">\n      No suggestions found.\n    </div>\n    }\n  </div>\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  Optional,\n  Self,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { ColorTypes } from '../color-types';\nimport { TwIcon } from '../icon/icon.component';\nimport { InputTypes } from './input-field-interface';\nimport { MaskConfig, MaskedInputField } from './masked-input-field-interface';\n\n@Component({\n    imports: [TwIcon, NgClass, FormsModule],\n    selector: 'tw-masked-input',\n    host: {\n        class: 'tw-masked-input-wrapper',\n    },\n    templateUrl: './masked-input.component.html',\n    providers: []\n})\nexport class TwMaskedInput\n  implements ControlValueAccessor, MaskedInputField, OnInit\n{\n  @Input() multiline: boolean = false;\n  @Input() iconSuffix?: string;\n  @Input() iconSuffixClass?: string;\n  @Input() iconPrefix?: string;\n  @Input() iconPrefixClass?: string;\n  @Input() twClass?: string;\n  @Input() name: string = '';\n  @Input() label: string = '';\n\n  @Input() value?: string = '';\n  @Input() maxLength?: number;\n  @Input() minLength?: number;\n  @Input() required: string | boolean = false;\n  @Input() pattern: string | RegExp = '';\n  @Input() placeholder: string = '';\n  @Input() disabled = false;\n  @Input() inputType: InputTypes = 'text';\n  @Input() color?: ColorTypes;\n  @Input() showLabel: boolean = true;\n\n  // Mask specific inputs\n  @Input() maskConfig!: MaskConfig;\n  @Input() allowAlphanumeric = false;\n  @Input() validator?: (rawValue: string) => boolean | string;\n\n  @ViewChild('inputElement') inputElement!: ElementRef;\n\n  private _onChangeFns: any[] = [];\n  private _onTouchedFns: any[] = [];\n  private _maskedValue: string = '';\n  private _validationError: string | null = null;\n\n  get errors() {\n    if (this._validationError) {\n      return this._validationError;\n    }\n\n    return this._ngControl?.dirty && this._ngControl?.errors\n      ? Object.keys(this._ngControl.errors)\n          .filter((e) => e !== 'required')\n          .join('.\\n')\n      : null;\n  }\n\n  constructor(@Self() @Optional() private readonly _ngControl?: NgControl) {\n    if (this._ngControl) {\n      this._ngControl.valueAccessor = this;\n    }\n  }\n\n  ngOnInit(): void {\n    if (\n      !this.maskConfig ||\n      (!this.maskConfig.mask && !Array.isArray(this.maskConfig.mask))\n    ) {\n      console.warn('Masked input requires a mask configuration');\n    }\n  }\n\n  writeValue(obj: any): void {\n    this.value = obj || '';\n    if (this.value) {\n      this._maskedValue = this.applyMask(this.value);\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    if (fn) this._onChangeFns.push(fn);\n  }\n\n  registerOnTouched(fn: any): void {\n    if (fn) this._onTouchedFns.push(fn);\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  onChange(event: Event) {\n    const inputValue = (event.target as HTMLInputElement).value;\n    const rawValue = this.extractRawValue(inputValue);\n    const maskedValue = this.applyMask(rawValue);\n\n    // Apply custom validator if provided\n    if (this.validator && rawValue) {\n      const validationResult = this.validator(maskedValue);\n\n      if (typeof validationResult === 'string') {\n        this._validationError = validationResult;\n      } else if (validationResult === false) {\n        this._validationError = 'Invalid input format';\n      } else {\n        this._validationError = null;\n      }\n    } else {\n      this._validationError = null;\n    }\n\n    this._maskedValue = maskedValue;\n\n    // Update the input field with masked value if it's different\n    if ((event.target as HTMLInputElement).value !== maskedValue) {\n      (event.target as HTMLInputElement).value = maskedValue;\n    }\n\n    this._onChangeFns?.forEach((fn) => fn(maskedValue));\n    this._onTouchedFns?.forEach((fn) => fn());\n  }\n\n  /**\n   * Extracts the raw value from the masked input\n   */\n  private extractRawValue(maskedValue: string): string {\n    if (!maskedValue) return '';\n\n    // If mask is a regular expression array, extract only valid characters\n    if (Array.isArray(this.maskConfig.mask)) {\n      return maskedValue\n        .split('')\n        .filter((char, index) => {\n          const maskChar = this.maskConfig.mask[index];\n          if (!maskChar) return false;\n\n          if (typeof maskChar === 'object' && maskChar instanceof RegExp) {\n            return maskChar.test(char);\n          }\n          return char !== this.maskConfig.placeholderChar;\n        })\n        .join('');\n    }\n\n    // If mask is a string pattern and allowAlphanumeric is false, remove non-numeric characters\n    if (!this.allowAlphanumeric) {\n      return maskedValue.replace(/[^0-9]/g, '');\n    }\n\n    // If allowAlphanumeric is true, preserve both letters and numbers but remove special chars\n    if (this.allowAlphanumeric) {\n      return maskedValue.replace(/[^A-Za-z0-9]/g, '');\n    }\n\n    return maskedValue;\n  }\n\n  /**\n   * Applies the mask to the input value\n   */\n  private applyMask(value: string): string {\n    if (!value) return '';\n\n    // Simple implementation for common mask patterns\n    if (typeof this.maskConfig.mask === 'string') {\n      let result = '';\n      let valueIndex = 0;\n\n      // Process each character in the mask pattern\n      for (\n        let i = 0;\n        i < this.maskConfig.mask.length && valueIndex < value.length;\n        i++\n      ) {\n        const maskChar = this.maskConfig.mask[i];\n\n        if (maskChar === '9') {\n          // Only allow digits\n          while (valueIndex < value.length) {\n            const char = value[valueIndex++];\n            if (/[0-9]/.test(char)) {\n              result += char;\n              break;\n            }\n          }\n        } else if (maskChar === 'A') {\n          // Only allow letters\n          while (valueIndex < value.length) {\n            const char = value[valueIndex++];\n            if (/[A-Za-z]/.test(char)) {\n              result += char;\n              break;\n            }\n          }\n        } else if (maskChar === 'A') {\n          // Only allow letters\n          while (valueIndex < value.length) {\n            const char = value[valueIndex++];\n            if (/[A-Za-z]/.test(char)) {\n              result += char;\n              break;\n            }\n          }\n        } else if (maskChar === '*') {\n          // Allow any character\n          if (valueIndex < value.length) {\n            result += value[valueIndex++];\n          }\n        } else {\n          // Add the mask character as is\n          result += maskChar;\n\n          // Skip the corresponding value character if it matches the mask character\n          if (valueIndex < value.length && value[valueIndex] === maskChar) {\n            valueIndex++;\n          }\n        }\n      }\n\n      return result;\n    }\n\n    // Implementation for RegExp array masks\n    if (Array.isArray(this.maskConfig.mask)) {\n      let result = '';\n      let valueIndex = 0;\n\n      for (\n        let i = 0;\n        i < this.maskConfig.mask.length && valueIndex < value.length;\n        i++\n      ) {\n        const maskElement = this.maskConfig.mask[i];\n\n        if (maskElement instanceof RegExp) {\n          // Find the next character that matches the RegExp\n          while (valueIndex < value.length) {\n            const char = value[valueIndex++];\n            if (maskElement.test(char)) {\n              result += char;\n              break;\n            }\n          }\n        } else if (typeof maskElement === 'string') {\n          // Add the static mask character\n          result += maskElement;\n\n          // Skip the corresponding value character if it matches\n          if (valueIndex < value.length && value[valueIndex] === maskElement) {\n            valueIndex++;\n          }\n        }\n      }\n\n      return result;\n    }\n\n    return value;\n  }\n}\n","<div class=\"flex flex-col gap-2\">\n  @if (showLabel) {\n    <label\n      [for]=\"name\"\n      class=\"font-semibold\"\n    >{{label || placeholder}}</label>\n  }\n  <div class=\"relative flex items-center w-full\">\n    @if (iconPrefix) {\n      <span\n        class=\"absolute ml-2\"\n        >\n        <tw-icon\n          class=\"text-gray-400 {{ iconPrefixClass }}\"\n          [svgIcon]=\"iconPrefix\"\n          />\n      </span>\n    }\n\n    <input\n      #inputElement\n      [title]=\"placeholder\"\n      [type]=\"inputType\"\n      [placeholder]=\"placeholder\"\n      [value]=\"value\"\n      [disabled]=\"disabled\"\n      [attr.maxLength]=\"maxLength\"\n      [attr.minLength]=\"minLength\"\n      [required]=\"required\"\n      [name]=\"name\"\n      [pattern]=\"pattern\"\n      (input)=\"onChange($event)\"\n      class=\"tw-input-field w-full {{ color }} {{twClass}}\"\n      [ngClass]=\"{\n        'icon-left': iconPrefix && !iconSuffix,\n        'icon-right': iconSuffix && !iconPrefix,\n        'icon-left-right': iconSuffix && iconPrefix\n      }\"\n      />\n\n    @if (iconSuffix) {\n      <span\n        class=\"absolute mr-2 right-0\"\n        >\n        <tw-icon\n          class=\"text-gray-400 {{ iconSuffixClass }}\"\n          [svgIcon]=\"iconSuffix\"\n          />\n      </span>\n    }\n  </div>\n  @if (errors) {\n    <span class=\"bg-red-100 text-red-900 rounded-lg shadow-sm px-2 py-1 text-sm\">{{errors}}</span>\n  }\n</div>\n","import {\n  BlockScrollStrategy,\n  CdkConnectedOverlay,\n  Overlay,\n} from '@angular/cdk/overlay';\nimport { CommonModule, NgClass } from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormsModule,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { TwButton } from '../button/button.component';\nimport { TwCalendar } from '../calendar/calendar.component';\nimport { TwIcon } from '../icon/icon.component';\nimport { MaskConfig } from '../input-field/masked-input-field-interface';\nimport { TwMaskedInput } from '../input-field/masked-input.component';\nimport { OverlayPositions } from '../TwElement';\n\nexport interface DateRange {\n  start: Date;\n  end: Date | null;\n  preset?: string; // Optional preset ID\n}\n\n@Component({\n  selector: 'tw-date-range-picker',\n  templateUrl: 'date-range-picker.component.html',\n  imports: [\n    TwButton,\n    CommonModule,\n    TwCalendar,\n    FormsModule,\n    ReactiveFormsModule,\n    CdkConnectedOverlay,\n    NgClass,\n    TwIcon,\n    TwMaskedInput,\n  ],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TwDateRangePicker),\n      multi: true,\n    },\n  ],\n})\nexport class TwDateRangePicker implements OnInit, ControlValueAccessor {\n  @Input() isOpen = false;\n  @Input() startDate: Date | null = null;\n  @Input() endDate: Date | null = null;\n  @Input() minDate: Date | null = null;\n  @Input() maxDate: Date | null = (() => {\n    const today = new Date();\n    today.setHours(23, 59, 59, 999);\n    return today;\n  })(); // Default max date to today at 11:59 PM\n\n  @Input() disabled = false;\n\n  // Flag to check if in mobile view\n  isMobileView = false;\n\n  @Output() dateRangeChange = new EventEmitter<DateRange>();\n  @Output() openChanged = new EventEmitter<boolean>();\n\n  @Input() dateRange: DateRange = {\n    start: new Date(),\n    end: new Date(),\n  };\n\n  // For FormControl tracking\n  private originalRange: DateRange = {\n    start: new Date(),\n    end: new Date(),\n  };\n\n  // For two-way binding with the masked inputs\n  startDateModel: string = '';\n  endDateModel: string = '';\n\n  selectedPreset: string = 'custom';\n\n  // Calendar display dates (for the two calendars)\n  leftCalendarDate = new Date();\n  rightCalendarDate = new Date();\n\n  // Mask configuration for date inputs\n  dateMaskConfig: MaskConfig = {\n    mask: '99 / 99 / 9999',\n    guide: true,\n    placeholderChar: '_',\n    showMask: false,\n  };\n\n  presets = [\n    { id: 'today', label: 'Today' },\n    { id: 'last7days', label: 'Last 7 days' },\n    { id: 'last4weeks', label: 'Last 4 weeks' },\n    { id: 'last3months', label: 'Last 3 months' },\n    { id: 'last12months', label: 'Last 12 months' },\n    { id: 'monthToDate', label: 'Month to date' },\n    { id: 'quarterToDate', label: 'Quarter to date' },\n    { id: 'yearToDate', label: 'Year to date' },\n    { id: 'allTime', label: 'All time' },\n  ];\n\n  positions = OverlayPositions;\n  blockScrollStrategy: BlockScrollStrategy;\n\n  get isValid() {\n    return (\n      this.checkDateInterval(this.dateRange.start) === true &&\n      this.dateRange.end &&\n      this.checkDateInterval(this.dateRange.end) === true &&\n      this.dateRange.end >= this.dateRange.start\n    );\n  }\n\n  // ControlValueAccessor methods\n  onChange: (value: DateRange) => void = () => {};\n  onTouched: () => void = () => {};\n\n  constructor(public elementRef: ElementRef, overlay: Overlay) {\n    this.blockScrollStrategy = overlay.scrollStrategies.block();\n  }\n\n  ngOnInit() {\n    // Set default values\n    if (this.startDate) {\n      this.dateRange.start = new Date(this.startDate);\n      this.originalRange.start = new Date(this.startDate);\n    }\n\n    if (this.endDate) {\n      this.dateRange.end = new Date(this.endDate);\n      this.originalRange.end = new Date(this.endDate);\n    } else if (this.startDate) {\n      this.dateRange.end = new Date(this.startDate);\n      this.originalRange.end = new Date(this.startDate);\n    }\n\n    // Setup calendar months - current month on the right\n    const today = new Date();\n\n    // Right calendar shows current month\n    this.rightCalendarDate = new Date(today);\n\n    // Left calendar shows previous month\n    this.leftCalendarDate = new Date(today);\n    this.leftCalendarDate.setMonth(this.leftCalendarDate.getMonth() - 1);\n\n    // Check if we're on mobile\n    this.checkMobileView();\n\n    // Initialize the model values for the masked inputs\n    this.startDateModel = this.formatDateForInput(this.dateRange.start);\n    this.endDateModel = this.formatDateForInput(this.dateRange.end);\n\n    // Add resize event listener to detect mobile/desktop changes\n    window.addEventListener('resize', () => {\n      this.checkMobileView();\n    });\n  }\n\n  // Determine if we're in mobile view based on screen width\n  checkMobileView(): void {\n    this.isMobileView = window.innerWidth < 768; // 768px is standard md breakpoint in Tailwind\n  } // ControlValueAccessor methods implementation\n  writeValue(value: DateRange | null): void {\n    if (value) {\n      this.dateRange = {\n        start: value.start ? new Date(value.start) : new Date(),\n        end: value.end ? new Date(value.end) : new Date(),\n        preset: value.preset,\n      };\n      this.originalRange = {\n        start: value.start ? new Date(value.start) : new Date(),\n        end: value.end ? new Date(value.end) : new Date(),\n        preset: value.preset,\n      };\n\n      // If a preset was provided, update the selectedPreset\n      if (value.preset) {\n        this.selectedPreset = value.preset;\n      }\n\n      // Update calendar dates based on the selected range\n      if (value.start) {\n        this.leftCalendarDate = new Date(value.start);\n        this.leftCalendarDate.setMonth(this.leftCalendarDate.getMonth() - 1);\n      }\n\n      if (value.end) {\n        this.rightCalendarDate = new Date(value.end);\n      }\n    }\n  }\n\n  registerOnChange(fn: (value: DateRange) => 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  toggleOpen(): void {\n    if (this.disabled) return;\n\n    this.isOpen = !this.isOpen;\n    this.openChanged.emit(this.isOpen);\n\n    if (this.isOpen) {\n      this.onTouched();\n    }\n  }\n\n  closeDropdown(): void {\n    this.cancelSelection();\n    this.isOpen = false;\n    this.openChanged.emit(this.isOpen);\n  }\n\n  onRangeSelected(range: { start: Date; end: Date | null }): void {\n    this.dateRange = { ...range, preset: 'custom' };\n    this.selectedPreset = 'custom';\n\n    // Update model values\n    this.startDateModel = this.formatDateForInput(this.dateRange.start);\n    this.endDateModel = this.formatDateForInput(this.dateRange.end);\n  }\n\n  // Update left calendar when right calendar changes\n  onRightCalendarChange(date: Date): void {\n    this.rightCalendarDate = date;\n  }\n\n  // Update right calendar when left calendar changes\n  onLeftCalendarChange(date: Date): void {\n    this.leftCalendarDate = date;\n  }\n\n  selectPreset(presetId: string): void {\n    this.selectedPreset = presetId;\n\n    const today = new Date();\n    const start = new Date();\n    const end = new Date();\n\n    switch (presetId) {\n      case 'today':\n        this.dateRange = { start: today, end: today, preset: presetId };\n        break;\n      case 'last7days':\n        start.setDate(today.getDate() - 6);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'last4weeks':\n        start.setDate(today.getDate() - 27);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'last3months':\n        start.setMonth(today.getMonth() - 3);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'last12months':\n        start.setFullYear(today.getFullYear() - 1);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'monthToDate':\n        start.setDate(1);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'quarterToDate':\n        const quarterMonth = Math.floor(today.getMonth() / 3) * 3;\n        start.setMonth(quarterMonth);\n        start.setDate(1);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'yearToDate':\n        start.setMonth(0);\n        start.setDate(1);\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n      case 'allTime':\n        start.setFullYear(2000); // Example for \"all time\"\n        this.dateRange = { start, end: today, preset: presetId };\n        break;\n    }\n\n    // Update calendars based on the selected range\n    this.leftCalendarDate = new Date(this.dateRange.start);\n    this.rightCalendarDate = new Date(\n      this.dateRange.end || this.dateRange.start\n    );\n\n    // Update model values for inputs\n    this.startDateModel = this.formatDateForInput(this.dateRange.start);\n    this.endDateModel = this.formatDateForInput(this.dateRange.end);\n  }\n\n  applySelection(): void {\n    if (this.dateRange.start && this.dateRange.end) {\n      // Save the original range for potential reset\n      this.originalRange = {\n        start: new Date(this.dateRange.start),\n        end: this.dateRange.end ? new Date(this.dateRange.end) : null,\n        preset: this.selectedPreset,\n      };\n\n      // Emit event for the parent component\n      this.dateRangeChange.emit(this.dateRange);\n\n      // Update form control value\n      this.onChange(this.dateRange);\n      this.onTouched();\n\n      this.isOpen = false;\n      this.openChanged.emit(this.isOpen);\n    }\n  }\n\n  cancelSelection(): void {\n    // Reset to original values without applying changes\n    this.dateRange = {\n      start: new Date(this.originalRange.start),\n      end: this.originalRange.end ? new Date(this.originalRange.end) : null,\n    };\n    this.startDateModel = this.formatDateForInput(this.dateRange.start);\n    this.endDateModel = this.formatDateForInput(this.dateRange.end);\n\n    // Reset preset to original value\n    this.selectedPreset = this.originalRange.preset || 'custom';\n  }\n\n  formatDate(date: Date | null): string {\n    if (!date) return '';\n\n    const months = [\n      'Jan',\n      'Feb',\n      'Mar',\n      'Apr',\n      'May',\n      'Jun',\n      'Jul',\n      'Aug',\n      'Sep',\n      'Oct',\n      'Nov',\n      'Dec',\n    ];\n\n    return `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()}`;\n  }\n\n  formatDateRangeDisplay(): string {\n    // If a preset is selected (and not custom), show the preset label instead\n    if (this.selectedPreset !== 'custom') {\n      const preset = this.presets.find((p) => p.id === this.selectedPreset);\n      if (preset) {\n        return preset.label;\n      }\n    }\n\n    // Otherwise, format and show the date range\n    if (!this.dateRange.start) return '';\n\n    const start = this.formatDate(this.dateRange.start);\n    const end = this.dateRange.end ? this.formatDate(this.dateRange.end) : '';\n\n    return end ? `${start} → ${end}` : start;\n  }\n\n  // Parse input date string to Date object\n  parseInputDate(dateStr: string): Date | null {\n    if (!dateStr) return null;\n\n    // Clean the input - remove any non-numeric characters except for slashes\n    const cleanInput = dateStr.replace(/[^\\d\\/]/g, '');\n\n    // Try to parse DD / MM / YYYY format\n    const parts = cleanInput.split('/');\n\n    if (parts.length === 3) {\n      const day = parseInt(parts[0].trim(), 10);\n      const month = parseInt(parts[1].trim(), 10) - 1; // Month is 0-indexed\n      const year = parseInt(parts[2].trim(), 10);\n\n      if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {\n        const date = new Date(year, month, day);\n\n        // Check if the date is valid\n        if (\n          date.getFullYear() === year &&\n          date.getMonth() === month &&\n          date.getDate() === day\n        ) {\n          return date;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  // Validator for the date input mask\n  validateDate =\n    (dateType: 'start' | 'end') =>\n    (value: string): boolean | string => {\n      if (!value || value.length < 10) return true; // Allow incomplete input\n\n      const date = this.parseInputDate(value);\n\n      if (!date) return 'Invalid date format';\n\n      const dateIntervalCheckResult = this.checkDateInterval(date);\n\n      if (typeof dateIntervalCheckResult === 'string') {\n        return dateIntervalCheckResult;\n      }\n\n      // Make sure end date is not before start date\n      if (\n        dateType === 'end' &&\n        this.dateRange.start &&\n        date < this.dateRange.start\n      ) {\n        return 'End date cannot be before start date';\n      }\n\n      return true;\n    };\n\n  checkDateInterval(date: Date) {\n    // Check min date\n    if (this.minDate && date < this.minDate) {\n      return `Date cannot be before ${this.formatDateForInput(this.minDate)}`;\n    }\n\n    // Check max date\n    if (this.maxDate && date > this.maxDate) {\n      return `Date cannot be after ${this.formatDateForInput(this.maxDate)}`;\n    }\n\n    return true;\n  }\n\n  // Handle manual input of start date\n  onStartDateInput(value: string): void {\n    const date = this.parseInputDate(value);\n\n    if (date) {\n      // Update the start date\n      this.dateRange.start = date;\n\n      // If end date is before start date, adjust it\n      if (this.dateRange.end && this.dateRange.end < date) {\n        this.dateRange.end = new Date(date);\n      }\n\n      // Set to custom preset\n      this.selectedPreset = 'custom';\n    }\n  }\n\n  // Handle manual input of end date\n  onEndDateInput(value: string): void {\n    const date = this.parseInputDate(value);\n\n    if (date) {\n      // Update the end date\n      this.dateRange.end = date;\n\n      // Set to custom preset\n      this.selectedPreset = 'custom';\n    }\n  }\n\n  // Format date for input fields\n  formatDateForInput(date: Date | null): string {\n    if (!date) return '';\n\n    const day = date.getDate().toString().padStart(2, '0');\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const year = date.getFullYear();\n\n    return `${day} / ${month} / ${year}`;\n  }\n}\n","<div class=\"relative\">\n  <!-- Main dropdown button -->\n  <tw-button\n    (click)=\"toggleOpen()\"\n    [disabled]=\"disabled\"\n  >\n    <span class=\"font-medium\">{{ formatDateRangeDisplay() }}</span>\n    <tw-icon\n      svgIcon=\"hero:chevron-down\"\n      class=\"ml-2 transition-transform\"\n      [class.rotate-180]=\"isOpen\"\n    ></tw-icon>\n  </tw-button>\n\n  <!-- Date range picker dropdown panel using cdkConnectedOverlay -->\n  <ng-template\n    cdkConnectedOverlay\n    [cdkConnectedOverlayHasBackdrop]=\"true\"\n    [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n    [cdkConnectedOverlayOrigin]=\"elementRef.nativeElement.firstElementChild\"\n    [cdkConnectedOverlayOpen]=\"isOpen\"\n    [cdkConnectedOverlayPositions]=\"positions\"\n    [cdkConnectedOverlayScrollStrategy]=\"blockScrollStrategy\"\n    (backdropClick)=\"closeDropdown()\"\n  >\n    <div\n      [ngClass]=\"{'bg-white rounded-lg shadow-lg border border-gray-200': true, 'w-[720px]': !isMobileView, 'w-full max-w-md': isMobileView}\"\n    >\n      <!-- Mobile View -->\n      @if(isMobileView) {\n      <div class=\"p-4\">\n        <!-- Date inputs for mobile -->\n        <div class=\"flex flex-col mb-4\">\n          <div class=\"mb-4\">\n            <label class=\"block text-sm text-gray-600 mb-1\">Start</label>\n            <div class=\"relative\">\n              <tw-masked-input\n                [value]=\"formatDateForInput(dateRange.start)\"\n                [placeholder]=\"'DD / MM / YYYY'\"\n                [maskConfig]=\"dateMaskConfig\"\n                [validator]=\"validateDate('start')\"\n                name=\"startDate\"\n                [(ngModel)]=\"startDateModel\"\n                (ngModelChange)=\"onStartDateInput($event || '')\"\n              />\n            </div>\n          </div>\n          <div>\n            <label class=\"block text-sm text-gray-600 mb-1\">End</label>\n            <div class=\"relative\">\n              <tw-masked-input\n                [value]=\"formatDateForInput(dateRange.end)\"\n                [placeholder]=\"'DD / MM / YYYY'\"\n                [maskConfig]=\"dateMaskConfig\"\n                [validator]=\"validateDate('end')\"\n                name=\"endDate\"\n                [(ngModel)]=\"endDateModel\"\n                (ngModelChange)=\"onEndDateInput($event || '')\"\n              />\n            </div>\n          </div>\n        </div>\n\n        <!-- Presets for mobile -->\n        <div class=\"mb-4\">\n          <label class=\"block text-sm text-gray-600 mb-2\">Presets</label>\n          <div class=\"grid grid-cols-2 gap-2 max-h-40 overflow-y-auto\">\n            @for(preset of presets; track preset.id) {\n            <button\n              class=\"px-3 py-2 text-sm border rounded-md text-center\"\n              [class.bg-blue-50]=\"selectedPreset === preset.id\"\n              [class.text-blue-700]=\"selectedPreset === preset.id\"\n              [class.border-blue-500]=\"selectedPreset === preset.id\"\n              (click)=\"selectPreset(preset.id)\"\n            >\n              {{ preset.label }}\n            </button>\n            }\n          </div>\n        </div>\n\n        <!-- Footer with action buttons -->\n        <div class=\"flex justify-end mt-4 gap-2\">\n          <tw-button\n            type=\"basic\"\n            twClass=\"bg-white text-sm\"\n            (click)=\"closeDropdown()\"\n          >\n            Clear\n          </tw-button>\n          <tw-button\n            color=\"primary\"\n            class=\"ml-2\"\n            twClass=\"text-sm\"\n            type=\"filled\"\n            [disabled]=\"!isValid\"\n            (click)=\"applySelection()\"\n          >\n            Apply\n          </tw-button>\n        </div>\n      </div>\n      }\n\n      <!-- Desktop View -->\n      @if(!isMobileView) {\n      <div class=\"flex\">\n        <!-- Left sidebar with preset date ranges -->\n        <div class=\"w-48 border-r border-gray-200\">\n          <ul class=\"py-1\">\n            @for(preset of presets; track preset.id) {\n            <li\n              class=\"px-4 py-2 text-sm cursor-pointer\"\n              [class.bg-blue-50]=\"selectedPreset === preset.id\"\n              [class.text-blue-700]=\"selectedPreset === preset.id\"\n              [class.hover:bg-gray-100]=\"selectedPreset !== preset.id\"\n              (click)=\"selectPreset(preset.id)\"\n            >{{ preset.label }}</li>\n            }\n          </ul>\n        </div>\n\n        <!-- Right side with date inputs and calendars -->\n        <div class=\"flex-1 p-4\">\n          <!-- Date inputs -->\n          <div class=\"flex w-full items-start mb-4\">\n            <div class=\"mr-4 flex-grow\">\n              <label class=\"block text-sm text-gray-600 mb-1\">Start</label>\n              <div class=\"relative\">\n                <tw-masked-input\n                  [value]=\"formatDateForInput(dateRange.start)\"\n                  [placeholder]=\"'DD / MM / YYYY'\"\n                  [maskConfig]=\"dateMaskConfig\"\n                  [validator]=\"validateDate('start')\"\n                  name=\"desktopStartDate\"\n                  [(ngModel)]=\"startDateModel\"\n                  (ngModelChange)=\"onStartDateInput($event || '')\"\n                  twClass=\"w-36\"\n                />\n              </div>\n            </div>\n            <div class=\"flex-grow\">\n              <label class=\"block text-sm text-gray-600 mb-1\">End</label>\n              <div class=\"relative\">\n                <tw-masked-input\n                  [value]=\"formatDateForInput(dateRange.end)\"\n                  [placeholder]=\"'DD / MM / YYYY'\"\n                  [maskConfig]=\"dateMaskConfig\"\n                  [validator]=\"validateDate('end')\"\n                  name=\"desktopEndDate\"\n                  [(ngModel)]=\"endDateModel\"\n                  (ngModelChange)=\"onEndDateInput($event || '')\"\n                  twClass=\"w-36\"\n                />\n              </div>\n            </div>\n          </div>\n\n          <!-- Dual calendars -->\n          <div class=\"grid grid-cols-2 gap-4\">\n            <!-- Left calendar (for start date) -->\n            <div class=\"border rounded-md p-3\">\n              <tw-calendar\n                [selectedDate]=\"null\"\n                [rangeStart]=\"dateRange.start\"\n                [rangeEnd]=\"dateRange.end\"\n                [isRange]=\"true\"\n                [minDate]=\"minDate\"\n                [maxDate]=\"maxDate\"\n                (rangeSelected)=\"onRangeSelected($event)\"\n                [displayDate]=\"leftCalendarDate\"\n                (dateSelected)=\"onLeftCalendarChange($event)\"\n              ></tw-calendar>\n            </div>\n\n            <!-- Right calendar (shows next month) -->\n            <div class=\"border rounded-md p-3\">\n              <tw-calendar\n                [selectedDate]=\"null\"\n                [rangeStart]=\"dateRange.start\"\n                [rangeEnd]=\"dateRange.end\"\n                [isRange]=\"true\"\n                [minDate]=\"minDate\"\n                [maxDate]=\"maxDate\"\n                (rangeSelected)=\"onRangeSelected($event)\"\n                [displayDate]=\"rightCalendarDate\"\n              ></tw-calendar>\n            </div>\n          </div>\n\n          <!-- Footer with action buttons -->\n          <div class=\"flex justify-end mt-4 gap-2\">\n            <tw-button\n              type=\"basic\"\n              twClass=\"bg-white text-sm\"\n              (click)=\"closeDropdown()\"\n            >\n              Clear\n            </tw-button>\n            <tw-button\n              color=\"primary\"\n              class=\"ml-2\"\n              twClass=\"text-sm\"\n              type=\"filled\"\n              [disabled]=\"!isValid\"\n              (click)=\"applySelection()\"\n            >\n              Apply\n            </tw-button>\n          </div>\n        </div>\n      </div>\n      }\n    </div>\n  </ng-template>\n</div>","import {\n  Dialog as CdkDialog,\n  DIALOG_DATA,\n  DialogConfig,\n  DialogRef,\n} from '@angular/cdk/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\n\nexport { DIALOG_DATA, DialogRef };\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TwDialog {\n  constructor(private readonly _dialog: CdkDialog) {}\n\n  open<R = unknown, C = unknown, D = unknown>(\n    component: ComponentType<C>,\n    dialogConfig: DialogConfig<D, DialogRef<R, C>> = {}\n  ) {\n    return this.openWithRef(component, dialogConfig).closed;\n  }\n\n  openWithRef<R = unknown, C = unknown, D = unknown>(\n    component: ComponentType<C>,\n    dialogConfig: DialogConfig<D, DialogRef<R, C>> = {}\n  ) {\n    const config = {\n      minWidth: '250px',\n      backdropClass: 'acrylic-backdrop',\n      panelClass: ['shadow-2xl', 'rounded-2xl'],\n      ...dialogConfig,\n    };\n    return this._dialog.open(component, config);\n  }\n}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'tw-expander-content',\n  standalone: true,\n  template: `<ng-template>\n    <ng-content></ng-content>\n  </ng-template>`,\n})\nexport class TwExpanderContent {\n  @ViewChild(TemplateRef, { static: true }) content?: TemplateRef<any>;\n}\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'tw-expander-header',\n  standalone: true,\n  template: `<ng-template>\n    <ng-content></ng-content>\n  </ng-template>`,\n})\nexport class TwExpanderHeader {\n  @Input() showIcon = true;\n  @Input() hideDivider = false;\n  @ViewChild(TemplateRef, { static: true }) content?: TemplateRef<any>;\n}\n","import { CdkAccordionItem } from '@angular/cdk/accordion';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterContentInit,\n  Component,\n  ContentChild,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { TwButtonIcon } from '../button/button-icon.component';\nimport { TwExpanderContent } from './expander-content.component';\nimport { TwExpanderGroup } from './expander-group.component';\nimport { TwExpanderHeader } from './expander-header.component';\n\n@Component({\n    selector: 'tw-expander',\n    imports: [CdkAccordionItem, TwButtonIcon, NgTemplateOutlet, NgClass],\n    template: `\n    <div\n      #expander=\"cdkAccordionItem\"\n      cdkAccordionItem\n      [expanded]=\"expanded\"\n      [(expanded)]=\"expanded\"\n      (opened)=\"opened.emit()\"\n      (closed)=\"closed.emit()\"\n      [ngClass]=\"{\n        'divide-y divide-solid dark:divide-slate-500': !header.hideDivider\n      }\"\n    >\n      <h2\n        class=\"flex items-center text-xl cursor-pointer\"\n        [class.pb-2]=\"!header.hideDivider\"\n        (click)=\"expander.toggle()\"\n      >\n        @if(header.showIcon){\n        <tw-button-icon\n          [svgIcon]=\"\n            expander.expanded ? 'hero:chevron-down' : 'hero:chevron-right'\n          \"\n        />\n        } @if(header){\n        <div class=\"w-full\">\n          <ng-container [ngTemplateOutlet]=\"header.content!\"></ng-container>\n        </div>\n        }\n      </h2>\n      <div\n        class=\"w-full overflow-y-hidden\"\n        [style.height]=\"\n          !expander.expanded || !content.content\n            ? '0'\n            : calculateHeight(contentContainer)\n        \"\n        style=\"transition: height 300ms;\"\n      >\n        <div class=\"w-full\" #contentContainer>\n          <ng-container [ngTemplateOutlet]=\"content.content!\"></ng-container>\n        </div>\n      </div>\n    </div>\n  `\n})\nexport class TwExpanderItem implements AfterContentInit {\n  @Input() expanded = false;\n  @Output('expanded') expandedChange = new EventEmitter();\n  @Output() opened = new EventEmitter();\n  @Output() closed = new EventEmitter();\n\n  @ContentChild(TwExpanderHeader) header!: TwExpanderHeader;\n  @ContentChild(TwExpanderContent)\n  content!: TwExpanderContent;\n  @ViewChild(CdkAccordionItem, { static: true })\n  expanderItem?: CdkAccordionItem;\n  private _parent?: TwExpanderGroup;\n\n  ngAfterContentInit(): void {}\n\n  set parent(value: TwExpanderGroup | undefined) {\n    if (this.expanderItem && value?.expanderGroup)\n      this.expanderItem.accordion = value.expanderGroup!;\n\n    this._parent = value;\n  }\n  get parent() {\n    return this._parent;\n  }\n\n  calculateHeight(elt: HTMLElement) {\n    return elt.offsetHeight + 16 + 'px';\n  }\n}\n","import { CdkAccordion } from '@angular/cdk/accordion';\nimport {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  Input,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { TwExpanderItem } from './expander-item.component';\n\n@Component({\n    selector: 'tw-expander-group',\n    imports: [CdkAccordion],\n    template: `\n    <div cdkAccordion [multi]=\"multi\" class=\"flex gap-4 flex-col\">\n      <ng-content></ng-content>\n    </div>\n  `\n})\nexport class TwExpanderGroup implements AfterContentInit {\n  @Input() multi = false;\n\n  @ViewChild(CdkAccordion, { static: true }) expanderGroup?: CdkAccordion;\n\n  @ContentChildren(TwExpanderItem)\n  expanderItems?: QueryList<TwExpanderItem>;\n\n  ngAfterContentInit(): void {\n    this.expanderItems?.forEach((i) => (i.parent = this));\n  }\n  closeAll() {\n    this.expanderGroup?.closeAll();\n  }\n\n  openAll() {\n    this.expanderGroup?.openAll();\n  }\n}\n","import { TwExpanderContent } from './expander-content.component';\nimport { TwExpanderGroup } from './expander-group.component';\nimport { TwExpanderHeader } from './expander-header.component';\nimport { TwExpanderItem } from './expander-item.component';\n\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    TwExpanderItem,\n    TwExpanderContent,\n    TwExpanderHeader,\n    TwExpanderGroup,\n  ],\n  exports: [\n    TwExpanderItem,\n    TwExpanderContent,\n    TwExpanderHeader,\n    TwExpanderGroup,\n  ],\n  providers: [],\n})\nexport class TwExpanderModule {}\n\nexport { TwExpanderContent, TwExpanderGroup, TwExpanderHeader, TwExpanderItem };\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { TwMenu } from './menu.component';\n\n@Directive({\n  selector: '[twMenuItem]',\n  standalone: true,\n  // imports: [],\n})\nexport class TwMenuItemDirective {\n  @Input({ required: false, alias: 'twMenuItem' })\n  menu?: TwMenu | string;\n\n  @Input({ required: false, alias: 'twMenuItemDisabled' })\n  disabled: boolean = false;\n  type: 'check' | 'radio' | 'classic' = 'classic';\n\n  get triggerMenu() {\n    return (this.menu as TwMenu)?.menuTemplate;\n  }\n\n  constructor(public template: TemplateRef<any>) {}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n  ChangeDetectorRef,\n  Directive,\n  HostListener,\n  Input,\n} from '@angular/core';\nimport { TwMenu } from './menu.component';\n\ntype TwMenuTriggerPositions =\n  | 'top-left'\n  | 'top-right'\n  | 'bottom-left'\n  | 'bottom-right'\n  | 'center';\n@Directive({\n  selector: '[twMenuTriggerFor]',\n  standalone: true,\n  providers: [],\n})\nexport class TwMenuTriggerDirective extends CdkMenuTrigger {\n  constructor(private readonly _cd: ChangeDetectorRef) {\n    super();\n  }\n  @Input('twMenuTriggerFor') menu!: TwMenu;\n\n  @Input() set position(value: TwMenuTriggerPositions) {\n    this.menuPosition = this._getPosition(value);\n  }\n\n  @HostListener('click', ['$event'])\n  onClick(event: Event) {\n    event.stopPropagation();\n  }\n\n  ngAfterContentInit(): void {\n    if (this.menu?.menuTemplate && !this.menuTemplateRef)\n      this.menuTemplateRef = this.menu.menuTemplate;\n    this._cd.detectChanges();\n  }\n  private _getPosition(value: TwMenuTriggerPositions): ConnectedPosition[] {\n    switch (value) {\n      case 'top-left':\n        return [\n          {\n            originX: 'end',\n            originY: 'top',\n            overlayX: 'end',\n            overlayY: 'bottom',\n          },\n        ];\n      case 'top-right':\n        return [\n          {\n            originX: 'start',\n            originY: 'top',\n            overlayX: 'start',\n            overlayY: 'bottom',\n          },\n        ];\n      case 'bottom-left':\n        return [\n          {\n            originX: 'end',\n            originY: 'bottom',\n            overlayX: 'end',\n            overlayY: 'top',\n          },\n        ];\n      case 'bottom-right':\n        return [\n          {\n            originX: 'start',\n            originY: 'bottom',\n            overlayX: 'start',\n            overlayY: 'top',\n          },\n        ];\n      case 'center':\n        return [\n          {\n            originX: 'center',\n            originY: 'center',\n            overlayX: 'center',\n            overlayY: 'center',\n          },\n        ];\n      default:\n        return [];\n    }\n  }\n}\n","import {\n  CdkMenu,\n  CdkMenuItem,\n  CdkMenuItemCheckbox,\n  CdkMenuItemRadio,\n  CdkMenuTrigger,\n} from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  Component,\n  ContentChildren,\n  Input,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { TwMenuItemDirective } from './menu-item.directive';\n\n@Component({\n    selector: 'tw-menu',\n    imports: [\n        CdkMenu,\n        CdkMenuTrigger,\n        NgTemplateOutlet,\n        CdkMenuItem,\n        CdkMenuItemCheckbox,\n        CdkMenuItemRadio,\n    ],\n    template: `\n    <ng-template>\n      <div\n        class=\"bg-white dark:bg-slate-700 dark:text-white border border-gray-200 rounded-lg shadow-lg  w-full\"\n        [style.width]=\"panelWidth\"\n        cdkMenu\n      >\n        @for(item of menuItems; track $index){ @switch(item.type) { @case\n        ('check') {\n        <div\n          cdkMenuItemCheckbox\n          [cdkMenuItemChecked]=\"false\"\n          [cdkMenuTriggerFor]=\"item.triggerMenu\"\n          class=\"w-full tw-dropdown-menu-item\"\n          [class.disabled]=\"item.disabled\"\n        >\n          <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n        </div>\n\n        } @case ('radio') {\n        <div\n          cdkMenuItemRadio\n          [cdkMenuTriggerFor]=\"item.triggerMenu\"\n          class=\"w-full tw-dropdown-menu-item\"\n          [class.disabled]=\"item.disabled\"\n        >\n          <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n        </div>\n        } @default {\n        <div\n          cdkMenuItem\n          [cdkMenuTriggerFor]=\"item.triggerMenu\"\n          class=\"w-full tw-dropdown-menu-item\"\n          [class.disabled]=\"item.disabled\"\n        >\n          <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n        </div>\n        } } }\n      </div>\n    </ng-template>\n  `\n})\nexport class TwMenu {\n  @ViewChild(TemplateRef, { static: true }) menuTemplate?: TemplateRef<unknown>;\n  @ContentChildren(TwMenuItemDirective)\n  menuItems?: QueryList<TwMenuItemDirective>;\n\n  @Input()\n  panelWidth?: string;\n}\n","import { PARENT_OR_NEW_MENU_STACK_PROVIDER } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TwMenuItemDirective } from './menu-item.directive';\nimport { TwMenuTriggerDirective } from './menu-trigger.directive';\nimport { TwMenu } from './menu.component';\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, TwMenuTriggerDirective, TwMenu, TwMenuItemDirective],\n  exports: [TwMenuTriggerDirective, TwMenu, TwMenuItemDirective],\n  providers: [PARENT_OR_NEW_MENU_STACK_PROVIDER],\n})\nexport class TwMenuModule {}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NotificationComponent } from './notification.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { defaultTwNotificationConfig, TW_NOTIFICATION_CONFIG_TOKEN } from './notification-config';\n\nexport function provideTwNotification(config = defaultTwNotificationConfig): Provider[] {\n  return [\n    {\n      provide: TW_NOTIFICATION_CONFIG_TOKEN,\n      useValue: { ...defaultTwNotificationConfig, ...config },\n    }\n  ];\n}\n","import { NgClass } from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { TwIcon } from '../../icon/icon.component';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class OptionSelectionChange<T = any> {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: TwOption<T>,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput: boolean = false,\n    /** Content element */\n    public innerHTML: string | null = null\n  ) {}\n}\n\n@Component({\n    selector: 'tw-option',\n    imports: [NgClass, TwIcon],\n    templateUrl: './option.component.html',\n    host: {\n        '[attr.id]': 'id',\n        '[attr.role]': 'option',\n        '(click)': 'select(true)',\n        class: 'tw-option',\n    }\n})\nexport class TwOption<T = any> implements OnInit {\n  public selected: boolean = false;\n  public active: boolean = false;\n\n  @Input() public value: any;\n  @Input() public disabled: boolean = false;\n  @Input() public id: string = `tw-option-${_uniqueIdCounter++}`;\n  @Input() public textOnly: boolean | string = true;\n\n  @Input() public useSelectedIndicator: boolean = true;\n  @Input() public indicator: 'left' | 'right' | null = 'right';\n\n  @Output() readonly onSelectionChange = new EventEmitter<\n    OptionSelectionChange<T>\n  >();\n\n  @ViewChild('content') public contentElement!: ElementRef;\n\n  constructor(private readonly element: ElementRef<HTMLElement>) {}\n\n  ngOnInit(): void {}\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(\n      new OptionSelectionChange<T>(this, isUserInput, this.getInnerHTML())\n    );\n  }\n\n  /** Selects the option. */\n  select(isUserInput: boolean = false): void {\n    //\n    // Validate disabled and alredy selected\n    if (this.disabled) return;\n\n    //\n    // Select and emit event\n    this._emitSelectionChangeEvent(isUserInput);\n    // set select if we have a value\n    if (this.value) this.selected = true;\n  }\n\n  deselect(isUserInput: boolean = false): void {\n    //\n    // Deselect and emit event\n    this.selected = false;\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this.active) {\n      this.active = true;\n      this.scrollIntoView();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this.active) {\n      this.active = false;\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    //\n    // Hold element\n    let element: HTMLElement = this.contentElement.nativeElement;\n\n    //\n    // When textOnly is a string it means we have a selector to use\n    if (typeof this.textOnly === 'string') {\n      const elementForTextonly: HTMLElement | null = element.querySelector(\n        this.textOnly\n      );\n      if (elementForTextonly) element = elementForTextonly;\n    }\n\n    return element.textContent ? element.textContent : '';\n  }\n\n  getInnerHTML(forceHTML: boolean = false): string | null {\n    return this.textOnly !== false && forceHTML === false\n      ? this.getLabel()\n      : this.contentElement?.nativeElement?.innerHTML || null;\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  selectViaInteraction(): void {\n    if (!this.disabled) {\n      this.selected = true;\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  scrollIntoView() {\n    // @TODO: center scrolling is not supported widely, check for alternative solution or polyfill\n    if (typeof this.element.nativeElement.scrollIntoView !== 'undefined')\n      this.element.nativeElement.scrollIntoView({\n        block: 'center',\n      });\n  }\n\n  setActiveStylesWithDelay(): void {\n    setTimeout(() => {\n      if (!this.active) {\n        this.active = true;\n      }\n\n      this.scrollIntoView();\n    });\n  }\n}\n","<div\n  #content\n  class=\"content\"\n  [ngClass]=\"{'selected-item':  selected && value}\"\n  >\n  <ng-content></ng-content>\n</div>\n\n@if (useSelectedIndicator) {\n  <span\n    class=\"indicator\"\n    [ngClass]=\"{'left-0': indicator === 'left', 'right-0': indicator === 'right', 'flex': selected && indicator && value}\"\n    [hidden]=\"selected === false || !value || !indicator\"\n    >\n    <!-- Heroicon name: solid/check -->\n    <tw-icon [size]=\"24\" svgIcon=\"hero:check\"/>\n  </span>\n}\n","import { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport {\n  DOWN_ARROW,\n  ENTER,\n  SPACE,\n  UP_ARROW,\n  hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {\n  BlockScrollStrategy,\n  CdkConnectedOverlay,\n  ConnectedPosition,\n  Overlay,\n} from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  NgZone,\n  OnInit,\n  QueryList,\n  ViewChild,\n  forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, defer, merge, startWith, switchMap, take } from 'rxjs';\nimport { ColorTypes } from '../color-types';\nimport { OptionSelectionChange, TwOption } from './option/option.component';\n\n/**\n * IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n@Component({\n    selector: 'tw-select',\n    imports: [NgClass, CdkConnectedOverlay],\n    templateUrl: './select.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[attr.tabindex]': '0',\n        '[attr.role]': 'combobox',\n        '[attr.aria-autocomplete]': 'none',\n        '[attr.id]': 'id',\n        '[attr.aria-controls]': 'isOpen ? id + \"-panel\" : null',\n        '[attr.aria-expanded]': 'isOpen',\n        '[attr.aria-disabled]': 'disabled.toString()',\n        '[attr.aria-haspopup]': '\"listbox\"',\n        '[attr.aria-labelledby]': '\"listbox-label\"',\n        '(keydown)': 'handleKeydown($event)',\n        '(click)': 'openPanel()',\n        '[class]': '\"tw-select \" + (color || \"\") + (twClass ? \" \" + twClass : \"\")',\n    },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TwSelect),\n            multi: true,\n        },\n    ]\n})\nexport class TwSelect\n  implements ControlValueAccessor, OnInit, AfterContentInit\n{\n  @Input() public placeholder: string = 'Select an option';\n  @Input() public disabled: boolean = false;\n  @Input() public id: string = `tw-select-${_uniqueIdCounter++}`;\n  @Input() public compareWith: (o1: any, o2: any) => boolean = (\n    o1: any,\n    o2: any\n  ) => o1 === o2;\n  @Input()\n  get value(): any {\n    return this.innerValue;\n  }\n  set value(newValue: any) {\n    this.selectOption(newValue, null, false);\n  }\n\n  @ViewChild('arrowContainer', { static: true })\n  public arrowContainer!: ElementRef<HTMLDivElement>;\n  @ViewChild('inputContainer', { static: true })\n  public inputContainer!: ElementRef<HTMLDivElement>;\n  @ViewChild('trigger', { static: true }) public trigger!: ElementRef;\n  @ContentChildren(TwOption, { descendants: true })\n  public options!: QueryList<TwOption>;\n\n  @Input() color?: ColorTypes;\n  @Input() twClass?: string;\n\n  @Input() inputSticky = true;\n\n  public get htmlValue(): string | null {\n    //\n    // Validate inner value\n    if (!this.innerValue && !this._keyManager.activeItem) return null;\n    else return this._keyManager.activeItem?.getInnerHTML() || null;\n  }\n\n  public onChange = (value: any) => {};\n  public onTouched = () => {};\n\n  public innerValue: any = null;\n\n  public wasTouched: boolean = false;\n  public isOpen: boolean = false;\n  public overlayWidth!: string;\n\n  private _keyManager!: ActiveDescendantKeyManager<TwOption>;\n  public _scrollStrategy: BlockScrollStrategy;\n\n  public positions: ConnectedPosition[] = [\n    {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'top',\n      offsetY: 8,\n    },\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n      offsetY: 8,\n    },\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'bottom',\n      offsetY: -8,\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n      offsetY: -8,\n    },\n  ];\n\n  /** Combined stream of all of the child options' change events. */\n  readonly optionSelectionChanges: Observable<OptionSelectionChange> = defer(\n    () => {\n      const options = this.options;\n\n      if (options) {\n        return options.changes.pipe(\n          startWith(options),\n          switchMap(() =>\n            merge(...options.map((option) => option.onSelectionChange))\n          )\n        );\n      }\n\n      return this.zone.onStable.pipe(\n        take(1),\n        switchMap(() => this.optionSelectionChanges)\n      );\n    }\n  ) as Observable<OptionSelectionChange>;\n\n  constructor(\n    public cdr: ChangeDetectorRef,\n    public elementRef: ElementRef,\n    public overlay: Overlay,\n    private readonly zone: NgZone,\n    private readonly liveAnnouncer: LiveAnnouncer\n  ) {\n    this._scrollStrategy = this.overlay.scrollStrategies.block();\n  }\n\n  ngOnInit(): void {}\n\n  ngAfterContentInit(): void {\n    this._initKeyManager();\n\n    this.optionSelectionChanges.subscribe((event) => {\n      this.onSelect(event.source, event.isUserInput, event.innerHTML);\n      this.cdr.markForCheck();\n    });\n\n    this.options.changes.pipe(startWith(null)).subscribe(() => {\n      // Defer setting the value in order to avoid the \"Expression\n      // has changed after it was checked\" errors from Angular.\n      Promise.resolve().then(() => {\n        this.selectOption(this.innerValue, null, false, true);\n      });\n    });\n  }\n\n  writeValue(value: any) {\n    this.selectOption(value, null, false);\n    this.cdr.markForCheck();\n  }\n\n  registerOnChange(onChange: any) {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any) {\n    this.onTouched = onTouched;\n  }\n\n  markAsTouched() {\n    if (!this.wasTouched) {\n      this.onTouched();\n      this.wasTouched = true;\n    }\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    //\n    // Set disabled\n    this.disabled = isDisabled;\n\n    //\n    // Set aria-disabled\n    this.trigger?.nativeElement.setAttribute(\n      'aria-disabled',\n      isDisabled.toString()\n    );\n  }\n\n  openPanel() {\n    //\n    // Validate disabled\n    if (this.disabled === true) return;\n\n    //\n    // open panel\n    this.isOpen = true;\n\n    //\n    // Scroll if we have an active item\n    if (this._keyManager.activeItem)\n      this._keyManager.activeItem.setActiveStylesWithDelay();\n  }\n\n  closePanel() {\n    //\n    // Update manager active item\n    if (this.innerValue) this._updateKeyManagerActiveItem(this.innerValue);\n\n    // close\n    this.isOpen = false;\n  }\n\n  backdropClick() {\n    this.closePanel();\n  }\n\n  selectOption(\n    newValue: any,\n    innerHTML: string | null,\n    touched: boolean,\n    forceUpdate = false\n  ) {\n    //\n    // Do nothing if selected is the same as the current value\n    if (this.compareWith(this.innerValue, newValue) && forceUpdate === false) {\n      return;\n    }\n\n    //\n    // Set new value\n    this.innerValue = newValue;\n\n    //\n    // On change event\n    this.onChange(newValue);\n    // mark as touched if this was made by a user interaction\n    if (touched === true) this.markAsTouched();\n\n    //\n    // Skip if we don't have options\n    if (!this.options) return;\n\n    //\n    // Update manager active item\n    this._updateKeyManagerActiveItem(newValue);\n  }\n\n  onSelect(source: TwOption, isUserInput: boolean, innerHTML: string | null) {\n    //\n    // Validate value is different\n    if (this.innerValue === source.value) return this.closePanel();\n\n    //\n    // Loop options and deselect all except the selected one\n    this.options.forEach((option) => {\n      if (option.selected === true && option.id !== source.id) {\n        option.deselect();\n      }\n    });\n\n    //\n    // Select option\n    this.selectOption(source.value, innerHTML, true);\n\n    //\n    // Close\n    this.closePanel();\n  }\n\n  handleKeydown(event: KeyboardEvent) {\n    if (!this.disabled) {\n      this.isOpen === true\n        ? this._handleOpenKeydown(event)\n        : this._handleClosedKeydown(event);\n    }\n  }\n\n  private _handleClosedKeydown(event: KeyboardEvent): void {\n    const manager = this._keyManager;\n\n    manager.onKeydown(event);\n  }\n\n  /** Handles keyboard events when the selected is open. */\n  private _handleOpenKeydown(event: KeyboardEvent): void {\n    const manager = this._keyManager;\n    const keyCode = event.keyCode;\n    const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n    const isTyping = manager.isTyping();\n\n    if (isArrowKey && event.altKey) {\n      // Close the select on ALT + arrow key to match the native <select>\n      event.preventDefault();\n      this.closePanel();\n      // Don't do anything in this case if the user is typing,\n      // because the typing sequence can include the space key.\n    } else if (\n      !isTyping &&\n      (keyCode === ENTER || keyCode === SPACE) &&\n      manager.activeItem &&\n      !hasModifierKey(event)\n    ) {\n      event.preventDefault();\n      manager.activeItem.selectViaInteraction();\n    } else {\n      manager.onKeydown(event);\n\n      // // We set a duration on the live announcement, because we want the live element to be\n      // // cleared after a while so that users can't navigate to it using the arrow keys.\n      // this.liveAnnouncer.announce((manager.activeItem as TwOption)?.contentElement?.nativeElement?.innerHTML, 10000);\n    }\n  }\n\n  private _initKeyManager() {\n    this._keyManager = new ActiveDescendantKeyManager<TwOption>(this.options)\n      .withTypeAhead()\n      .withVerticalOrientation()\n      .withHomeAndEnd()\n      .withWrap()\n      .withAllowedModifierKeys(['shiftKey']);\n\n    this._keyManager.change.pipe().subscribe(() => {\n      if (!this.isOpen && this._keyManager.activeItem) {\n        this._keyManager.activeItem.selectViaInteraction();\n      }\n    });\n  }\n\n  private _updateKeyManagerActiveItem(value: any) {\n    //\n    // Set key manager\n    const manager = this._keyManager;\n\n    //\n    // Update focus for different values\n    if (!this.compareWith(manager.activeItem?.value, value)) {\n      //\n      // Deselect current active item(which is the old one and will be changed ahead)\n      if (manager.activeItem?.selected === true) manager.activeItem?.deselect();\n\n      //\n      // Find selected option index\n      const correspondingOption = this.options.find((option: TwOption) => {\n        return option.value != null && this.compareWith(option.value, value);\n      });\n      // validate and update active item\n      if (correspondingOption) manager.setActiveItem(correspondingOption);\n      else manager.setActiveItem(-1);\n    }\n  }\n}\n","<span\n  class=\"block truncate text-gray-400/80\"\n  [ngClass]=\"{'block': !innerValue}\"\n  [hidden]=\"innerValue\"\n  >\n  {{ placeholder}}\n</span>\n\n<span\n  class=\"block truncate\"\n  [innerHtml]=\"htmlValue\"\n  [ngClass]=\"{'block': innerValue}\"\n  [hidden]=\"!innerValue\"\n></span>\n\n<style>\n  .custom-arrow:empty {\n  display: none;\n}\n\n</style>\n<span\n  class=\"custom-arrow absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none\"\n  #arrowContainer\n  >\n  <ng-content select=\"[arrow-icon]\"></ng-content>\n</span>\n\n@if (arrowContainer.children.length === 0) {\n  <span\n    class=\"default-arrow absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none\"\n    >\n    <svg\n      class=\"h-5 w-5 text-gray-400\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 20 20\"\n      fill=\"currentColor\"\n      aria-hidden=\"true\"\n      >\n      <path\n        fill-rule=\"evenodd\"\n        d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\n        clip-rule=\"evenodd\"\n        />\n      </svg>\n    </span>\n  }\n\n  <ng-template\n    cdkConnectedOverlay\n    [cdkConnectedOverlayHasBackdrop]=\"true\"\n    [cdkConnectedOverlayLockPosition]=\"true\"\n    [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n    [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n    [cdkConnectedOverlayOrigin]=\"elementRef.nativeElement\"\n    [cdkConnectedOverlayOpen]=\"isOpen\"\n    [cdkConnectedOverlayPositions]=\"positions\"\n    [cdkConnectedOverlayMinWidth]=\"elementRef.nativeElement.offsetWidth\"\n    (backdropClick)=\"backdropClick()\"\n    (overlayKeydown)=\"handleKeydown($event)\"\n    (detach)=\"closePanel()\"\n    >\n    <div\n      [attr.id]=\"id + '-panel'\"\n      tabindex=\"-1\"\n      class=\"tw-option-panel-scroll {{color}} relative\"\n      role=\"listbox\"\n      >\n      <!-- Input container -->\n      <div\n        #inputContainer\n        class=\"w-full flex flex-col p-3\"\n        [ngClass]=\"{'flex': inputContainer.children.length !== 0, 'hidden': inputContainer.children.length === 0, 'pb-0 z-10 sticky top-0 bg-white dark:bg-slate-700': inputSticky}\"\n        >\n        <ng-content select=\"input\"></ng-content>\n      </div>\n\n      <!-- Options -->\n      <ng-content select=\"tw-option\"></ng-content>\n\n      <!-- Will be used for extra content like empty list message -->\n      <ng-content></ng-content>\n    </div>\n  </ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, Input, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'tw-skeleton-rect',\n  imports: [NgTemplateOutlet],\n  host: {\n    class: '',\n  },\n  template: `@if (template) {\n    <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n    } @else {\n    <ng-template #elseTemplate>\n      <div class=\"pulse default\"></div>\n    </ng-template>\n    } `,\n  styles: [\n    `\n      .default {\n        animation: pulse 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n        animation-delay: 0.5s;\n        display: block;\n        width: var(--skeleton-rect-width);\n        height: var(--skeleton-rect-height);\n      }\n      :host {\n        display: block;\n        width: var(--skeleton-rect-width);\n        height: var(--skeleton-rect-height);\n      }\n      :host.pulse {\n        background: rgb(239, 241, 246) no-repeat;\n        border-radius: 4px;\n      }\n    `,\n  ],\n})\nexport class TwSkeletonComponent {\n  @Input() width?: string;\n  @Input() height?: string;\n  @Input() className?: string;\n  template: TemplateRef<any> | null = null;\n\n  constructor(private host: ElementRef<HTMLElement>) {}\n\n  ngOnInit() {\n    const host = this.host.nativeElement;\n\n    if (this.className) {\n      host.classList.add(this.className);\n    }\n\n    if (!this.template) host.classList.add('pulse');\n\n    host.style.setProperty('--skeleton-rect-width', this.width ?? '100%');\n    host.style.setProperty('--skeleton-rect-height', this.height ?? '20px');\n  }\n}\n","import {\n  Directive,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { TwSkeletonComponent } from './skeleton.component';\n\n@Directive({ selector: '[twSkeleton]', standalone: true })\nexport class TwSkeletonDirective implements OnChanges {\n  @Input('twSkeleton') isLoading = false;\n  @Input('twSkeletonRepeat') size = 1;\n  @Input('twSkeletonTemplate') template: TemplateRef<any> | null = null;\n  @Input({ required: true, alias: 'twSkeletonWidth' }) width!: string;\n  @Input({ required: true, alias: 'twSkeletonHeight' }) height!: string;\n  @Input({ alias: 'twSkeletonClassName' }) className?: string;\n\n  constructor(private tpl: TemplateRef<any>, private vcr: ViewContainerRef) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['isLoading']) {\n      this.vcr.clear();\n\n      if (changes['isLoading'].currentValue) {\n        Array.from({ length: this.size }).forEach(() => {\n          const ref = this.vcr.createComponent(TwSkeletonComponent);\n\n          Object.assign(ref.instance, {\n            width: this.width,\n            height: this.height,\n            className: this.className,\n            template: this.template,\n          });\n        });\n      } else {\n        this.vcr.createEmbeddedView(this.tpl);\n      }\n    }\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'tw-sticky-content-header',\n  standalone: true,\n  template: `\n    <div\n      class=\"w-full sticky bg-white dark:bg-gray-800 shadow-sm\"\n      style=\"top: {{ top }}px; z-index: {{ zIndex }}\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n})\nexport class TwStickyContentHeader {\n  @Input() top = 72;\n  @Input() zIndex = 20;\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  forwardRef,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormsModule,\n  NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { ColorTypes } from '../color-types';\n\n@Component({\n    selector: 'tw-switch',\n    template: `\n    <span class=\"tw-switch {{ twClass }}\">\n      <span class=\"mr-2\">{{ label }}</span>\n      <input\n        id=\"one\"\n        #chkbox\n        (change)=\"onChange($event)\"\n        [class]=\"color\"\n        type=\"checkbox\"\n        [disabled]=\"disabled\"\n        [checked]=\"value\"\n      />\n    </span>\n  `,\n    imports: [FormsModule],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TwSwitch),\n            multi: true,\n        },\n    ]\n})\nexport class TwSwitch implements ControlValueAccessor {\n  @Input() label?: string;\n  @Input() twClass?: string;\n  @Output() toggleChange = new EventEmitter<boolean>();\n  @Input() disabled = false;\n  @Input() color?: ColorTypes;\n\n  @Input() value: boolean = false;\n\n  private _alternateValues: { [x: string]: boolean } = {\n    '1': true,\n    TRUE: true,\n    FALSE: false,\n    '0': false,\n  };\n\n  private _onChangeFns: any[] = [];\n  private _onTouchedFns: any[] = [];\n\n  constructor() {}\n  writeValue(obj: any): void {\n    if (typeof obj === 'boolean') this.value = obj.valueOf();\n    else if (obj) {\n      this.value = this._alternateValues[obj.toString()] || false;\n    }\n  }\n  registerOnChange(fn: any): void {\n    if (fn) this._onChangeFns.push(fn);\n  }\n  registerOnTouched(fn: any): void {\n    if (fn) this._onTouchedFns.push(fn);\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  ngOnInit(): void {}\n  onChange(event: Event) {\n    const value = (event.target as any).checked;\n    this.toggleChange.emit(value);\n    this.value = value;\n    this._onChangeFns?.forEach((fn) => fn(value));\n    this._onTouchedFns?.forEach((fn) => fn(value));\n  }\n}\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\n\n@Component({\n  selector: 'tw-tab',\n  standalone: true,\n  template: `<ng-template>\n    <ng-content></ng-content>\n  </ng-template>`,\n})\nexport class TwTabItem {\n  @Input() label?: string;\n  @Input() route?: {\n    path: string[];\n    extras?: NavigationExtras;\n  };\n  @ViewChild(TemplateRef, { static: true }) content?: TemplateRef<any>;\n  constructor() {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  standalone: true,\n  selector: 'tw-tab-item',\n  template: `\n    <div\n      class=\"tw-tab-item\"\n      [class.selected-item]=\"isSelected\"\n      (click)=\"selected.emit()\"\n    >\n      {{ label }}\n    </div>\n  `,\n})\nexport class __TwTabItem {\n  @Output() selected = new EventEmitter();\n  @Input() label?: string;\n  @Input() isSelected?: boolean;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  Output,\n  QueryList,\n  TemplateRef,\n} from '@angular/core';\nimport {\n  ActivatedRoute,\n  NavigationExtras,\n  Router,\n  RouterOutlet,\n} from '@angular/router';\nimport { ColorTypes } from '../../color-types';\nimport { TwTabItem } from '../tab-item-maker.component';\nimport { __TwTabItem } from '../tab.component';\n\n@Component({\n  imports: [__TwTabItem, NgTemplateOutlet, RouterOutlet],\n  selector: 'tw-tab-group',\n  templateUrl: './tab-group.component.html',\n  styleUrls: ['./tab-group.component.scss'],\n})\nexport class TwTabGroup implements AfterViewInit {\n  @ContentChildren(TwTabItem)\n  children?: QueryList<TwTabItem>;\n  selectedIndex = 0;\n  @Input() color?: ColorTypes = 'primary';\n  @Input() behavior?: 'default' | 'router' = 'default';\n\n  @Output() selectionChanged = new EventEmitter<number>();\n\n  get currentContent(): TemplateRef<any> | null {\n    return this.children?.get(this.selectedIndex)?.content || null;\n  }\n\n  constructor(\n    private readonly _cd: ChangeDetectorRef,\n    private readonly _router: Router,\n    private readonly _activatedRoute: ActivatedRoute\n  ) {}\n\n  ngAfterViewInit(): void {\n    if (!this.children) return;\n\n    let found = false;\n    for (let i = 0; i < this.children.length; i++) {\n      const c = this.children.get(i);\n      const path = '/' + c?.route?.path?.join('/');\n      if (\n        path === this._router.url ||\n        this._router.url.startsWith(path + '/')\n      ) {\n        this.selectedIndex = i;\n        found = true;\n      }\n    }\n    if (!found) this.navigate(this.children?.get(this.selectedIndex)?.route);\n    this._cd.detectChanges();\n  }\n\n  navigate(route?: { path: string[]; extras?: NavigationExtras }) {\n    if (this.behavior != 'router' || !route) return;\n    this._router.navigate(route.path, {\n      ...(route.extras || {}),\n    });\n  }\n}\n","<div class=\"w-100 flex flex-col\">\n  <div class=\"tw-tab mb-4 {{color}}\">\n    @for (item of children; track item; let i = $index) {\n      <tw-tab-item\n        [label]=\"item.label\"\n        [isSelected]=\"selectedIndex === i\"\n        (selected)=\"selectedIndex = i; selectionChanged.emit(i); navigate(item.route)\"\n        />\n    }\n  </div>\n  @if(behavior === 'default'){\n    <ng-container [ngTemplateOutlet]=\"currentContent\"></ng-container>\n    }@else{\n    <router-outlet></router-outlet>\n  }\n</div>\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[twHeaderCellDef]',\n  standalone: true,\n})\nexport class TwHeaderCellDefDirective {\n  constructor(public template: TemplateRef<any>) {}\n}\n\n@Directive({\n  selector: '[twCellDef]',\n  standalone: true,\n})\nexport class TwCellDefDirective<T> {\n  constructor(public template: TemplateRef<T>) {}\n}\n\n@Directive({\n  selector: '[twRowDef]',\n  standalone: true,\n})\nexport class TwRowDefDirective<T> {\n  @Input({ alias: 'twRowDefDisplayColumns', required: true })\n  displayColumns!: string[];\n  @Input({ alias: 'twRowDefLink' }) getLink?: (row: T) => string[];\n  constructor(public template: TemplateRef<T>) {}\n}\n\n@Directive({\n  selector: '[twColumnDef]',\n  standalone: true,\n})\nexport class TwColumnDefDirective<T> {\n  @Input({ alias: 'twColumnDef', required: true }) name!: string;\n  @ContentChild(TwHeaderCellDefDirective)\n  headerCellDef?: TwHeaderCellDefDirective;\n  @ContentChild(TwCellDefDirective)\n  cellDef?: TwCellDefDirective<T | { $implicit: T }>;\n}\n\nexport const TwTableColumnRowDefinitions = [\n  TwColumnDefDirective,\n  TwHeaderCellDefDirective,\n  TwCellDefDirective,\n  TwRowDefDirective,\n];\n","import { ArrayDataSource } from '@angular/cdk/collections';\nimport { CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { TwButton } from '../button/button.component';\nimport { TwIcon } from '../icon/icon.component';\nimport { TwOption } from '../select/option/option.component';\nimport { TwSelect } from '../select/select.component';\nimport { TwSpinner } from '../spinner/spinner.component';\nimport {\n  TwColumnDefDirective,\n  TwRowDefDirective,\n} from './column-definitions.directive';\n\nexport interface ITableQueryChange {\n  pageIndex: number;\n  pageSize: number;\n  searchTerm?: string;\n}\n\n@Component({\n  imports: [\n    TwIcon,\n    TwButton,\n    NgTemplateOutlet,\n    TwSelect,\n    TwOption,\n    CdkTableModule,\n    RouterLink,\n    TwSpinner,\n    FormsModule,\n  ],\n  selector: 'tw-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n})\nexport class TwTable<T> implements OnDestroy, AfterViewInit {\n  private _dataSource?: T[];\n  get dataSource(): T[] | undefined {\n    return this._dataSource;\n  }\n\n  @Input() set dataSource(value: T[] | undefined) {\n    this._dataSource = value;\n    this.internalSource = new ArrayDataSource(value || []);\n  }\n\n  @Input() dataLoading?: boolean;\n\n  @Input() displayCheckbox: boolean = true;\n\n  @Input() displayPagination: boolean = true;\n  @Input() displayEmptyTemplate: boolean = false;\n\n  @Input() totalItemsCount: number = 0;\n  @Input() pageSizes: number[] = [10, 20, 50, 100];\n\n  @Output() itemClick = new EventEmitter<T>();\n  @Output() queryChange = new EventEmitter<ITableQueryChange>();\n\n  @ContentChildren(TwColumnDefDirective)\n  columnDefs?: QueryList<TwColumnDefDirective<T>>;\n\n  @ContentChild(TwRowDefDirective)\n  rowDef?: TwRowDefDirective<T>;\n\n  _selectedPageSize = this.pageSizes[0] || 10;\n\n  @Input()\n  get selectedPageSize() {\n    return this._selectedPageSize;\n  }\n  set selectedPageSize(value: number) {\n    if (!this.pageSizes.includes(value) || this._selectedPageSize === value)\n      return;\n    this._selectedPageSize = value;\n\n    if (this._initializedParams) this.changePageSize();\n  }\n\n  internalSource: DataSource<T> = new ArrayDataSource<T>([]);\n\n  private _pageNumber = 1;\n\n  get displayColumns() {\n    const cols = this.rowDef?.displayColumns || [];\n    return this.displayCheckbox ? ['checkbox', ...cols] : cols;\n  }\n\n  get columns() {\n    return this.columnDefs?.toArray() || [];\n  }\n\n  get totalPagesCount() {\n    return Math.ceil(this.totalItemsCount / this.selectedPageSize);\n  }\n\n  get pageNumber() {\n    return this._pageNumber;\n  }\n\n  private set pageNumber(value: number) {\n    this._pageNumber = value <= 1 ? 1 : value;\n  }\n\n  get querySnapshot(): ITableQueryChange {\n    return {\n      pageIndex: this.pageNumber - 1,\n      pageSize: this.selectedPageSize,\n      searchTerm: this._currentSearchTerm,\n    };\n  }\n  private _queryParamSubscription$$?: Subscription;\n  private _currentSearchTerm?: string;\n  private _initializedParams: boolean = false;\n\n  constructor(private readonly _route: ActivatedRoute) {}\n\n  ngAfterViewInit(): void {\n    this._queryParamSubscription$$ = this._route.queryParamMap.subscribe(\n      (params) => {\n        this.pageNumber = +(params.get('pageNumber') || 1);\n        const pageSize = +(params.get('pageSize') || this.pageSizes[0]);\n        this._selectedPageSize = this.pageSizes.includes(pageSize)\n          ? pageSize\n          : this._selectedPageSize;\n        this._currentSearchTerm = params.get('searchTerm') || '';\n        this.queryChange.emit(this.querySnapshot);\n\n        this._initializedParams = true;\n      }\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._queryParamSubscription$$?.unsubscribe();\n  }\n\n  moveNext() {\n    this.pageNumber++;\n    this.queryChange.emit(this.querySnapshot);\n  }\n\n  movePrevious() {\n    this.pageNumber--;\n    this.queryChange.emit(this.querySnapshot);\n  }\n\n  changePageSize() {\n    this.pageNumber = 1;\n    this.queryChange.emit(this.querySnapshot);\n  }\n}\n","@if (dataLoading) {\n\n<div class=\"p-6 flex items-center justify-center w-100\">\n  <tw-spinner />\n</div>\n}@else{\n\n@if (!dataSource?.length) {\n<ng-content #emptyTemplate></ng-content>\n\n}@else {\n<ng-container *ngTemplateOutlet=\"dataTemplate\"></ng-container>\n\n}\n\n}\n\n<ng-template #dataTemplate>\n  <section class=\"mx-auto mb-4\">\n    <div class=\"flex flex-col\">\n      <div class=\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\">\n        <div class=\"inline-block min-w-full py-2 align-middle md:px-6 lg:px-8\">\n          <div class=\"overflow-hidden\">\n            <!--border rounded-md dark:border-gray-700 -->\n            <table\n              cdk-table\n              [dataSource]=\"internalSource\"\n              class=\"tw-table min-w-full divide-y divide-gray-200 dark:divide-gray-700 dark:bg-gray-900\"\n            >\n              @if (displayCheckbox) {\n              <ng-container cdkColumnDef=\"checkbox\">\n                <th\n                  cdk-header-cell\n                  *cdkHeaderCellDef\n                  scope=\"col\"\n                  class=\"py-2.5 px-4 text-sm font-semibold text-left rtl:text-right text-gray-500 dark:text-gray-400\"\n                >\n                  <input\n                    type=\"checkbox\"\n                    class=\"text-blue-500 shadow-sm border-gray-300 rounded dark:bg-gray-900 dark:ring-offset-gray-900 dark:border-gray-700\"\n                  >\n                </th>\n                <td\n                  cdk-cell\n                  *cdkCellDef=\"let element\"\n                  class=\"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-200 whitespace-nowrap\"\n                >\n                  <input\n                    type=\"checkbox\"\n                    class=\"text-blue-500 shadow-sm border-gray-300 rounded dark:bg-gray-900 dark:ring-offset-gray-900 dark:border-gray-700\"\n                  >\n                </td>\n              </ng-container>\n              }\n\n              @for (col of columns; track col) {\n              <ng-container [cdkColumnDef]=\"col.name\">\n                <th\n                  cdk-header-cell\n                  *cdkHeaderCellDef\n                  scope=\"col\"\n                  class=\"px-4 py-2.5 text-sm font-semibold text-left rtl:text-right text-gray-500 dark:text-gray-400\"\n                >\n                  <ng-container *ngTemplateOutlet=\"col.headerCellDef!.template\"></ng-container>\n                </th>\n                <td\n                  cdk-cell\n                  *cdkCellDef=\"let element\"\n                  class=\"px-4 py-2 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap\"\n                >\n                  <ng-container *ngTemplateOutlet=\"col.cellDef!.template;context: {$implicit: element}\">\n                  </ng-container>\n                </td>\n              </ng-container>\n              }\n\n              <tr\n                cdk-header-row\n                *cdkHeaderRowDef=\"displayColumns\"\n                class=\"font-semibold\"\n              ></tr><!--  bg-gray-50/50 dark:bg-gray-800/80 -->\n\n              <tr\n                cdk-row\n                *cdkRowDef=\"let row; columns: displayColumns;\"\n                [routerLink]=\"rowDef?.getLink?.(row)\"\n                (click)=\"itemClick.emit(row)\"\n                class=\"cursor-pointer dark:bg-gray-800 dark:hover:bg-gray-700 hover:bg-gray-200 transition-colors\"\n              >\n              </tr>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n    @if (displayPagination) {\n    <div class=\"mt-6 sm:flex sm:items-center sm:justify-between\">\n      <div class=\"text-sm text-gray-500 dark:text-gray-400\">\n        Page <span class=\"font-medium text-gray-700 dark:text-gray-100\">{{pageNumber}} of {{totalPagesCount}}</span>\n      </div>\n      <div class=\"flex items-center mt-4 gap-x-4 sm:mt-0\">\n        <tw-select\n          class=\"w-16\"\n          color=\"primary\"\n          [(ngModel)]=\"selectedPageSize\"\n          [placeholder]=\"selectedPageSize.toString()\"\n        >\n          @for (item of pageSizes; track item) {\n          <tw-option\n            [useSelectedIndicator]=\"false\"\n            [value]=\"item\"\n          >\n            {{item}}\n          </tw-option>\n          }\n        </tw-select>\n        <tw-button\n          type=\"outlined\"\n          class=\"w-32\"\n          [disabled]=\"pageNumber === 1\"\n          (click)=\"movePrevious()\"\n        >\n          <tw-icon svgIcon=\"hero:arrow-long-left\" />\n          <span>Previous</span>\n        </tw-button>\n        <tw-button\n          type=\"outlined\"\n          class=\"w-32\"\n          (click)=\"moveNext()\"\n          [disabled]=\"pageNumber === totalPagesCount\"\n        >\n          <span>Next</span>\n          <tw-icon svgIcon=\"hero:arrow-long-right\" />\n        </tw-button>\n      </div>\n    </div>\n    }\n\n\n  </section>\n</ng-template>","import { NgModule } from '@angular/core';\nimport {\n  TwCellDefDirective,\n  TwColumnDefDirective,\n  TwHeaderCellDefDirective,\n  TwRowDefDirective,\n  TwTableColumnRowDefinitions,\n} from './column-definitions.directive';\nimport { ITableQueryChange, TwTable } from './table.component';\n\n@NgModule({\n  declarations: [],\n  imports: [TwTable, TwTableColumnRowDefinitions],\n  exports: [TwTable, TwTableColumnRowDefinitions],\n  providers: [],\n})\nexport class TwTableModule {}\n\nexport {\n  ITableQueryChange,\n  TwCellDefDirective,\n  TwColumnDefDirective,\n  TwHeaderCellDefDirective,\n  TwRowDefDirective,\n  TwTable,\n  TwTableColumnRowDefinitions,\n};\n","import { Component, Input } from '@angular/core';\nimport { TwButtonIcon } from '../button/button-icon.component';\nimport { TwButton } from '../button/button.component';\nimport { TwIcon } from '../icon/icon.component';\nimport { TwStickyContentHeader } from '../sticky-content-header/sticky-content-header.component';\n\n@Component({\n    selector: 'tw-toolbar',\n    templateUrl: './toolbar.component.html',\n    imports: [TwStickyContentHeader, TwIcon, TwButtonIcon, TwButton]\n})\nexport class TwToolbar {\n  @Input() header?: string;\n  @Input() toolbarIcon?: string = 'hero:shopping-bag';\n  @Input() hideActions = false;\n  constructor() {}\n}\n","<tw-sticky-content-header>\n  <div class=\"px-5 pb-4 pt-2 gap-4 flex items-center w-full\">\n    <div class=\"w-10 h-10 flex items-center justify-center rounded-full bg-primary-100\">\n      <tw-icon [svgIcon]=\"toolbarIcon\" />\n    </div>\n    <div class=\"flex flex-col flex-1\">\n      <h1 class=\"text-3xl font-semibold\">{{header}}</h1>\n      <ng-content select=\"[subHeader]\"></ng-content>\n    </div>\n    @if (!hideActions) {\n    <div class=\"flex gap-3 items-center flex-wrap\">\n      <tw-button-icon\n        twClass=\"bg-primary-50\"\n        color=\"primary\"\n        svgIcon=\"hero:chevron-left\"\n      ></tw-button-icon>\n      <tw-button-icon\n        color=\"primary\"\n        twClass=\"bg-primary-50\"\n        svgIcon=\"hero:chevron-right\"\n      ></tw-button-icon>\n      <tw-button-icon\n        color=\"primary\"\n        twClass=\"bg-primary-50\"\n        svgIcon=\"hero:ellipsis-horizontal\"\n      ></tw-button-icon>\n      <tw-button\n        color=\"primary\"\n        type=\"filled\"\n      >Enregistrer</tw-button>\n    </div>\n    }\n  </div>\n</tw-sticky-content-header>\n","import { NgModule } from '@angular/core';\nimport { TwAlertService } from './alerts/alert.service';\nimport { TwAutocomplete } from './autocomplete/autocomplete.component';\nimport { TwButtonGroup } from './button-group/button-group.component';\nimport { TwButton } from './button/button.component';\nimport { TwCalendar } from './calendar/calendar.component';\nimport { TwChipItem } from './chip/chip-item-maker.component';\nimport { TwChipList } from './chip/chip-list.component';\nimport { TwChip } from './chip/chip.component';\nimport { TwDateRangePicker } from './date-picker/date-range-picker.component';\nimport { TwDialog } from './dialog/dialog';\nimport { TwExpanderModule } from './expander';\nimport { TwInputField } from './input-field/input-field.component';\nimport { TwMaskedInput } from './input-field/masked-input.component';\nimport { TwMenuModule } from './menu';\nimport { TwNotification } from './notification';\nimport { TwOption } from './select/option/option.component';\nimport { TwSelect } from './select/select.component';\nimport { TwSkeletonComponent } from './skeleton/skeleton.component';\nimport { TwSkeletonDirective } from './skeleton/skeleton.directive';\nimport { TwSpinner } from './spinner/spinner.component';\nimport { TwStickyContentHeader } from './sticky-content-header/sticky-content-header.component';\nimport { TwSwitch } from './switch/switch.component';\nimport { TwTabGroup } from './tab/tab-group/tab-group.component';\nimport { TwTabItem } from './tab/tab-item-maker.component';\nimport { TwTableModule } from './table';\nimport { TwToolbar } from './toolbar/toolbar.component';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    TwButton,\n    TwButtonGroup,\n    TwExpanderModule,\n    TwStickyContentHeader,\n    TwInputField,\n    TwMaskedInput,\n    TwMenuModule,\n    TwSelect,\n    TwStickyContentHeader,\n    TwTabGroup,\n    TwTabItem,\n    TwTableModule,\n    TwToolbar,\n    TwSwitch,\n    TwOption,\n    TwChip,\n    TwChipList,\n    TwSpinner,\n    TwSkeletonComponent,\n    TwSkeletonDirective,\n    TwAutocomplete,\n    TwChipItem,\n    TwDateRangePicker,\n    TwCalendar,\n  ],\n  providers: [TwDialog, TwAlertService, TwNotification],\n  exports: [\n    TwButton,\n    TwButtonGroup,\n    TwExpanderModule,\n    TwStickyContentHeader,\n    TwInputField,\n    TwMaskedInput,\n    TwMenuModule,\n    TwSelect,\n    TwStickyContentHeader,\n    TwTabGroup,\n    TwTabItem,\n    TwTableModule,\n    TwToolbar,\n    TwSwitch,\n    TwOption,\n    TwChip,\n    TwChipList,\n    TwSpinner,\n    TwSkeletonComponent,\n    TwSkeletonDirective,\n    TwAutocomplete,\n    TwChipItem,\n    TwDateRangePicker,\n    TwCalendar,\n  ],\n})\nexport class NgxTwModule {}\n","/*\n * Public API Surface of ngx-tw\n */\n\nexport * from './lib/alerts';\nexport * from './lib/autocomplete/autocomplete.component';\nexport * from './lib/button-group/button-group-Item.component';\nexport * from './lib/button-group/button-group.component';\nexport * from './lib/button/button-icon.component';\nexport * from './lib/button/button.component';\nexport * from './lib/calendar/calendar.component';\nexport * from './lib/chip/chip-interface';\nexport * from './lib/chip/chip-item-maker.component';\nexport * from './lib/chip/chip-list.component';\nexport * from './lib/chip/chip.component';\nexport * from './lib/date-picker/date-range-picker.component';\nexport * from './lib/dialog/dialog';\nexport * from './lib/expander';\nexport * from './lib/icon/icon.component';\nexport * from './lib/input-field/input-field.component';\nexport * from './lib/input-field/masked-input-field-interface';\nexport * from './lib/input-field/masked-input.component';\nexport * from './lib/menu';\nexport * from './lib/menu/menu-item.directive';\nexport * from './lib/menu/menu-trigger.directive';\nexport * from './lib/menu/menu.component';\nexport * from './lib/ngx-tw.module';\nexport * from './lib/notification';\nexport * from './lib/select/option/option.component';\nexport * from './lib/select/select.component';\nexport * from './lib/skeleton/skeleton.component';\nexport * from './lib/skeleton/skeleton.directive';\nexport * from './lib/spinner/spinner.component';\nexport * from './lib/sticky-content-header/sticky-content-header.component';\nexport * from './lib/switch/switch.component';\nexport * from './lib/tab/tab-group/tab-group.component';\nexport * from './lib/tab/tab-item-maker.component';\nexport * from './lib/table';\nexport * from './lib/toolbar/toolbar.component';\nexport * from './lib/utlis';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TwNotification","i1","i2","i3","_uniqueIdCounter","i1.TwColumnDefDirective","i1.TwHeaderCellDefDirective","i1.TwCellDefDirective","i1.TwRowDefDirective"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa,MAAA,EAAE,GAAG,CAChB,QAA8B,EAC9B,GAAG,MAA8B,KAC/B;AACF,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;SAClB,KAAK,CAAC,KAAK;SACX,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;SACtB,IAAI,CAAC,GAAG,CAAC;AACd;;MCLa,kBAAkB,CAAA;AAA/B,IAAA,WAAA,GAAA;AAgBE,QAAA,IAAA,CAAA,OAAO,GAEH,2BAA2B,CAAC,OAAO;;AACxC;AA8BY,MAAA,2BAA2B,GAAyB;AAC/D,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,QAAQ,EAAE;AACR,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,MAAM,EAAE,GAAG;AACZ,KAAA;AACD,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,OAAO,EAAE;QACP,SAAS,EAAE,EAAE,CAAA,CAAwD,sDAAA,CAAA;QACrE,IAAI,EAAE,EAAE,CAAA,CAAoH,kHAAA,CAAA;QAC5H,OAAO,EAAE,EAAE,CAAA,CAAgB,cAAA,CAAA;QAC3B,IAAI,EAAE,EAAE,CAAA,CAAkB,gBAAA,CAAA;QAC1B,OAAO,EAAE,EAAE,CAAA,CAAiB,eAAA,CAAA;QAC5B,MAAM,EAAE,EAAE,CAAA,CAAiB,eAAA,CAAA;QAC3B,GAAG,EAAE,EAAE,CAAA,CAAS,OAAA,CAAA;QAChB,MAAM,EAAE,EAAE,CAAA,CAA8I,4IAAA,CAAA;AACzJ,KAAA;;MAGU,4BAA4B,GAAG,IAAI,cAAc,CAC5D,wBAAwB;;MC3Eb,iBAAiB,CAAA;AAC1B,IAAA,WAAA,CAA6B,OAAmB,EAAA;QAAnB,IAAO,CAAA,OAAA,GAAP,OAAO;;IAEpC,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;;IAG1B,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;;IAGtD,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE;;AAEjE;;ACdM,MAAM,wBAAwB,GAEjC;AACA,IAAA,gBAAgB,EAAE,OAAO,CAAC,eAAe,EAAE;QACvC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC3E,QAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACtF,CAAC;CACL;;MCUY,qBAAqB,CAAA;AAKhC,IAAA,WAAA,CACW,IAAwB,EACxB,GAAsB,EAExB,kBAAwC,EAAA;QAHtC,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAG,CAAA,GAAA,GAAH,GAAG;QAEL,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAR3B,IAAc,CAAA,cAAA,GAAiC,SAAS;;;AAYtD,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;;IAG1D,QAAQ,GAAA;;;AAGN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI;YAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAC1B,OAAO,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,EACvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAC3B;;IAGL,WAAW,GAAA;;;AAGT,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;IAGjE,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;;AAGlB,IAAA,cAAc,CAAC,KAAqB,EAAA;AAClC,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK;AACzB,QAAA,MAAM,SAAS,GAAI,OAAwC,KAAK,SAAS;AACzE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,KAAK,SAAS;AAEpD,QAAA,IAAI,SAAS,IAAI,UAAU,EAAE;YAC3B,IAAI,CAAC,KAAK,EAAE;;;AA1CL,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,qBAAqB,+EAQtB,4BAA4B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAR3B,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBlC,ksIAyHM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxGM,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,UAAA,EAC5B,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,EAAA,CAAA,CAAA;;2FAE5C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAElB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAA,UAAA,EAC7B,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,ksIAAA,EAAA;;0BAUpD,MAAM;2BAAC,4BAA4B;;;MEZ3B,cAAc,CAAA;AAGzB,IAAA,WAAA,CACU,OAAgB,EAChB,cAAwB,EAGxB,qBAA2C,2BAA2B,EAAA;QAJtE,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAc,CAAA,cAAA,GAAd,cAAc;QAGd,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;AAE1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,2BAA2B;;AAG7E,IAAA,IAAI,CAAC,IAAwB,EAAA;AAC3B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;AAE5D,QAAA,MAAM,eAAe,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC;AACzD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AAEvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAC/B,IAAI,EACJ,eAAe,EACf,IAAI,CAAC,cAAc,CACpB;QACD,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAC5C,qBAAqB,EACrB,IAAI,EACJ,QAAQ,CACT;AAED,QAAA,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAErC,QAAA,OAAO,eAAe;;IAGxB,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC;AACT,aAAA,QAAQ;AACR,aAAA,MAAM;AACN,aAAA,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE;aACtB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;;IAG1D,WAAW,GAAA;AACT,QAAA,MAAM,yBAAyB,GAC7B,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC5D,MAAM,QAAQ,GAAG;cACb,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;cACpC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG;QAEzC,OAAO,QAAQ,GAAG,IAAI;;AAGxB,IAAA,WAAW,CACT,IAAwB,EACxB,eAAkC,EAClC,cAAwB,EAAA;AAExB,QAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE;AAE5B,QAAA,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC;AACpC,QAAA,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;QAE9C,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA,iBAAiB,EAAE;AACnB,gBAAA;AACE,oBAAA,OAAO,EAAE,4BAA4B;oBACrC,QAAQ,EAAE,IAAI,CAAC,kBAAkB;AAClC,iBAAA;AACD,gBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC/C,gBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC1D,aAAA;AACD,YAAA,MAAM,EAAE,cAAc;AACvB,SAAA,CAAC;;AA3EO,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,cAAc,iEAOf,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAP3B,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,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAOI;;0BACA,MAAM;2BAAC,4BAA4B;;;ACdxC;MACa,cAAc,CAAA;AAIzB,IAAA,WAAA,CAA6B,eAA+B,EAAA;QAA/B,IAAe,CAAA,eAAA,GAAf,eAAe;AAHpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;;AAK1D;;;AAGG;AACH,IAAA,IAAI,CAAC,EACH,KAAK,EACL,WAAW,GAAG,KAAK,CAAC,EACpB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,KAAK,EACnB,iBAAiB,GAAG,IAAI,EACxB,mBAAmB,GAAG,IAAI,GAU3B,EAAA;QACC,IAAI,CAAC,MAAM,CAAC;YACV,KAAK;AACL,YAAA,IAAI,EAAE,MAAM;YACZ,WAAW;YACX,IAAI;YACJ,SAAS;AACT,YAAA,QAAQ,EAAE,QAAQ;YAClB,iBAAiB;YACjB,mBAAmB;YACnB,WAAW;AACZ,SAAA,CAAC;;AAGJ;;;AAGG;AACH,IAAA,OAAO,CAAC,EACN,KAAK,EACL,WAAW,GAAG,KAAK,CAAC,EACpB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,KAAK,EACnB,iBAAiB,GAAG,IAAI,EACxB,mBAAmB,GAAG,IAAI,GAU3B,EAAA;QACC,IAAI,CAAC,MAAM,CAAC;YACV,KAAK;AACL,YAAA,IAAI,EAAE,SAAS;YACf,WAAW;YACX,IAAI;YACJ,SAAS;AACT,YAAA,QAAQ,EAAE,QAAQ;YAClB,iBAAiB;YACjB,mBAAmB;YACnB,WAAW;AACZ,SAAA,CAAC;;AAGJ;;;AAGG;AACH,IAAA,KAAK,CAAC,EACJ,KAAK,EACL,WAAW,GAAG,KAAK,CAAC,EACpB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,KAAK,EACnB,iBAAiB,GAAG,IAAI,EACxB,mBAAmB,GAAG,IAAI,GAU3B,EAAA;QACC,IAAI,CAAC,MAAM,CAAC;YACV,KAAK;AACL,YAAA,IAAI,EAAE,QAAQ;YACd,WAAW;YACX,IAAI;YACJ,SAAS;AACT,YAAA,QAAQ,EAAE,QAAQ;YAClB,iBAAiB;YACjB,mBAAmB;YACnB,WAAW;AACZ,SAAA,CAAC;;AAEI,IAAA,MAAM,CAAC,EACb,KAAK,EACL,IAAI,EACJ,WAAW,GAAG,KAAK,CAAC,EACpB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,KAAK,EACnB,iBAAiB,GAAG,IAAI,EACxB,mBAAmB,GAAG,IAAI,GAW3B,EAAA;AACC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,IAAI;AACJ,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,gBAAgB,EAAE,QAAQ;AAC3B,SAAA,CAAC;;8GA3IO,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,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,cAAc,cAHb,MAAM,EAAA,CAAA,CAAA;;2FAGP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCyBY,MAAM,CAAA;AACF,IAAA,SAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAKzD,IAAa,IAAI,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAGnB,IAAa,OAAO,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,QAAQ,EAAE;;AAEjB,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAS;;IAGvB,WACmB,CAAA,KAA8B,EAC9B,WAAuB,EAAA;QADvB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAW,CAAA,WAAA,GAAX,WAAW;QApBtB,IAAK,CAAA,KAAA,GAAG,EAAE;;IAuBlB,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AAE9C,QAAA,IAAI,CAAC,aAAa;YAAE;QAEpB,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,SAAS;QAEzD,IAAI,CAAC,QAAQ,EAAE;;IAGT,UAAU,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AAE9C,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnE,QAAA,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;IAG9D,QAAQ,GAAA;AACd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO;AAE7B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AAE9C,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,QAAQ,CAAC;AAExE,QAAA,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAE7C,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI;AACrB,YAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,GAAG,QAAQ,CACxE;QAEH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACvC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;;aACtD;YACL,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE;AAChD,YAAA,aAAa,CAAC,SAAS,GAAG,IAAI;;;IAIlC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;;AAGrC,IAAA,YAAY,CAClB,GAAY,EACZ,QAAgB,EAChB,SAAiB,EACjB,IAAY,EAAA;AAEZ,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACjC,aAAA,GAAG,CAAS,CAAiB,cAAA,EAAA,SAAS,CAAI,CAAA,EAAA,IAAI,MAAM,EAAE;AACrD,YAAA,YAAY,EAAE,MAAa;SAC5B;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;YACf,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAA,GAAG,CAAC,SAAS,GAAG,CAAC;AACjB,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,iBAA+B;AAC/C,YAAA,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;AACxB,YAAA,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAyB,sBAAA,EAAA,IAAI,CAAC,IAAI,eAAe;AAC1F,SAAC,CAAC;;8GA5FK,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,iHApBP,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0VAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAoB1B,MAAM,EAAA,UAAA,EAAA,CAAA;kBAtBlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EACT,QAAA,EAAA,CAAA,yBAAA,CAA2B,EAkBpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0VAAA,CAAA,EAAA;0GAQlC,IAAI,EAAA,CAAA;sBAAhB;gBAQY,OAAO,EAAA,CAAA;sBAAnB;;;MC9BU,YAAY,CAAA;AAwBvB,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;cAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;iBAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU;iBAC9B,IAAI,CAAC,KAAK;cACb,IAAI;;AAGV,IAAA,WAAA,CAAiD,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;QA1BlD,IAAI,CAAA,IAAA,GAAW,EAAE;QACjB,IAAK,CAAA,KAAA,GAAW,EAAE;QAElB,IAAK,CAAA,KAAA,GAAY,EAAE;QAGnB,IAAQ,CAAA,QAAA,GAAqB,KAAK;QAClC,IAAO,CAAA,OAAA,GAAoB,EAAE;QAC7B,IAAW,CAAA,WAAA,GAAW,EAAE;QACxB,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAS,CAAA,SAAA,GAAe,MAAM;QAE9B,IAAS,CAAA,SAAA,GAAY,IAAI;QACzB,IAAS,CAAA,SAAA,GAAY,KAAK;QAE3B,IAAY,CAAA,YAAA,GAAU,EAAE;QACxB,IAAa,CAAA,aAAA,GAAU,EAAE;AAW/B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI;;;AAGxC,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,EAAE;;AAExB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;AAEpC,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;AAErC,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,QAAQ;AAER,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,KAAK,GAAI,KAAa,CAAC,MAAM,CAAC,KAAK;AACzC,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;;8GAvDrC,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAFZ,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECff,msEA+EM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtEM,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAQ5C,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;8BACC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,EAC9C,QAAA,EAAA,gBAAgB,EACpB,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA,EAAA,SAAA,EAEU,EAAE,EAAA,QAAA,EAAA,msEAAA,EAAA;;0BAkCA;;0BAAQ;yCA/BZ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MERU,SAAS,CAAA;AA1BtB,IAAA,WAAA,GAAA;QA2BW,IAAK,CAAA,KAAA,GAAY,EAAE;AAC7B;8GAFY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAvBV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEU,SAAS,EAAA,UAAA,EAAA,CAAA;kBA1BrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;AACF,iBAAA;8BAEU,KAAK,EAAA,CAAA;sBAAb;;;AC7BI,MAAM,WAAW,GAAG;IACzB,OAAO;IACP,YAAY;IACZ,cAAc;IACd,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,QAAQ;IACR,OAAO;IACP,aAAa;IACb,MAAM;IACN,KAAK;IACL,UAAU;IACV,kBAAkB;IAClB,MAAM;IACN,SAAS;IACT,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,MAAM;IACN,gBAAgB;IAChB,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,OAAO;IACP,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,SAAS;IACT,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,UAAU;IACV,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,UAAU;IACV,WAAW;IACX,YAAY;IACZ,eAAe;IACf,QAAQ;IACR,cAAc;IACd,SAAS;IACT,OAAO;CACR;;MClFY,SAAS,CAAA;IACpB,UAAU,CAAC,OAAoB,EAAE,SAAc,EAAA;AAC7C,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACzB,YAAA,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,YAAY,YAAY,EAAE;gBAC1D,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAEtE,SAAC,CAAC;;AAEL;AAEM,MAAM,gBAAgB,GAAwB;AACnD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,CAAC;AACZ,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,CAAC;AACZ,KAAA;CACF;;AC1BD,SAAS,UAAU,CAAC,KAAU,EAAA;AAC5B,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU;AACpC;MAEa,mBAAmB,CAAA;IAgB9B,IAAI,WAAW,CAAC,KAAyB,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAG3B,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;AAG1B,IAAA,WAAA,CAAoB,qBAAgD,EAAA;QAAhD,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QAvBzC,IAAmB,CAAA,mBAAA,GAAQ,EAAE;QAC7B,IAAQ,CAAA,QAAA,GAAwC,CAAC,KAAa,EAAE,IAAO,KACrE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvE,IAAc,CAAA,cAAA,GACZ,KAAK,CAAC;QAER,IAAM,CAAA,MAAA,GAAG,KAAK;QAEd,IAAQ,CAAA,QAAA,GAAG,KAAK;QAEhB,IAAkB,CAAA,kBAAA,GAAG,KAAK;QAElB,IAAY,CAAA,YAAA,GAAuB,EAAE;;IAY7C,IAAI,GAAA;AACF,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAC7D,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,EAC/C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAM,CAAC,CAAC;AAErD,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACrC,SAAC,CAAC;;AAGN,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,SAAS,GAAG,CAAC,GAAoB,KACrC,GAAG,CAAC,IAAI,CACN,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CACzE;AAEH,QAAA,MAAM,UAAU,GAAG,CAAC,EAAiD,KAAI;AACvE,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;AACnD,SAAC;AAED,QAAA,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY;AACtD,cAAE,SAAS,CAAC,IAAI,CAAC,YAAY;AAC7B,cAAE,UAAU,CAAC,IAAI,CAAC,YAAY;AAC9B,kBAAE,UAAU,CAAC,IAAI,CAAC,YAAY;kBAC5B,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhE,QAAA,OAAO,iBAAiB;;AAG1B,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI;;AAEvC,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;IAG/D,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE;AAE5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;IAGpB,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGrB,IAAA,gBAAgB,CAAC,UAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,UAAU,CAAC,EAAE;AACjE,YAAA,OAAO,KAAK;;QAEd,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,OAAO,IAAI;;AAEd;;MCnDY,cAAc,CAAA;IAiBzB,IAAa,SAAS,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,gBAAgB,EAAE;;;AAG3B,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAIxB,IAAa,SAAS,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,gBAAgB,EAAE;;;AAG3B,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAGxB,IAAa,QAAQ,CAAC,KAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,gBAAgB,EAAE;;;AAG3B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAIvB,IAAa,OAAO,CAAC,KAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,gBAAgB,EAAE;;;AAG3B,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAItB,IAAa,QAAQ,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;;AAClC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;AAElC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ;;AAQpC,IAAA,IAAa,KAAK,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM;;IAGpB,IAAI,KAAK,CAAC,GAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACxE,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC;;IAMJ,IAAa,WAAW,CAAC,KAAyB,EAAA;AAChD,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,GAAG,KAAK;;AAE9C,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW;;AAG7C,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB;;IAGpD,IAAa,cAAc,CACzB,KAAiE,EAAA;AAEjE,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,GAAG,KAAK;;AAGjD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc;;IAKhD,IAAa,QAAQ,CAAC,EAAyC,EAAA;AAC7D,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,EAAE;;AAGxC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ;;AAG1C,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;AAM3B,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB;;AAcrD,IAAA,WAAA,CACS,UAAsB,EACrB,OAAgB,EAChB,GAAsB,EAAA;QAFvB,IAAU,CAAA,UAAA,GAAV,UAAU;QACT,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAG,CAAA,GAAA,GAAH,GAAG;QAjIJ,IAAI,CAAA,IAAA,GAAW,EAAE;QACjB,IAAK,CAAA,KAAA,GAAW,EAAE;QAgCnB,IAAS,CAAA,SAAA,GAAqB,KAAK;QAWnC,IAAQ,CAAA,QAAA,GAAoB,EAAE;QAC7B,IAAW,CAAA,WAAA,GAAW,EAAE;QAQxB,IAAS,CAAA,SAAA,GAAe,MAAM;QAE9B,IAAS,CAAA,SAAA,GAAY,IAAI;QAClC,IAAS,CAAA,SAAA,GAAG,KAAK;QAcT,IAAa,CAAA,aAAA,GAAW,CAAC;QAwBxB,IAAc,CAAA,cAAA,GAA4B,IAAI;AAc7C,QAAA,IAAA,CAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO;AAEvE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAS,EAAE,CAAC;QAO3C,IAAS,CAAA,SAAA,GAAwB,gBAAgB;QAEjD,IAAQ,CAAA,QAAA,GAA6B,EAAE;QACvC,IAAS,CAAA,SAAA,GAAmB,EAAE;QAE9B,IAAmB,CAAA,mBAAA,GAAG,IAAI,mBAAmB,CAC3C,IAAI,CAAC,aAAa,CAAC,YAAY,CAChC;QAOC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;;IAGlE,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,eAAe,GAAA;;QAEb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;;AAG9D,QAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;YACzC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACnD,gBAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;oBAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK;AAC5C,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAE5B,aAAC,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;AAG5D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;IAGjC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;;;IAIpC,gBAAgB,GAAA;QACd,MAAM,UAAU,GAAG,EAAE;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAGtC,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;AAGvD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;AAGvD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAGnD,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACxC,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC;;AAGJ,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,OAAO,IAAI;;;AAIb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI;;;AAIb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM;;AAGlC,IAAA,gBAAgB,CAAC,UAAe,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC;AACjE,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjC,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;;AAG1C,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CACzB,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,EAC9C;AACE,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CACF;;AAGH,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGxB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;8GAxPjB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EARd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,ECrDH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wtEAiEM,EDzBF,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,sMACZ,mBAAmB,EAAA,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,EACnB,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAWA,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,SAAS;qBACV,EAEU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,wtEAAA,EAAA;qIAWQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEY,SAAS,EAAA,CAAA;sBAArB;gBAWY,SAAS,EAAA,CAAA;sBAArB;gBAUY,QAAQ,EAAA,CAAA;sBAApB;gBAWY,OAAO,EAAA,CAAA;sBAAnB;gBAUQ,WAAW,EAAA,CAAA;sBAAnB;gBACY,QAAQ,EAAA,CAAA;sBAApB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAIY,KAAK,EAAA,CAAA;sBAAjB;gBAcY,WAAW,EAAA,CAAA;sBAAvB;gBAWY,cAAc,EAAA,CAAA;sBAA1B;gBAUQ,cAAc,EAAA,CAAA;sBAAtB;gBAEY,QAAQ,EAAA,CAAA;sBAApB;gBAYS,gBAAgB,EAAA,CAAA;sBAAzB;;;MExKU,iBAAiB,CAAA;AAK5B,IAAA,WAAA,GAAA;QAHS,IAAQ,CAAA,QAAA,GAAY,KAAK;QACQ,IAAO,CAAA,OAAA,GAC/C,IAAI;;8GAJK,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,WAAW,EAPZ,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAEK,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;AAEK,gBAAA,CAAA;AAChB,iBAAA;wDAEU,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACyC,OAAO,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCgB7B,aAAa,CAAA;AAcxB,IAAA,WAAA,GAAA;AAVU,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;AAEhD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAGrC;QACK,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;QAE1B,IAAW,CAAA,WAAA,GAA8B,YAAY;;IAI9D,eAAe,GAAA;;IAGf,eAAe,CAAC,KAAa,EAAE,KAAU,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;8GAzBjB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EACP,iBAAiB,EAdtB,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbG,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAejB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAhBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACP,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWH,UAAA;AACV,iBAAA;wDAGC,QAAQ,EAAA,CAAA;sBADP,eAAe;uBAAC,iBAAiB;gBAGxB,mBAAmB,EAAA,CAAA;sBAA5B;gBAES,YAAY,EAAA,CAAA;sBAArB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;;;MCLU,YAAY,CAAA;AAWvB,IAAA,WAAA,GAAA;QAVS,IAAI,CAAA,IAAA,GAAgB,OAAO;QAK3B,IAAK,CAAA,KAAA,GAAY,EAAE;QAEnB,IAAW,CAAA,WAAA,GAAG,EAAE;;AAKzB,IAAA,QAAQ;8GAbG,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EA1BX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA1BoB,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FA4BhB,YAAY,EAAA,UAAA,EAAA,CAAA;kBA7BxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;AAwBX,EAAA;AACF,iBAAA;wDAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAC0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE;gBAChB,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MClBU,QAAQ,CAAA;AAnBrB,IAAA,WAAA,GAAA;QAoBW,IAAI,CAAA,IAAA,GAAgB,OAAO;QAE3B,IAAO,CAAA,OAAA,GAAkB,IAAI;AAKvC;8GARY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAZT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,oCAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAnBpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,aAAa,EAAE,gCAAgC;AAC/C,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MCLU,UAAU,CAAA;AALvB,IAAA,WAAA,GAAA;QAMW,IAAY,CAAA,YAAA,GAAgB,IAAI;QAChC,IAAU,CAAA,UAAA,GAAgB,IAAI;QAC9B,IAAQ,CAAA,QAAA,GAAgB,IAAI;QAC5B,IAAO,CAAA,OAAA,GAAgB,IAAI;QAC3B,IAAO,CAAA,OAAA,GAAgB,IAAI;QAC3B,IAAO,CAAA,OAAA,GAAG,KAAK;AACf,QAAA,IAAA,CAAA,WAAW,GAAS,IAAI,IAAI,EAAE;AAE7B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAGtC;AAEJ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,IAAI,EAAE;QACxB,IAAa,CAAA,aAAA,GAAmB,EAAE;QAElC,IAAQ,CAAA,QAAA,GAAgC,MAAM;QAC9C,IAAK,CAAA,KAAA,GAAa,EAAE;QACpB,IAAc,CAAA,cAAA,GAAG,CAAC;AAElB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACrD,QAAA,IAAA,CAAA,MAAM,GAAG;YACP,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;SACN;AAwYF;AAtYC,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;;AAGjD,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;;IAGvC,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;QAEhD,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,iBAAiB,EAAE;;AAG1B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;YACjE,IAAI,CAAC,qBAAqB,EAAE;;QAG9B,IACE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC;AAC7C,aAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAC1E;YACA,IAAI,CAAC,qBAAqB,EAAE;;;IAIhC,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;QAGzC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;AAEzC,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;;AAG5C,QAAA,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE;;AAEtC,QAAA,cAAc,GAAG,cAAc,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC;;AAG9D,QAAA,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAC3D,QAAA,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;;AAI/D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;;QAI9D,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACrD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;;IAIjE,kBAAkB,CAAC,IAAU,EAAE,cAAuB,EAAA;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;QAE5C,IAAI,SAAS,GAAG,KAAK;QACrB,IAAI,YAAY,GAAG,KAAK;QACxB,IAAI,UAAU,GAAG,KAAK;;QAGtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAEjB,gBAAA,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;gBAC5D,YAAY;AACV,oBAAA,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;gBAClE,UAAU;AACR,oBAAA,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;;iBAC3D;;gBAEL,YAAY;AACV,oBAAA,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;AAClE,gBAAA,SAAS,GAAG,YAAY,CAAC;;;AAI7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC;AACtB,cAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO;cAChE,KAAK;QAET,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAE5C,OAAO;YACL,IAAI;YACJ,cAAc;YACd,OAAO;YACP,UAAU;YACV,SAAS;YACT,YAAY;YACZ,UAAU;YACV,UAAU;SACX;;AAGH,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC3D,YAAA,OAAO,IAAI;;AAEb,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzD,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;AAGd,IAAA,aAAa,CAAC,IAAU,EAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,OAAO,OAAO;;AAGhB,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACjC,QAAA,OAAO,OAAO;;AAGhB,IAAA,UAAU,CAAC,IAAkB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAChC;;;AAIF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;;YAE1D,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAEpB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,GAAG,EAAE,IAAI,CAAC,QAAQ;AACnB,aAAA,CAAC;;aACG;;YAEL,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;gBAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;iBAChC;gBACL,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;YAGrC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,KAAK,EAAE,IAAI,CAAC,UAAU;oBACtB,GAAG,EAAE,IAAI,CAAC,QAAQ;AACnB,iBAAA,CAAC;;;;QAKN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,qBAAqB,EAAE;;AAG9B,IAAA,qBAAqB,CAAC,IAAkB,EAAA;QACtC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC/B,YAAA,IAAI,CAAC,KAAK,IAAI,EAAE;AACd,gBAAA,CAAC,CAAC,UAAU,GAAG,KAAK;AACpB,gBAAA,CAAC,CAAC,SAAS,GAAG,KAAK;AACnB,gBAAA,CAAC,CAAC,YAAY,GAAG,KAAK;AACtB,gBAAA,CAAC,CAAC,UAAU,GAAG,KAAK;;AAExB,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC9D,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGpD,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;QACpE,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGpD,IAAA,UAAU,CAAC,IAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,iBAAiB,GAAA;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE;AAEvD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;;;AAI5C,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClC,YAAA,OAAO,KAAK;;;AAId,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;AACrD,YAAA,OAAO,IAAI;;;AAIb,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;AACrD,YAAA,OAAO,IAAI;;AAGb,QAAA,OAAO,KAAK;;AAGd,IAAA,eAAe,CAAC,UAAkB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClC,YAAA,OAAO,KAAK;;QAGd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;;QAG3C,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;;AAErD,QAAA,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;;AAGxD,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACrE,YAAA,OAAO,IAAI;;;AAIb,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACpE,YAAA,OAAO,IAAI;;AAGb,QAAA,OAAO,KAAK;;AAGd,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;QACtB,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGpD,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGpD,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,IAAI,KAAK,GAAG,EAAE;QACjC,IAAI,CAAC,iBAAiB,EAAE;;;IAI1B,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,KAAK;;;QAId,MAAM,sBAAsB,GAAG,IAAI,IAAI,CACrC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAC3B,CAAC,CACF;;QAGD,MAAM,kBAAkB,GAAG,IAAI,IAAI,CACjC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAC3B,CAAC,CACF;;QAGD,OAAO,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;;IAI9D,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,KAAK;;;QAId,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAClC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,EAC/B,CAAC,CACF;;QAGD,OAAO,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;;IAI7D,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,KAAK;;;AAId,QAAA,MAAM,qBAAqB,GAAG,IAAI,IAAI,CACpC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAC9B,CAAC,EACD,CAAC,CACF;;AAGD,QAAA,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAChC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAClC,EAAE,EACF,EAAE,CACH;;QAGD,OAAO,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;;IAI7D,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,KAAK;;;AAId,QAAA,MAAM,kBAAkB,GAAG,IAAI,IAAI,CACjC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAClC,CAAC,EACD,CAAC,CACF;;QAGD,OAAO,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;;IAI5D,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,KAAK;;;AAId,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;QACpD,MAAM,2BAA2B,GAAG,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC;QAE1E,OAAO,2BAA2B,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;;IAIvE,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,KAAK;;;AAId,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE;QACtD,MAAM,6BAA6B,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3E,OAAO,6BAA6B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;8GA1a5D,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,yVC7BvB,s7IA4IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjHc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+BAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAExC,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,WAEd,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,s7IAAA,EAAA;8BAG3C,YAAY,EAAA,CAAA;sBAApB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;ME/BU,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,gJAFX,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAED,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACb,iBAAA;8BAE4B,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;;;MCgBU,MAAM,CAAA;AAvBnB,IAAA,WAAA,GAAA;AA4BY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAC1C;8GANY,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EApBP,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAnBS,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAqBL,MAAM,EAAA,UAAA,EAAA,CAAA;kBAvBlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;AACF,iBAAA;8BAE4B,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;MCaU,UAAU,CAAA;IAoCrB,IAAa,uBAAuB,CAAC,KAA2B,EAAA;AAC9D,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;QAErC,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,GAAG,KAAK;;AAG9C,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,wBAAyB;;AAYvC,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,mBAAmB;;AAMtD,IAAA,WAAA,CACS,UAAsB,EACrB,GAAsB,EAC9B,OAAgB,EAAA;QAFT,IAAU,CAAA,UAAA,GAAV,UAAU;QACT,IAAG,CAAA,GAAA,GAAH,GAAG;QAzDJ,IAAgB,CAAA,gBAAA,GAAY,OAAO;QACnC,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAyB,CAAA,yBAAA,GAAY,IAAI;QACzC,IAAW,CAAA,WAAA,GAAG,WAAW;AAEzB,QAAA,IAAA,CAAA,qBAAqB,GAAsC,CAClE,GAAG,MACC;AACJ,YAAA,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,IAAI,CAAC,UAAU;AAC7B,SAAA,CAAC;AACQ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAGpC;QAQK,IAA0B,CAAA,0BAAA,GAA4B,IAAI;QAiBnE,IAAS,CAAA,SAAA,GAAG,gBAAgB;QAEnB,IAAS,CAAA,SAAA,GAAiB,EAAE;QAErC,IAAS,CAAA,SAAA,GAA6B,EAAE;QACxC,IAAU,CAAA,UAAA,GAAmB,EAAE;QAgB7B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;;IAG7D,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAChD,SAAS,CAAC,IAAI,CAAC,cAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,EAAE,KAAM,EAAE,CAAC,MAAyB,CAAC,SAAS,CAAC,CACrD,CACF;YAED,IAAI,CAAC,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB;YAEnE,IAAI,IAAI,CAAC,0BAA0B;gBACjC,IAAI,CAAC,mBAAmB,CAAC,cAAc;oBACrC,IAAI,CAAC,0BAA0B;YAEnC,IAAI,IAAI,CAAC,oBAAoB;gBAC3B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB;AAE/D,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;AAGjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;;AAG1C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC3B,SAAC,CAAC;;AAGJ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;YAAE,KAAK,CAAC,cAAc,EAAE;AAEjD,QAAA,IACE,KAAK,CAAC,GAAG,KAAK,WAAW;YACzB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,SAAS,EAC7C;AACA,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;gBAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;;YAE5C;;AAGF,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,EAAE;YACzC;;AAGF,QAAA,IACE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB;YACnC,CAAC,IAAI,CAAC,cAAc;YACpB,CAAC,IAAI,CAAC,yBAAyB;YAE/B;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS;QAC9D,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE;;AAG3C,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAEtB,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG/B,IAAA,gBAAgB,CAAC,UAAe,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE;YAC3D;;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;AAChD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE;;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG/B,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;YACnB;;AAGF,QAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAE9C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM;YACtC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;AAC3B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAG1B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGzB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;;AAG1B,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU;;AAG/B,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAGzB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;;8GAtM5B,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EARV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAGgB,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAU,EC9C7B,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,66FA0FA,EDvDY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAM,mIAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,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,CAAA,EAAA,CAAA,CAAA;;2FAUpD,UAAU,EAAA,UAAA,EAAA,CAAA;kBAZtB,SAAS;+BACE,cAAc,EAAA,OAAA,EACf,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAErD,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,66FAAA,EAAA;qIAG4B,QAAQ,EAAA,CAAA;sBAApC,eAAe;uBAAC,UAAU;gBAElB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,yBAAyB,EAAA,CAAA;sBAAjC;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAMS,WAAW,EAAA,CAAA;sBAApB;gBAK4B,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB;gBAElB,0BAA0B,EAAA,CAAA;sBAAlC;gBAIQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAEQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAIY,uBAAuB,EAAA,CAAA;sBAAnC;gBAaQ,SAAS,EAAA,CAAA;sBAAjB;;;MErEU,aAAa,CAAA;AAmCxB,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,IAAI,CAAC,gBAAgB;;QAG9B,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;cAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;iBAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU;iBAC9B,IAAI,CAAC,KAAK;cACb,IAAI;;AAGV,IAAA,WAAA,CAAiD,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;QA5ClD,IAAS,CAAA,SAAA,GAAY,KAAK;QAM1B,IAAI,CAAA,IAAA,GAAW,EAAE;QACjB,IAAK,CAAA,KAAA,GAAW,EAAE;QAElB,IAAK,CAAA,KAAA,GAAY,EAAE;QAGnB,IAAQ,CAAA,QAAA,GAAqB,KAAK;QAClC,IAAO,CAAA,OAAA,GAAoB,EAAE;QAC7B,IAAW,CAAA,WAAA,GAAW,EAAE;QACxB,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAS,CAAA,SAAA,GAAe,MAAM;QAE9B,IAAS,CAAA,SAAA,GAAY,IAAI;QAIzB,IAAiB,CAAA,iBAAA,GAAG,KAAK;QAK1B,IAAY,CAAA,YAAA,GAAU,EAAE;QACxB,IAAa,CAAA,aAAA,GAAU,EAAE;QACzB,IAAY,CAAA,YAAA,GAAW,EAAE;QACzB,IAAgB,CAAA,gBAAA,GAAkB,IAAI;AAe5C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI;;;IAIxC,QAAQ,GAAA;QACN,IACE,CAAC,IAAI,CAAC,UAAU;aACf,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAC/D;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC;;;AAI9D,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAIlD,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGpC,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGrC,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,UAAU,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAG5C,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE;YAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAEpD,YAAA,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;AACxC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;;AACnC,iBAAA,IAAI,gBAAgB,KAAK,KAAK,EAAE;AACrC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,sBAAsB;;iBACzC;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;;aAEzB;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;AAG9B,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;;QAG/B,IAAK,KAAK,CAAC,MAA2B,CAAC,KAAK,KAAK,WAAW,EAAE;AAC3D,YAAA,KAAK,CAAC,MAA2B,CAAC,KAAK,GAAG,WAAW;;AAGxD,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;;AAG3C;;AAEG;AACK,IAAA,eAAe,CAAC,WAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,EAAE;;QAG3B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACvC,YAAA,OAAO;iBACJ,KAAK,CAAC,EAAE;AACR,iBAAA,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;gBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,QAAQ;AAAE,oBAAA,OAAO,KAAK;gBAE3B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,YAAY,MAAM,EAAE;AAC9D,oBAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE5B,gBAAA,OAAO,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,eAAe;AACjD,aAAC;iBACA,IAAI,CAAC,EAAE,CAAC;;;AAIb,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;;AAI3C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;;AAGjD,QAAA,OAAO,WAAW;;AAGpB;;AAEG;AACK,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;;QAGrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5C,IAAI,MAAM,GAAG,EAAE;YACf,IAAI,UAAU,GAAG,CAAC;;YAGlB,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAC5D,CAAC,EAAE,EACH;gBACA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAExC,gBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;;AAEpB,oBAAA,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;AAChC,wBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAChC,wBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACtB,MAAM,IAAI,IAAI;4BACd;;;;AAGC,qBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;;AAE3B,oBAAA,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;AAChC,wBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAChC,wBAAA,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACzB,MAAM,IAAI,IAAI;4BACd;;;;AAGC,qBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;;AAE3B,oBAAA,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;AAChC,wBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAChC,wBAAA,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACzB,MAAM,IAAI,IAAI;4BACd;;;;AAGC,qBAAA,IAAI,QAAQ,KAAK,GAAG,EAAE;;AAE3B,oBAAA,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7B,wBAAA,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;;;qBAE1B;;oBAEL,MAAM,IAAI,QAAQ;;AAGlB,oBAAA,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE;AAC/D,wBAAA,UAAU,EAAE;;;;AAKlB,YAAA,OAAO,MAAM;;;QAIf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,MAAM,GAAG,EAAE;YACf,IAAI,UAAU,GAAG,CAAC;YAElB,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAC5D,CAAC,EAAE,EACH;gBACA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAE3C,gBAAA,IAAI,WAAW,YAAY,MAAM,EAAE;;AAEjC,oBAAA,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;AAChC,wBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAChC,wBAAA,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BAC1B,MAAM,IAAI,IAAI;4BACd;;;;AAGC,qBAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;;oBAE1C,MAAM,IAAI,WAAW;;AAGrB,oBAAA,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,WAAW,EAAE;AAClE,wBAAA,UAAU,EAAE;;;;AAKlB,YAAA,OAAO,MAAM;;AAGf,QAAA,OAAO,KAAK;;8GAvPH,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAFX,EAAE,ECvBjB,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,87CAuDA,4CDtCc,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAQ7B,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,SAAS;8BACG,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAA,QAAA,EAC7B,iBAAiB,EACrB,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,yBAAyB;AACnC,qBAAA,EAAA,SAAA,EAEU,EAAE,EAAA,QAAA,EAAA,87CAAA,EAAA;;0BAiDF;;0BAAQ;yCA5CZ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAGQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAE0B,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc;;;MEGd,iBAAiB,CAAA;AA+D5B,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,QACE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI;YACrD,IAAI,CAAC,SAAS,CAAC,GAAG;YAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;;IAQ9C,WAAmB,CAAA,UAAsB,EAAE,OAAgB,EAAA;QAAxC,IAAU,CAAA,UAAA,GAAV,UAAU;QA3EpB,IAAM,CAAA,MAAA,GAAG,KAAK;QACd,IAAS,CAAA,SAAA,GAAgB,IAAI;QAC7B,IAAO,CAAA,OAAA,GAAgB,IAAI;QAC3B,IAAO,CAAA,OAAA,GAAgB,IAAI;QAC3B,IAAO,CAAA,OAAA,GAAgB,CAAC,MAAK;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;YACxB,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC/B,YAAA,OAAO,KAAK;AACd,SAAC,GAAG,CAAC;QAEI,IAAQ,CAAA,QAAA,GAAG,KAAK;;QAGzB,IAAY,CAAA,YAAA,GAAG,KAAK;AAEV,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAa;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAW;AAE1C,QAAA,IAAA,CAAA,SAAS,GAAc;YAC9B,KAAK,EAAE,IAAI,IAAI,EAAE;YACjB,GAAG,EAAE,IAAI,IAAI,EAAE;SAChB;;AAGO,QAAA,IAAA,CAAA,aAAa,GAAc;YACjC,KAAK,EAAE,IAAI,IAAI,EAAE;YACjB,GAAG,EAAE,IAAI,IAAI,EAAE;SAChB;;QAGD,IAAc,CAAA,cAAA,GAAW,EAAE;QAC3B,IAAY,CAAA,YAAA,GAAW,EAAE;QAEzB,IAAc,CAAA,cAAA,GAAW,QAAQ;;AAGjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,IAAI,EAAE;AAC7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,IAAI,EAAE;;AAG9B,QAAA,IAAA,CAAA,cAAc,GAAe;AAC3B,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,QAAQ,EAAE,KAAK;SAChB;AAED,QAAA,IAAA,CAAA,OAAO,GAAG;AACR,YAAA,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;AACzC,YAAA,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3C,YAAA,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE;AAC7C,YAAA,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE;AAC/C,YAAA,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE;AAC7C,YAAA,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACjD,YAAA,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3C,YAAA,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;SACrC;QAED,IAAS,CAAA,SAAA,GAAG,gBAAgB;;AAa5B,QAAA,IAAA,CAAA,QAAQ,GAA+B,MAAK,GAAG;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,GAAG;;QAmShC,IAAY,CAAA,YAAA,GACV,CAAC,QAAyB,KAC1B,CAAC,KAAa,KAAsB;AAClC,YAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;gBAAE,OAAO,IAAI,CAAC;YAE7C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAEvC,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,qBAAqB;YAEvC,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAE5D,YAAA,IAAI,OAAO,uBAAuB,KAAK,QAAQ,EAAE;AAC/C,gBAAA,OAAO,uBAAuB;;;YAIhC,IACE,QAAQ,KAAK,KAAK;gBAClB,IAAI,CAAC,SAAS,CAAC,KAAK;AACpB,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAC3B;AACA,gBAAA,OAAO,sCAAsC;;AAG/C,YAAA,OAAO,IAAI;AACb,SAAC;QAzTD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;;IAG7D,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGrD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;AAC1C,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAInD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;;QAGxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;;QAGxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;QAGpE,IAAI,CAAC,eAAe,EAAE;;AAGtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;AAG/D,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAK;YACrC,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC,CAAC;;;IAIJ,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;AAC9C,KAAC;AACD,IAAA,UAAU,CAAC,KAAuB,EAAA;QAChC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,SAAS,GAAG;AACf,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;AACvD,gBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE;gBACjD,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB;YACD,IAAI,CAAC,aAAa,GAAG;AACnB,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;AACvD,gBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE;gBACjD,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB;;AAGD,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM;;;AAIpC,YAAA,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;AAGtE,YAAA,IAAI,KAAK,CAAC,GAAG,EAAE;gBACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;;;AAKlD,IAAA,gBAAgB,CAAC,EAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,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;;IAG5B,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;;;IAIpB,aAAa,GAAA;QACX,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGpC,IAAA,eAAe,CAAC,KAAwC,EAAA;QACtD,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;;AAG9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;;AAIjE,IAAA,qBAAqB,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;;AAI/B,IAAA,oBAAoB,CAAC,IAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;AAG9B,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;AAE9B,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;QAEtB,QAAQ,QAAQ;AACd,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC/D;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;AACnC,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,aAAa;gBAChB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,cAAc;gBACjB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,aAAa;AAChB,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,eAAe;AAClB,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACzD,gBAAA,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC5B,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjB,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACxD;;;AAIJ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACtD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAC3C;;AAGD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;IAGjE,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;;YAE9C,IAAI,CAAC,aAAa,GAAG;gBACnB,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;gBAC7D,MAAM,EAAE,IAAI,CAAC,cAAc;aAC5B;;YAGD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGzC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE;AAEhB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;;IAItC,eAAe,GAAA;;QAEb,IAAI,CAAC,SAAS,GAAG;YACf,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;SACtE;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;QAG/D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,QAAQ;;AAG7D,IAAA,UAAU,CAAC,IAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AAEpB,QAAA,MAAM,MAAM,GAAG;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;SACN;AAED,QAAA,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,EAAE,EAAE;;IAG7E,sBAAsB,GAAA;;AAEpB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC;YACrE,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,KAAK;;;;AAKvB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;AAEpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE;AAEzE,QAAA,OAAO,GAAG,GAAG,CAAG,EAAA,KAAK,CAAM,GAAA,EAAA,GAAG,CAAE,CAAA,GAAG,KAAK;;;AAI1C,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;;QAGzB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;;QAGlD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAEnC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AACzC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AAE1C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAChD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;AAGvC,gBAAA,IACE,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI;AAC3B,oBAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK;AACzB,oBAAA,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EACtB;AACA,oBAAA,OAAO,IAAI;;;;AAKjB,QAAA,OAAO,IAAI;;AA+Bb,IAAA,iBAAiB,CAAC,IAAU,EAAA;;QAE1B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YACvC,OAAO,CAAA,sBAAA,EAAyB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAE;;;QAIzE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YACvC,OAAO,CAAA,qBAAA,EAAwB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAE;;AAGxE,QAAA,OAAO,IAAI;;;AAIb,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAEvC,IAAI,IAAI,EAAE;;AAER,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI;;AAG3B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,EAAE;gBACnD,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;;;AAIrC,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;;;;AAKlC,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAEvC,IAAI,IAAI,EAAE;;AAER,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI;;AAGzB,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;;;;AAKlC,IAAA,kBAAkB,CAAC,IAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AAEpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACtD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAE/B,QAAA,OAAO,GAAG,GAAG,CAAA,GAAA,EAAM,KAAK,CAAM,GAAA,EAAA,IAAI,EAAE;;8GA7b3B,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtDH,61PAuNM,EDjLF,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,EACR,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HACZ,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,EAEnB,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,MAAM,iFACN,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAUJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAEvB,OAAA,EAAA;wBACP,QAAQ;wBACR,YAAY;wBACZ,UAAU;wBACV,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;wBACnB,OAAO;wBACP,MAAM;wBACN,aAAa;qBACd,EACU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,61PAAA,EAAA;qGAGQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKS,eAAe,EAAA,CAAA;sBAAxB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;;;ME7DU,QAAQ,CAAA;AACnB,IAAA,WAAA,CAA6B,OAAkB,EAAA;QAAlB,IAAO,CAAA,OAAA,GAAP,OAAO;;AAEpC,IAAA,IAAI,CACF,SAA2B,EAC3B,YAAA,GAAiD,EAAE,EAAA;QAEnD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM;;AAGzD,IAAA,WAAW,CACT,SAA2B,EAC3B,YAAA,GAAiD,EAAE,EAAA;AAEnD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,aAAa,EAAE,kBAAkB;AACjC,YAAA,UAAU,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;AACzC,YAAA,GAAG,YAAY;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;;8GApBlC,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAR,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,QAAQ,cAFP,MAAM,EAAA,CAAA,CAAA;;2FAEP,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCJY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACjB,WAAW,EALZ,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAEK,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;AAEK,gBAAA,CAAA;AAChB,iBAAA;8BAE2C,OAAO,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCD7B,gBAAgB,CAAA;AAP7B,IAAA,WAAA,GAAA;QAQW,IAAQ,CAAA,QAAA,GAAG,IAAI;QACf,IAAW,CAAA,WAAA,GAAG,KAAK;AAE7B;8GAJY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGhB,WAAW,EAPZ,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAEK,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEJ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;AAEK,gBAAA,CAAA;AAChB,iBAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACyC,OAAO,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCoD7B,cAAc,CAAA;AAhD3B,IAAA,WAAA,GAAA;QAiDW,IAAQ,CAAA,QAAA,GAAG,KAAK;AACL,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAC7C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE;AAwBtC;AAfC,IAAA,kBAAkB;IAElB,IAAI,MAAM,CAAC,KAAkC,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,aAAa;YAC3C,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC,aAAc;AAEpD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAEtB,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,eAAe,CAAC,GAAgB,EAAA;AAC9B,QAAA,OAAO,GAAG,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI;;8GA1B1B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,0NAMX,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAChB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEpB,gBAAgB,EAtDf,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5CW,gBAAgB,EAAE,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EAAE,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FA8C1D,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC;AACpE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CX,EAAA;AACF,iBAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAhB;gBACmB,cAAc,EAAA,CAAA;sBAAjC,MAAM;uBAAC,UAAU;gBACR,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBAE+B,MAAM,EAAA,CAAA;sBAArC,YAAY;uBAAC,gBAAgB;gBAE9B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,iBAAiB;gBAG/B,YAAY,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCrDlC,eAAe,CAAA;AAT5B,IAAA,WAAA,GAAA;QAUW,IAAK,CAAA,KAAA,GAAG,KAAK;AAiBvB;IAVC,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;;IAEvD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;;IAGhC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;;8GAhBpB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAKT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,cAAc,EAFpB,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,EATX,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALW,YAAY,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAOb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA;AACF,iBAAA;8BAEU,KAAK,EAAA,CAAA;sBAAb;gBAE0C,aAAa,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGzC,aAAa,EAAA,CAAA;sBADZ,eAAe;uBAAC,cAAc;;;MCFpB,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,YAbzB,cAAc;YACd,iBAAiB;YACjB,gBAAgB;AAChB,YAAA,eAAe,aAGf,cAAc;YACd,iBAAiB;YACjB,gBAAgB;YAChB,eAAe,CAAA,EAAA,CAAA,CAAA;+GAIN,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,eAAe;AAChB,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;MCdY,mBAAmB,CAAA;AAQ9B,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAQ,IAAI,CAAC,IAAe,EAAE,YAAY;;AAG5C,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAP3B,IAAQ,CAAA,QAAA,GAAY,KAAK;QACzB,IAAI,CAAA,IAAA,GAAkC,SAAS;;8GANpC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;;AAEjB,iBAAA;gFAGC,IAAI,EAAA,CAAA;sBADH,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;gBAI/C,QAAQ,EAAA,CAAA;sBADP,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE;;;ACSnD,MAAO,sBAAuB,SAAQ,cAAc,CAAA;AACxD,IAAA,WAAA,CAA6B,GAAsB,EAAA;AACjD,QAAA,KAAK,EAAE;QADoB,IAAG,CAAA,GAAA,GAAH,GAAG;;IAKhC,IAAa,QAAQ,CAAC,KAA6B,EAAA;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;AAI9C,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,KAAK,CAAC,eAAe,EAAE;;IAGzB,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe;YAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAElB,IAAA,YAAY,CAAC,KAA6B,EAAA;QAChD,QAAQ,KAAK;AACX,YAAA,KAAK,UAAU;gBACb,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA;iBACF;AACH,YAAA,KAAK,WAAW;gBACd,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA;iBACF;AACH,YAAA,KAAK,aAAa;gBAChB,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,QAAQ,EAAE,KAAK;AAChB,qBAAA;iBACF;AACH,YAAA,KAAK,cAAc;gBACjB,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,QAAQ,EAAE,KAAK;AAChB,qBAAA;iBACF;AACH,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA;iBACF;AACH,YAAA;AACE,gBAAA,OAAO,EAAE;;;8GApEJ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,4LAFtB,EAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;sFAK4B,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,kBAAkB;gBAEZ,QAAQ,EAAA,CAAA;sBAApB;gBAKD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCuCtB,MAAM,CAAA;8GAAN,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAEA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAmB,EADzB,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,EA3CV,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCX,EA/CK,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAChB,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FA4CX,MAAM,EAAA,UAAA,EAAA,CAAA;kBApDlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,OAAO,EAAE;wBACL,OAAO;wBACP,cAAc;wBACd,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;AACnB,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCX,EAAA;AACF,iBAAA;8BAE2C,YAAY,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAExC,SAAS,EAAA,CAAA;sBADR,eAAe;uBAAC,mBAAmB;gBAIpC,UAAU,EAAA,CAAA;sBADT;;;MC9DU,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,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,YAAY,EAJb,OAAA,EAAA,CAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,CACjE,EAAA,OAAA,EAAA,CAAA,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGlD,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,YAAY,EAFZ,SAAA,EAAA,CAAC,iCAAiC,CAAC,YAFpC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIX,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,CAAC;AAC5E,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,CAAC;oBAC9D,SAAS,EAAE,CAAC,iCAAiC,CAAC;AAC/C,iBAAA;;;ACNe,SAAA,qBAAqB,CAAC,MAAM,GAAG,2BAA2B,EAAA;IACxE,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,QAAQ,EAAE,EAAE,GAAG,2BAA2B,EAAE,GAAG,MAAM,EAAE;AACxD;KACF;AACH;;ACDA;;;AAGG;AACH,IAAIG,kBAAgB,GAAG,CAAC;AAExB;MACa,qBAAqB,CAAA;AAChC,IAAA,WAAA;;IAES,MAAmB;;AAEnB,IAAA,WAAA,GAAuB,KAAK;;AAE5B,IAAA,SAAA,GAA2B,IAAI,EAAA;QAJ/B,IAAM,CAAA,MAAA,GAAN,MAAM;QAEN,IAAW,CAAA,WAAA,GAAX,WAAW;QAEX,IAAS,CAAA,SAAA,GAAT,SAAS;;AAEnB;MAaY,QAAQ,CAAA;AAkBnB,IAAA,WAAA,CAA6B,OAAgC,EAAA;QAAhC,IAAO,CAAA,OAAA,GAAP,OAAO;QAjB7B,IAAQ,CAAA,QAAA,GAAY,KAAK;QACzB,IAAM,CAAA,MAAA,GAAY,KAAK;QAGd,IAAQ,CAAA,QAAA,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,UAAA,EAAaA,kBAAgB,EAAE,EAAE;QAC9C,IAAQ,CAAA,QAAA,GAAqB,IAAI;QAEjC,IAAoB,CAAA,oBAAA,GAAY,IAAI;QACpC,IAAS,CAAA,SAAA,GAA4B,OAAO;AAEzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAEpD;;AAMH,IAAA,QAAQ;;IAGA,yBAAyB,CAAC,WAAW,GAAG,KAAK,EAAA;AACnD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,IAAI,qBAAqB,CAAI,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CACrE;;;IAIH,MAAM,CAAC,cAAuB,KAAK,EAAA;;;QAGjC,IAAI,IAAI,CAAC,QAAQ;YAAE;;;AAInB,QAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;;QAE3C,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;IAGtC,QAAQ,CAAC,cAAuB,KAAK,EAAA;;;AAGnC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAGvB;;;;AAIG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAClB,IAAI,CAAC,cAAc,EAAE;;;AAIzB;;;;AAIG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;;;IAKvB,QAAQ,GAAA;;;AAGN,QAAA,IAAI,OAAO,GAAgB,IAAI,CAAC,cAAc,CAAC,aAAa;;;AAI5D,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACrC,MAAM,kBAAkB,GAAuB,OAAO,CAAC,aAAa,CAClE,IAAI,CAAC,QAAQ,CACd;AACD,YAAA,IAAI,kBAAkB;gBAAE,OAAO,GAAG,kBAAkB;;AAGtD,QAAA,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,EAAE;;IAGvD,YAAY,CAAC,YAAqB,KAAK,EAAA;QACrC,OAAO,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,SAAS,KAAK;AAC9C,cAAE,IAAI,CAAC,QAAQ;cACb,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,IAAI,IAAI;;AAG3D;;;AAGG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;;;IAIxC,cAAc,GAAA;;QAEZ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,KAAK,WAAW;AAClE,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;AACxC,gBAAA,KAAK,EAAE,QAAQ;AAChB,aAAA,CAAC;;IAGN,wBAAwB,GAAA;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;YAGpB,IAAI,CAAC,cAAc,EAAE;AACvB,SAAC,CAAC;;8GAzHO,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,ECzCrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0fAkBA,EDcc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAShB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAXpB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,OAAO,EAAE,MAAM,CAAC,EAEpB,IAAA,EAAA;AACF,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,KAAK,EAAE,WAAW;AACrB,qBAAA,EAAA,QAAA,EAAA,0fAAA,EAAA;+EAMa,KAAK,EAAA,CAAA;sBAApB;gBACe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,EAAE,EAAA,CAAA;sBAAjB;gBACe,QAAQ,EAAA,CAAA;sBAAvB;gBAEe,oBAAoB,EAAA,CAAA;sBAAnC;gBACe,SAAS,EAAA,CAAA;sBAAxB;gBAEkB,iBAAiB,EAAA,CAAA;sBAAnC;gBAI4B,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,SAAS;;;AEvBtB;;;AAGG;AACH,IAAI,gBAAgB,GAAG,CAAC;MA6BX,QAAQ,CAAA;AAUnB,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,KAAK,CAAC,QAAa,EAAA;QACrB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;;AAgB1C,IAAA,IAAW,SAAS,GAAA;;;QAGlB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;;YAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,IAAI;;IAmEjE,WACS,CAAA,GAAsB,EACtB,UAAsB,EACtB,OAAgB,EACN,IAAY,EACZ,aAA4B,EAAA;QAJtC,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAO,CAAA,OAAA,GAAP,OAAO;QACG,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;QAxGhB,IAAW,CAAA,WAAA,GAAW,kBAAkB;QACxC,IAAQ,CAAA,QAAA,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,UAAA,EAAa,gBAAgB,EAAE,EAAE;QAC9C,IAAW,CAAA,WAAA,GAAkC,CAC3D,EAAO,EACP,EAAO,KACJ,EAAE,KAAK,EAAE;QAoBL,IAAW,CAAA,WAAA,GAAG,IAAI;AASpB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,GAAG;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;QAEpB,IAAU,CAAA,UAAA,GAAQ,IAAI;QAEtB,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAM,CAAA,MAAA,GAAY,KAAK;AAMvB,QAAA,IAAA,CAAA,SAAS,GAAwB;AACtC,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC,CAAC;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC,CAAC;AACZ,aAAA;SACF;;AAGQ,QAAA,IAAA,CAAA,sBAAsB,GAAsC,KAAK,CACxE,MAAK;AACH,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;YAE5B,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CACzB,SAAS,CAAC,OAAO,CAAC,EAClB,SAAS,CAAC,MACR,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAC5D,CACF;;YAGH,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5B,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAC7C;AACH,SAAC,CACmC;QASpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;;AAG9D,IAAA,QAAQ;IAER,kBAAkB,GAAA;QAChB,IAAI,CAAC,eAAe,EAAE;QAEtB,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;AAC/D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;;AAGxD,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AACvD,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,iBAAiB,CAAC,SAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;IAG5B,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;AAI1B,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;;AAGlC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;;AAI1B,QAAA,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CACtC,eAAe,EACf,UAAU,CAAC,QAAQ,EAAE,CACtB;;IAGH,SAAS,GAAA;;;AAGP,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE;;;AAI5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;;AAIlB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,wBAAwB,EAAE;;IAG1D,UAAU,GAAA;;;QAGR,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGtE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;IAGrB,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,EAAE;;IAGnB,YAAY,CACV,QAAa,EACb,SAAwB,EACxB,OAAgB,EAChB,WAAW,GAAG,KAAK,EAAA;;;AAInB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,WAAW,KAAK,KAAK,EAAE;YACxE;;;;AAKF,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;AAI1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;QAEvB,IAAI,OAAO,KAAK,IAAI;YAAE,IAAI,CAAC,aAAa,EAAE;;;QAI1C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;;;AAInB,QAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;;AAG5C,IAAA,QAAQ,CAAC,MAAgB,EAAE,WAAoB,EAAE,SAAwB,EAAA;;;AAGvE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE;;;QAI9D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;gBACvD,MAAM,CAAC,QAAQ,EAAE;;AAErB,SAAC,CAAC;;;QAIF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC;;;QAIhD,IAAI,CAAC,UAAU,EAAE;;AAGnB,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,MAAM,KAAK;AACd,kBAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAC/B,kBAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;;;AAIhC,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAEhC,QAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;;;AAIlB,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;QAC7B,MAAM,UAAU,GAAG,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ;AACjE,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;AAEnC,QAAA,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;;YAE9B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE;;;;AAGZ,aAAA,IACL,CAAC,QAAQ;AACT,aAAC,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC;AACxC,YAAA,OAAO,CAAC,UAAU;AAClB,YAAA,CAAC,cAAc,CAAC,KAAK,CAAC,EACtB;YACA,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE;;aACpC;AACL,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;;;;;;IAQpB,eAAe,GAAA;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAW,IAAI,CAAC,OAAO;AACrE,aAAA,aAAa;AACb,aAAA,uBAAuB;AACvB,aAAA,cAAc;AACd,aAAA,QAAQ;AACR,aAAA,uBAAuB,CAAC,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,MAAK;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC/C,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,EAAE;;AAEtD,SAAC,CAAC;;AAGI,IAAA,2BAA2B,CAAC,KAAU,EAAA;;;AAG5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;;;AAIhC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;;;AAGvD,YAAA,IAAI,OAAO,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI;AAAE,gBAAA,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;;;YAIzE,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAgB,KAAI;AACjE,gBAAA,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACtE,aAAC,CAAC;;AAEF,YAAA,IAAI,mBAAmB;AAAE,gBAAA,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC;;AAC9D,gBAAA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;;8GAnUvB,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EARN,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,GAAA,EAAA,WAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,uEAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC;AACvC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAyBc,QAAQ,EC1F3B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ylFAoFA,ED1Cc,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,mBAAmB,EAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAyB7B,QAAQ,EAAA,UAAA,EAAA,CAAA;kBA3BpB,SAAS;+BACI,WAAW,EAAA,OAAA,EACZ,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAEtB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,iBAAiB,EAAE,GAAG;AACtB,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,sBAAsB,EAAE,+BAA+B;AACvD,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,WAAW,EAAE,uBAAuB;AACpC,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,SAAS,EAAE,+DAA+D;qBAC7E,EACU,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;AACvC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,ylFAAA,EAAA;wLAKa,WAAW,EAAA,CAAA;sBAA1B;gBACe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,EAAE,EAAA,CAAA;sBAAjB;gBACe,WAAW,EAAA,CAAA;sBAA1B;gBAKG,KAAK,EAAA,CAAA;sBADR;gBASM,cAAc,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGtC,cAAc,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAEE,OAAO,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAE/B,OAAO,EAAA,CAAA;sBADb,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAGvC,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;;;ME3DU,mBAAmB,CAAA;AAM9B,IAAA,WAAA,CAAoB,IAA6B,EAAA;QAA7B,IAAI,CAAA,IAAA,GAAJ,IAAI;QAFxB,IAAQ,CAAA,QAAA,GAA4B,IAAI;;IAIxC,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AAEpC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;;QAGpC,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAE/C,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;AACrE,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;;8GAlB9D,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EA5BpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAML,MAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAVK,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAgCf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlC/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EACnB,OAAA,EAAA,CAAC,gBAAgB,CAAC,EACrB,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,EAAE;qBACV,EACS,QAAA,EAAA,CAAA;;;;;;AAML,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA;+EAuBI,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MC7BU,mBAAmB,CAAA;IAQ9B,WAAoB,CAAA,GAAqB,EAAU,GAAqB,EAAA;QAApD,IAAG,CAAA,GAAA,GAAH,GAAG;QAA4B,IAAG,CAAA,GAAA,GAAH,GAAG;QAPjC,IAAS,CAAA,SAAA,GAAG,KAAK;QACX,IAAI,CAAA,IAAA,GAAG,CAAC;QACN,IAAQ,CAAA,QAAA,GAA4B,IAAI;;AAOrE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAEhB,YAAA,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE;AACrC,gBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAK;oBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,mBAAmB,CAAC;AAEzD,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;wBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,qBAAA,CAAC;AACJ,iBAAC,CAAC;;iBACG;gBACL,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;;;;8GA1BhC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,KAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE;+GAElC,SAAS,EAAA,CAAA;sBAA7B,KAAK;uBAAC,YAAY;gBACQ,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,kBAAkB;gBACI,QAAQ,EAAA,CAAA;sBAApC,KAAK;uBAAC,oBAAoB;gBAC0B,KAAK,EAAA,CAAA;sBAAzD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBACG,MAAM,EAAA,CAAA;sBAA3D,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACX,SAAS,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE;;;MCH5B,qBAAqB,CAAA;AAZlC,IAAA,WAAA,GAAA;QAaW,IAAG,CAAA,GAAA,GAAG,EAAE;QACR,IAAM,CAAA,MAAA,GAAG,EAAE;AACrB;8GAHY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EATtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;8BAEU,GAAG,EAAA,CAAA;sBAAX;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MCuBU,QAAQ,CAAA;AAmBnB,IAAA,WAAA,GAAA;AAhBU,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;QAC3C,IAAQ,CAAA,QAAA,GAAG,KAAK;QAGhB,IAAK,CAAA,KAAA,GAAY,KAAK;AAEvB,QAAA,IAAA,CAAA,gBAAgB,GAA6B;AACnD,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,GAAG,EAAE,KAAK;SACX;QAEO,IAAY,CAAA,YAAA,GAAU,EAAE;QACxB,IAAa,CAAA,aAAA,GAAU,EAAE;;AAGjC,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,OAAO,GAAG,KAAK,SAAS;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE;aACnD,IAAI,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK;;;AAG/D,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;AAEpC,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;;AAErC,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,QAAQ;AACR,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAAc,CAAC,OAAO;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;;8GA1CrC,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EARN,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC;AACvC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EArBS,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;AAaX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACW,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;2FASZ,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAzBpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaX,EAAA,CAAA;oBACC,OAAO,EAAE,CAAC,WAAW,CAAC;AACtB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;AACvC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ;AACJ,iBAAA;wDAEU,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,KAAK,EAAA,CAAA;sBAAb;;;MCpCU,SAAS,CAAA;AAOpB,IAAA,WAAA,GAAA;8GAPW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMT,WAAW,EAVZ,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAEK,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEJ,SAAS,EAAA,UAAA,EAAA,CAAA;kBAPrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;AAEK,gBAAA,CAAA;AAChB,iBAAA;wDAEU,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAIyC,OAAO,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCD7B,WAAW,CAAA;AAbxB,IAAA,WAAA,GAAA;AAcY,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;AAGxC;8GAJY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAVZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAbvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACF,iBAAA;8BAEW,QAAQ,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,UAAU,EAAA,CAAA;sBAAlB;;;MCUU,UAAU,CAAA;AASrB,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,IAAI,IAAI;;AAGhE,IAAA,WAAA,CACmB,GAAsB,EACtB,OAAe,EACf,eAA+B,EAAA;QAF/B,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QAblC,IAAa,CAAA,aAAA,GAAG,CAAC;QACR,IAAK,CAAA,KAAA,GAAgB,SAAS;QAC9B,IAAQ,CAAA,QAAA,GAA0B,SAAS;AAE1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;;IAYvD,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QAEpB,IAAI,KAAK,GAAG,KAAK;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC5C,YAAA,IACE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EACvC;AACA,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC;gBACtB,KAAK,GAAG,IAAI;;;AAGhB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;AACxE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAG1B,IAAA,QAAQ,CAAC,KAAqD,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC,KAAK;YAAE;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;AAChC,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;AACxB,SAAA,CAAC;;8GA1CO,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EACJ,SAAS,EC7B5B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4gBAgBA,0DDOY,WAAW,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAK1C,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,WAAW,EAAE,gBAAgB,EAAE,YAAY,CAAC,YAC5C,cAAc,EAAA,QAAA,EAAA,4gBAAA,EAAA;4IAMxB,QAAQ,EAAA,CAAA;sBADP,eAAe;uBAAC,SAAS;gBAGjB,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,gBAAgB,EAAA,CAAA;sBAAzB;;;ME7BU,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;;8GADhB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;MASY,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAmB,QAAwB,EAAA;QAAxB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;8GADhB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;MASY,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAAmB,QAAwB,EAAA;QAAxB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;8GAJhB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;gFAGC,cAAc,EAAA,CAAA;sBADb,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAExB,OAAO,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,cAAc,EAAE;;MAQrB,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEjB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAExB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAJrB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;8BAEkD,IAAI,EAAA,CAAA;sBAApD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAE/C,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,wBAAwB;gBAGtC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,kBAAkB;;AAIrB,MAAA,2BAA2B,GAAG;IACzC,oBAAoB;IACpB,wBAAwB;IACxB,kBAAkB;IAClB,iBAAiB;;;MCIN,OAAO,CAAA;AAElB,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAGzB,IAAa,UAAU,CAAC,KAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;;AAwBxD,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;;IAE/B,IAAI,gBAAgB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK;YACrE;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAE9B,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,cAAc,EAAE;;AAOpD,IAAA,IAAI,cAAc,GAAA;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,EAAE;AAC9C,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI;;AAG5D,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;;AAGzC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;;AAGhE,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAGzB,IAAY,UAAU,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;;AAG3C,IAAA,IAAI,aAAa,GAAA;QACf,OAAO;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,gBAAgB;YAC/B,UAAU,EAAE,IAAI,CAAC,kBAAkB;SACpC;;AAMH,IAAA,WAAA,CAA6B,MAAsB,EAAA;QAAtB,IAAM,CAAA,MAAA,GAAN,MAAM;QAnE1B,IAAe,CAAA,eAAA,GAAY,IAAI;QAE/B,IAAiB,CAAA,iBAAA,GAAY,IAAI;QACjC,IAAoB,CAAA,oBAAA,GAAY,KAAK;QAErC,IAAe,CAAA,eAAA,GAAW,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAEtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAK;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAqB;QAQ7D,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;AAc3C,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,eAAe,CAAI,EAAE,CAAC;QAElD,IAAW,CAAA,WAAA,GAAG,CAAC;QAgCf,IAAkB,CAAA,kBAAA,GAAY,KAAK;;IAI3C,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAClE,CAAC,MAAM,KAAI;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClD,YAAA,MAAM,QAAQ,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ;AACvD,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB;YAC1B,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAEzC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAChC,SAAC,CACF;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE;;IAG/C,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAG3C,YAAY,GAAA;QACV,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAG3C,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;8GAlHhC,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2BJ,iBAAiB,EAHd,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAoB,6BCzEvC,y4JA4Ic,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzGV,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,EACR,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,EACR,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,wmCACd,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,CAAA,CAAA;;2FAMF,OAAO,EAAA,UAAA,EAAA,CAAA;kBAhBnB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,MAAM;wBACN,QAAQ;wBACR,gBAAgB;wBAChB,QAAQ;wBACR,QAAQ;wBACR,cAAc;wBACd,UAAU;wBACV,SAAS;wBACT,WAAW;AACZ,qBAAA,EAAA,QAAA,EACS,UAAU,EAAA,QAAA,EAAA,y4JAAA,EAAA;qFAUP,UAAU,EAAA,CAAA;sBAAtB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAGD,UAAU,EAAA,CAAA;sBADT,eAAe;uBAAC,oBAAoB;gBAIrC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,iBAAiB;gBAM3B,gBAAgB,EAAA,CAAA;sBADnB;;;MEjEU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,OAAA,EAAA,CAJd,OAAO,EAAAE,oBAAA,EAAAC,wBAAA,EAAAC,kBAAA,EAAAC,iBAAA,CAAA,EAAA,OAAA,EAAA,CACP,OAAO,EAAAH,oBAAA,EAAAC,wBAAA,EAAAC,kBAAA,EAAAC,iBAAA,CAAA,EAAA,CAAA,CAAA;AAGN,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,aAAa,YAJd,OAAO,CAAA,EAAA,CAAA,CAAA;;2FAIN,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,2BAA2B,CAAC;AAC/C,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,2BAA2B,CAAC;AAC/C,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;MCJY,SAAS,CAAA;AAIpB,IAAA,WAAA,GAAA;QAFS,IAAW,CAAA,WAAA,GAAY,mBAAmB;QAC1C,IAAW,CAAA,WAAA,GAAG,KAAK;;8GAHjB,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXtB,ylCAkCA,EDzBc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,gGAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEtD,SAAS,EAAA,UAAA,EAAA,CAAA;kBALrB,SAAS;+BACI,YAAY,EAAA,OAAA,EAEb,CAAC,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,ylCAAA,EAAA;wDAGzD,MAAM,EAAA,CAAA;sBAAd;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;;;MEsEU,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,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,WAAW,YArDpB,QAAQ;YACR,aAAa;YACb,gBAAgB;YAChB,qBAAqB;YACrB,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,QAAQ;YACR,qBAAqB;YACrB,UAAU;YACV,SAAS;YACT,aAAa;YACb,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,UAAU;YACV,SAAS;YACT,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,UAAU;YACV,iBAAiB;AACjB,YAAA,UAAU,aAIV,QAAQ;YACR,aAAa;YACb,gBAAgB;YAChB,qBAAqB;YACrB,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,QAAQ;YACR,qBAAqB;YACrB,UAAU;YACV,SAAS;YACT,aAAa;YACb,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,UAAU;YACV,SAAS;YACT,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,UAAU;YACV,iBAAiB;YACjB,UAAU,CAAA,EAAA,CAAA,CAAA;+GAGD,WAAW,EAAA,SAAA,EA5BX,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,EAAA,OAAA,EAAA,CAvBnD,gBAAgB;YAEhB,YAAY;YACZ,aAAa;YACb,YAAY;YAKZ,aAAa;YAEb,QAAQ;YAOR,cAAc;YAEd,iBAAiB;AACjB,YAAA,UAAU,EAMV,gBAAgB;YAIhB,YAAY;YAKZ,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAeJ,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxDvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,QAAQ;wBACR,aAAa;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,YAAY;wBACZ,aAAa;wBACb,YAAY;wBACZ,QAAQ;wBACR,qBAAqB;wBACrB,UAAU;wBACV,SAAS;wBACT,aAAa;wBACb,SAAS;wBACT,QAAQ;wBACR,QAAQ;wBACR,MAAM;wBACN,UAAU;wBACV,SAAS;wBACT,mBAAmB;wBACnB,mBAAmB;wBACnB,cAAc;wBACd,UAAU;wBACV,iBAAiB;wBACjB,UAAU;AACX,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC;AACrD,oBAAA,OAAO,EAAE;wBACP,QAAQ;wBACR,aAAa;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,YAAY;wBACZ,aAAa;wBACb,YAAY;wBACZ,QAAQ;wBACR,qBAAqB;wBACrB,UAAU;wBACV,SAAS;wBACT,aAAa;wBACb,SAAS;wBACT,QAAQ;wBACR,QAAQ;wBACR,MAAM;wBACN,UAAU;wBACV,SAAS;wBACT,mBAAmB;wBACnB,mBAAmB;wBACnB,cAAc;wBACd,UAAU;wBACV,iBAAiB;wBACjB,UAAU;AACX,qBAAA;AACF,iBAAA;;;ACnFD;;AAEG;;ACFH;;AAEG;;;;"}