{"version":3,"file":"perfectmemory-ngx-contextmenu.mjs","sources":["../../../../libs/ngx-contextmenu/src/lib/helper/evaluate.ts","../../../../libs/ngx-contextmenu/src/lib/directives/context-menu-item/context-menu-item.directive.ts","../../../../libs/ngx-contextmenu/src/lib/directives/context-menu-content-item/context-menu-content-item.directive.ts","../../../../libs/ngx-contextmenu/src/lib/services/context-menu-overlays/context-menu-overlays.service.ts","../../../../libs/ngx-contextmenu/src/lib/components/context-menu-content/context-menu-content.component.ts","../../../../libs/ngx-contextmenu/src/lib/components/context-menu-content/context-menu-content.component.html","../../../../libs/ngx-contextmenu/src/lib/components/context-menu/context-menu.component.helpers.ts","../../../../libs/ngx-contextmenu/src/lib/components/context-menu/context-menu.component.ts","../../../../libs/ngx-contextmenu/src/lib/directives/context-menu/context-menu.directive.ts","../../../../libs/ngx-contextmenu/src/lib/ngx-contextmenu.module.ts","../../../../libs/ngx-contextmenu/src/lib/services/context-menu/context-menu.service.ts","../../../../libs/ngx-contextmenu/src/index.ts","../../../../libs/ngx-contextmenu/src/perfectmemory-ngx-contextmenu.ts"],"sourcesContent":["export const evaluateIfFunction = <T>(\n  value: boolean | ((value?: T) => boolean) | undefined,\n  item?: T\n): boolean => {\n  if (value instanceof Function) {\n    return value(item);\n  }\n  return !!value;\n};\n","import {\n  Directive,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport type { ContextMenuComponent } from '../../components/context-menu/context-menu.component';\nimport { evaluateIfFunction } from '../../helper/evaluate';\n\n@Directive({\n  selector: '[contextMenuItem]',\n  standalone: false,\n})\nexport class ContextMenuItemDirective<T> {\n  /**\n   * Optional subMenu component ref\n   */\n  @Input()\n  public subMenu?: ContextMenuComponent<T>;\n\n  /**\n   * True to make this menu item a divider\n   */\n  @Input()\n  public divider = false;\n\n  /**\n   * Is this menu item disabled\n   */\n  @Input()\n  public set disabled(disabled: boolean | ((value?: T) => boolean)) {\n    this.#disabled = disabled;\n  }\n\n  public get disabled(): boolean {\n    return (\n      this.passive ||\n      this.divider ||\n      evaluateIfFunction(this.#disabled, this.value)\n    );\n  }\n\n  /**\n   * Is this menu item passive (for title)\n   */\n  @Input()\n  public passive = false;\n\n  /**\n   * Is this menu item visible\n   */\n  @Input()\n  public visible: boolean | ((value?: T) => boolean) = true;\n\n  /**\n   * Emits event and item\n   */\n  @Output()\n  public execute = new EventEmitter<{\n    event: MouseEvent | KeyboardEvent;\n    value?: T;\n  }>();\n\n  /**\n   * @internal\n   */\n  public value?: T;\n\n  #disabled: boolean | ((value?: T) => boolean) = false;\n\n  constructor(\n    @Optional()\n    public template: TemplateRef<{ $implicit?: T }>\n  ) {}\n\n  /**\n   * @internal\n   */\n  public triggerExecute(event: MouseEvent | KeyboardEvent, value?: T): void {\n    if (evaluateIfFunction(this.#disabled, value)) {\n      return;\n    }\n\n    this.execute.emit({ event, value });\n  }\n}\n","import { FocusOrigin, FocusableOption } from '@angular/cdk/a11y';\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { evaluateIfFunction } from '../../helper/evaluate';\nimport { ContextMenuItemDirective } from '../context-menu-item/context-menu-item.directive';\n\n@Directive({\n  selector: '[contextMenuContentItem]',\n  exportAs: 'contextMenuContentItem',\n  host: {\n    class: 'ngx-context-menu-item',\n  },\n  standalone: false,\n})\nexport class ContextMenuContentItemDirective<T> implements FocusableOption {\n  @Input()\n  public contextMenuContentItem?: ContextMenuItemDirective<T>;\n\n  public get nativeElement() {\n    return this.elementRef.nativeElement;\n  }\n\n  constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n  /**\n   * @implements FocusableOption\n   */\n  public focus(origin?: FocusOrigin | undefined): void {\n    this.elementRef.nativeElement.focus();\n  }\n\n  /**\n   * @implements FocusableOption\n   */\n  public get disabled(): boolean | undefined {\n    return evaluateIfFunction(\n      this.contextMenuContentItem?.disabled,\n      this.contextMenuContentItem?.value\n    );\n  }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ContextMenuOverlaysService {\n  /**\n   * Emits when all context menus are closed\n   */\n  public allClosed = new EventEmitter<void>();\n\n  private stack: OverlayRef[] = [];\n\n  /**\n   * Add an item to the stack\n   */\n  public push(value: OverlayRef) {\n    this.stack.push(value);\n  }\n\n  /**\n   * Clear the whole stack\n   */\n  public closeAll(): void {\n    this.stack.forEach((item) => this.dispose(item));\n    this.stack = [];\n    this.allClosed.emit();\n  }\n\n  public isEmpty(): boolean {\n    return this.stack.length === 0;\n  }\n\n  private dispose(overlayRef: OverlayRef) {\n    overlayRef.detach();\n    overlayRef.dispose();\n  }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChildren,\n  DOCUMENT,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ContextMenuContentItemDirective } from '../../directives/context-menu-content-item/context-menu-content-item.directive';\nimport type { ContextMenuItemDirective } from '../../directives/context-menu-item/context-menu-item.directive';\nimport { evaluateIfFunction } from '../../helper/evaluate';\nimport { ContextMenuOverlaysService } from '../../services/context-menu-overlays/context-menu-overlays.service';\nimport type { ContextMenuComponent } from '../context-menu/context-menu.component';\n\n/**\n * For testing purpose only\n */\nexport const TESTING_WRAPPER = {\n  FocusKeyManager,\n};\n\n@Component({\n  selector: 'context-menu-content',\n  templateUrl: './context-menu-content.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    tabindex: '0',\n    role: 'dialog',\n    class: 'ngx-contextmenu',\n  },\n  standalone: false,\n})\nexport class ContextMenuContentComponent<T>\n  implements OnDestroy, AfterViewInit\n{\n  /**\n   * The list of `IContextMenuItemDirective` that represent each menu items\n   */\n  @Input()\n  public menuDirectives: ContextMenuItemDirective<T>[] = [];\n\n  /**\n   * The item on which the menu act\n   */\n  @Input()\n  public value?: T;\n\n  /**\n   * The orientation of the component\n   * @see https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/dir\n   */\n  @Input()\n  @HostBinding('attr.dir')\n  public dir: 'ltr' | 'rtl' | undefined;\n\n  /**\n   * The parent menu of the instance\n   */\n  @Input()\n  public parentContextMenu!: ContextMenuContentComponent<T>;\n\n  /**\n   * A CSS class to apply a theme to the the menu\n   */\n  @HostBinding('class')\n  @Input()\n  public menuClass = '';\n\n  /**\n   * Emit when a menu item is selected\n   */\n  @Output()\n  public execute = new EventEmitter<{\n    event: MouseEvent | KeyboardEvent;\n    value?: T;\n    menuDirective: ContextMenuItemDirective<T>;\n  }>();\n\n  /**\n   * Emit when all menus is closed\n   */\n  @Output()\n  public close = new EventEmitter<void>();\n\n  /**\n   * @internal\n   */\n  @ViewChildren(ContextMenuContentItemDirective, {\n    read: ContextMenuContentItemDirective,\n  })\n  public contextMenuContentItems!: QueryList<\n    ContextMenuContentItemDirective<T>\n  >;\n\n  /**\n   * Accessibility\n   *\n   * @internal\n   */\n  @HostBinding('attr.role')\n  public role = 'menu';\n  /**\n   * Accessibility\n   *\n   * @internal\n   */\n  @HostBinding('aria-orientation')\n  public ariaOrientation = 'vertical';\n\n  private focusKeyManager?: FocusKeyManager<ContextMenuContentItemDirective<T>>;\n  private subscription: Subscription = new Subscription();\n  private activeElement?: HTMLElement | null;\n\n  // TODO: should be private but issue in spec with NullInjectorError: No provider for ElementRef!\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    @Inject(DOCUMENT)\n    public document: Document,\n    private contextMenuOverlaysService: ContextMenuOverlaysService\n  ) {}\n\n  /**\n   * @internal\n   */\n  public ngAfterViewInit() {\n    this.setupDirectives();\n    this.activeElement = this.document.activeElement as HTMLElement | null;\n    this.elementRef.nativeElement.focus();\n  }\n\n  /**\n   * @internal\n   */\n  public ngOnDestroy() {\n    this.activeElement?.focus();\n    this.subscription.unsubscribe();\n    this.focusKeyManager?.destroy();\n  }\n\n  /**\n   * @internal\n   */\n  @HostListener('keydown.ArrowDown', ['$event'])\n  @HostListener('keydown.ArrowUp', ['$event'])\n  public onKeyArrowDownOrUp(event: KeyboardEvent): void {\n    this.focusKeyManager?.onKeydown(event);\n  }\n\n  /**\n   * @internal\n   */\n  @HostListener('keydown.ArrowRight', ['$event'])\n  public onKeyArrowRight(event: KeyboardEvent): void {\n    this.openCloseActiveItemSubMenu(this.dir !== 'rtl', event);\n  }\n\n  /**\n   * @internal\n   */\n  @HostListener('keydown.ArrowLeft', ['$event'])\n  public onKeyArrowLeft(event: KeyboardEvent): void {\n    this.openCloseActiveItemSubMenu(this.dir === 'rtl', event);\n  }\n\n  /**\n   * @internal\n   */\n  @HostListener('window:keydown.Enter', ['$event'])\n  @HostListener('window:keydown.Space', ['$event'])\n  public onKeyEnterOrSpace(event: KeyboardEvent): void {\n    if (!this.focusKeyManager?.activeItem) {\n      return;\n    }\n\n    this.onMenuItemSelect(this.focusKeyManager.activeItem, event);\n  }\n\n  /**\n   * @internal\n   */\n  @HostListener('document:click', ['$event'])\n  public onClickOrRightClick(event: MouseEvent): void {\n    if (event.type === 'click' && event.button === 2) {\n      return;\n    }\n\n    if (this.elementRef.nativeElement.contains(event.target as Node)) {\n      return;\n    }\n\n    this.contextMenuOverlaysService.closeAll();\n  }\n\n  /**\n   * @internal\n   */\n  public hideSubMenus(): void {\n    this.menuDirectives.forEach((menuDirective) => {\n      menuDirective.subMenu?.hide();\n    });\n  }\n\n  /**\n   * @internal\n   */\n  public stopEvent(event: MouseEvent) {\n    event.stopPropagation();\n  }\n\n  /**\n   * @internal\n   */\n  public isMenuItemDisabled(menuItem: ContextMenuItemDirective<T>): boolean {\n    return evaluateIfFunction(menuItem.disabled, this.value);\n  }\n\n  /**\n   * @internal\n   */\n  public isMenuItemVisible(\n    menuItem: ContextMenuContentItemDirective<T>\n  ): boolean {\n    return evaluateIfFunction(\n      menuItem.contextMenuContentItem?.visible,\n      this.value\n    );\n  }\n\n  /**\n   * @internal\n   */\n  public openSubMenu(\n    subMenu: ContextMenuComponent<T> | undefined,\n    event: MouseEvent | KeyboardEvent\n  ): void {\n    if (!subMenu) {\n      return;\n    }\n\n    if (this.focusKeyManager?.activeItemIndex === null) {\n      return;\n    }\n\n    const anchorContextMenuContentItem =\n      this.contextMenuContentItems?.toArray()[\n        this.focusKeyManager?.activeItemIndex ?? 0\n      ];\n    const anchorElement =\n      anchorContextMenuContentItem &&\n      anchorContextMenuContentItem.nativeElement;\n\n    if (anchorElement && event instanceof KeyboardEvent) {\n      subMenu.show({\n        anchoredTo: 'element',\n        anchorElement,\n        value: this.value,\n        parentContextMenu: this,\n      });\n\n      return;\n    }\n\n    if (subMenu.isOpen) {\n      return;\n    }\n\n    if (event.currentTarget) {\n      subMenu.show({\n        anchoredTo: 'element',\n        anchorElement: event.currentTarget,\n        value: this.value,\n        parentContextMenu: this,\n      });\n\n      return;\n    }\n\n    subMenu.show({\n      anchoredTo: 'position',\n      x: (event as MouseEvent).clientX,\n      y: (event as MouseEvent).clientY,\n      value: this.value,\n    });\n  }\n\n  /**\n   * @internal\n   */\n  public onMenuItemSelect(\n    menuContentItem: ContextMenuContentItemDirective<T>,\n    event: MouseEvent | KeyboardEvent\n  ): void {\n    this.cancelEvent(event);\n    this.openSubMenu(menuContentItem.contextMenuContentItem?.subMenu, event);\n    if (!menuContentItem.contextMenuContentItem?.subMenu) {\n      this.triggerExecute(menuContentItem, event);\n    }\n  }\n\n  private triggerExecute(\n    menuItem: ContextMenuContentItemDirective<T>,\n    event: MouseEvent | KeyboardEvent\n  ): void {\n    menuItem.contextMenuContentItem?.triggerExecute(event, this.value);\n  }\n\n  private setupDirectives() {\n    this.menuDirectives.forEach((menuDirective) => {\n      menuDirective.value = this.value;\n      this.subscription.add(\n        menuDirective.execute.subscribe((event) => {\n          this.execute.emit({ ...event, menuDirective });\n        })\n      );\n    });\n    this.focusKeyManager = new TESTING_WRAPPER.FocusKeyManager<\n      ContextMenuContentItemDirective<T>\n    >(this.contextMenuContentItems).withWrap();\n  }\n\n  private openCloseActiveItemSubMenu(open: boolean, event: KeyboardEvent) {\n    if (open) {\n      this.openActiveItemSubMenu(event);\n      return;\n    }\n\n    this.closeActiveItemSubMenu(event);\n  }\n\n  private openActiveItemSubMenu(event: KeyboardEvent) {\n    if (this.focusKeyManager?.activeItemIndex === null) {\n      return;\n    }\n\n    this.cancelEvent(event);\n\n    if (this.focusKeyManager?.activeItem) {\n      this.openSubMenu(\n        this.focusKeyManager.activeItem?.contextMenuContentItem?.subMenu,\n        event\n      );\n    }\n  }\n\n  private closeActiveItemSubMenu(event: KeyboardEvent) {\n    this.hideSubMenus();\n    if (!this.focusKeyManager?.activeItemIndex) {\n      return;\n    }\n\n    this.close.emit();\n    this.cancelEvent(event);\n  }\n\n  private cancelEvent(event?: MouseEvent | KeyboardEvent): void {\n    if (!event || !event.target) {\n      return;\n    }\n\n    const target = event.target as HTMLElement;\n    if (\n      ['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName) ||\n      target.isContentEditable\n    ) {\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n  }\n}\n","@for (menuDirective of menuDirectives; track menuDirective; let i = $index) {\n@if (menuDirective.divider) {\n<hr\n  [contextMenuContentItem]=\"menuDirective\"\n  role=\"separator\"\n  (mouseenter)=\"hideSubMenus()\"\n/>\n} @if (!menuDirective.divider && !menuDirective.passive) {\n<button\n  #buttonContextMenuContentItem=\"contextMenuContentItem\"\n  [contextMenuContentItem]=\"menuDirective\"\n  type=\"button\"\n  role=\"menuitem\"\n  [attr.aria-haspopup]=\"!!menuDirective.subMenu ? 'menu' : null\"\n  [class.ngx-contextmenu--parent-menu]=\"!!menuDirective.subMenu\"\n  [attr.disabled]=\"isMenuItemDisabled(menuDirective) ? 'disabled' : null\"\n  (click)=\"onMenuItemSelect(buttonContextMenuContentItem, $event)\"\n  (mouseenter)=\"\n    hideSubMenus();\n    openSubMenu(\n      buttonContextMenuContentItem.contextMenuContentItem?.subMenu,\n      $event\n    )\n  \"\n>\n  <ng-template\n    [ngTemplateOutlet]=\"menuDirective.template\"\n    [ngTemplateOutletContext]=\"{ $implicit: value }\"\n  ></ng-template>\n</button>\n} @if (!menuDirective.divider && menuDirective.passive) {\n<span\n  [contextMenuContentItem]=\"menuDirective\"\n  class=\"ngx-contextmenu-item--passive\"\n  role=\"menuitem\"\n  [attr.aria-disabled]=\"isMenuItemDisabled(menuDirective)\"\n  (click)=\"stopEvent($event)\"\n  (contextmenu)=\"stopEvent($event)\"\n  [class.disabled]=\"isMenuItemDisabled(menuDirective)\"\n  (mouseenter)=\"isMenuItemDisabled(menuDirective) ? null : hideSubMenus()\"\n>\n  <ng-template\n    [ngTemplateOutlet]=\"menuDirective.template\"\n    [ngTemplateOutletContext]=\"{ $implicit: value }\"\n  ></ng-template>\n</span>\n} }\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const getPositionsToXY = (\n  dir: 'rtl' | 'ltr' = 'ltr'\n): ConnectedPosition[] => {\n  if (dir === 'ltr') {\n    return [\n      {\n        originX: 'start',\n        originY: 'bottom',\n        overlayX: 'start',\n        overlayY: 'top',\n      },\n      {\n        originX: 'start',\n        originY: 'top',\n        overlayX: 'start',\n        overlayY: 'bottom',\n      },\n      {\n        originX: 'end',\n        originY: 'top',\n        overlayX: 'start',\n        overlayY: 'top',\n      },\n      {\n        originX: 'start',\n        originY: 'top',\n        overlayX: 'end',\n        overlayY: 'top',\n      },\n      {\n        originX: 'end',\n        originY: 'center',\n        overlayX: 'start',\n        overlayY: 'center',\n      },\n      {\n        originX: 'start',\n        originY: 'center',\n        overlayX: 'end',\n        overlayY: 'center',\n      },\n    ];\n  }\n\n  return [\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n    },\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'top',\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'top',\n    },\n    {\n      originX: 'start',\n      originY: 'center',\n      overlayX: 'end',\n      overlayY: 'center',\n    },\n    {\n      originX: 'end',\n      originY: 'center',\n      overlayX: 'start',\n      overlayY: 'center',\n    },\n  ];\n};\n\nexport const getPositionsToAnchorElement = (\n  dir: 'rtl' | 'ltr' = 'ltr'\n): ConnectedPosition[] => {\n  if (dir === 'ltr') {\n    return [\n      {\n        originX: 'end',\n        originY: 'top',\n        overlayX: 'start',\n        overlayY: 'top',\n      },\n      {\n        originX: 'start',\n        originY: 'top',\n        overlayX: 'end',\n        overlayY: 'top',\n      },\n      {\n        originX: 'end',\n        originY: 'bottom',\n        overlayX: 'start',\n        overlayY: 'bottom',\n      },\n      {\n        originX: 'start',\n        originY: 'bottom',\n        overlayX: 'end',\n        overlayY: 'bottom',\n      },\n    ];\n  } else {\n    return [\n      {\n        originX: 'start',\n        originY: 'top',\n        overlayX: 'end',\n        overlayY: 'top',\n      },\n      {\n        originX: 'end',\n        originY: 'top',\n        overlayX: 'start',\n        overlayY: 'top',\n      },\n      {\n        originX: 'start',\n        originY: 'bottom',\n        overlayX: 'end',\n        overlayY: 'bottom',\n      },\n      {\n        originX: 'end',\n        originY: 'bottom',\n        overlayX: 'start',\n        overlayY: 'bottom',\n      },\n    ];\n  }\n};\n","import {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayRef,\n  ScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ContextMenuItemDirective } from '../../directives/context-menu-item/context-menu-item.directive';\nimport { evaluateIfFunction } from '../../helper/evaluate';\nimport { ContextMenuOverlaysService } from '../../services/context-menu-overlays/context-menu-overlays.service';\nimport { ContextMenuContentComponent } from '../context-menu-content/context-menu-content.component';\nimport {\n  getPositionsToAnchorElement,\n  getPositionsToXY,\n} from './context-menu.component.helpers';\nimport {\n  ContextMenuOpenEvent,\n  IContextMenuContext,\n} from './context-menu.component.interface';\n\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  selector: 'context-menu',\n  template: '',\n  standalone: false,\n})\nexport class ContextMenuComponent<T> implements OnInit, OnDestroy {\n  /**\n   * A CSS class to apply to the context menu overlay, ideal for theming and custom styling\n   */\n  @Input()\n  public menuClass = '';\n\n  /**\n   * Disable the whole context menu\n   */\n  @Input()\n  public disabled = false;\n\n  /**\n   * Whether the menu is oriented to the right (default: `ltr`) or to the right (`rtl`)\n   */\n  @Input()\n  public dir: 'ltr' | 'rtl' | undefined;\n\n  /**\n   * Emit when the menu is opened\n   */\n  @Output()\n  public open = new EventEmitter<ContextMenuOpenEvent<T>>();\n\n  /**\n   * Emit when the menu is closed\n   */\n  @Output()\n  public close = new EventEmitter<void>();\n\n  /**\n   * The menu item directives defined inside the component\n   */\n  @ContentChildren(ContextMenuItemDirective)\n  public menuItems?: QueryList<ContextMenuItemDirective<T>>;\n\n  /**\n   * Returns true if the context menu is opened, false otherwise\n   */\n  public get isOpen(): boolean {\n    return this.#isOpen;\n  }\n\n  /**\n   * @internal\n   */\n  public visibleMenuItems: ContextMenuItemDirective<T>[] = [];\n  /**\n   * @internal\n   */\n  public value?: T;\n\n  private subscriptions: Subscription = new Subscription();\n  private overlayRef?: OverlayRef;\n  private contextMenuContentComponent?: ContextMenuContentComponent<T>;\n  #isOpen = false;\n\n  constructor(\n    private overlay: Overlay,\n    private scrollStrategy: ScrollStrategyOptions,\n    private contextMenuOverlaysService: ContextMenuOverlaysService\n  ) {}\n\n  /**\n   * @internal\n   */\n  public ngOnInit(): void {\n    const subscription = this.contextMenuOverlaysService.allClosed.subscribe(\n      () => {\n        this.#isOpen = false;\n      }\n    );\n\n    this.subscriptions.add(subscription);\n  }\n\n  /**\n   * @internal\n   */\n  public ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n\n  /**\n   * @internal\n   */\n  public show(event: ContextMenuOpenEvent<T>): void {\n    if (this.disabled) {\n      return;\n    }\n\n    this.value = event.value;\n    this.setVisibleMenuItems();\n\n    this.openContextMenu({\n      ...event,\n      menuItemDirectives: this.visibleMenuItems,\n      menuClass: this.menuClass,\n      dir: this.dir,\n    });\n\n    this.open.next(event);\n  }\n\n  /**\n   * @internal\n   */\n  public hide(): void {\n    this.contextMenuContentComponent?.menuDirectives.forEach(\n      (menuDirective) => {\n        menuDirective.subMenu?.hide();\n      }\n    );\n    this.overlayRef?.detach();\n    this.overlayRef?.dispose();\n    this.#isOpen = false;\n  }\n\n  /**\n   * @internal\n   */\n  public openContextMenu(context: IContextMenuContext<T>) {\n    let positionStrategy: FlexibleConnectedPositionStrategy;\n\n    if (context.anchoredTo === 'position') {\n      positionStrategy = this.overlay\n        .position()\n        .flexibleConnectedTo({\n          x: context.x,\n          y: context.y,\n        })\n        .withPositions(getPositionsToXY(context.dir));\n    } else {\n      const { anchorElement, parentContextMenu } = context;\n      positionStrategy = this.overlay\n        .position()\n        .flexibleConnectedTo(new ElementRef(anchorElement))\n        .withPositions(getPositionsToAnchorElement(parentContextMenu.dir));\n    }\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      panelClass: 'ngx-contextmenu-overlay',\n      scrollStrategy: this.scrollStrategy.close(),\n    });\n    this.contextMenuOverlaysService.push(this.overlayRef);\n    this.attachContextMenu(context);\n\n    this.#isOpen = true;\n  }\n\n  private attachContextMenu(context: IContextMenuContext<T>): void {\n    const { value, menuItemDirectives } = context;\n    const contextMenuContentRef = this.overlayRef?.attach(\n      new ComponentPortal<ContextMenuContentComponent<T>>(\n        ContextMenuContentComponent\n      )\n    );\n    const contextMenuContentComponent = contextMenuContentRef?.instance;\n\n    if (!contextMenuContentComponent) {\n      return;\n    }\n\n    this.contextMenuContentComponent = contextMenuContentComponent;\n\n    contextMenuContentComponent.value = value;\n    contextMenuContentComponent.menuDirectives = menuItemDirectives;\n    contextMenuContentComponent.menuClass = this.getMenuClass(context);\n    contextMenuContentComponent.dir = this.getDir(context);\n\n    const closeSubscription = contextMenuContentComponent.close.subscribe(\n      () => {\n        this.overlayRef?.detach();\n        this.overlayRef?.dispose();\n      }\n    );\n\n    const executeSubscription = contextMenuContentComponent.execute.subscribe(\n      () => {\n        this.contextMenuOverlaysService.closeAll();\n      }\n    );\n\n    contextMenuContentRef.onDestroy(() => {\n      this.close.emit();\n      closeSubscription.unsubscribe();\n      executeSubscription.unsubscribe();\n    });\n    contextMenuContentRef.changeDetectorRef.detectChanges();\n  }\n\n  private getMenuClass(event: IContextMenuContext<T>): string {\n    return (\n      event.menuClass ||\n      (event.anchoredTo === 'element' && event?.parentContextMenu?.menuClass) ||\n      ''\n    );\n  }\n\n  private getDir(event: IContextMenuContext<T>): 'ltr' | 'rtl' | undefined {\n    return (\n      event.dir ||\n      (event.anchoredTo === 'element' && event?.parentContextMenu?.dir) ||\n      undefined\n    );\n  }\n\n  private isMenuItemVisible(menuItem: ContextMenuItemDirective<T>): boolean {\n    return evaluateIfFunction(menuItem.visible, this.value);\n  }\n\n  private setVisibleMenuItems(): void {\n    this.visibleMenuItems =\n      this.menuItems?.filter((menuItem) => this.isMenuItemVisible(menuItem)) ??\n      [];\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n} from '@angular/core';\nimport type { ContextMenuComponent } from '../../components/context-menu/context-menu.component';\nimport { ContextMenuOverlaysService } from '../../services/context-menu-overlays/context-menu-overlays.service';\n\n@Directive({\n  selector: '[contextMenu]',\n  exportAs: 'ngxContextMenu',\n  host: {\n    role: 'button',\n    'attr.aria-haspopup': 'menu',\n  },\n  standalone: false,\n})\nexport class ContextMenuDirective<T> {\n  /**\n   * The value related to the context menu\n   */\n  @Input()\n  public contextMenuValue!: T;\n\n  /**\n   * The component holding the menu item directive templates\n   */\n  @Input()\n  public contextMenu?: ContextMenuComponent<T>;\n\n  /**\n   * The directive must have a tabindex for being accessible\n   */\n  @Input()\n  @HostBinding('attr.tabindex')\n  public tabindex: string | number = '0';\n\n  /**\n   * Return true if the context menu is opened, false otherwise\n   */\n  @HostBinding('attr.aria-expanded')\n  public get isOpen(): boolean {\n    return this.contextMenu?.isOpen ?? false;\n  }\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private contextMenuOverlaysService: ContextMenuOverlaysService\n  ) {}\n\n  /**\n   * @internal\n   */\n  @HostListener('contextmenu', ['$event'])\n  public onContextMenu(event: MouseEvent): void {\n    if (!this.canOpen()) {\n      return;\n    }\n\n    this.closeAll();\n\n    this.contextMenu?.show({\n      anchoredTo: 'position',\n      x: event.clientX,\n      y: event.clientY,\n      value: this.contextMenuValue,\n    });\n\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  /**\n   * @internal\n   */\n  @HostListener('window:contextmenu')\n  @HostListener('window:keydown.Escape')\n  public onKeyArrowEscape(): void {\n    this.close();\n  }\n\n  /**\n   * Programmatically open the context menu\n   */\n  public open(event?: MouseEvent): void {\n    if (!this.canOpen()) {\n      return;\n    }\n\n    if (event instanceof MouseEvent) {\n      this.onContextMenu(event);\n      return;\n    }\n\n    const { x, y, height } =\n      this.elementRef.nativeElement.getBoundingClientRect();\n\n    this.contextMenu?.show({\n      anchoredTo: 'position',\n      x,\n      y: y + height,\n      value: this.contextMenuValue,\n    });\n  }\n\n  /**\n   * Programmatically close the context menu\n   */\n  public close(): void {\n    this.contextMenu?.hide();\n  }\n\n  private closeAll(): void {\n    this.contextMenuOverlaysService.closeAll();\n  }\n\n  private canOpen(): boolean {\n    return (this.contextMenu && !this.contextMenu.disabled) ?? false;\n  }\n}\n","import {\n  FullscreenOverlayContainer,\n  OverlayContainer,\n  OverlayModule,\n} from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ContextMenuContentComponent } from './components/context-menu-content/context-menu-content.component';\nimport { ContextMenuComponent } from './components/context-menu/context-menu.component';\nimport { ContextMenuContentItemDirective } from './directives/context-menu-content-item/context-menu-content-item.directive';\nimport { ContextMenuItemDirective } from './directives/context-menu-item/context-menu-item.directive';\nimport { ContextMenuDirective } from './directives/context-menu/context-menu.directive';\n\n@NgModule({\n  declarations: [\n    ContextMenuComponent,\n    ContextMenuContentComponent,\n    ContextMenuContentItemDirective,\n    ContextMenuDirective,\n    ContextMenuItemDirective,\n  ],\n  providers: [\n    { provide: OverlayContainer, useClass: FullscreenOverlayContainer },\n  ],\n  exports: [\n    ContextMenuDirective,\n    ContextMenuComponent,\n    ContextMenuItemDirective,\n  ],\n  imports: [CommonModule, OverlayModule],\n})\nexport class ContextMenuModule {}\n","import { Injectable } from '@angular/core';\nimport { ContextMenuComponent } from '../../components/context-menu/context-menu.component';\nimport { ContextMenuOverlaysService } from '../context-menu-overlays/context-menu-overlays.service';\n\nexport interface ContextMenuOpenAtPositionOptions<T> {\n  /**\n   * Optional associated data to the context menu, will be emitted when a menu item is selected\n   */\n  value?: T;\n  /**\n   * The horizontal position of the menu\n   */\n  x: number;\n  /**\n   * The vertical position of the menu\n   */\n  y: number;\n}\n\n/**\n * Programmatically open a ContextMenuComponent to a X/Y position\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class ContextMenuService<T> {\n  constructor(private contextMenuOverlaysService: ContextMenuOverlaysService) {}\n  /**\n   * Show the given `ContextMenuComponent` at a specified X/Y position\n   */\n  public show(\n    contextMenu: ContextMenuComponent<T>,\n    options: ContextMenuOpenAtPositionOptions<T> = { x: 0, y: 0 }\n  ) {\n    contextMenu.show({\n      anchoredTo: 'position',\n      value: options.value,\n      x: options.x,\n      y: options.y,\n    });\n  }\n\n  /**\n   * Close all open `ContextMenuComponent`\n   */\n  public closeAll(): void {\n    this.contextMenuOverlaysService.closeAll();\n  }\n\n  /**\n   * Return true if any `ContextMenuComponent` is open\n   */\n  public hasOpenMenu(): boolean {\n    return !this.contextMenuOverlaysService.isEmpty();\n  }\n}\n","/*\n * Public API Surface of @perfectmemory/ngx-contextmenu\n */\n\nexport { ContextMenuModule } from './lib/ngx-contextmenu.module';\n/**\n * Components\n */\nexport { ContextMenuComponent } from './lib/components/context-menu/context-menu.component';\nexport { ContextMenuOpenEvent } from './lib/components/context-menu/context-menu.component.interface';\n/**\n * Directives\n */\nexport { ContextMenuItemDirective } from './lib/directives/context-menu-item/context-menu-item.directive';\nexport { ContextMenuDirective } from './lib/directives/context-menu/context-menu.directive';\n\n/**\n * Services\n */\nexport { ContextMenuService } from './lib/services/context-menu/context-menu.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ContextMenuOverlaysService","i3.ContextMenuContentItemDirective","i2.ContextMenuOverlaysService"],"mappings":";;;;;;;;;;AAAO,MAAM,kBAAkB,GAAG,CAChC,KAAqD,EACrD,IAAQ,KACG;AACX,IAAA,IAAI,KAAK,YAAY,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC;;IAEpB,OAAO,CAAC,CAAC,KAAK;AAChB,CAAC;;MCOY,wBAAwB,CAAA;AAanC;;AAEG;IACH,IACW,QAAQ,CAAC,QAA4C,EAAA;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;;AAG3B,IAAA,IAAW,QAAQ,GAAA;QACjB,QACE,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,OAAO;YACZ,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;;AA8BlD,IAAA,SAAS;AAET,IAAA,WAAA,CAES,QAAwC,EAAA;QAAxC,IAAQ,CAAA,QAAA,GAAR,QAAQ;AApDjB;;AAEG;QAEI,IAAO,CAAA,OAAA,GAAG,KAAK;AAkBtB;;AAEG;QAEI,IAAO,CAAA,OAAA,GAAG,KAAK;AAEtB;;AAEG;QAEI,IAAO,CAAA,OAAA,GAAuC,IAAI;AAEzD;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAG7B;QAOJ,IAAS,CAAA,SAAA,GAAuC,KAAK;;AAOrD;;AAEG;IACI,cAAc,CAAC,KAAiC,EAAE,KAAS,EAAA;QAChE,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;YAC7C;;QAGF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;8GAtE1B,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,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,KAAK;AAClB,iBAAA;;0BA2DI;;sBAtDF;;sBAMA;;sBAMA;;sBAgBA;;sBAMA;;sBAMA;;;MC9CU,+BAA+B,CAAA;AAI1C,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;AAGtC,IAAA,WAAA,CAAoB,UAAmC,EAAA;QAAnC,IAAU,CAAA,UAAA,GAAV,UAAU;;AAE9B;;AAEG;AACI,IAAA,KAAK,CAAC,MAAgC,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;;AAGvC;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,kBAAkB,CACvB,IAAI,CAAC,sBAAsB,EAAE,QAAQ,EACrC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CACnC;;8GAxBQ,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAR3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAEE;;;MCRU,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;AAIE;;AAEG;AACI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;QAEnC,IAAK,CAAA,KAAA,GAAiB,EAAE;AA0BjC;AAxBC;;AAEG;AACI,IAAA,IAAI,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGxB;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;IAGhB,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;;AAGxB,IAAA,OAAO,CAAC,UAAsB,EAAA;QACpC,UAAU,CAAC,MAAM,EAAE;QACnB,UAAU,CAAC,OAAO,EAAE;;8GA9BX,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,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,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACoBD;;AAEG;AACI,MAAM,eAAe,GAAG;IAC7B,eAAe;CAChB;MAaY,2BAA2B,CAAA;;AAkFtC,IAAA,WAAA,CACU,UAAmC,EAEpC,QAAkB,EACjB,0BAAsD,EAAA;QAHtD,IAAU,CAAA,UAAA,GAAV,UAAU;QAEX,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACP,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;AAnFpC;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAkC,EAAE;AAsBzD;;AAEG;QAGI,IAAS,CAAA,SAAA,GAAG,EAAE;AAErB;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAI7B;AAEJ;;AAEG;AAEI,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAYvC;;;;AAIG;QAEI,IAAI,CAAA,IAAA,GAAG,MAAM;AACpB;;;;AAIG;QAEI,IAAe,CAAA,eAAA,GAAG,UAAU;AAG3B,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,YAAY,EAAE;;AAWvD;;AAEG;IACI,eAAe,GAAA;QACpB,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAmC;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;;AAGvC;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE;;AAGjC;;AAEG;AAGI,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC5C,QAAA,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,KAAK,CAAC;;AAGxC;;AAEG;AAEI,IAAA,eAAe,CAAC,KAAoB,EAAA;QACzC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC;;AAG5D;;AAEG;AAEI,IAAA,cAAc,CAAC,KAAoB,EAAA;QACxC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC;;AAG5D;;AAEG;AAGI,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;YACrC;;QAGF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC;;AAG/D;;AAEG;AAEI,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD;;AAGF,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;YAChE;;AAGF,QAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE;;AAG5C;;AAEG;IACI,YAAY,GAAA;QACjB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AAC5C,YAAA,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AAC/B,SAAC,CAAC;;AAGJ;;AAEG;AACI,IAAA,SAAS,CAAC,KAAiB,EAAA;QAChC,KAAK,CAAC,eAAe,EAAE;;AAGzB;;AAEG;AACI,IAAA,kBAAkB,CAAC,QAAqC,EAAA;QAC7D,OAAO,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;;AAG1D;;AAEG;AACI,IAAA,iBAAiB,CACtB,QAA4C,EAAA;AAE5C,QAAA,OAAO,kBAAkB,CACvB,QAAQ,CAAC,sBAAsB,EAAE,OAAO,EACxC,IAAI,CAAC,KAAK,CACX;;AAGH;;AAEG;IACI,WAAW,CAChB,OAA4C,EAC5C,KAAiC,EAAA;QAEjC,IAAI,CAAC,OAAO,EAAE;YACZ;;QAGF,IAAI,IAAI,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,EAAE;YAClD;;AAGF,QAAA,MAAM,4BAA4B,GAChC,IAAI,CAAC,uBAAuB,EAAE,OAAO,EAAE,CACrC,IAAI,CAAC,eAAe,EAAE,eAAe,IAAI,CAAC,CAC3C;QACH,MAAM,aAAa,GACjB,4BAA4B;YAC5B,4BAA4B,CAAC,aAAa;AAE5C,QAAA,IAAI,aAAa,IAAI,KAAK,YAAY,aAAa,EAAE;YACnD,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,UAAU,EAAE,SAAS;gBACrB,aAAa;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,iBAAiB,EAAE,IAAI;AACxB,aAAA,CAAC;YAEF;;AAGF,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB;;AAGF,QAAA,IAAI,KAAK,CAAC,aAAa,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,UAAU,EAAE,SAAS;gBACrB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,iBAAiB,EAAE,IAAI;AACxB,aAAA,CAAC;YAEF;;QAGF,OAAO,CAAC,IAAI,CAAC;AACX,YAAA,UAAU,EAAE,UAAU;YACtB,CAAC,EAAG,KAAoB,CAAC,OAAO;YAChC,CAAC,EAAG,KAAoB,CAAC,OAAO;YAChC,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;;AAGJ;;AAEG;IACI,gBAAgB,CACrB,eAAmD,EACnD,KAAiC,EAAA;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,sBAAsB,EAAE,OAAO,EAAE,KAAK,CAAC;AACxE,QAAA,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,OAAO,EAAE;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,KAAK,CAAC;;;IAIvC,cAAc,CACpB,QAA4C,EAC5C,KAAiC,EAAA;QAEjC,QAAQ,CAAC,sBAAsB,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;;IAG5D,eAAe,GAAA;QACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AAC5C,YAAA,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACxC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC;aAC/C,CAAC,CACH;AACH,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,eAAe,CAExD,IAAI,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;;IAGpC,0BAA0B,CAAC,IAAa,EAAE,KAAoB,EAAA;QACpE,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YACjC;;AAGF,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;;AAG5B,IAAA,qBAAqB,CAAC,KAAoB,EAAA;QAChD,IAAI,IAAI,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,EAAE;YAClD;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,CACd,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,sBAAsB,EAAE,OAAO,EAChE,KAAK,CACN;;;AAIG,IAAA,sBAAsB,CAAC,KAAoB,EAAA;QACjD,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE;YAC1C;;AAGF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGjB,IAAA,WAAW,CAAC,KAAkC,EAAA;QACpD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3B;;AAGF,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IACE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YACxD,MAAM,CAAC,iBAAiB,EACxB;YACA;;QAGF,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAhVd,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,2BAA2B,4CAoF5B,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApFP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAuDxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,+BAA+B,EACrC,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,+BAA+B,6BCnGzC,qmDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDJa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAXvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAEf,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,qmDAAA,EAAA;;0BAsFd,MAAM;2BAAC,QAAQ;;sBA9EjB;;sBAMA;;sBAOA;;sBACA,WAAW;uBAAC,UAAU;;sBAMtB;;sBAMA,WAAW;uBAAC,OAAO;;sBACnB;;sBAMA;;sBAUA;;sBAMA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,+BAA+B,EAAE;AAC7C,wBAAA,IAAI,EAAE,+BAA+B;AACtC,qBAAA;;sBAUA,WAAW;uBAAC,WAAW;;sBAOvB,WAAW;uBAAC,kBAAkB;;sBAoC9B,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;;sBAC5C,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;sBAQ1C,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;;sBAQ7C,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;;sBAQ5C,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAC/C,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAY/C,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AE7LrC,MAAM,gBAAgB,GAAG,CAC9B,GAAqB,GAAA,KAAK,KACH;AACvB,IAAA,IAAI,GAAG,KAAK,KAAK,EAAE;QACjB,OAAO;AACL,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;SACF;;IAGH,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA;KACF;AACH,CAAC;AAEM,MAAM,2BAA2B,GAAG,CACzC,GAAqB,GAAA,KAAK,KACH;AACvB,IAAA,IAAI,GAAG,KAAK,KAAK,EAAE;QACjB,OAAO;AACL,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;SACF;;SACI;QACL,OAAO;AACL,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;SACF;;AAEL,CAAC;;MCzGY,oBAAoB,CAAA;AAqC/B;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;;AAerB,IAAA,OAAO;AAEP,IAAA,WAAA,CACU,OAAgB,EAChB,cAAqC,EACrC,0BAAsD,EAAA;QAFtD,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;AA5DpC;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAG,EAAE;AAErB;;AAEG;QAEI,IAAQ,CAAA,QAAA,GAAG,KAAK;AAQvB;;AAEG;AAEI,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAA2B;AAEzD;;AAEG;AAEI,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAevC;;AAEG;QACI,IAAgB,CAAA,gBAAA,GAAkC,EAAE;AAMnD,QAAA,IAAA,CAAA,aAAa,GAAiB,IAAI,YAAY,EAAE;QAGxD,IAAO,CAAA,OAAA,GAAG,KAAK;;AAQf;;AAEG;IACI,QAAQ,GAAA;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,SAAS,CACtE,MAAK;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,SAAC,CACF;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;;AAGtC;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;AAGlC;;AAEG;AACI,IAAA,IAAI,CAAC,KAA8B,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;AAGF,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACxB,IAAI,CAAC,mBAAmB,EAAE;QAE1B,IAAI,CAAC,eAAe,CAAC;AACnB,YAAA,GAAG,KAAK;YACR,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;AACd,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGvB;;AAEG;IACI,IAAI,GAAA;QACT,IAAI,CAAC,2BAA2B,EAAE,cAAc,CAAC,OAAO,CACtD,CAAC,aAAa,KAAI;AAChB,YAAA,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AAC/B,SAAC,CACF;AACD,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAGtB;;AAEG;AACI,IAAA,eAAe,CAAC,OAA+B,EAAA;AACpD,QAAA,IAAI,gBAAmD;AAEvD,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE;YACrC,gBAAgB,GAAG,IAAI,CAAC;AACrB,iBAAA,QAAQ;AACR,iBAAA,mBAAmB,CAAC;gBACnB,CAAC,EAAE,OAAO,CAAC,CAAC;gBACZ,CAAC,EAAE,OAAO,CAAC,CAAC;aACb;iBACA,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;aAC1C;AACL,YAAA,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,OAAO;YACpD,gBAAgB,GAAG,IAAI,CAAC;AACrB,iBAAA,QAAQ;AACR,iBAAA,mBAAmB,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC;iBACjD,aAAa,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;;QAGtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;AAChB,YAAA,UAAU,EAAE,yBAAyB;AACrC,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC5C,SAAA,CAAC;QACF,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAE/B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;AAGb,IAAA,iBAAiB,CAAC,OAA+B,EAAA;AACvD,QAAA,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,OAAO;AAC7C,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CACnD,IAAI,eAAe,CACjB,2BAA2B,CAC5B,CACF;AACD,QAAA,MAAM,2BAA2B,GAAG,qBAAqB,EAAE,QAAQ;QAEnE,IAAI,CAAC,2BAA2B,EAAE;YAChC;;AAGF,QAAA,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;AAE9D,QAAA,2BAA2B,CAAC,KAAK,GAAG,KAAK;AACzC,QAAA,2BAA2B,CAAC,cAAc,GAAG,kBAAkB;QAC/D,2BAA2B,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAClE,2BAA2B,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAEtD,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,CACnE,MAAK;AACH,YAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC5B,SAAC,CACF;QAED,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,OAAO,CAAC,SAAS,CACvE,MAAK;AACH,YAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE;AAC5C,SAAC,CACF;AAED,QAAA,qBAAqB,CAAC,SAAS,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACjB,iBAAiB,CAAC,WAAW,EAAE;YAC/B,mBAAmB,CAAC,WAAW,EAAE;AACnC,SAAC,CAAC;AACF,QAAA,qBAAqB,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAGjD,IAAA,YAAY,CAAC,KAA6B,EAAA;QAChD,QACE,KAAK,CAAC,SAAS;aACd,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC;AACvE,YAAA,EAAE;;AAIE,IAAA,MAAM,CAAC,KAA6B,EAAA;QAC1C,QACE,KAAK,CAAC,GAAG;aACR,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,EAAE,iBAAiB,EAAE,GAAG,CAAC;AACjE,YAAA,SAAS;;AAIL,IAAA,iBAAiB,CAAC,QAAqC,EAAA;QAC7D,OAAO,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;;IAGjD,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACtE,gBAAA,EAAE;;8GAxNK,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAkCd,wBAAwB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArC/B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAKE;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA,eAAe;uBAAC,wBAAwB;;;MCtD9B,oBAAoB,CAAA;AAoB/B;;AAEG;AACH,IAAA,IACW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK;;IAG1C,WACU,CAAA,UAAmC,EACnC,0BAAsD,EAAA;QADtD,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;AAjBpC;;AAEG;QAGI,IAAQ,CAAA,QAAA,GAAoB,GAAG;;AAetC;;AAEG;AAEI,IAAA,aAAa,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;;QAGF,IAAI,CAAC,QAAQ,EAAE;AAEf,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AACrB,YAAA,UAAU,EAAE,UAAU;YACtB,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,KAAK,EAAE,IAAI,CAAC,gBAAgB;AAC7B,SAAA,CAAC;QAEF,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAGzB;;AAEG;IAGI,gBAAgB,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE;;AAGd;;AAEG;AACI,IAAA,IAAI,CAAC,KAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;;AAGF,QAAA,IAAI,KAAK,YAAY,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzB;;AAGF,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GACpB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAEvD,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AACrB,YAAA,UAAU,EAAE,UAAU;YACtB,CAAC;YACD,CAAC,EAAE,CAAC,GAAG,MAAM;YACb,KAAK,EAAE,IAAI,CAAC,gBAAgB;AAC7B,SAAA,CAAC;;AAGJ;;AAEG;IACI,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;;IAGlB,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE;;IAGpC,OAAO,GAAA;AACb,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,KAAK;;8GApGvD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,oBAAoB,EAAE,MAAM;AAC7B,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAKE;;sBAMA;;sBAMA;;sBACA,WAAW;uBAAC,eAAe;;sBAM3B,WAAW;uBAAC,oBAAoB;;sBAahC,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBAsBtC,YAAY;uBAAC,oBAAoB;;sBACjC,YAAY;uBAAC,uBAAuB;;;MC/C1B,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,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,iBAAiB,iBAhB1B,oBAAoB;YACpB,2BAA2B;YAC3B,+BAA+B;YAC/B,oBAAoB;AACpB,YAAA,wBAAwB,CAUhB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,aAJnC,oBAAoB;YACpB,oBAAoB;YACpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAIf,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,iBAAiB,EAVjB,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,0BAA0B,EAAE;SACpE,EAMS,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAE1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,2BAA2B;wBAC3B,+BAA+B;wBAC/B,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,0BAA0B,EAAE;AACpE,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;AACvC,iBAAA;;;ACXD;;AAEG;MAIU,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAoB,0BAAsD,EAAA;QAAtD,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;;AAC9C;;AAEG;AACI,IAAA,IAAI,CACT,WAAoC,EACpC,OAAA,GAA+C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAA;QAE7D,WAAW,CAAC,IAAI,CAAC;AACf,YAAA,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC,CAAC;AACb,SAAA,CAAC;;AAGJ;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE;;AAG5C;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE;;8GA5BxC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,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,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACxBD;;AAEG;;ACFH;;AAEG;;;;"}