{"version":3,"file":"kara-ui-alfa-components-tooltip.mjs","sources":["../../../libs/kara-ui/components/tooltip/tooltip.component.ts","../../../libs/kara-ui/components/tooltip/tooltip.directive.ts","../../../libs/kara-ui/components/tooltip/kara-ui-alfa-components-tooltip.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  TemplateRef,\n} from '@angular/core';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { kFadeIn } from 'kara-ui-alfa/animation';\nimport { KTooltipArrowPosition, KTooltipType } from './tooltip.interface';\n\n@Component({\n  selector: 'k-tooltip',\n  template: `\n    @if (isTemplateRef(message)) {\n      <ng-container *ngTemplateOutlet=\"message\"></ng-container>\n    } @else {\n      {{ message }}\n    }\n\n    <div class=\"k-arrow\" [ngStyle]=\"arrowPosition\"></div>\n  `,\n  styleUrls: ['./tooltip.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [kFadeIn],\n  imports: [NgStyle, OverlayModule, NgTemplateOutlet],\n})\nexport class KTooltipComponent {\n  message?: string | TemplateRef<unknown>;\n  arrowPosition?: KTooltipArrowPosition;\n  @HostBinding('attr.data-type')\n  type?: KTooltipType;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    public tooltipRef: ElementRef<HTMLElement>,\n  ) {}\n\n  @HostBinding('class') get arrowDirection(): string {\n    return `k-tooltip-${this.arrowPosition?.position}`;\n  }\n\n  @HostBinding('@kFadeIn') readonly animation = true;\n\n  setType(value: KTooltipType): void {\n    this.type = value;\n    this.cdr.markForCheck();\n  }\n\n  setMessage(value: string | TemplateRef<unknown>): void {\n    this.message = value;\n    this.cdr.markForCheck();\n  }\n\n  setArrowPosition(value: KTooltipArrowPosition): void {\n    this.arrowPosition = value;\n    this.cdr.markForCheck();\n  }\n\n  isTemplateRef(value: unknown): value is TemplateRef<unknown> {\n    return value instanceof TemplateRef;\n  }\n}\n","import {\n  ConnectedPosition,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  Overlay,\n  OverlayConnectionPosition,\n  OverlayRef,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subject, fromEvent, timer } from 'rxjs';\nimport { exhaustMap, skip, take, takeUntil, tap } from 'rxjs/operators';\nimport { KTooltipComponent } from './tooltip.component';\nimport { KTooltipPosition, KTooltipType } from './tooltip.interface';\n\nconst HALF_ARROW_WIDTH = 4;\nconst TOOLTIP_OFFSET = 10;\n\n@Directive({\n  selector: '[kTooltip]',\n})\nexport class KTooltipDirective implements OnInit, OnChanges, OnDestroy {\n  @Input('kTooltip') message: string | TemplateRef<unknown> | undefined;\n  @Input('kTooltipPosition') position: KTooltipPosition = 'bottom';\n  @Input('kTooltipType') type: KTooltipType = 'tooltip';\n  @Input('kTooltipTrigger') trigger: 'hover' | 'click' = 'hover';\n  @Input('kTooltipOpenDelay') openDelay: number = 300;\n  @Input('kTooltipCloseDelay') closeDelay: number = 300;\n\n  private overlayRef: OverlayRef = this.overlay.create({\n    positionStrategy: this.getPositionStrategy(),\n    scrollStrategy: this.overlay.scrollStrategies.close(),\n  });\n\n  private portal!: ComponentPortal<KTooltipComponent>;\n  private tooltipInstance!: KTooltipComponent;\n\n  private onDestroy$: Subject<void> = new Subject();\n\n  constructor(\n    private viewContainerRef: ViewContainerRef,\n    private elementRef: ElementRef<HTMLElement>,\n    private overlay: Overlay,\n  ) {}\n\n  ngOnInit(): void {\n    if (this.trigger === 'hover') {\n      this.initHoverStrategy();\n    } else {\n      this.initClickStrategy();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.position) {\n      this.overlayRef.updatePositionStrategy(this.getPositionStrategy());\n    }\n\n    if (changes.message && this.message && this.tooltipInstance) {\n      this.tooltipInstance.setMessage(this.message);\n      this.calcArrowPosition();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.overlayRef.dispose();\n\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  private open(): void {\n    if (!this.message || this.overlayRef.hasAttached()) {\n      return;\n    }\n\n    this.portal = this.portal || new ComponentPortal(KTooltipComponent, this.viewContainerRef);\n\n    this.tooltipInstance = this.overlayRef.attach(this.portal).instance;\n    this.tooltipInstance.setMessage(this.message);\n    this.tooltipInstance.setType(this.type);\n    this.calcArrowPosition();\n  }\n\n  private close(): void {\n    if (!this.overlayRef.hasAttached()) {\n      return;\n    }\n\n    this.overlayRef.detach();\n  }\n\n  private getPositionStrategy(): FlexibleConnectedPositionStrategy {\n    const origin = this.getOrigin();\n    const overlay = this.getOverlayPosition();\n\n    return this.overlay\n      .position()\n      .flexibleConnectedTo(this.elementRef)\n      .withFlexibleDimensions(false)\n      .withPositions([\n        this.addOffset({ ...origin.main, ...overlay.main }),\n        this.addOffset({ ...origin.fallback, ...overlay.fallback }),\n      ]);\n  }\n\n  private getOrigin(): { main: OriginConnectionPosition; fallback: OriginConnectionPosition } {\n    let originPosition: OriginConnectionPosition;\n\n    if (this.position === 'top' || this.position === 'bottom') {\n      originPosition = { originX: 'center', originY: this.position };\n    } else if (this.position === 'left') {\n      originPosition = { originX: 'start', originY: 'center' };\n    } else {\n      originPosition = { originX: 'end', originY: 'center' };\n    }\n\n    const { x, y } = this.invertPosition(originPosition.originX, originPosition.originY);\n\n    return {\n      main: originPosition,\n      fallback: { originX: x, originY: y },\n    };\n  }\n\n  private getOverlayPosition(): { main: OverlayConnectionPosition; fallback: OverlayConnectionPosition } {\n    const { position } = this;\n    let overlayPosition: OverlayConnectionPosition;\n\n    if (position === 'top') {\n      overlayPosition = { overlayX: 'center', overlayY: 'bottom' };\n    } else if (position === 'bottom') {\n      overlayPosition = { overlayX: 'center', overlayY: 'top' };\n    } else if (position === 'left') {\n      overlayPosition = { overlayX: 'end', overlayY: 'center' };\n    } else {\n      overlayPosition = { overlayX: 'start', overlayY: 'center' };\n    }\n\n    const { x, y } = this.invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);\n\n    return {\n      main: overlayPosition,\n      fallback: { overlayX: x, overlayY: y },\n    };\n  }\n\n  private invertPosition(\n    xOrigin: HorizontalConnectionPos,\n    yOrigin: VerticalConnectionPos,\n  ): { x: HorizontalConnectionPos; y: VerticalConnectionPos } {\n    let y = yOrigin;\n    let x = xOrigin;\n\n    if (this.position === 'top' || this.position === 'bottom') {\n      if (y === 'top') {\n        y = 'bottom';\n      } else if (y === 'bottom') {\n        y = 'top';\n      }\n    } else if (x === 'end') {\n      x = 'start';\n    } else if (x === 'start') {\n      x = 'end';\n    }\n\n    return { x, y };\n  }\n\n  private addOffset(position: ConnectedPosition): ConnectedPosition {\n    const offset: Pick<ConnectedPosition, 'offsetX' | 'offsetY'> = {};\n\n    if (position.originY === 'top') {\n      offset.offsetY = -TOOLTIP_OFFSET;\n    } else if (position.originY === 'bottom') {\n      offset.offsetY = TOOLTIP_OFFSET;\n    } else if (position.originX === 'start') {\n      offset.offsetX = -TOOLTIP_OFFSET;\n    } else if (position.originX === 'end') {\n      offset.offsetX = TOOLTIP_OFFSET;\n    }\n\n    return { ...position, ...offset };\n  }\n\n  private calcArrowPosition(): void {\n    if (!this.elementRef || !this.tooltipInstance) {\n      return;\n    }\n\n    requestAnimationFrame(() => {\n      const origin = this.elementRef.nativeElement.getBoundingClientRect();\n      const tooltip = this.tooltipInstance.tooltipRef.nativeElement.getBoundingClientRect();\n\n      if (this.position === 'bottom' || this.position === 'top') {\n        const left = `${origin.left - tooltip.left + origin.width / 2}px`;\n        const position = tooltip.top > origin.top ? 'bottom' : 'top';\n\n        this.tooltipInstance.setArrowPosition({ left, position });\n      } else if (this.position === 'left' || this.position === 'right') {\n        const top = `${origin.top - tooltip.top + origin.height / 2 - HALF_ARROW_WIDTH}px`;\n        const position = tooltip.left > origin.left ? 'right' : 'left';\n\n        this.tooltipInstance.setArrowPosition({ top, position });\n      }\n    });\n  }\n\n  private initHoverStrategy(): void {\n    fromEvent(this.elementRef.nativeElement, 'mouseenter')\n      .pipe(\n        exhaustMap(() =>\n          timer(this.openDelay).pipe(\n            takeUntil(fromEvent(this.elementRef.nativeElement, 'mouseleave')),\n            tap(() => this.open()),\n            exhaustMap(() =>\n              fromEvent([this.elementRef.nativeElement, this.overlayRef.overlayElement], 'mouseleave').pipe(\n                exhaustMap(() =>\n                  timer(this.closeDelay).pipe(\n                    takeUntil(fromEvent([this.elementRef.nativeElement, this.overlayRef.overlayElement], 'mouseenter')),\n                  ),\n                ),\n                take(1),\n              ),\n            ),\n          ),\n        ),\n        takeUntil(this.onDestroy$),\n      )\n      .subscribe(() => {\n        this.close();\n      });\n  }\n\n  private initClickStrategy(): void {\n    fromEvent(this.elementRef.nativeElement, 'click')\n      .pipe(\n        exhaustMap(() => {\n          this.open();\n          return fromEvent(document, 'click').pipe(skip(1), take(1));\n        }),\n        takeUntil(this.onDestroy$),\n      )\n      .subscribe(() => {\n        this.close();\n      });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;MA6Ba,iBAAiB,CAAA;IAM5B,WACU,CAAA,GAAsB,EACvB,UAAmC,EAAA;QADlC,IAAG,CAAA,GAAA,GAAH,GAAG;QACJ,IAAU,CAAA,UAAA,GAAV,UAAU;QAOe,IAAS,CAAA,SAAA,GAAG,IAAI;;AAJlD,IAAA,IAA0B,cAAc,GAAA;AACtC,QAAA,OAAO,aAAa,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;;AAKpD,IAAA,OAAO,CAAC,KAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,UAAU,CAAC,KAAoC,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,gBAAgB,CAAC,KAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,aAAa,CAAC,KAAc,EAAA;QAC1B,OAAO,KAAK,YAAY,WAAW;;8GAjC1B,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAdlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;GAQT,EAIS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0gDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,0EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EADtC,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,OAAO,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACX,QAAA,EAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,CAAC,OAAO,CAAC,EACZ,OAAA,EAAA,CAAC,OAAO,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAA,MAAA,EAAA,CAAA,0gDAAA,CAAA,EAAA;+GAMnD,IAAI,EAAA,CAAA;sBADH,WAAW;uBAAC,gBAAgB;gBAQH,cAAc,EAAA,CAAA;sBAAvC,WAAW;uBAAC,OAAO;gBAIc,SAAS,EAAA,CAAA;sBAA1C,WAAW;uBAAC,UAAU;;;ACjBzB,MAAM,gBAAgB,GAAG,CAAC;AAC1B,MAAM,cAAc,GAAG,EAAE;MAKZ,iBAAiB,CAAA;AAkB5B,IAAA,WAAA,CACU,gBAAkC,EAClC,UAAmC,EACnC,OAAgB,EAAA;QAFhB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAO,CAAA,OAAA,GAAP,OAAO;QAnBU,IAAQ,CAAA,QAAA,GAAqB,QAAQ;QACzC,IAAI,CAAA,IAAA,GAAiB,SAAS;QAC3B,IAAO,CAAA,OAAA,GAAsB,OAAO;QAClC,IAAS,CAAA,SAAA,GAAW,GAAG;QACtB,IAAU,CAAA,UAAA,GAAW,GAAG;AAE7C,QAAA,IAAA,CAAA,UAAU,GAAe,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACnD,YAAA,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAAE;YAC5C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,SAAA,CAAC;AAKM,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;;IAQjD,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;YAC5B,IAAI,CAAC,iBAAiB,EAAE;;aACnB;YACL,IAAI,CAAC,iBAAiB,EAAE;;;AAI5B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAGpE,QAAA,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAEzB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;IAGpB,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YAClD;;AAGF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAE1F,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ;QACnE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,iBAAiB,EAAE;;IAGlB,KAAK,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YAClC;;AAGF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;;IAGlB,mBAAmB,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAEzC,OAAO,IAAI,CAAC;AACT,aAAA,QAAQ;AACR,aAAA,mBAAmB,CAAC,IAAI,CAAC,UAAU;aACnC,sBAAsB,CAAC,KAAK;AAC5B,aAAA,aAAa,CAAC;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5D,SAAA,CAAC;;IAGE,SAAS,GAAA;AACf,QAAA,IAAI,cAAwC;AAE5C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzD,YAAA,cAAc,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;;AACzD,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;YACnC,cAAc,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;;aACnD;YACL,cAAc,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;;AAGxD,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;QAEpF,OAAO;AACL,YAAA,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;SACrC;;IAGK,kBAAkB,GAAA;AACxB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;AACzB,QAAA,IAAI,eAA0C;AAE9C,QAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtB,eAAe,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;;AACvD,aAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YAChC,eAAe,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;;AACpD,aAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC9B,eAAe,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;;aACpD;YACL,eAAe,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;;AAG7D,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;QAExF,OAAO;AACL,YAAA,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;SACvC;;IAGK,cAAc,CACpB,OAAgC,EAChC,OAA8B,EAAA;QAE9B,IAAI,CAAC,GAAG,OAAO;QACf,IAAI,CAAC,GAAG,OAAO;AAEf,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzD,YAAA,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,CAAC,GAAG,QAAQ;;AACP,iBAAA,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACzB,CAAC,GAAG,KAAK;;;AAEN,aAAA,IAAI,CAAC,KAAK,KAAK,EAAE;YACtB,CAAC,GAAG,OAAO;;AACN,aAAA,IAAI,CAAC,KAAK,OAAO,EAAE;YACxB,CAAC,GAAG,KAAK;;AAGX,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;;AAGT,IAAA,SAAS,CAAC,QAA2B,EAAA;QAC3C,MAAM,MAAM,GAAmD,EAAE;AAEjE,QAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE;AAC9B,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,cAAc;;AAC3B,aAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE;AACxC,YAAA,MAAM,CAAC,OAAO,GAAG,cAAc;;AAC1B,aAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE;AACvC,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,cAAc;;AAC3B,aAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE;AACrC,YAAA,MAAM,CAAC,OAAO,GAAG,cAAc;;AAGjC,QAAA,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE;;IAG3B,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC7C;;QAGF,qBAAqB,CAAC,MAAK;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACpE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAErF,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACzD,gBAAA,MAAM,IAAI,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI;AACjE,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,KAAK;gBAE5D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;AACpD,iBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAChE,gBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,IAAI;AAClF,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM;gBAE9D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;;AAE5D,SAAC,CAAC;;IAGI,iBAAiB,GAAA;QACvB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY;aAClD,IAAI,CACH,UAAU,CAAC,MACT,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CACxB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,EACjE,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,EACtB,UAAU,CAAC,MACT,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAC3F,UAAU,CAAC,MACT,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CACzB,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,CAAC,CACpG,CACF,EACD,IAAI,CAAC,CAAC,CAAC,CACR,CACF,CACF,CACF,EACD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAE3B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,KAAK,EAAE;AACd,SAAC,CAAC;;IAGE,iBAAiB,GAAA;QACvB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO;AAC7C,aAAA,IAAI,CACH,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAE3B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,KAAK,EAAE;AACd,SAAC,CAAC;;8GAhOK,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,IAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,UAAA,EAAA,CAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA;oIAEoB,OAAO,EAAA,CAAA;sBAAzB,KAAK;uBAAC,UAAU;gBACU,QAAQ,EAAA,CAAA;sBAAlC,KAAK;uBAAC,kBAAkB;gBACF,IAAI,EAAA,CAAA;sBAA1B,KAAK;uBAAC,cAAc;gBACK,OAAO,EAAA,CAAA;sBAAhC,KAAK;uBAAC,iBAAiB;gBACI,SAAS,EAAA,CAAA;sBAApC,KAAK;uBAAC,mBAAmB;gBACG,UAAU,EAAA,CAAA;sBAAtC,KAAK;uBAAC,oBAAoB;;;ACvC7B;;AAEG;;;;"}