{"version":3,"file":"daffodil-design-sidebar.mjs","sources":["../../../libs/design/sidebar/src/sidebar/is-opening.ts","../../../libs/design/sidebar/src/animation/sidebar-animation.ts","../../../libs/design/sidebar/src/animation/sidebar-animation-state.ts","../../../libs/design/sidebar/src/animation/sidebar-animation-width.ts","../../../libs/design/sidebar/src/sidebar/sidebar.component.ts","../../../libs/design/sidebar/src/sidebar/sidebar.component.html","../../../libs/design/sidebar/src/sidebar-footer/sidebar-footer.component.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header-title/sidebar-header-title.directive.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header.component.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header.component.html","../../../libs/design/sidebar/src/sidebar-viewport/helper/has-parent-viewport.ts","../../../libs/design/sidebar/src/sidebar-viewport/nav-placement.ts","../../../libs/design/sidebar/src/sidebar-viewport/scroll-token/scroll.token.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/backdrop-interactable.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/content-pad.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/content-shift.ts","../../../libs/design/sidebar/src/animation/sidebar-viewport-animation-state.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/animation/backdrop-animation.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/animation/backdrop-animation-state.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.ts","../../../libs/design/sidebar/src/sidebar-viewport/sidebar-viewport.component.ts","../../../libs/design/sidebar/src/sidebar-viewport/sidebar-viewport.component.html","../../../libs/design/sidebar/src/sidebar.module.ts","../../../libs/design/sidebar/src/service/sidebar.service.ts","../../../libs/design/sidebar/src/helper/is-docked-mode.ts","../../../libs/design/sidebar/src/helper/is-floating-mode.ts","../../../libs/design/sidebar/src/sidebar.ts","../../../libs/design/sidebar/src/daffodil-design-sidebar.ts"],"sourcesContent":["import { DaffSidebarAnimationState } from '../animation/sidebar-animation-state';\n\n/**\n * Determine whether or animation states are going to an open state from a non-open state.\n */\nexport const isOpening = (fromState: DaffSidebarAnimationState, toState: DaffSidebarAnimationState): boolean => {\n  if(fromState === 'under-open' && toState === 'open' || fromState === 'open' && toState === 'under-open') {\n    return false;\n  }\n\n  if(toState === 'under-open' || toState === 'open') {\n    return true;\n  }\n  return false;\n};\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst duration = '200ms';\nconst sidebarAnimateInTransition = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\nconst sidebarAnimateOutTransition = 'cubic-bezier(0.4, 0.0, 1, 1)';\n\nexport const daffSidebarAnimations: {\n  readonly transformSidebar: AnimationTriggerMetadata;\n  readonly transformContent: AnimationTriggerMetadata;\n  readonly backdropTrigger: AnimationTriggerMetadata;\n} = {\n  transformSidebar: trigger('transformSidebar', [\n    // We remove the `transform` here completely, rather than setting it to zero, because\n    // 3d transforms causes text to appear blurry on IE and Edge.\n    state('open', style({\n      transform: 'none',\n    })),\n    state('closed', style({\n      transform: 'translateX({{width}})',\n    }), { params: { width: '-240px' }}),\n    transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),\n    transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),\n  ]),\n  transformContent: trigger('transformContent', [\n    // We remove the `transform` here completely, rather than setting it to zero, because\n    // 3d transforms causes text to appear blurry on IE and Edge.\n    state('closed', style({\n      transform: 'none',\n    })),\n    state('open', style({\n      transform: 'translateX({{shift}})',\n    }), { params: { shift: '-240px' }}),\n    transition('open => closed', animate(duration + ' ' + sidebarAnimateInTransition)),\n    transition('closed => open', animate(duration + ' ' + sidebarAnimateOutTransition)),\n  ]),\n  backdropTrigger: trigger('backdropTrigger', [\n    state('open', style({\n      opacity: 1,\n    })),\n    state('closed', style({\n      opacity: 0,\n    })),\n    transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),\n    transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),\n  ]),\n};\n\nexport enum DaffSidebarAnimationStates {\n  OPEN = 'open',\n  CLOSED = 'closed',\n  UNDEROPEN = 'under-open',\n  UNDERCLOSED = 'under-closed',\n  SIDEFIXEDOPEN = 'side-fixed-open',\n  SIDEFIXEDCLOSED = 'side-fixed-closed',\n  NONE = 'none'\n}\n","import { DaffSidebarMode } from '../helper/sidebar-mode';\n\nexport type DaffSidebarAnimationState =\n'open' | 'closed' | 'under-open' | 'under-closed' | 'side-fixed-open' | 'side-fixed-closed' | 'none';\n\nexport const getAnimationState = (open: boolean, mode: DaffSidebarMode): DaffSidebarAnimationState => {\n  if(mode === 'side') {\n    return 'none';\n  }\n\n  if(mode === 'side-fixed' && open) {\n    return 'side-fixed-open';\n  }\n\n  if(mode === 'side-fixed' && !open) {\n    return 'side-fixed-closed';\n  }\n\n  if(open && mode === 'under') {\n    return 'under-open';\n  }\n\n  if(!open && mode === 'under') {\n    return 'under-closed';\n  }\n\n  if(open) {\n    return 'open';\n  } else {\n    return 'closed';\n  }\n};\n","import { DaffSidebarSide } from '../helper/sidebar-side';\n\nexport const getSidebarAnimationWidth =\n  (side: DaffSidebarSide, width: number): string => side === 'left' ? -1 * width + 'px' : width + 'px';\n","/* eslint-disable quote-props */\nimport { AnimationEvent } from '@angular/animations';\nimport {\n  ConfigurableFocusTrap,\n  ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y';\nimport {\n  Component,\n  NgZone,\n  ElementRef,\n  Output,\n  EventEmitter,\n  HostBinding,\n  ChangeDetectionStrategy,\n  Input,\n  HostListener,\n  Inject,\n  DOCUMENT,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport {\n  daffFocusableElementsSelector,\n  DaffFocusStackService,\n  DaffOpenable,\n  DaffOpenableDirective,\n} from '@daffodil/design';\n\nimport { isOpening } from './is-opening';\nimport { daffSidebarAnimations } from '../animation/sidebar-animation';\nimport {\n  DaffSidebarAnimationState,\n  getAnimationState,\n} from '../animation/sidebar-animation-state';\nimport { getSidebarAnimationWidth } from '../animation/sidebar-animation-width';\nimport { DaffSidebarMode } from '../helper/sidebar-mode';\nimport { DaffSidebarSide } from '../helper/sidebar-side';\n\n/**\n * DaffSidebarComponent is heavily based upon the work done by the `@angular/components`\n * team on `mat-drawer` and `mat-sidenav`. It's intended to be a simplified version\n * (with a different design) of `mat-drawer`.\n *\n * ```html\n * <daff-sidebar></daff-sidebar>\n * ```\n */\n@Component({\n  selector: 'daff-sidebar',\n  templateUrl: './sidebar.component.html',\n  styleUrls: ['./sidebar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [{\n    directive: DaffOpenableDirective,\n    inputs: ['open'],\n    outputs: ['toggled'],\n  }],\n  host: {\n    'class': 'daff-sidebar',\n    '[class.side]': 'mode === \"side\"',\n    '[class.over]': 'mode === \"over\"',\n    '[class.under]': 'mode === \"under\"',\n    '[class.side-fixed]': 'mode === \"side-fixed\"',\n    '[class.left]': 'side === \"left\"',\n    '[class.right]': 'side === \"right\"',\n  },\n  animations: [\n    daffSidebarAnimations.transformSidebar,\n  ],\n})\nexport class DaffSidebarComponent implements DaffOpenable {\n  /**\n   * @docs-private\n   *\n   * The animation state of the sidebar.\n   */\n  @HostBinding('@transformSidebar') get transformSidebar() {\n    return {\n      value: getAnimationState(this.openDirective.open(), this.mode),\n      params: { width: getSidebarAnimationWidth(this.side, this.width) },\n    };\n  }\n\n  /**\n   * Event fired when `ESC` key is pressed when the sidebar has focus.\n   */\n  @Output() escapePressed: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * What side of the viewport to show the sidebar on.\n   */\n  @Input() side: DaffSidebarSide = 'left';\n\n  /**\n   * The mode of the sidebar.\n   */\n  @Input() mode: DaffSidebarMode = 'side';\n\n  /**\n   * @docs-private\n   *\n   * The width of the sidebar.\n   */\n  get width() {\n    return this._elementRef.nativeElement.offsetWidth;\n  }\n\n  /**\n   * @docs-private\n   */\n  get open() {\n    return this.openDirective.open;\n  }\n\n  constructor(\n    private _elementRef: ElementRef<HTMLElement>,\n    private _ngZone: NgZone,\n    private _focusTrapFactory: ConfigurableFocusTrapFactory,\n    private _focusStack: DaffFocusStackService,\n    private openDirective: DaffOpenableDirective,\n    @Inject(DOCUMENT) private _doc: any,\n  ) {\n    /**\n     * Listen to `keydown` events outside the zone so that change detection is not run every\n     * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed.\n     *\n     */\n    this._ngZone.runOutsideAngular(() => {\n      fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown').pipe(\n        filter(event => event.key === 'Escape'),\n      ).subscribe(event => this._ngZone.run(() => {\n        this.escapePressed.emit();\n        event.stopPropagation();\n      }));\n    });\n  }\n\n  private _focusTrap: ConfigurableFocusTrap;\n\n  /**\n   * @docs-private\n   *\n   * Animation event that can be used to hook into when the transformSidebar\n   * animation begins. This is used in sidebar to determine when to show the\n   * visibility of the sidebar so that the animation does not jump as the element is shown.\n   */\n  @HostListener('@transformSidebar.start', ['$event']) onAnimationStart(e: AnimationEvent) {\n    if (e.toState === 'open' || e.toState === 'under-open' || e.toState === 'side-fixed-open') {\n      this._elementRef.nativeElement.style.visibility = 'visible';\n    }\n  }\n\n  /**\n   * @docs-private\n   *\n   * Animation event that can be used to hook into when the\n   * transformSidebar animation is complete.\n   */\n  @HostListener('@transformSidebar.done', ['$event']) onAnimationComplete(e: AnimationEvent) {\n    if(isOpening(<DaffSidebarAnimationState>e.fromState, <DaffSidebarAnimationState>e.toState)) {\n      this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n\n      const focusableChild = (<HTMLElement>this._elementRef.nativeElement.querySelector(daffFocusableElementsSelector));\n\n      this._focusStack.push(this._doc.activeElement);\n\n      if(focusableChild) {\n        focusableChild.focus();\n      } else {\n        this._elementRef.nativeElement.tabIndex = 0;\n        (<HTMLElement>this._elementRef.nativeElement).focus();\n      }\n    } else {\n      if(this._focusTrap) {\n        this._focusTrap.destroy();\n        this._focusTrap = undefined;\n        this._focusStack.pop();\n      }\n    }\n\n    /**\n     * @docs-private\n     *\n     * This is used in sidebar to determine when to hide the visibility\n     * of the sidebar so that the animation does not jump as the element is hidden.\n     */\n    if (e.toState === 'closed' || e.toState === 'under-closed' || e.toState === 'side-fixed-closed') {\n      this._elementRef.nativeElement.style.visibility = 'hidden';\n    } else {\n      this._elementRef.nativeElement.style.visibility = null;\n    }\n  }\n\n  /**\n   * Reveal the contents of the sidebar.\n   */\n  reveal() {\n    this.openDirective.reveal();\n  }\n\n  /**\n   * Hide the contents of the sidebar.\n   */\n  hide() {\n    this.openDirective.hide();\n  }\n\n  /**\n   * Toggle the visibility of the sidebar.\n   */\n  toggle() {\n    this.openDirective.toggle();\n  }\n}\n","<ng-content select=\"daff-sidebar-header\"></ng-content>\n<div class=\"daff-sidebar__body\">\n\t<ng-content></ng-content>\n</div>\n<ng-content select=\"daff-sidebar-footer\"></ng-content>","/* eslint-disable quote-props */\nimport {\n  Component,\n  ChangeDetectionStrategy,\n} from '@angular/core';\n\n/**\n * Sidebar footer is a child component of the sidebar that is used to display a\n * footer container, positioned at the bottom of a sidebar.\n *\n * ```html\n * <daff-sidebar-footer></daff-sidebar-footer>\n * ```\n */\n@Component({\n  selector: 'daff-sidebar-footer',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./sidebar-footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'daff-sidebar-footer',\n  },\n})\nexport class DaffSidebarFooterComponent {\n}\n","import {\n  Directive,\n  HostBinding,\n} from '@angular/core';\n\n/**\n * Sidebar header title is a child directive of `DaffSidebarHeaderComponent`\n * that can be used to provide a title for the sidebar.\n *\n * ```html\n * <div daffSidebarHeaderTitle>Title</div>\n * ```\n */\n@Directive({\n  selector: '[daffSidebarHeaderTitle]',\n})\nexport class DaffSidebarHeaderTitleDirective {\n  /**\n   * @docs-private\n   */\n  @HostBinding('class.daff-sidebar-header__title') class = true;\n}\n","/* eslint-disable quote-props */\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Input,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\n\n/**\n * Sidebar header is a child component of the sidebar that is used to display a header container,\n * positioned at the top of a sidebar. It includes an optional title (`[daffSidebarHeaderTitle]`)\n * slot and a slot to render any custom content.\n *\n * ```html\n * <daff-sidebar-header></daff-sidebar-header>\n * ```\n */\n@Component({\n  selector: 'daff-sidebar-header',\n  templateUrl: './sidebar-header.component.html',\n  styleUrls: ['./sidebar-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'daff-sidebar-header',\n    '[class.dismissible]': 'dismissible',\n  },\n  imports: [\n    FaIconComponent,\n  ],\n})\nexport class DaffSidebarHeaderComponent {\n  /**\n   * @docs-private\n   */\n  faTimes = faTimes;\n\n  /** Whether or not a sidebar header should display the close icon. */\n  @Input() dismissible = false;\n\n  /**\n   * Output event triggered when the close icon is clicked.\n   */\n  @Output() closeSidebar: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * @docs-private\n   */\n  onCloseSidebar(event: Event) {\n    this.closeSidebar.emit();\n  }\n}\n","@if (dismissible) {\n  <button class=\"daff-sidebar-header__close-icon\" aria-label=\"Close Sidebar\" (click)=\"onCloseSidebar($event)\">\n    <fa-icon [icon]=\"faTimes\" [fixedWidth]=\"true\" size=\"lg\"></fa-icon>\n  </button>\n}\n<div class=\"daff-sidebar-header__content\">\n  <ng-content></ng-content>\n</div>","/**\n * Fallback function for determining whether or not a viewport has a parent viewport.\n * This is really only used in the Daffodil docs when the injector heirarchy\n * doesn't act as anticipated as a result of custom elements.\n */\nexport const hasParentViewport = (element: HTMLElement) => {\n  let currentElement = element.parentElement;\n\n  while (currentElement !== null) {\n    if (currentElement.tagName === 'DAFF-SIDEBAR-VIEWPORT') {\n      return true;\n    }\n    currentElement = currentElement.parentElement;\n  }\n\n  return false;\n};\n","/**\n * The placement of the nav in relation to the sidebar.\n * See {@link DaffNavPlacementEnum }\n */\nexport type DaffNavPlacement = 'above' | 'beside';\n\n/**\n * The placement of the nav in relation to the sidebar.\n * See {@link DaffNavPlacement }\n */\nexport enum DaffNavPlacementEnum {\n  ABOVE = 'above',\n  BESIDE = 'beside',\n}\n","\nimport {\n  ElementRef,\n  inject,\n  DOCUMENT,\n} from '@angular/core';\n\nimport { createSingleInjectionToken } from '@daffodil/core';\n\n/**\n * An interface that enables a user to enable or disable scrolling on sidebars.\n *\n * See {@link DAFF_SIDEBAR_SCROLL_TOKEN}\n */\nexport interface DaffSidebarScroll {\n  enable(): void;\n  disable(): void;\n}\n\nexport const {\n  /**\n   * An injection token that can be used within a sidebar to determine\n   * what to do enabling and disabling scrolling. By default, the body\n   * is the element where scrolling is controlled.\n   */\n  token: DAFF_SIDEBAR_SCROLL_TOKEN,\n  /**\n   * Provider function for {@link DAFF_SIDEBAR_SCROLL_TOKEN}.\n   */\n  provider: provideDaffSidebarScrollToken,\n} = createSingleInjectionToken<DaffSidebarScroll>(\n  'DAFF_SIDEBAR_SCROLL_TOKEN',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const document = inject(DOCUMENT);\n      return {\n        enable: () => {\n          document.body.style.overflow = null;\n        },\n        disable: () => {\n          document.body.style.overflow = 'hidden';\n        },\n      };\n    },\n  },\n);\n\n\n/**\n * A factory function that return a DaffSidebarScroll\n * for the current sidebar viewport.\n *\n * See the providers of {@link DaffSidebarViewportComponent}\n */\nexport const daffSidebarViewportScrollFactory = (): DaffSidebarScroll => {\n  const element = inject(ElementRef).nativeElement;\n  return {\n    enable: () => {\n      element.style.overflow = null;\n    },\n    disable: () => {\n      element.style.overflow = 'hidden';\n    },\n  };\n};\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\n/**\n * Determines, given a list of sidebars, whether or not the backdrop is interactable (typically clickable).\n */\nexport const sidebarViewportBackdropInteractable = (sidebars: QueryList<DaffSidebarComponent>): boolean => sidebars.reduce(\n  (acc: boolean, sidebar) => ((sidebar.mode === 'over' || sidebar.mode === 'under') && sidebar.open()) || acc,\n  false);\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarModeEnum } from '../../helper/sidebar-mode';\nimport { DaffSidebarSide } from '../../helper/sidebar-side';\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\n/**\n * Given a list of sidebars, compute the whether or not the content is padded.\n */\nexport const isSidebarViewportContentPadded = (sidebars: QueryList<DaffSidebarComponent>, side: DaffSidebarSide): boolean =>\n  sidebars.reduce((acc: boolean, sidebar) => {\n    if(!(sidebar.mode === DaffSidebarModeEnum.SideFixed && sidebar.open())) {\n      return acc || false;\n    }\n\n    if(sidebar.side === side){\n      return true;\n    } else {\n      // This component is \"stateless\", its possible to have two open \"under\" sidebars.\n      // As such, we defer to \"left\" being open by default.\n      return acc;\n    }\n  }, false);\n\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarMode } from '../../helper/sidebar-mode';\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\nexport const isViewportContentShifted = (mode: DaffSidebarMode, open: boolean): boolean => (mode === 'under' && open);\n\n/**\n * Given a list of sidebars, compute the associated content shift.\n */\nexport const sidebarViewportContentShift = (sidebars: QueryList<DaffSidebarComponent>): number =>\n  sidebars.reduce((acc: number, sidebar) => {\n    if(!isViewportContentShifted(sidebar.mode, sidebar.open())) {\n      return acc;\n    }\n\n    if(sidebar.side === 'left'){\n      return sidebar.width;\n    } else if (sidebar.side === 'right' && acc === 0) {\n      return -1 * sidebar.width;\n    } else {\n      // This component is \"stateless\", its possible to have two open \"under\" sidebars.\n      // As such, we defer to \"left\" being open by default.\n      return acc;\n    }\n  }, 0);\n\n\n","import { AnimationStateWithParams } from '@daffodil/design';\n\nimport { DaffSidebarAnimationStates } from './sidebar-animation';\n\nexport type DaffSidebarViewportAnimationState = DaffSidebarAnimationStates.OPEN | DaffSidebarAnimationStates.CLOSED;\n\n\nexport interface DaffSidebarAnimationStateParams {\n  shift: string;\n};\n\nexport type DaffSidebarViewportAnimationStateWithParams = AnimationStateWithParams<DaffSidebarViewportAnimationState, DaffSidebarAnimationStateParams>;\n\n\nexport const getSidebarViewportAnimationState = (open: boolean): DaffSidebarViewportAnimationState =>\n  open ? DaffSidebarAnimationStates.OPEN : DaffSidebarAnimationStates.CLOSED;\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst animationDuration = '350ms';\nconst backdropTransitionOut = 'cubic-bezier(0.4, 0.0, 1, 1)';\nconst backdropTransitionIn = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\n\nexport const daffSidebarViewportBackdropAnimations: {\n  readonly fadeBackdrop: AnimationTriggerMetadata;\n} = {\n  fadeBackdrop: trigger('fadeBackdrop', [\n    state('interactable', style({ opacity: 1 })),\n    state('non-interactable', style({ opacity: 0 })),\n    transition('interactable => non-interactable', animate(animationDuration + ' ' + backdropTransitionOut)),\n    transition('non-interactable => interactable', animate(animationDuration + ' ' + backdropTransitionIn)),\n    transition(':enter', [\n      style({ opacity: 0 }),\n      animate(animationDuration + ' ' + backdropTransitionIn, style({ opacity: 1 })),\n    ]),\n    transition(':leave', [\n      animate(animationDuration + ' ' + backdropTransitionOut, style({ opacity: 0 })),\n    ]),\n  ]),\n};\n","export type DaffSidebarViewportBackdropAnimationState = 'interactable' | 'non-interactable';\nexport const getAnimationState = (interactable: boolean): DaffSidebarViewportBackdropAnimationState=> interactable ? 'interactable' : 'non-interactable';\n","import { AnimationEvent } from '@angular/animations';\nimport {\n  Component,\n  Output,\n  EventEmitter,\n  Input,\n  ChangeDetectionStrategy,\n  HostListener,\n  HostBinding,\n  OnInit,\n} from '@angular/core';\n\nimport { daffSidebarViewportBackdropAnimations } from './animation/backdrop-animation';\nimport { getAnimationState } from './animation/backdrop-animation-state';\n\n@Component({\n  selector: 'daff-sidebar-viewport-backdrop',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./sidebar-viewport-backdrop.component.scss'],\n  animations: [\n    daffSidebarViewportBackdropAnimations.fadeBackdrop,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffSidebarViewportBackdropComponent implements OnInit {\n\n  /**\n   * @docs-private\n   */\n  @HostBinding('class.interactable') interactableClass = true;\n\n  /**\n   * Determines whether or not the backdrop is transparent.\n   */\n  @Input() @HostBinding('class.transparent') transparent = false;\n\n  /**\n   * Determines whether or not the backdrop is interactable.\n   */\n  @Input() interactable = true;\n\n  /**\n   * Boolean property that determines whether or not the\n   * backdrop should fill up its containing window.\n   */\n  @Input() @HostBinding('class.fullscreen') fullscreen = false;\n\n  /**\n   * Output event triggered when the backdrop is clicked.\n   */\n  @Output() backdropClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * @docs-private\n   */\n  ngOnInit(): void {\n    this.interactableClass = this.interactable;\n  }\n\n  /**\n   * @docs-private\n   *\n   * Animation hook for that controls the backdrops\n   * entrance and fade animations.\n   */\n  @HostBinding('@fadeBackdrop') get fadeBackdropTrigger() {\n    return getAnimationState(this.interactable);\n  }\n\n  /**\n   * @docs-private\n   */\n  @HostListener('@fadeBackdrop.done', ['$event'])\n  animationDone(e: AnimationEvent) {\n    this.interactableClass = !(e.toState === ':leave' || e.toState === 'non-interactable');\n  }\n\n  /**\n   * @docs-private\n   */\n  @HostListener('@fadeBackdrop.start', ['$event'])\n  animationStart(e: AnimationEvent) {\n    if(e.toState === ':enter' || e.toState === 'interactable'){\n      this.interactableClass = true;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  @HostListener('click')\n  onBackdropClicked(): void {\n    this.backdropClicked.emit();\n  }\n}\n","/* eslint-disable quote-props */\nimport { AnimationEvent } from '@angular/animations';\nimport {\n  Component,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ContentChildren,\n  QueryList,\n  AfterContentChecked,\n  ElementRef,\n  Input,\n  Inject,\n  SkipSelf,\n  Optional,\n  OnDestroy,\n} from '@angular/core';\n\nimport { hasParentViewport } from './helper/has-parent-viewport';\nimport {\n  DaffNavPlacement,\n  DaffNavPlacementEnum,\n} from './nav-placement';\nimport {\n  DAFF_SIDEBAR_SCROLL_TOKEN,\n  DaffSidebarScroll,\n  daffSidebarViewportScrollFactory,\n} from './scroll-token/scroll.token';\nimport { sidebarViewportBackdropInteractable } from './utils/backdrop-interactable';\nimport { isSidebarViewportContentPadded } from './utils/content-pad';\nimport {\n  isViewportContentShifted,\n  sidebarViewportContentShift,\n} from './utils/content-shift';\nimport {\n  DaffSidebarAnimationStates,\n  daffSidebarAnimations,\n} from '../animation/sidebar-animation';\nimport {\n  DaffSidebarViewportAnimationStateWithParams,\n  getSidebarViewportAnimationState,\n} from '../animation/sidebar-viewport-animation-state';\nimport { DaffSidebarComponent } from '../sidebar/sidebar.component';\nimport { DaffSidebarViewportBackdropComponent } from '../sidebar-viewport-backdrop/sidebar-viewport-backdrop.component';\n\n/**\n * DaffSidebarViewportComponent serves as the container for managing sidebars across an entire application.\n * Because it's a functional component, it supports multiple simultaneously open sidebar and is designed to\n * handle these scenarios gracefully.\n *\n * > However, there is one key contraint: only one sidebar per **mode** is allowed\n * on each **side** (e.g., left or right) at any given time.\n *\n * If this constraint is violated, the component will throw an exception to prevent unintended behavior.\n *\n * ```html\n * <daff-sidebar-viewport>\n *    <daff-sidebar></daff-sidebar>\n *    <div>Site content</div>\n * </daff-sidebar-viewport>\n * ```\n */\n@Component({\n  selector: 'daff-sidebar-viewport',\n  templateUrl: './sidebar-viewport.component.html',\n  styleUrls: ['./sidebar-viewport.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    daffSidebarAnimations.transformContent,\n  ],\n  providers: [\n    {\n      provide: DAFF_SIDEBAR_SCROLL_TOKEN,\n      useFactory: daffSidebarViewportScrollFactory,\n    },\n  ],\n  host: {\n    'class': 'daff-sidebar-viewport',\n    '[class.beside]': 'navPlacement === \"beside\"',\n    '[class.above]': 'navPlacement === \"above\"',\n    '[class.pad-left]': '_isPaddedLeft',\n    '[class.pad-right]': '_isPaddedRight',\n  },\n  imports: [\n    DaffSidebarViewportBackdropComponent,\n  ],\n})\nexport class DaffSidebarViewportComponent implements AfterContentChecked, OnDestroy {\n  /**\n   * @docs-private\n   */\n  onContentAnimationStart(e: AnimationEvent) {\n    if(e.toState === 'open') {\n      this._elementRef.nativeElement.style.overflow = 'clip';\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  onContentAnimationDone(e: AnimationEvent) {\n    if(e.toState === 'closed') {\n      this._elementRef.nativeElement.style.overflow = null;\n    }\n  }\n\n  /**\n   * The placement of the nav in relation to the sidebar. Note that this is really only available when there is a `side-fixed` sidebar.\n   */\n  @Input() navPlacement: DaffNavPlacement = DaffNavPlacementEnum.ABOVE;\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private _elementRef: ElementRef<HTMLElement>,\n    @Inject(DAFF_SIDEBAR_SCROLL_TOKEN) @SkipSelf() private bodyScroll: DaffSidebarScroll,\n    @Inject(DaffSidebarViewportComponent) @SkipSelf() @Optional() private parentViewport,\n    @Inject(DAFF_SIDEBAR_SCROLL_TOKEN) private scroll: DaffSidebarScroll,\n  ) { }\n\n  /**\n   * The list of sidebars in the viewport.\n   *\n   * @docs-private\n   */\n  @ContentChildren(DaffSidebarComponent, { descendants: false }) private sidebars: QueryList<DaffSidebarComponent>;\n\n  /**\n   * The number of pixels that the main content of the page should be shifted to\n   * right when there are child sidebars.\n   */\n  private _shift = '0px';\n\n  /**\n   * @docs-private\n   */\n  _isPaddedLeft = false;\n\n  /**\n   * @docs-private\n   */\n  _isPaddedRight = false;\n\n  /**\n   * @docs-private\n   *\n   * Whether or not the backdrop is interactable\n   */\n  _backdropInteractable = false;\n\n  /**\n   * @docs-private\n   *\n   * The animation state\n   */\n  _animationState: DaffSidebarViewportAnimationStateWithParams = { value: DaffSidebarAnimationStates.CLOSED, params: { shift: '0px' }};\n\n  /**\n   * Event fired when the backdrop is clicked. This is often used to close the sidebar.\n   */\n  @Output() backdropClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * @docs-private\n   */\n  ngAfterContentChecked() {\n    const nextShift = sidebarViewportContentShift(this.sidebars) + 'px';\n    if (this._shift !== nextShift) {\n      this._shift = nextShift;\n\n      this.updateAnimationState();\n      this.cdRef.markForCheck();\n    }\n    const nextBackdropInteractable = sidebarViewportBackdropInteractable(this.sidebars);\n    if (this._backdropInteractable !== nextBackdropInteractable) {\n      this._backdropInteractable = nextBackdropInteractable;\n      this.updateAnimationState();\n      this.cdRef.markForCheck();\n      if(nextBackdropInteractable) {\n        if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n          this.bodyScroll.disable();\n        } else {\n          this.scroll.disable();\n        }\n      } else { //if we are hiding the sidebars\n        if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n          this.bodyScroll.enable();\n        } else {\n          this.scroll.enable();\n        }\n      }\n    };\n\n    this._isPaddedLeft = isSidebarViewportContentPadded(this.sidebars, 'left');\n    this._isPaddedRight = isSidebarViewportContentPadded(this.sidebars, 'right');\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnDestroy() {\n    if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n      this.bodyScroll.enable();\n    } else {\n      this.scroll.enable();\n    }\n  }\n\n  /**\n   * @docs-private\n   *\n   * Updates the animation state of the viewport depending upon the state\n   * of all sidebars within the viewport.\n   */\n  private updateAnimationState() {\n    this._animationState = {\n      value: getSidebarViewportAnimationState(\n        this.sidebars.reduce((acc: boolean, sidebar) => acc || isViewportContentShifted(sidebar.mode, sidebar.open()), false),\n      ),\n      params: { shift: this._shift },\n    };\n  }\n\n  /**\n   * @docs-private\n   *\n   * Called when the backdrop of the viewport is clicked upon.\n   */\n  _backdropClicked(): void {\n    this.backdropClicked.emit();\n  }\n}\n","<daff-sidebar-viewport-backdrop\n  [@transformContent]=\"_animationState\"\n  [interactable]=\"_backdropInteractable\"\n  (backdropClicked)=\"_backdropClicked()\">\n</daff-sidebar-viewport-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n  [@transformContent]=\"_animationState\">\n    <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<div class=\"daff-sidebar-viewport__content\"\n  [@transformContent]=\"_animationState\"\n  (@transformContent.start)=\"onContentAnimationStart($event)\"\n  (@transformContent.done)=\"onContentAnimationDone($event)\">\n  <div class=\"daff-sidebar-viewport__inner\">\n      <ng-content></ng-content>\n      <div class=\"daff-sidebar-viewport__footer\">\n        <ng-content select=\"[daff-sidebar-viewport-footer]\"></ng-content>\n      </div>\n  </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffSidebarComponent } from './sidebar/sidebar.component';\nimport { DaffSidebarFooterComponent } from './sidebar-footer/sidebar-footer.component';\nimport { DaffSidebarHeaderTitleDirective } from './sidebar-header/sidebar-header-title/sidebar-header-title.directive';\nimport { DaffSidebarHeaderComponent } from './sidebar-header/sidebar-header.component';\nimport { DaffSidebarViewportComponent } from './sidebar-viewport/sidebar-viewport.component';\n\n/**\n * @deprecated in favor of {@link DAFF_SIDEBAR_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    A11yModule,\n    DaffSidebarComponent,\n    DaffSidebarViewportComponent,\n    DaffSidebarHeaderComponent,\n    DaffSidebarFooterComponent,\n    DaffSidebarHeaderTitleDirective,\n  ],\n  exports: [\n    DaffSidebarComponent,\n    DaffSidebarViewportComponent,\n    DaffSidebarHeaderComponent,\n    DaffSidebarFooterComponent,\n    DaffSidebarHeaderTitleDirective,\n  ],\n})\nexport class DaffSidebarModule { }\n","import {\n  Signal,\n  signal,\n} from '@angular/core';\nimport {\n  BehaviorSubject,\n  Observable,\n} from 'rxjs';\n\nimport { DaffSidebarRegistration } from './registration.type';\n\n/**\n * A service that stores the open state and ID of the currently opened sidebar.\n *\n * A default sidebar ID can be passed to the constructor that will be the initial value of `$id`.\n */\nexport abstract class DaffSidebarService {\n  protected _id$: BehaviorSubject<DaffSidebarRegistration['id']>;\n  protected _open = signal(false);\n\n  readonly id$: Observable<DaffSidebarRegistration['id']>;\n\n  get isOpen(): Signal<boolean> {\n    return this._open.asReadonly();\n  }\n\n  constructor(\n    defaultId: DaffSidebarRegistration['id'] = null,\n  ) {\n    this._id$ = new BehaviorSubject<DaffSidebarRegistration['id']>(defaultId);\n\n    this.id$ = this._id$.asObservable();\n  }\n\n  /**\n   * Opens the specified sidebar.\n   *\n   * @param id The optional sidebar ID. If omitted the most recently passed opened sidebar ID will persist (or the default if none was passed).\n   */\n  open(id?: DaffSidebarRegistration['id']) {\n    if (id) {\n      this._id$.next(id);\n    }\n    this._open.set(true);\n  };\n\n  /**\n   * Closes the sidebar. Does not clear the ID.\n   */\n  close() {\n    this._open.set(false);\n  }\n}\n","import { DaffSidebarModeEnum } from './sidebar-mode';\n\nconst DOCKED_MODES = [\n  DaffSidebarModeEnum.Side,\n  DaffSidebarModeEnum.SideFixed,\n];\n\n/**\n * Returns whether the passed mode is a docked mode, i.e. side or side-fixed.\n */\nexport const daffSidebarIsDockedMode = (mode: DaffSidebarModeEnum): boolean => DOCKED_MODES.includes(mode);\n","import { DaffSidebarModeEnum } from './sidebar-mode';\n\nconst FLOATING_MODES = [\n  DaffSidebarModeEnum.Under,\n  DaffSidebarModeEnum.Over,\n];\n\n/**\n * Returns whether the passed mode is a floating mode, i.e. under or over.\n */\nexport const daffSidebarIsFloatingMode = (mode: DaffSidebarModeEnum): boolean => FLOATING_MODES.includes(mode);\n","import { DaffSidebarComponent } from './sidebar/sidebar.component';\nimport { DaffSidebarFooterComponent } from './sidebar-footer/sidebar-footer.component';\nimport { DaffSidebarHeaderTitleDirective } from './sidebar-header/sidebar-header-title/sidebar-header-title.directive';\nimport { DaffSidebarHeaderComponent } from './sidebar-header/sidebar-header.component';\nimport { DaffSidebarViewportComponent } from './sidebar-viewport/sidebar-viewport.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_SIDEBAR_COMPONENTS = <const> [\n  DaffSidebarComponent,\n  DaffSidebarViewportComponent,\n  DaffSidebarHeaderComponent,\n  DaffSidebarFooterComponent,\n  DaffSidebarHeaderTitleDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getAnimationState"],"mappings":";;;;;;;;;;;;;;AAEA;;AAEG;AACI,MAAM,SAAS,GAAG,CAAC,SAAoC,EAAE,OAAkC,KAAa;AAC7G,IAAA,IAAG,SAAS,KAAK,YAAY,IAAI,OAAO,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,OAAO,KAAK,YAAY,EAAE;AACvG,QAAA,OAAO,KAAK;IACd;IAEA,IAAG,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,MAAM,EAAE;AACjD,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd,CAAC;;ACLD,MAAM,QAAQ,GAAG,OAAO;AACxB,MAAM,0BAA0B,GAAG,gCAAgC;AACnE,MAAM,2BAA2B,GAAG,8BAA8B;AAE3D,MAAM,qBAAqB,GAI9B;AACF,IAAA,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE;;;AAG5C,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAClB,YAAA,SAAS,EAAE,MAAM;AAClB,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpB,YAAA,SAAS,EAAE,uBAAuB;SACnC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAC,CAAC;QACnC,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,2BAA2B,CAAC,CAAC;QACnF,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,0BAA0B,CAAC,CAAC;KACnF,CAAC;AACF,IAAA,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE;;;AAG5C,QAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpB,YAAA,SAAS,EAAE,MAAM;AAClB,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAClB,YAAA,SAAS,EAAE,uBAAuB;SACnC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAC,CAAC;QACnC,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,0BAA0B,CAAC,CAAC;QAClF,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,2BAA2B,CAAC,CAAC;KACpF,CAAC;AACF,IAAA,eAAe,EAAE,OAAO,CAAC,iBAAiB,EAAE;AAC1C,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAClB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;QACH,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,2BAA2B,CAAC,CAAC;QACnF,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,0BAA0B,CAAC,CAAC;KACnF,CAAC;CACH;AAED,IAAY,0BAQX;AARD,CAAA,UAAY,0BAA0B,EAAA;AACpC,IAAA,0BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,0BAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,0BAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,0BAAA,CAAA,eAAA,CAAA,GAAA,iBAAiC;AACjC,IAAA,0BAAA,CAAA,iBAAA,CAAA,GAAA,mBAAqC;AACrC,IAAA,0BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EARW,0BAA0B,KAA1B,0BAA0B,GAAA,EAAA,CAAA,CAAA;;ACjD/B,MAAMA,mBAAiB,GAAG,CAAC,IAAa,EAAE,IAAqB,KAA+B;AACnG,IAAA,IAAG,IAAI,KAAK,MAAM,EAAE;AAClB,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAG,IAAI,KAAK,YAAY,IAAI,IAAI,EAAE;AAChC,QAAA,OAAO,iBAAiB;IAC1B;AAEA,IAAA,IAAG,IAAI,KAAK,YAAY,IAAI,CAAC,IAAI,EAAE;AACjC,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAG,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC3B,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAG,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC5B,QAAA,OAAO,cAAc;IACvB;IAEA,IAAG,IAAI,EAAE;AACP,QAAA,OAAO,MAAM;IACf;SAAO;AACL,QAAA,OAAO,QAAQ;IACjB;AACF,CAAC;;AC7BM,MAAM,wBAAwB,GACnC,CAAC,IAAqB,EAAE,KAAa,KAAa,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;;ACoCtG;;;;;;;;AAQG;MAwBU,oBAAoB,CAAA;AAC/B;;;;AAIG;AACH,IAAA,IAAsC,gBAAgB,GAAA;QACpD,OAAO;AACL,YAAA,KAAK,EAAEA,mBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AAC9D,YAAA,MAAM,EAAE,EAAE,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;SACnE;IACH;AAiBA;;;;AAIG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;IACnD;AAEA;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI;IAChC;IAEA,WAAA,CACU,WAAoC,EACpC,OAAe,EACf,iBAA+C,EAC/C,WAAkC,EAClC,aAAoC,EAClB,IAAS,EAAA;QAL3B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,aAAa,GAAb,aAAa;QACK,IAAA,CAAA,IAAI,GAAJ,IAAI;AArChC;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ;AAEtE;;AAEG;QACM,IAAA,CAAA,IAAI,GAAoB,MAAM;AAEvC;;AAEG;QACM,IAAA,CAAA,IAAI,GAAoB,MAAM;AA0BrC;;;;AAIG;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,SAAS,CAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CACtE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CACxC,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AACzC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBACzB,KAAK,CAAC,eAAe,EAAE;YACzB,CAAC,CAAC,CAAC;AACL,QAAA,CAAC,CAAC;IACJ;AAIA;;;;;;AAMG;AACkD,IAAA,gBAAgB,CAAC,CAAiB,EAAA;AACrF,QAAA,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB,EAAE;YACzF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;QAC7D;IACF;AAEA;;;;;AAKG;AACiD,IAAA,mBAAmB,CAAC,CAAiB,EAAA;QACvF,IAAG,SAAS,CAA4B,CAAC,CAAC,SAAS,EAA6B,CAAC,CAAC,OAAO,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/E,YAAA,MAAM,cAAc,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAE;YAEjH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAE9C,IAAG,cAAc,EAAE;gBACjB,cAAc,CAAC,KAAK,EAAE;YACxB;iBAAO;gBACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,KAAK,EAAE;YACvD;QACF;aAAO;AACL,YAAA,IAAG,IAAI,CAAC,UAAU,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YACxB;QACF;AAEA;;;;;AAKG;AACH,QAAA,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc,IAAI,CAAC,CAAC,OAAO,KAAK,mBAAmB,EAAE;YAC/F,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;QAC5D;aAAO;YACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI;QACxD;IACF;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC7B;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC7B;AA9IW,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,wLAkDrB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAlDP,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvEjC,6LAIsD,EAAA,MAAA,EAAA,CAAA,6uBAAA,CAAA,EAAA,UAAA,ED+DxC;AACV,YAAA,qBAAqB,CAAC,gBAAgB;AACvC,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAvBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,kBAC/B,CAAC;AACf,4BAAA,SAAS,EAAE,qBAAqB;4BAChC,MAAM,EAAE,CAAC,MAAM,CAAC;4BAChB,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,OAAO,EAAE,cAAc;AACvB,wBAAA,cAAc,EAAE,iBAAiB;AACjC,wBAAA,cAAc,EAAE,iBAAiB;AACjC,wBAAA,eAAe,EAAE,kBAAkB;AACnC,wBAAA,oBAAoB,EAAE,uBAAuB;AAC7C,wBAAA,cAAc,EAAE,iBAAiB;AACjC,wBAAA,eAAe,EAAE,kBAAkB;qBACpC,EAAA,UAAA,EACW;AACV,wBAAA,qBAAqB,CAAC,gBAAgB;AACvC,qBAAA,EAAA,QAAA,EAAA,6LAAA,EAAA,MAAA,EAAA,CAAA,6uBAAA,CAAA,EAAA;;0BAoDE,MAAM;2BAAC,QAAQ;;sBA5CjB,WAAW;uBAAC,mBAAmB;;sBAU/B;;sBAKA;;sBAKA;;sBAkDA,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;sBAYlD,YAAY;uBAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC;;;AE/JpD;AAMA;;;;;;;AAOG;MAUU,0BAA0B,CAAA;iIAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,gIAP3B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAO1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,YACrB,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC/B,qBAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA;;;AChBH;;;;;;;AAOG;MAIU,+BAA+B,CAAA;AAH5C,IAAA,WAAA,GAAA;AAIE;;AAEG;QAC8C,IAAA,CAAA,KAAK,GAAG,IAAI;AAC9D,IAAA;iIALY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kCAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACrC,iBAAA;;sBAKE,WAAW;uBAAC,kCAAkC;;;ACpBjD;AAYA;;;;;;;;AAQG;MAeU,0BAA0B,CAAA;AAdvC,IAAA,WAAA,GAAA;AAeE;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,OAAO;;QAGR,IAAA,CAAA,WAAW,GAAG,KAAK;AAE5B;;AAEG;AACO,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAE;AAQhE,IAAA;AANC;;AAEG;AACH,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;iIAnBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCvC,4TAOM,EAAA,MAAA,EAAA,CAAA,w8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDyBF,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACE,qBAAqB,EAAA,aAAA,EAGhB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,qBAAqB,EAAE,aAAa;qBACrC,EAAA,OAAA,EACQ;wBACP,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,4TAAA,EAAA,MAAA,EAAA,CAAA,w8BAAA,CAAA,EAAA;;sBASA;;sBAKA;;;AE/CH;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,OAAoB,KAAI;AACxD,IAAA,IAAI,cAAc,GAAG,OAAO,CAAC,aAAa;AAE1C,IAAA,OAAO,cAAc,KAAK,IAAI,EAAE;AAC9B,QAAA,IAAI,cAAc,CAAC,OAAO,KAAK,uBAAuB,EAAE;AACtD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,cAAc,GAAG,cAAc,CAAC,aAAa;IAC/C;AAEA,IAAA,OAAO,KAAK;AACd,CAAC;;ACVD;;;AAGG;AACH,IAAY,oBAGX;AAHD,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;;ACSzB,MAAM;AACX;;;;AAIG;AACH,KAAK,EAAE,yBAAyB;AAChC;;AAEG;AACH,QAAQ,EAAE,6BAA6B,GACxC,GAAG,0BAA0B,CAC5B,2BAA2B,EAC3B;AACE,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACZ,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,MAAK;gBACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;YACrC,CAAC;YACD,OAAO,EAAE,MAAK;gBACZ,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;YACzC,CAAC;SACF;IACH,CAAC;AACF,CAAA,CACF;AAGD;;;;;AAKG;AACI,MAAM,gCAAgC,GAAG,MAAwB;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;IAChD,OAAO;QACL,MAAM,EAAE,MAAK;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;QAC/B,CAAC;QACD,OAAO,EAAE,MAAK;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACnC,CAAC;KACF;AACH,CAAC;;AC7DD;;AAEG;AACI,MAAM,mCAAmC,GAAG,CAAC,QAAyC,KAAc,QAAQ,CAAC,MAAM,CACxH,CAAC,GAAY,EAAE,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,EAC3G,KAAK,CAAC;;ACHR;;AAEG;AACI,MAAM,8BAA8B,GAAG,CAAC,QAAyC,EAAE,IAAqB,KAC7G,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,OAAO,KAAI;AACxC,IAAA,IAAG,EAAE,OAAO,CAAC,IAAI,KAAA,YAAA,wCAAsC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;QACtE,OAAO,GAAG,IAAI,KAAK;IACrB;AAEA,IAAA,IAAG,OAAO,CAAC,IAAI,KAAK,IAAI,EAAC;AACvB,QAAA,OAAO,IAAI;IACb;SAAO;;;AAGL,QAAA,OAAO,GAAG;IACZ;AACF,CAAC,EAAE,KAAK,CAAC;;ACjBJ,MAAM,wBAAwB,GAAG,CAAC,IAAqB,EAAE,IAAa,MAAe,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC;AAErH;;AAEG;AACI,MAAM,2BAA2B,GAAG,CAAC,QAAyC,KACnF,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,OAAO,KAAI;AACvC,IAAA,IAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;AAC1D,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM,EAAC;QACzB,OAAO,OAAO,CAAC,KAAK;IACtB;SAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE;AAChD,QAAA,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK;IAC3B;SAAO;;;AAGL,QAAA,OAAO,GAAG;IACZ;AACF,CAAC,EAAE,CAAC,CAAC;;AChBN;AAKM,MAAM,gCAAgC,GAAG,CAAC,IAAa,KAC5D,IAAI,GAAG,0BAA0B,CAAC,IAAI,GAAG,0BAA0B,CAAC,MAAM;;ACN5E,MAAM,iBAAiB,GAAG,OAAO;AACjC,MAAM,qBAAqB,GAAG,8BAA8B;AAC5D,MAAM,oBAAoB,GAAG,gCAAgC;AAEtD,MAAM,qCAAqC,GAE9C;AACF,IAAA,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE;QACpC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,UAAU,CAAC,kCAAkC,EAAE,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,qBAAqB,CAAC,CAAC;QACxG,UAAU,CAAC,kCAAkC,EAAE,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,oBAAoB,CAAC,CAAC;QACvG,UAAU,CAAC,QAAQ,EAAE;AACnB,YAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACrB,YAAA,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,oBAAoB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SAC/E,CAAC;QACF,UAAU,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SAChF,CAAC;KACH,CAAC;CACH;;AC5BM,MAAM,iBAAiB,GAAG,CAAC,YAAqB,KAA+C,YAAY,GAAG,cAAc,GAAG,kBAAkB;;MCuB3I,oCAAoC,CAAA;AATjD,IAAA,WAAA,GAAA;AAWE;;AAEG;QACgC,IAAA,CAAA,iBAAiB,GAAG,IAAI;AAE3D;;AAEG;QACwC,IAAA,CAAA,WAAW,GAAG,KAAK;AAE9D;;AAEG;QACM,IAAA,CAAA,YAAY,GAAG,IAAI;AAE5B;;;AAGG;QACuC,IAAA,CAAA,UAAU,GAAG,KAAK;AAE5D;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAQ;AA4CzE,IAAA;AA1CC;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY;IAC5C;AAEA;;;;;AAKG;AACH,IAAA,IAAkC,mBAAmB,GAAA;AACnD,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7C;AAEA;;AAEG;AAEH,IAAA,aAAa,CAAC,CAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,kBAAkB,CAAC;IACxF;AAEA;;AAEG;AAEH,IAAA,cAAc,CAAC,CAAiB,EAAA;AAC9B,QAAA,IAAG,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc,EAAC;AACxD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;IACF;AAEA;;AAEG;IAEH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B;iIArEW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPrC,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mcAAA,CAAA,EAAA,UAAA,EAEzB;AACV,YAAA,qCAAqC,CAAC,YAAY;AACnD,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAThD,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAChC,2BAA2B,EAAA,UAAA,EAEzB;AACV,wBAAA,qCAAqC,CAAC,YAAY;qBACnD,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,mcAAA,CAAA,EAAA;;sBAO9C,WAAW;uBAAC,oBAAoB;;sBAKhC;;sBAAS,WAAW;uBAAC,mBAAmB;;sBAKxC;;sBAMA;;sBAAS,WAAW;uBAAC,kBAAkB;;sBAKvC;;sBAeA,WAAW;uBAAC,eAAe;;sBAO3B,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;;sBAQ7C,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;sBAU9C,YAAY;uBAAC,OAAO;;;AC5CvB;;;;;;;;;;;;;;;;AAgBG;MA0BU,4BAA4B,CAAA;AACvC;;AAEG;AACH,IAAA,uBAAuB,CAAC,CAAiB,EAAA;AACvC,QAAA,IAAG,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;QACxD;IACF;AAEA;;AAEG;AACH,IAAA,sBAAsB,CAAC,CAAiB,EAAA;AACtC,QAAA,IAAG,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;QACtD;IACF;IAOA,WAAA,CACU,KAAwB,EACxB,WAAoC,EACW,UAA6B,EACd,cAAc,EACzC,MAAyB,EAAA;QAJ5D,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,WAAW,GAAX,WAAW;QACoC,IAAA,CAAA,UAAU,GAAV,UAAU;QACK,IAAA,CAAA,cAAc,GAAd,cAAc;QACzC,IAAA,CAAA,MAAM,GAAN,MAAM;AAVnD;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAqB,oBAAoB,CAAC,KAAK;AAiBpE;;;AAGG;QACK,IAAA,CAAA,MAAM,GAAG,KAAK;AAEtB;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK;AAErB;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK;AAEtB;;;;AAIG;QACH,IAAA,CAAA,qBAAqB,GAAG,KAAK;AAE7B;;;;AAIG;AACH,QAAA,IAAA,CAAA,eAAe,GAAgD,EAAE,KAAK,EAAE,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAC;AAEpI;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAQ;IA1CpE;AA4CJ;;AAEG;IACH,qBAAqB,GAAA;QACnB,MAAM,SAAS,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI;AACnE,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;YAEvB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QAC3B;QACA,MAAM,wBAAwB,GAAG,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnF,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,wBAAwB,EAAE;AAC3D,YAAA,IAAI,CAAC,qBAAqB,GAAG,wBAAwB;YACrD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACzB,IAAG,wBAAwB,EAAE;AAC3B,gBAAA,IAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;AAC7E,oBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC3B;qBAAO;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB;YACF;AAAO,iBAAA;AACL,gBAAA,IAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;AAC7E,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC1B;qBAAO;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACtB;YACF;QACF;QAAC;QAED,IAAI,CAAC,aAAa,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC9E;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QAC1B;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QACtB;IACF;AAEA;;;;;AAKG;IACK,oBAAoB,GAAA;QAC1B,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,KAAK,EAAE,gCAAgC,CACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,OAAO,KAAK,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CACtH;AACD,YAAA,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;SAC/B;IACH;AAEA;;;;AAIG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B;AA9IW,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EA2B7B,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACzB,4BAA4B,6CAC5B,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7BxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAjB5B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,UAAU,EAAE,gCAAgC;AAC7C,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAiDgB,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7HvC,y8BA0BA,EAAA,MAAA,EAAA,CAAA,ggDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED2DI,oCAAoC,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAjB1B;AACV,YAAA,qBAAqB,CAAC,gBAAgB;AACvC,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAkBU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAzBxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC;AACV,wBAAA,qBAAqB,CAAC,gBAAgB;qBACvC,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,UAAU,EAAE,gCAAgC;AAC7C,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,OAAO,EAAE,uBAAuB;AAChC,wBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,wBAAA,eAAe,EAAE,0BAA0B;AAC3C,wBAAA,kBAAkB,EAAE,eAAe;AACnC,wBAAA,mBAAmB,EAAE,gBAAgB;qBACtC,EAAA,OAAA,EACQ;wBACP,oCAAoC;AACrC,qBAAA,EAAA,QAAA,EAAA,y8BAAA,EAAA,MAAA,EAAA,CAAA,ggDAAA,CAAA,EAAA;;0BA6BE,MAAM;2BAAC,yBAAyB;;0BAAG;;0BACnC,MAAM;2BAAC,4BAA4B;;0BAAG;;0BAAY;;0BAClD,MAAM;2BAAC,yBAAyB;;sBAPlC;;sBAeA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;;sBAmC5D;;;AEtJH;;AAEG;MAmBU,iBAAiB,CAAA;iIAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,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,YAhB1B,YAAY;YACZ,UAAU;YACV,oBAAoB;YACpB,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;AAC1B,YAAA,+BAA+B,aAG/B,oBAAoB;YACpB,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;YAC1B,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAGtB,uBAAA,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,YAhB1B,YAAY;YACZ,UAAU;YAGV,0BAA0B,CAAA,EAAA,CAAA,CAAA;;2FAYjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU;wBACV,oBAAoB;wBACpB,4BAA4B;wBAC5B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,4BAA4B;wBAC5B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,+BAA+B;AAChC,qBAAA;AACF,iBAAA;;;ACnBD;;;;AAIG;MACmB,kBAAkB,CAAA;AAMtC,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;IAChC;AAEA,IAAA,WAAA,CACE,YAA2C,IAAI,EAAA;AATvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,4EAAC;QAW7B,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAgC,SAAS,CAAC;QAEzE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IACrC;AAEA;;;;AAIG;AACH,IAAA,IAAI,CAAC,EAAkC,EAAA;QACrC,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACtB;;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;AACD;;AClDD,MAAM,YAAY,GAAG;;;CAGpB;AAED;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,IAAyB,KAAc,YAAY,CAAC,QAAQ,CAAC,IAAI;;ACRzG,MAAM,cAAc,GAAG;;;CAGtB;AAED;;AAEG;AACI,MAAM,yBAAyB,GAAG,CAAC,IAAyB,KAAc,cAAc,CAAC,QAAQ,CAAC,IAAI;;ACJ7G;;AAEG;AACI,MAAM,uBAAuB,GAAW;IAC7C,oBAAoB;IACpB,4BAA4B;IAC5B,0BAA0B;IAC1B,0BAA0B;IAC1B,+BAA+B;;;ACdjC;;AAEG;;;;"}